Ситуация
Завод производит электротехническое оборудование для промышленных и городских сетей: термошкафы, электрощиты, кроссовое оборудование, подстанции. Предприятие крупное, документов и операций в учете — много.
Бухгалтерия закрывает период несколько раз в месяц: если после закрытия находят ошибку в первичных документах, месяц закрывают заново. Система при этом распределяет затраты, рассчитывает себестоимость и формирует финансовый результат. Процедура растягивается до 8 часов.
Особенно тяжело во время подготовки квартальной и полугодовой отчетности. В отчётный период ошибки в первичке находят регулярно, а значит, и перезакрывать месяц приходится чаще.
Запускать закрытие днем не получалось: тяжелая нагрузка на сервер мешала бы остальным сотрудникам. Поэтому процесс запускали вечером и уходили домой. Утром бухгалтерия узнавала результат: иногда закрытие успевало завершиться, иногда еще продолжалось, и тогда оставалось только ждать.
Сервер при этом был мощный и современный. Специалисты клиента не понимали, почему техника не справляется с обычной процедурой.

Задача
Заказчик обратился в implecs с другим запросом. В процессе его решения выяснилось, что закрытие месяца в 1С:ERP длится по 8 часов и более. Требовалось найти причину и ускорить процедуру.
Решение
Начали с аудита: опросили сотрудников предприятия и провели технический аудит сервера. Доступы дали быстро — вопрос держало на контроле руководство заказчика.
Провели аудит
Включили стандартные средства мониторинга Windows: посмотрели загрузку процессора, диска и оперативной памяти во время закрытия месяца. Цифры подтвердили то, что уже казалось странным: ресурсов серверу хватало с запасом. Значит, дело было не в мощности, а где-то в настройках.
Нашли причину в MS SQL Server
1С:ERP у заказчика работает в клиент-серверном варианте на MS SQL Server. Проверили настройки СУБД — они остались стандартными, «по умолчанию». Систему установили, подключили базу — и больше ничего не трогали. При таких настройках сервер и не мог отдать закрытию месяца больше ресурсов, чем позволял лимит по умолчанию.
Настроили сервер под реальную нагрузку
Раз дело было в настройках, а не в мощности сервера, пересчитали, сколько памяти нужно операционной системе и рабочим процессам 1С, а сколько можно отдать под MS SQL Server. Общий принцип такого расчета описан в методической поддержке 1С. Сначала фиксируется объем, который Windows и 1С потребляют в пик нагрузки, а остаток отдается под лимит max server memory СУБД.
Как распределили память сервера между 1С и MS SQL Server
| Показатель | Комментарий | Значение |
|---|---|---|
| Пользователей на сервере | Ориентир для расчета нагрузки | 20 |
| Всего ОЗУ на сервере | — | 256 ГБ |
| Память для ОС и системных процессов | Фиксированный объем с запасом | 16 ГБ |
| Память для сервера 1С | По факту потребления процессов в пик нагрузки | 64 ГБ |
| Максимум для MS SQL Server (max server memory) | Все, что осталось после ОС и 1С | ≈176 ГБ |
Дополнительно включили параллелизм, чтобы сервер мог выполнять несколько операций одновременно, и посоветовали настроить репликацию базы — ее у заказчика не было.
Проверили результат
Все изменения сначала опробовали на тестовом сервере. Несколько раз запускали закрытие месяца, снимали показатели и донастраивали. Проверили результат на разных месяцах: июнь закрылся за полтора часа, июль — за час сорок, а август, где данных было больше, занял чуть больше двух часов.
Когда показатели стабилизировались, настройки перенесли на рабочий сервер. Сделали это ночью, после резервного копирования, чтобы не мешать работе бухгалтерии. Утром снова запустили закрытие месяца и убедились: на рабочем сервере оно идет так же быстро, как на тестовом.
Что можно ускорить еще
Возможности серверных настроек почти исчерпаны. Следующий шаг — замена самого оборудования, а заказчик ее пока не планирует.
Дальше ускорить закрытие месяца можно через настройки учета в самой 1С:ERP. Например, время закрытия зависит от того, включен ли учет по направлениям деятельности и ведется ли учет по группам аналитического учета.
Сейчас команда вместе с заказчиком разбирает настройки учета и рассчитывает сократить время закрытия месяца еще на 20–25%.
Результат
Раньше закрытие месяца в 1С:ERP длилось 8 часов и более. Бухгалтерия запускала процесс вечером и уходила домой, не зная, завершится ли он к утру.
Теперь операция занимает 1,5–2 часа и укладывается в рабочий день. Бухгалтерии больше не нужно подгадывать вечер и ждать результата на следующее утро.
Себестоимость и финансовый результат теперь считаются в 4 раза быстрее. Если главбух находит ошибку и месяц нужно перезакрыть, это больше не занимает еще одну ночь — процедуру можно повторить в тот же день.
Длительность. Работы заняли неделю: аудит, прогоны на тестовом сервере и перенос изменений на рабочий сервер.
Команда. С нашей стороны над задачей работали руководитель проекта, системный администратор и функциональный архитектор. Системный администратор настраивал сервер, функциональный архитектор сейчас продолжает работу над оптимизацией учета. Со стороны заказчика — ИТ-отдел и руководитель, который принимал результат.