Как ускорить закрытие месяца в 1С:УТ 11.4 и ERP 2: пошаговое руководство по оптимизации

Программист 1С v8.3 (Управляемые формы) 1С:Управление торговлей Управленческий учет Торговля и дистрибуция
← На главную

Проблема экстремально долгого закрытия месяца (вплоть до 36 часов и более) является критической для крупных информационных баз на платформе 1С. В данной статье мы разберем, как значительно ускорить этот процесс, используя встроенные инструменты конфигураций Управление торговлей 11.4 и ERP Управление предприятием 2, а также настройки серверной инфраструктуры. Проанализируем ситуацию, когда стандартные методы не помогают, и выясним, какие именно параметры влияют на производительность расчета себестоимости.

Диагностика: определяем узкие места через логи расчета

Прежде чем приступать к изменению настроек, нам необходимо понять, на каком именно этапе система «зависает». В современных релизах УТ 11 и ERP предусмотрены встроенные инструменты логирования. Рассмотрим подробнее, как получить данные о ходе выполнения операций.

Для начала проанализируем отчет Подробнее о ходе расчета, который доступен непосредственно в рабочем месте закрытия месяца. Этот отчет предоставляет детальную информацию о каждом этапе: от формирования движений до расчета партий. В нем указывается процент времени, затраченный на каждый шаг, и количество обработанных записей. Если основное время уходит на Расчет партий, проблема, скорее всего, кроется в сложности цепочек товародвижения или методе оценки стоимости (например, ФИФО). Если же задержки происходят на этапе Актуализация движений по расчетам с партнерами, стоит обратить внимание на настройки онлайн-взаиморасчетов.

Посмотрим на пример структуры лога, который система ведет в фоновом режиме:


Этап 1: Формирование временных таблиц партий - 15 минут
Этап 2: Распределение затрат по правилам - 45 минут
Этап 3: Расчет себестоимости по организациям (в потоках) - 12 часов
Этап 4: Поиск и решение циклических зависимостей (Intercompany) - 4 часа

Настройка многопоточности (параллельный расчет)

Один из самых эффективных способов ускорения — включение многопоточного расчета. В конфигурациях УТ 11.4 и выше эта возможность выведена в пользовательский интерфейс. Разберем по шагам, как правильно настроить этот механизм.

В форме настройки параметров расчета себестоимости (доступна через регламентные операции или константы) можно указать Количество потоков. Однако здесь кроется распространенная ошибка: установка слишком большого значения (например, 100 потоков), как это обсуждалось в исходной теме. Выясним причину, почему это может быть вредно.

Важные правила настройки потоков:

  1. Количество потоков не должно превышать количество логических ядер процессора на сервере 1С. Оптимально устанавливать значение Количество ядер - 1 или Количество ядер - 2, чтобы оставить ресурсы для работы самой операционной системы и других фоновых процессов.
  2. Если установить 100 потоков на 16-ядерном процессоре, операционная система начнет тратить больше ресурсов на переключение контекста (context switching), чем на полезную работу. Это приведет к деградации производительности.
  3. Параллельность в 1С часто реализована на уровне организаций. Если у вас в базе одна огромная организация и десять мелких, система распределит расчет мелких по потокам, но все равно будет ждать завершения расчета самой крупной организации, который будет идти в один поток.

Оптимизация на уровне MSSQL Server

Поскольку расчет себестоимости — это тяжелая операция, связанная с огромным количеством запросов к базе данных, настройки SQL-сервера играют решающую роль. Рассмотрим основные параметры для MSSQL 2012 и более новых версий.

Настройка TempDB. Процедура закрытия месяца активно использует временные таблицы. Для исключения конфликтов выделения страниц (latch contention) необходимо разделить TempDB на несколько файлов одинакового размера. Рекомендуется создавать количество файлов, равное числу ядер (до 8 файлов).

Параметр MAXDOP. Для баз 1С стандартная рекомендация — Max Degree of Parallelism = 1. Это предотвращает распараллеливание одного запроса силами SQL-сервера, что часто вызывает блокировки. Однако в редких случаях для ускорения тяжелых расчетов можно протестировать значение 2, но делать это нужно под строгим контролем технологического журнала на предмет DEADLOCK.

Флаги трассировки. Если вы используете MSSQL версии ниже 2016, обязательно проверьте наличие включенных флагов трассировки 1117 и 1118. Они оптимизируют распределение дискового пространства для временных таблиц, что критично при массовых расчетах.

Влияние учетной политики и данных

Проанализируем ситуацию с точки зрения методики учета. Иногда программные настройки бессильны перед избыточной детализацией данных. Разберем, что можно оптимизировать в настройках программы:

  1. Метод оценки стоимости. Метод ФИФО (скользящая оценка) работает значительно медленнее, чем Средняя за месяц. Если бизнес-процессы позволяют, переход на средневзвешенную оценку может сократить время закрытия месяца в несколько раз.
  2. Обособленный учет. Использование учета по назначениям, сериям и характеристикам кратно увеличивает количество записей в регистрах себестоимости. Проанализируйте, действительно ли необходима такая детализация для каждой группы товаров.
  3. Схемы Интеркампани. Продажи между собственными организациями создают цепочки, которые система должна «размотать» при расчете. Чем сложнее эти цепочки (например, кольцевые перепродажи А -> Б -> В -> А), тем дольше будет идти расчет партий.

Административные меры ускорения

Чтобы итоговое закрытие месяца не занимало 36 часов в конце периода, необходимо выполнять предварительные расчеты. В 1С предусмотрено регламентное задание Расчет себестоимости (фоновый). Настроим его выполнение каждую ночь.

При таком подходе система будет постепенно актуализировать движения. Когда наступит время официального закрытия периода, алгоритму останется дорассчитать лишь небольшую часть данных, что существенно сократит время ожидания. Также крайне важно следить за состоянием регистра Задания к расчету себестоимости. Если в нем скопились «хвосты» за прошлые годы из-за перепроведения документов, их следует очистить или закрыть периоды для редактирования, чтобы система не пыталась пересчитывать историю при каждом запуске.

Подводя итог, отметим, что ускорение закрытия месяца — это комплексная задача. Мы должны объединить правильную настройку многопоточности в 1С (согласно количеству ядер), оптимизацию SQL-сервера и административный контроль за актуальностью данных. Только такой системный подход позволит сократить время расчета с десятков часов до приемлемых интервалов.

← На главную