Одной из самых обсуждаемых проблем при внедрении 1С:ERP 2 является длительное время выполнения регламентных операций закрытия месяца. Слухи о том, что расчет себестоимости может занимать 2-3 суток, часто пугают руководителей и становятся поводом для радикальных, но не всегда верных решений, таких как разделение базы на торговую и производственную. В рамках этой статьи мы проанализируем реальный опыт специалистов, разберем архитектурные особенности системы и выясним, как сократить время закрытия месяца с нескольких суток до считанных минут или часов.
Рассмотрим ситуацию, когда топ-менеджмент предлагает вынести производство в отдельную базу ERP, чтобы торговые операции не страдали от «зависаний» при закрытии периода. С точки зрения методологии 1С, это крайняя мера. Разделение баз порождает огромные сложности с синхронизацией нормативно-справочной информации (НСИ), дублированием ввода документов и невозможностью оперативно видеть общую картину финансовых результатов. Современные версии 1С:ERP (начиная с 2.4 и 2.5) обладают достаточным инструментарием для того, чтобы производить расчеты внутри единой базы без критических задержек.
Проанализируем один из самых эффективных способов ускорения — использование параллельных вычислений. В 1С:ERP расчет партий и себестоимости может выполняться в несколько потоков. Если ваш сервер обладает мощным многоядерным процессором, а нагрузка на него в момент закрытия не превышает 10-20%, значит, система работает в один поток и не использует ресурсы железа на полную мощность.
Начиная с релизов ветки 2.4.6, управление многопоточностью вынесено в пользовательский интерфейс. Выполним следующие действия:
В более старых версиях или для глубокого тюнинга программисты могут использовать параметры МаксимальноеКоличествоФЗРасчетаПартий или МаксимальноеКоличествоФЗ, которые находятся в общих модулях ПартионныйУчет22 и УниверсальныеМеханизмыПартийИСебестоимости.
Выясним причину, по которой расчет «зависает» на этапе решения систем линейных уравнений. Это часто происходит при наличии встречных выпусков или сложных цепочек перемещений между организациями (Интеркампани). Ранее расчет производился программным кодом конфигурации, что было крайне медленно.
Важное решение: Начиная с версии ERP 2.4.8 и платформы 8.3.14.1565, реализован механизм решения СЛАУ на уровне платформы. Алгоритмы, написанные на C++, работают в десятки раз быстрее. Для активации этого ускорения необходимо убедиться, что версия платформы и конфигурации соответствует требованиям. Это позволяет сократить расчет с 50 часов до 30-40 минут в крупных производственных холдингах.
Проанализируем ситуацию с «шаловливыми ручонками» пользователей. В 1С:ERP 2.4 была внедрена новая концепция работы с взаиморасчетами и видами запасов. Рассмотрим ключевые моменты:
ИсправлениеРазвернутогоСальдоТоваровОрганизаций. Он позволяет корректировать ошибки в аналитике учета номенклатуры и ГТД без полного перепроведения цепочки документов, что существенно экономит время.Резервы организаций перед перепроведением, хотя в идеале следует настраивать фоновое исправление минусов.Посмотрим на проблему со стороны системного администрирования. Расчет себестоимости — это интенсивная работа с временными таблицами. Разберем шаги по оптимизации СУБД:
TempDB на самые быстрые диски (NVMe) и разделить её на несколько файлов равного размера (по количеству ядер процессора).СебестоимостьТоваров и ВыручкаИСебестоимостьПродаж.Max Degree of Parallelism в значение 1 или 4, чтобы избежать чрезмерных блокировок при выполнении сложных вложенных запросов.Если топ-менеджменту данные о себестоимости нужны ежедневно для оперативного управления, не обязательно «закрывать месяц» полностью каждые сутки. В 1С:ERP предусмотрен механизм Предварительного расчета. Разберем его особенности:
Он может запускаться по расписанию (например, ночью) и рассчитывать стоимость ТМЦ по методу среднего взвешенного за период. Это не делает проводок в регламентированном учете, но заполняет управленческие регистры, позволяя видеть маржинальность продаж «здесь и сейчас» без блокировки работы всей базы.
Если вы занимаетесь доработкой системы, обратите внимание на то, как вызываются механизмы партионного учета. Рассмотрим пример использования фоновых заданий для распределения партий, который можно встретить в типовых механизмах:
// Пример логики запуска фонового расчета
ПараметрыЗапуска = Новый Структура;
ПараметрыЗапуска.Вставить("Организация", ВыбОрганизация);
ПараметрыЗапуска.Вставить("Период", КонецМесяца(ТекущаяДата()));
ФоновыеЗадания.Выполнить("ПартионныйУчет.ВыполнитьРасчет", ПараметрыЗапуска);
Использование подобных конструкций позволяет выносить тяжелые вычисления за пределы основного сеанса пользователя, что делает систему более отзывчивой.
Подводя итог, можно сказать: цифра в 2-3 суток на закрытие месяца в 1С:ERP 2 — это либо признак очень старого релиза (до появления платформенного СЛАУ), либо следствие некорректной настройки серверов и методологии учета. При правильном подходе (использование ERP 2.4/2.5, настройка многопоточности, оптимизация SQL и отказ от избыточного перепроведения документов) время расчета сокращается до вполне приемлемых величин, не требующих разделения единого информационного пространства компании.