Всем привет!
Представляю две обработки для тестирования нового подхода свертки баз. Обработки разработаны на обычных формах, демонстрация проводится на демо-конфигурации УТ 10.3.82.1, платформа 1С: Предприятие 8.3.23.1865.
Законченная "технология от А до Я" будет представлена позже после проведения испытаний свертки и доработки инструмента до "универсального". Законченная технология будет представлять из себя обработку на базе обработки "Анализ документов и регистров".
Ниже, самое последнее видео демонстрирует промежуточную версию "Анализ документов и регистров, вер.3.0" - но она не будет представлена в данной публикации. В данной публикации представлена другая промежуточная версия - "Анализ документов и регистров, вер. 2.0" - данная версия не имеет параметра Организация - и предлагается только лишь для ознакомления с идеями.
Проблематика
Если база большая по кол-ву документов и записей регистров, а технологическое окно короткое по времени, тогда "классическая" свертка базы, представленная в статье Свертка базы - или как свернуть базу УТ 10.3, не сработает - у вас просто не хватит времени распровести документы за период. Если период разбить на несколько последовательных периодов, тогда в каждый полученный период надо делать одну и ту же "классическую" свертку.
То есть, если Заказчик просит провести свертку базы - например, оставить последние 3 года, остальные 4 года удалить. А документов столько, что за одно технологическое окно в один выходной день вы успеваете распровести только один месяц по одной организации - значит придется "классическую" свертку повторять много-много 48 раз (12мес*4года = 48мес - это кол-во потраченных выходных, срок проведения работ => 4 выходных дня в 1 месяце => 48 мес / 4 = 12 мес = 1 год), то есть за год управитесь, не считая предварительных подготовительных работ, работ по сверке остатков после каждой классической свертки.
Классическая свертка представляет из себя на выходе - список документов "Корректировка записей регистров" по всевозможным регистрам накоплений и сведений - одна Корректировка соответствует одному регистру, возможно это будет список документов "Оприходование товаров", возможно это будет список документов "Ввод начальных остатков по взаиморасчетам с контрагентами" и другие специализированные документы так называемого "ввода начальных остатков".
При этом, если вы используете специализированные документы, вроде "Оприходование товаров" или "Ввод начальных остатков по взаиморасчетам с контрагентами", тогда вы теряете информацию.
Например, ситуация у вас: регистр ТоварыНаСкладах и ПартииТоваровНаСкладах немного различаются по итогам. И вместо того, чтобы свернуть остатки через КорректировкиЗаписейРегистров и сохранить полное соответствие предыдущим итоговым остаткам, вы переносите остатки через ОприходованиеТоваров.
Тогда у вас остатки по регистрам ТоварыНаСкладах и ПартииТоваровНаСкладах начинают совпадать, но теряется точная информация о предыдущих итогах. То же самое с взаиморасчетами с контрагентами.
Возвращаясь к первому абзацу раздела, получается, что вот теперь вместо проведения одной свертки, вы вынуждены делать 48 сверток, не за один вечер, а в течение года по выходным, каждый раз теряя информацию, выравнивая часть регистров по итогам.
Риски подводных камней
Чужая незнакомая база, работают в базе нон-стоп, задействованы все разделы учета: товары, взаиморасчеты, НДС, многофирменный учет, авторезервы по заказам, автозакрытие заказов и что-то еще, что я упускаю из вида. В день по сотне документов поступлений и реализаций. Маркируемая продукция. ЭДО. Обмен с БП. С десяток фоновых заданий каждый час. Все завязано со всем. Распроведешь один документ, и остатки по всем регистрам посыпятся как карточный дом.
Свобода выбора: есть ли альтернатива?
Альтернатива есть - менять классическую схему на что-то другое - и делить большую задачу на много мелких этапов - чтобы укладываться в ежедневное непродолжительное технологическое окно (условно ежевечерно имеется по 2-3 часа времени на свертку), растягивать свертку на пару месяцев вперед, выполняя ее шаг за шагом. Главное - понять, как еще можно сворачивать записи регистров накопления, например не целиком регистр на дату свертки, а по-документно - при этом будут задействованы только записи регистров этих документов. Оставшиеся документы и записи по регистрам (движения) сворачивать отдельно в другое время.
Новая схема свертки
Есть идея и предложение любой документ заменять на документ "Корректировка записей регистров". При этом движения документа останутся в актуальном состоянии, но будут привязаны к Корректировке, после чего сам документ можно распровести без потери остатков и итогов по всем связанным регистрам накопления. При этом можно дополнительно очистить табличные части документа, которые также занимают много места (помним, что цель свертки - уменьшить размер базы).
Далее Корректировки можно объединить - при этом часть записей сгруппируются по наборам измерениям, а часть - и вовсе выйдет в ноль. Таким образом, можем локально проводить мини-свертки.
Общая схема представлена на рис. 1 ниже.
- Замещение документов в Корректировку - происходит с помощью обработки "Конвертация Документа В Корректировку". При этом все движения документа переносятся в Корректировку (рис. 2 ниже).
В обработке выбираете документ и нажимаете кнопку "Выполнить". Для возможности сравнения движений документа и движений корректировки оставьте параметр "Очищать документы" пустым (!).
Параметр "Очищать документы" можно не использовать ТОЛЬКО для сравнения регистров накопления, поскольку не подходит для регистров сведений. Точнее сказать, для регистров сведений требуется уникальность записей по измерениям и периоду, поэтому два документа (полученную Корректировку и исходный документ) с одинаковыми записями по регистрам сведений нельзя увидеть и сравнить. Для целей сравнения можно изменять периоды записей, но сейчас это не относится к заявленной теме. Остается на обсуждение.
Если у вас в Корректировке есть реквизит "ДокументОснование" или другой реквизит для хранения ссылки на документ-основание, тогда укажите в поле "Наименование реквизита "ДокументОснование". В типовой Корректировке такого реквизита нет, поэтому можете игнорировать. В своей базе я такой реквизит создал для дальнейшего анализа и обработки.
- Объединение или сложение Корректировок - происходит с помощью обработки "Сложение Корректировок" (рис.3 ниже). При этом для регистров накопления записи сворачиваются по измерениям, а для регистров сведений - остаются последние по дате записи для наборов измерений.
В обработке выбираете две Корректировки, нажимаете кнопку "Сложить/Объединить". Для сравнения движений всех трех корректировок оставьте параметр "Очищать документы" пустым. Параметр "Очищать документы" используется опять-таки только для сравнения регистров накопления, поскольку не подходит для регистров сведений.
Точнее сказать, для регистров сведений требуется уникальность записей по измерениям и периоду, поэтому два документа (полученную Корректировку и исходный документ) с одинаковыми записями по регистрам сведений нельзя увидеть и сравнить. Для целей сравнения можно изменять периоды записей, но сейчас это не относится к заявленной теме. Остается на обсуждение.
- Анализ документов и связанных регистров - происходит с помощью обработки "Анализ документов и регистров, вер. 2.0". Подробное описание версии 1.1 обработки лежит тут: Анализ документов: свертка базы, автотесты, динамика роста базы.
Для проведения свертки я доработал эту обработку до версии 2.0 (без учета отбора по организации) (рис.4 ниже) - добавил отображение по документам признака того, что данный документ можно конвертировать (заменить) на Корректировку - исходя из наборов регистров, по которым делаются движения документа, и наборов регистров, по которым документ "Корректировка записей регистров" может быть регистратором.
Законченная "технология от А до Я" будет представлена позже после проведения испытаний свертки и доработки инструмента до "универсального". Законченная технология будет представлять из себя обработку на базе обработки "Анализ документов и регистров".
Ниже, самое последнее видео демонстрирует промежуточную версию "Анализ документов и регистров, вер.3.0" - но она не будет представлена в данной публикации. В данной публикации представлена другая промежуточная версия - "Анализ документов и регистров, вер. 2.0" - данная версия не имеет параметра Организация - и предлагается только лишь для ознакомления с идеями.
Из рис.4 видно, что журналом счетов-фактур можно пренебречь при проведении свертки. Скажем так, многие сведения из регистров сведений за прошлые периоды остаются в архивной копии базы, и не требуют переноса на конец периода при свертке - по сути, просто удаляются.
Представляю два видео.
На этом все.
Всем добра! С пользой для клиентов, RustIG
Проверено на следующих конфигурациях и релизах:
- Управление торговлей, редакция 10.3, релизы 10.3.82.1