очистка регистра сведений за определённый период #798319


#0 by Олеся999
подскажите пожалуйста как очистить регистр сведений за определенный период
#1 by Ц_У
"Шэф, усе пропало!" (с)
#2 by Волшебник
так нельзя
#4 by Олеся999
ну понятно что так не работает и это не правильно
#5 by Волшебник
Нужно запросом выбрать данные, затем вы цикле по выборке из запроса устанавливать МенеджерЗаписи и вызывать Удалить
#6 by Timon1405
РегистрСведенийНаборЗаписей.<Имя регистра сведений>.Загрузить (InformationRegisterRecordSet.<Имя регистра сведений>.Load) РегистрСведенийНаборЗаписей.<Имя регистра сведений> (InformationRegisterRecordSet.<Имя регистра сведений>) Загрузить (Load) Синтаксис: Загрузить(<ТаблицаЗначений>) Параметры: Тип: ТаблицаЗначений. Таблица значений, по которой производится заполнение набора записей. Описание: Загружает набор записей значениями из переданной таблицы значений. При этом все прежние записи набора удаляются. Заполняются значения доступных для записи свойств записей регистра сведений, имена которых совпали c именами колонок таблицы значений. Доступность: Сервер, толстый клиент, внешнее соединение. Пример:
#7 by Олеся999
без циклов , а то зависает
#8 by 1dvd
не поможет . Там отбор только на равенство
#9 by Heckfy
Дергай запросом нужные записи. Далее Пока РезультатЗапроса.Следующий Цикл МЗ=РегистрыСведений.ТвойРегистр.СоздатьМенеджерЗаписи; Как то так......
#10 by 1dvd
не получится без циклов. ДатаКоллизии - Дата или ДатаИВремя?
#11 by Волшебник
Чтобы не зависало, добавь ОбработкаПрерыванияПользователя внутрь цикла
#12 by Timon1405
да что там у менеджера медом намазано что ли?
#13 by Heckfy
Ага, намазано.  был у меня случай... Программисту поставили задачу почистить огромный (~100 млн записей) периодический регистр сведений. Ну он и наваял: НЗ=РегистрыСведений.Регистр.СоздатьНаборЗаписей; НЗ.Записать; Стоит объяснять, к чему это привело?
#14 by Олеся999
А без циклов то не как ?)
#15 by Олеся999
А где  ДатаОт и ДатаДо ?
#16 by Волшебник
удалил весь регистр
#17 by Волшебник
Программирование — это фантазия плюс умение крутить циклы.
#18 by Timon1405
создать набор циклом сделать таблицу загрузить из таблицы в набор очистить набор ничего сложного. если опасаетесь случаев как в очищайте порциями
#19 by 1dvd
ДатаКоллизии содержит время или нет?
#20 by Heckfy
Ну, это и надо было сделать. Тут фишка в другом. :)
#21 by Timon1405
ага, заблокировал сканом и регистр и его индексы. не надо давать таких заданий программистам
#22 by dezss
ну так сразу фишку и выдавай...чего держишь драматическую паузу?
#23 by Олеся999
содержит
#24 by alkorolev
если не любите циклы, то получаете запросом записи регистра, которые НЕОБХОДИМО СОХРАНИТЬ, а дальше просто:
#25 by 1dvd
тогда только построчно, как говорит Стас
#26 by Heckfy
На серваке приложений кончился оператос. Он ушел в жеский своп и перестал реагировать на внешние раздражители. В общем, полдня простоя. А если бы программист подумал и использовал менеджерЗаписи, то все прошло бы без проблем.
#27 by Волшебник
Можно было бы в Конфигураторе пересоздать регистр
#28 by 1dvd
глупости. Если там данных за 10 лет, а удалить надо пару дней, то бамбук курить придётся долго
#29 by Timon1405
или сделать TRUNCATE TABLE
#30 by Timon1405
>> А если бы программист подумал и использовал менеджерЗаписи менеджер - просто оболочка для набора записей. если бы программист почитал ИТС, он бы понял, что используя менеджер, он делает вещи, аналогичные запросу в цикле
#31 by dezss
ну чем угодно надо пользоваться с умом. просто надо было брать данные частями, а не все сразу.
#32 by Волшебник
Это же изменение данных. Изменение в цикле оправдано.
#33 by Timon1405
1000 удалений по 1 строке оправданнее 1 удаления 1000 строк?
#34 by Волшебник
Да.
#35 by 1dvd
перезапись миллионов записей ради удаления десяти нельзя оправдать ничем
#36 by Олеся999
НаборЗаписей.Записать; ?
#37 by 1dvd
упорная, молодец. Только всё-равно не поможет :)
#38 by Олеся999
Почему ?
#39 by 1dvd
тебе уже 100500 раз сказали
#40 by Волшебник
Уже всё разжевали.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С