За последний месяц дважды понадобилась обработка, которая удаляла бы повторяющиеся записи в периодическом регистре сведений. После этого пришла идея сделать обработку универсальной и выложить для всех.
В первый раз понадобилась обработка для регистра сведений цены, где записей было уже более 7 млн. И пусть этих записей будет даже больше, но уже такое количество было не по причине большого справочника номенклатуры, а частым созданием документа изменения цен. При этом половина записей по совпадающим значениям измерений полностью дублировало предыдущую запись (т.е. создание таких записей на срез последних не влияло). И если срез первых нам не нужен, то зачем хранить такие записи (особенно в старых периодах)? В итоге удалив такие записи в прошлых периодах размер регистра удалось сократить вдвое.
Во второй раз обработка понадобилась в конфигурации Инталев, где регистр имел 13 млн записей. Там старые периоды можно было бы вообще удалить, но решил пойти по уже проверенному пути.
Вот такая в итоге получилась обработка.
Кто будет конвертировать обработку под 8.2, то немного допилить:
РС.МоментВремени заменить на РС.Регистратор.МоментВремени
Разумнее оставлять первые записи, дабы корректнее было начало действия значения. А подтверждать значение не требуется.
А что происходит с документами устанавливающие значения? Чистится только регистр сведений?
В моём случае, я предпочёл допилить «УстановкаЦенНоменклатуры»… Документ выкидывает при записи строки установки повторяющие значение за предыдущий период.
(1) zzz_natali, Постараюсь сделать до выходных.
(2) V.Nikonov, У меня как раз остается только первая запись. Можно удалять и строки в документах, но я в случае с ценами решил оставить. Обращение к таблице документа выполняется очень редко — поэтому, если не гнаться за уменьшением объема базы, смысла особо не имеет.
В инталеве я почистил табличную часть, но там вообще особый случае. Документ генерируется при открытии, а значение реквизитов шапки хранятся в табличной части документа. По сравнению с документом установки цен хранится очень много избыточной информации.
Учитывается в обработке следующий вариант:
Период — Измерение — ресурс
Период1 — Ном1 — Рес1
Период2 — Ном1 — Рес2
Период3 — Ном1 — Рес1
по идее здесь нет дублей. Как отработает обработка?
(4) Stas-ch, Обработка ничего не удалит.
Удаляются только те записи, которые не повлияют на срез последних.
Для приведенного примера удаление любой из записей приведет к изменению среза последних в интервале между периодами, либо после период3