В процессе эксплуатации конфигураций «1С:Комплексная автоматизация» (редакция 2) и «1С:ERP Управление предприятием» пользователи и администраторы иногда сталкиваются с резким падением производительности на этапе закрытия месяца. Процесс формирования движений по партиям, который ранее занимал считанные минуты, может внезапно затягиваться на несколько часов. Проанализируем основные технические и прикладные причины возникновения такой проблемы, а также разберем по шагам действенные методы ее устранения.
Выясним первую распространенную причину: несвоевременный расчет итогов регистров накопления или наличие нераспределенных остатков. Если итоги рассчитаны на устаревшую дату, платформе 1С требуется считывать и обрабатывать гигантский массив таблиц движений за прошлые периоды для расчета партионного учета текущего месяца.
Рассмотрим порядок проверки и исправления:
Себестоимость товаров. Убедимся, что по регистрам остатков отсутствуют «минусы» или пересортица, когда количество полностью списано, а суммовой остаток продолжает висеть (или наоборот). Такие зависшие ключи аналитики вызывают зацикливание алгоритмов подбора партий.Сбой в дате проведения документа — частая причина нарушений в работе механизмов партионного учета. Если пользователь случайно провел документ (например, Поступление товаров и услуг или Перемещение товаров) с датой из далекого будущего (например, 2099 или 3999 год), алгоритм расчета начинает выстраивать временную последовательность партий с учетом этой ошибочной точки.
Проанализируем период базы данных: через списки документов или с помощью консоли запросов проверим наличие записей с датой проведения, выходящей за пределы текущего рабочего года. При обнаружении таких документов перепроведем их с корректной датой.
При длительной эксплуатации или некорректных завершениях сеансов в таблицах базы данных могут возникать логические и физические расхождения, разрушения индексов или повреждения таблиц итогов.
Выполним процедуру диагностики через Конфигуратор:
.dt или средствами СУБД).Если база данных работает в клиент-серверном режиме под управлением MS SQL Server, причина 4-часового расчета при свободных аппаратных ресурсах часто кроется в устаревшей статистике СУБД. Оптимизатор SQL-сервера строить неэффективные планы выполнения запросов (query plans), из-за чего соединения больших временных таблиц происходят крайне медленно.
Разберем необходимые регламентные действия на стороне SQL Server:
UPDATE STATISTICS для базы данных.tempdb. Формирование партий создает колоссальный объем временных таблиц. Файлы tempdb должны располагаться на высокоскоростных накопителях (NVMe/SSD) и иметь заранее выделенный достаточный объем, чтобы исключить постоянные паузы на авторасширение.Если в организации используются схемы межфирменных продаж (Интеркампани), перемещения между складами или операции сборки/разборки, алгоритм партионного учета может столкнуться с цикличными (встречными) ссылками. Например, организация «А» продает товар организации «Б», а затем организация «Б» передает этот же товар обратно «А» в том же месяце.
В таких ситуациях механизмы построения графа партий не могут определить однозначную последовательность списания. Система автоматически сбрасывает многопоточный расчет в однопоточный режим и переходит к итерационному перебору узлов, что увеличивает время расчета в десятки раз. Для решения проблемы следует проанализировать отчеты по межфирменному перемещению и исключить кольцевые схемы движений.
Посмотрим на настройки учетной политики программы. В редакциях 1С:КА 2 и 1С:ERP предусмотрены разные версии партионного учета. Архитектурная версия 2.1 работает медленнее версии 2.2 при больших объемах данных из-за особенностей структуры временных таблиц и механизмов подбора НДС.
В настройках системы (НСИ и администрирование > Финансовый результат и контроллинг > Учет себестоимости) рекомендуется проверить используемую версию и при наличии возможности переключить партионный учет на актуальную версию 2.2.
Чтобы точно определить, на какой именно процедуре происходит задержка, запустим закрытие месяца на копии базы в режиме отладки с включенным Замером производительности. Это позволит увидеть, какая именно функция (например, подбор партий для целей НДС/УСН, расчет распределения расходов или запись движения в регистр) забирает наибольший процент времени, и направить точечные усилия на устранение «узкого места».