| 
    
        
     
     | 
    
  | 
        очистка регистра сведений за определённый период     Ø (Волшебник 30.05.2017 12:53)  | 
☑ | ||
|---|---|---|---|---|
| 
    0
    
        Олеся999    
     30.05.17 
            ✎
    12:15 
 | 
         
        подскажите пожалуйста как очистить регистр сведений за определенный период
 
        ДатаОт и ДатаДо ? НаборЗаписей = РегистрыСведений.КоллизииПриОбмене.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.ДатаКоллизии.Установить(ДатаОт ); НаборЗаписей.Отбор.ДатаКоллизии.Установить(ДатаДо); НаборЗаписей.Записать();  | 
|||
| 
    1
    
        Ц_У    
     30.05.17 
            ✎
    12:17 
 | 
         
        "Шэф, усе пропало!" (с)     
         | 
|||
| 
    2
    
        Волшебник    
     модератор 
    30.05.17 
            ✎
    12:17 
 | 
         
        так нельзя     
         | 
|||
| 
    3
    
        1dvd    
     30.05.17 
            ✎
    12:18 
 | 
||||
| 
    4
    
        Олеся999    
     30.05.17 
            ✎
    12:18 
 | 
         
        (2) ну понятно что так не работает и это не правильно     
         | 
|||
| 
    5
    
        Волшебник    
     модератор 
    30.05.17 
            ✎
    12:18 
 | 
         
        Нужно запросом выбрать данные, затем вы цикле по выборке из запроса устанавливать МенеджерЗаписи и вызывать Удалить()     
         | 
|||
| 
    6
    
        Timon1405    
     30.05.17 
            ✎
    12:19 
 | 
         
        РегистрСведенийНаборЗаписей.<Имя регистра сведений>.Загрузить (InformationRegisterRecordSet.<Имя регистра сведений>.Load)
 
        РегистрСведенийНаборЗаписей.<Имя регистра сведений> (InformationRegisterRecordSet.<Имя регистра сведений>) Загрузить (Load) Синтаксис: Загрузить(<ТаблицаЗначений>) Параметры: <ТаблицаЗначений> (обязательный) Тип: ТаблицаЗначений. Таблица значений, по которой производится заполнение набора записей. Описание: Загружает набор записей значениями из переданной таблицы значений. При этом все прежние записи набора удаляются. Заполняются значения доступных для записи свойств записей регистра сведений, имена которых совпали c именами колонок таблицы значений. Доступность: Сервер, толстый клиент, внешнее соединение. Пример: Рег = РегистрыСведений.КурсыВалют; НаборКурсов = Рег.СоздатьНаборЗаписей(); Таб = Новый ТаблицаЗначений; // формирование таблицы значений // ... НаборКурсов.Загрузить(Таб);  | 
|||
| 
    7
    
        Олеся999    
     30.05.17 
            ✎
    12:20 
 | 
         
        (5) без циклов , а то зависает     
         | 
|||
| 
    8
    
        1dvd    
     30.05.17 
            ✎
    12:20 
 | 
         
        не поможет (3). Там отбор только на равенство     
         | 
|||
| 
    9
    
        Heckfy    
     30.05.17 
            ✎
    12:21 
 | 
         
        Дергай запросом нужные записи.
 
        Далее Пока РезультатЗапроса.Следующий Цикл МЗ=РегистрыСведений.ТвойРегистр.СоздатьМенеджерЗаписи(); ЗаполнитьЗначенияСвойств(МЗ,РезультатЗапроса); МЗ.Удалить(); КонецЦикла; Как то так......  | 
|||
| 
    10
    
        1dvd    
     30.05.17 
            ✎
    12:21 
 | 
         
        (7) не получится без циклов.
 
        ДатаКоллизии - Дата или ДатаИВремя?  | 
|||
| 
    11
    
        Волшебник    
     модератор 
    30.05.17 
            ✎
    12:21 
 | 
         
        (7) Чтобы не зависало, добавь ОбработкаПрерыванияПользователя внутрь цикла     
         | 
|||
| 
    12
    
        Timon1405    
     30.05.17 
            ✎
    12:22 
 | 
         
        (5) (9) да что там у менеджера медом намазано что ли?
 
        https://its.1c.ru/db/metod8dev#content:2722:hdoc:_top  | 
|||
| 
    13
    
        Heckfy    
     30.05.17 
            ✎
    12:24 
 | 
         
        (12) Ага, намазано.  был у меня случай... Программисту поставили задачу почистить огромный (~100 млн записей) периодический регистр сведений. Ну он и наваял:
 
        НЗ=РегистрыСведений.Регистр.СоздатьНаборЗаписей(); НЗ.Записать(); Стоит объяснять, к чему это привело?  | 
|||
| 
    14
    
        Олеся999    
     30.05.17 
            ✎
    12:24 
 | 
         
        А без циклов то не как ?)     
         | 
|||
| 
    15
    
        Олеся999    
     30.05.17 
            ✎
    12:25 
 | 
         
        (13) А где  ДатаОт и ДатаДо ?     
         | 
|||
| 
    16
    
        Волшебник    
     модератор 
    30.05.17 
            ✎
    12:25 
 | 
         
        (13) удалил весь регистр     
         | 
|||
| 
    17
    
        Волшебник    
     модератор 
    30.05.17 
            ✎
    12:26 
 | 
         
        (14) Программирование — это фантазия плюс умение крутить циклы.     
         | 
