Проблема экстремально долгого закрытия месяца (вплоть до 36 часов и более) является критической для крупных информационных баз на платформе 1С. В данной статье мы разберем, как значительно ускорить этот процесс, используя встроенные инструменты конфигураций Управление торговлей 11.4 и ERP Управление предприятием 2, а также настройки серверной инфраструктуры. Проанализируем ситуацию, когда стандартные методы не помогают, и выясним, какие именно параметры влияют на производительность расчета себестоимости.
Прежде чем приступать к изменению настроек, нам необходимо понять, на каком именно этапе система «зависает». В современных релизах УТ 11 и ERP предусмотрены встроенные инструменты логирования. Рассмотрим подробнее, как получить данные о ходе выполнения операций.
Для начала проанализируем отчет Подробнее о ходе расчета, который доступен непосредственно в рабочем месте закрытия месяца. Этот отчет предоставляет детальную информацию о каждом этапе: от формирования движений до расчета партий. В нем указывается процент времени, затраченный на каждый шаг, и количество обработанных записей. Если основное время уходит на Расчет партий, проблема, скорее всего, кроется в сложности цепочек товародвижения или методе оценки стоимости (например, ФИФО). Если же задержки происходят на этапе Актуализация движений по расчетам с партнерами, стоит обратить внимание на настройки онлайн-взаиморасчетов.
Посмотрим на пример структуры лога, который система ведет в фоновом режиме:
Этап 1: Формирование временных таблиц партий - 15 минут
Этап 2: Распределение затрат по правилам - 45 минут
Этап 3: Расчет себестоимости по организациям (в потоках) - 12 часов
Этап 4: Поиск и решение циклических зависимостей (Intercompany) - 4 часа
Один из самых эффективных способов ускорения — включение многопоточного расчета. В конфигурациях УТ 11.4 и выше эта возможность выведена в пользовательский интерфейс. Разберем по шагам, как правильно настроить этот механизм.
В форме настройки параметров расчета себестоимости (доступна через регламентные операции или константы) можно указать Количество потоков. Однако здесь кроется распространенная ошибка: установка слишком большого значения (например, 100 потоков), как это обсуждалось в исходной теме. Выясним причину, почему это может быть вредно.
Важные правила настройки потоков:
Количество ядер - 1 или Количество ядер - 2, чтобы оставить ресурсы для работы самой операционной системы и других фоновых процессов.Поскольку расчет себестоимости — это тяжелая операция, связанная с огромным количеством запросов к базе данных, настройки SQL-сервера играют решающую роль. Рассмотрим основные параметры для MSSQL 2012 и более новых версий.
Настройка TempDB. Процедура закрытия месяца активно использует временные таблицы. Для исключения конфликтов выделения страниц (latch contention) необходимо разделить TempDB на несколько файлов одинакового размера. Рекомендуется создавать количество файлов, равное числу ядер (до 8 файлов).
Параметр MAXDOP. Для баз 1С стандартная рекомендация — Max Degree of Parallelism = 1. Это предотвращает распараллеливание одного запроса силами SQL-сервера, что часто вызывает блокировки. Однако в редких случаях для ускорения тяжелых расчетов можно протестировать значение 2, но делать это нужно под строгим контролем технологического журнала на предмет DEADLOCK.
Флаги трассировки. Если вы используете MSSQL версии ниже 2016, обязательно проверьте наличие включенных флагов трассировки 1117 и 1118. Они оптимизируют распределение дискового пространства для временных таблиц, что критично при массовых расчетах.
Проанализируем ситуацию с точки зрения методики учета. Иногда программные настройки бессильны перед избыточной детализацией данных. Разберем, что можно оптимизировать в настройках программы:
ФИФО (скользящая оценка) работает значительно медленнее, чем Средняя за месяц. Если бизнес-процессы позволяют, переход на средневзвешенную оценку может сократить время закрытия месяца в несколько раз.Чтобы итоговое закрытие месяца не занимало 36 часов в конце периода, необходимо выполнять предварительные расчеты. В 1С предусмотрено регламентное задание Расчет себестоимости (фоновый). Настроим его выполнение каждую ночь.
При таком подходе система будет постепенно актуализировать движения. Когда наступит время официального закрытия периода, алгоритму останется дорассчитать лишь небольшую часть данных, что существенно сократит время ожидания. Также крайне важно следить за состоянием регистра Задания к расчету себестоимости. Если в нем скопились «хвосты» за прошлые годы из-за перепроведения документов, их следует очистить или закрыть периоды для редактирования, чтобы система не пыталась пересчитывать историю при каждом запуске.
Подводя итог, отметим, что ускорение закрытия месяца — это комплексная задача. Мы должны объединить правильную настройку многопоточности в 1С (согласно количеству ядер), оптимизацию SQL-сервера и административный контроль за актуальностью данных. Только такой системный подход позволит сократить время расчета с десятков часов до приемлемых интервалов.