При внедрении 1С:ERP на крупных промышленных предприятиях часто возникает дилемма: стоит ли опускаться до детального пооперационного планирования или лучше ограничиться уровнем этапов производства. В этой статье мы проанализируем ситуацию, когда объем данных достигает 100 000 этапов и до 1 000 000 производственных операций в месяц. Мы разберем, как система реагирует на такие нагрузки, какие механизмы задействуются при расчете себестоимости и как правильно выстроить архитектуру решения.
Первый и самый важный вопрос, который волнует архитекторов систем: «Прожует» ли расчет себестоимости миллион документов ПроизводственнаяОперация2_2? Разберем этот момент подробно. В типовой архитектуре 1С:ERP версии 2.4 и 2.5 производственные операции используются для внутрицехового управления и пооперационного планирования (MES-уровень внутри ERP). Важно понимать, что сами по себе документы ПроизводственнаяОперация2_2 не делают движений по регистрам накопления, которые участвуют в расчете себестоимости (таким как ПартииТоваровОрганизаций или СебестоимостьТоваров).
Основным объектом, формирующим затраты и выпуски, является документ ЭтапПроизводства (в последних версиях — ВыполнениеЭтаповПроизводства). Именно на уровне этапа происходит распределение материалов, начисление трудозатрат и фиксация выпуска продукции. Таким образом, наличие миллиона операций само по себе не усложнит математическую модель расчета себестоимости, так как система линейных уравнений строится по узлам затрат, привязанным к этапам.
Однако не стоит расслабляться. Огромное количество операций создает косвенную нагрузку. Проанализируем, в чем она заключается:
Рассмотрим, почему версия конфигурации имеет критическое значение. В версии 1С:ERP 2.5 был существенно переработан движок распределения затрат и партионного учета (версия 2.2). Посмотрим на ключевые улучшения:
ЗакрытиеМесяца.Если ваша компания планирует оперировать миллионами документов, использование версии ниже 2.5 крайне не рекомендуется из-за архитектурных ограничений старого движка распределения затрат.
Выясним причину, по которой данные часто загружаются из внешних систем. В нашем примере планируется загрузка из самописной MES на базе 1С. Это грамотный архитектурный ход. Разберем, как правильно организовать этот процесс, чтобы ERP не «легла» под нагрузкой:
Проанализируем метод загрузки. Вместо использования тяжелого механизма EnterpriseData (XDTO), который на миллионных объемах будет работать крайне медленно из-за сериализации, рассмотрим использование HTTP-сервисов. Это позволит передавать данные порциями (пакетами) в JSON-формате.
Пример структуры кода для приема данных в ERP через HTTP-сервис:
Функция ПринятьПроизводственныеОперации(ДанныеЗапроса)
// Десериализация JSON в массив структур
Операции = ДанныеИзJSON(ДанныеЗапроса);
Для Каждого СтрОперация Из Операции Цикл
НоваяОперация = Документы.ПроизводственнаяОперация2_2.СоздатьДокумент();
НоваяОперация.Дата = СтрОперация.Дата;
// Заполнение реквизитов из структуры
ЗаполнитьЗначенияСвойств(НоваяОперация, СтрОперация);
// Важно: на больших объемах используем режим записи без проведения,
// если это допустимо бизнес-процессом, или отложенное проведение
НоваяОперация.Записать(РежимЗаписиДокумента.Запись);
КонецЦикла;
КонецФункции
Важный совет: Чтобы минимизировать влияние на пользователей в рабочее время, используйте механизм очередей. Данные из MES попадают в промежуточную (буферную) таблицу в ERP, а специальное регламентное задание «разбирает» эту очередь и создает документы в периоды низкой активности системы.
Для стабильной работы с миллионом операций в месяц стандартного сервера будет недостаточно. Рассмотрим необходимые требования к «железу» и софту:
ПроизводственнаяОперация2_2 в час.Read Committed Snapshot Isolation (RCSI). Это позволит читающим транзакциям не блокироваться пишущими, что жизненно важно при постоянном потоке данных из MES.Проанализируем процесс закрытия периода. 100 000 документов ВыполнениеЭтаповПроизводства — это огромная нагрузка на этап «Расчет фактической себестоимости». Посмотрим, как ускорить этот процесс:
_Document345 (или аналогичная в вашей базе) не разрасталась до критических размеров.Подводя итог, можно сказать: 1С:ERP способна «переварить» миллион производственных операций, но это требует высокой квалификации от команды внедрения. Главный вывод: сами операции не тормозят расчет себестоимости, так как в нем не участвуют, но они создают колоссальную нагрузку на инфраструктуру и общую производительность базы данных.
Если ваша цель — детальный контроль в цехах, используйте связку «Внешняя MES + 1С:ERP». В ERP загружайте операции для оперативного планирования и учета выработки (сдельной оплаты), но держите «руку на пульсе» производительности СУБД, регулярно проводя технологический аудит.