|||
| 
    18
    
        Timon1405    
     30.05.17 
            ✎
    12:26 
 | 
         
        (14)создать набор
 
        циклом сделать таблицу загрузить из таблицы в набор очистить набор ничего сложного. если опасаетесь случаев как в (15) очищайте порциями  | 
|||
| 
    19
    
        1dvd    
     30.05.17 
            ✎
    12:26 
 | 
         
        (15) ДатаКоллизии содержит время или нет?     
         | 
|||
| 
    20
    
        Heckfy    
     30.05.17 
            ✎
    12:27 
 | 
         
        (16) Ну, это и надо было сделать. Тут фишка в другом. :)     
         | 
|||
| 
    21
    
        Timon1405    
     30.05.17 
            ✎
    12:28 
 | 
         
        (16) ага, заблокировал сканом и регистр и его индексы. не надо давать таких заданий программистам     
         | 
|||
| 
    22
    
        dezss    
     30.05.17 
            ✎
    12:28 
 | 
         
        (20) ну так сразу фишку и выдавай...чего держишь драматическую паузу?     
         | 
|||
| 
    23
    
        Олеся999    
     30.05.17 
            ✎
    12:31 
 | 
         
        (19) содержит     
         | 
|||
| 
    24
    
        alkorolev    
     30.05.17 
            ✎
    12:31 
 | 
         
        (0) если не любите циклы, то получаете запросом записи регистра, которые НЕОБХОДИМО СОХРАНИТЬ, а дальше просто:
 
        НаборЗаписей = РегистрыСведений.КоллизииПриОбмене.СоздатьНаборЗаписей(); НаборЗаписей.Загрузить(Запрос.Выполнить().Выгрузить()); НаборЗаписей.Записать();  | 
|||
| 
    25
    
        1dvd    
     30.05.17 
            ✎
    12:31 
 | 
         
        (23) тогда только построчно, как говорит Стас     
         | 
|||
| 
    26
    
        Heckfy    
     30.05.17 
            ✎
    12:31 
 | 
         
        (22) На серваке приложений кончился оператос. Он ушел в жеский своп и перестал реагировать на внешние раздражители. В общем, полдня простоя. А если бы программист подумал и использовал менеджерЗаписи, то все прошло бы без проблем.     
         | 
|||
| 
    27
    
        Волшебник    
     модератор 
    30.05.17 
            ✎
    12:32 
 | 
         
        (26) Можно было бы в Конфигураторе пересоздать регистр     
         | 
|||
| 
    28
    
        1dvd    
     30.05.17 
            ✎
    12:33 
 | 
         
        (24) глупости. Если там данных за 10 лет, а удалить надо пару дней, то бамбук курить придётся долго     
         | 
|||
| 
    29
    
        Timon1405    
     30.05.17 
            ✎
    12:34 
 | 
         
        (27) или сделать TRUNCATE TABLE     
         | 
|||
| 
    30
    
        Timon1405    
     30.05.17 
            ✎
    12:37 
 | 
         
        (26) >> А если бы программист подумал и использовал менеджерЗаписи
 
        менеджер - просто оболочка для набора записей. если бы программист почитал ИТС, он бы понял, что используя менеджер, он делает вещи, аналогичные запросу в цикле  | 
|||
| 
    31
    
        dezss    
     30.05.17 
            ✎
    12:40 
 | 
         
        (26) ну чем угодно надо пользоваться с умом.
 
        просто надо было брать данные частями, а не все сразу.  | 
|||
| 
    32
    
        Волшебник    
     модератор 
    30.05.17 
            ✎
    12:40 
 | 
         
        (30) Это же изменение данных. Изменение в цикле оправдано.     
         | 
|||
| 
    33
    
        Timon1405    
     30.05.17 
            ✎
    12:41 
 | 
         
        (32) 1000 удалений по 1 строке оправданнее 1 удаления 1000 строк?     
         | 
|||
| 
    34
    
        Волшебник    
     модератор 
    30.05.17 
            ✎
    12:41 
 | 
         
        (33) Да.     
         | 
|||
| 
    35
    
        1dvd    
     30.05.17 
            ✎
    12:43 
 | 
         
        (33) перезапись миллионов записей ради удаления десяти нельзя оправдать ничем     
         | 
|||
| 
    36
    
        Олеся999    
     30.05.17 
            ✎
    12:45 
 | 
         
        НаборЗаписей = РегистрыСведений.[Мой регистр].СоздатьНаборЗаписей();
 
        НаборЗаписей.Отбор.[Мой регистр].Установить([как сюда засунуть диапазон ДатаОт и ДатаДо?]); НаборЗаписей.Записать(); ?  | 
|||
| 
    37
    
        1dvd    
     30.05.17 
            ✎
    12:46 
 | 
         
        (36) упорная, молодец. Только всё-равно не поможет :)     
         | 
|||
| 
    38
    
        Олеся999    
     30.05.17 
            ✎
    12:48 
 | 
         
        (37) Почему ?     
         | 
|||
| 
    39
    
        1dvd    
     30.05.17 
            ✎
    12:51 
 | 
         
        (38) тебе уже 100500 раз сказали
 
        http://savepic.ru/14188609.jpg  | 
|||
| 
    40
    
        Волшебник    
     модератор 
    30.05.17 
            ✎
    12:53 
 | 
         
        Уже всё разжевали.     
         | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |