Предназначение обработки.
Данная обработка будет полезна, если при работе с информационной системой на базе 1С: Предприятия 8 вы наблюдаете следующие симптомы:
- Необъяснимо большой размер информационной базы
- Необъяснимое снижение производительности работы механизмов, обращающихся к учетным данным (например, подбор товаров в документы)
Для предупреждения указанных проблем над информационной базой необходимо производить операцию пересчета итогов регистров, которая не позволяет им «распухать». Если рассмотреть устройство регистров бухгалтерии/накопления/сведений – в составе таблиц базы данных мы найдем у этих объектов таблицу итогов. Эти таблицы предназначены для ускорения доступа к данным. Например, данные о продажах система суммирует за месяц и общую сумму записывает в таблицу итогов. Таким образом, если необходимо получить сумму продаж за год – достаточно просуммировать итоги за 12 месяцев, а не все продажи за год. У данного подхода к хранению данных есть и обратная сторона – в таблице итогов могут создаваться избыточные записи. Основными причинами их появления являются:
- Работа задним числом
- Использование разделения итогов регистров.
При работе задним числом система при каждом отражении в регистре учетной информации рассчитывает итоги «на лету» по упрощенному алгоритму. Допустим в нашей системе была отражена продажа последним днем прошлого месяца и были рассчитаны итоги за этот период. Если менеджер зайдет в документ продажи и подвинет его на день вперед, на первое число текущего месяца, система при проведении, уменьшит итоги предыдущего месяца. Если в том месяце не было других продаж – в регистре будет запись со значением «0». Такие записи не несут смысловой нагрузки и при операции пересчета итогов регистров удаляются.
При использовании режима разделения итогов система пытается записывать данные, вводимые разными пользователями, параллельно. В результате такой записи в таблице итогов могут появиться строки со значениями
- +100
- -100
При пересчете регистров накопления обе эти записи будут удалены из регистра, т.к. общий итог за период равен нулю.
Пересчет итогов регистров в информационной базе нужно производить регулярно, чтобы не позволять системе накапливать ненужные записи, которые будут увеличивать размер информационной базы и замедлять вычисления своим присутствием. Для выполнения этой операции обычно используются два инструмента:
- Консоль управления итогами в пользовательском режиме
- Тестирование и исправление ИБ в конфигураторе.
Данные способы обладают некоторыми недостатками:
- При управлении итогами из пользовательского режима невозможно настроить выполнение нужных операций по расписанию
- При пересчете итогов из конфигуратора можно нельзя указать конкретные регистры, для которых нужно выполнить пересчет.
В то же время при работе с большими информационными базами, с которыми работает много пользователей, есть необходимость запускать пересчет итогов по расписанию. А при наведении порядка в большой и запущенной базе – запускать пересчет тяжелых регистров по отдельности, чтобы не выйти за рамки времени, когда в базе не ведется работа.
Обработка, представленная здесь, предназначена для автоматизации задач пересчета регистров средствами 1С: Предприятия. Эта обработка выполнена по стандартам БСП и для любого продукта, использующего подсистему дополнительных отчетов и обработок из ее состава, позволяет настроить автоматический пересчет итогов регистр. На текущий момент это конфигурации:
- 1С: Бухгалтерия 8 (ред. 3.0)
- 1С: Управление торговлей 8 (ред. 11)
- 1С: Управление небольшой фирмой 8
- 1С: Розница (ред. 2.0)
- 1С: ERP
- Любое отраслевое решение на базе вышеперечисленных продуктов.
Рассмотрим пример подключения обработки на примере ПП 1С: Бухгалтерия 8 (ред. 3.0). Сначала нам нужно перейти в форму настроек внешних обработок:
В открывшейся форме нам нужно убедиться, что в программе включена возможность использования дополнительных обработок и перейти в форму списка загруженный в программу обработок.
В открывшейся форме списка нам нужно создать новую обработку.
После нажатия на кнопку «Создать» система предложит указать файл внешней обработки. После указания файла откроется форма настройки обработки.
При загрузке обработки в систему производится анализ конфигурации, на основании которого заполнится перечень доступных команд. В результате список команд содержит команду для пересчета всех регистров (первая строка списка) и любого из регистров по отдельности. Эти возможности будут полезны при настройке пересчета итогов в большой базе – они позволят настроить расписание таким образом, чтобы сначала в течение нескольких дней система пересчитала большие таблицы по отдельности, а потом вышла на рабочий режим регулярного пересчета итогов, либо задать раздельные расписания для расчета итогов отдельных регистрам таким образом, чтобы не мешать работе пользователей.
Пример первого случая представлен на рисунке:
В данном примере настроен однократный пересчет регистра бухгалтерии, а после него – ежедневный полный пересчет всех регистров.
Приведу пример из практики. Мне в руки попала база 1С: Бухгалтерии 8 (ред. 3.0) объем файла данных MS SQL которой составлял 120 ГБ. Системный администратор задавался вопросом, почему до перехода на новую редакцию объем базы составлял около 32 ГБ, а после свертки, последующего перехода на новую редакцию и полугода работы – база увеличилась до 120. По результатам обследования базы стало видно, что более 50 ГБ занимала таблица итогов регистра «Расходы при УСН», более 20 ГБ – таблица итогов регистра бухгалтерии в разрезе второго субконто. А анализ данных в них показал наличие лишних записей, обусловленных режимом разделения итогов регистров. Для того, чтобы избавиться от лишних записей было настроено расписание:
- Однократно завтра в 00:00 пересчитать итоги регистра «Расходы при УСН»
- Однократно послезавтра в 00:00 пересчитать итоги регистра бухгалтерии
- Каждое воскресение производить пересчет всех регистров в базе.
Выполнение первой операции, согласно журналу регистрации, заняло 8 часов, второй – около 5 часов. Сейчас, после того, как пересчет стал выполняться регулярно, пересчет всех регистров занимает 20 минут. Объем файла данных MS SQL составляет 20 ГБ. Таким образом, удалось сократить размер информационной базы в 6 раз и исключить влияние «лишних» записей на производительность системы.
Требования к конфигурации, в которой планируется использование обработки
Для корректной работы обработки требуется, чтобы конфигурация была разработана на базе библиотеки стандартных подсистем с версией не менее чем 1.2.1.15. Узнать версию вашей конфигурации можно следующим образом:
- В параметрах системы разрешить использование команды «Все функции»
- В меню «Все функции» нужно найти регистр сведений «Версии подсистем»
- В форме списка посмотреть версию подсистемы «СтандартныеПодсистемы»
Друзья, если вы посчитаете, что для успешного применения инструмента вам нужны дополнительные инструменты - напишите об этом в комментариях, пожалуйста.