Расчет себестоимости в крупных информационных системах на базе 1С:ERP Управление предприятием — это один из наиболее ресурсоемких процессов. В компаниях с большим документооборотом и высокой активностью (более 700 одновременно работающих пользователей) эта процедура нередко превращается в серьезную техническую проблему. Бухгалтеры и финансовые аналитики часто сталкиваются с тем, что расчет длится часами, а до момента проведения финального закрытия месяца в документах списания и проводках отсутствуют стоимостные оценки ТМЦ.
В этой статье мы подробно и по шагам разберем, как устроен механизм расчета себестоимости в 1С:ERP, выясним причины медленной работы алгоритмов и рассмотрим практические методы оптимизации производительности. Также мы проанализируем структуру регистров накопления, в которых хранятся стоимостные данные, и изучим системные варианты решения проблемы «отсутствия цен» при оперативном списании материалов.
Проанализируем архитектуру системы и найдем оптимальные решения для стабильной и быстрой работы программы.
---
На крупных предприятиях время расчета себестоимости без должной оптимизации может составлять от 10 до 30 часов, а в некоторых случаях процесс и вовсе прерывается из-за критических ошибок нехватки памяти или таймаутов СУБД. Выясним основные причины такой медлительности алгоритмов:
Рассмотрим подробнее, какими методами мы можем существенно сократить время закрытия месяца (вплоть до 1,5–3 часов):
В настройках параметров закрытия месяца 1С:ERP предусмотрена возможность выполнения расчетов в несколько параллельных потоков. Это позволяет распределить нагрузку на все доступные ядра процессора сервера приложений. Настроить многопоточность можно в меню Администрирование — Настройка параметров системы — Печатные формы, отчеты и обработки — Многопоточное выполнение регламентных заданий.
Для крупных баз (700+ пользователей) настоятельно рекомендуется разносить рабочие процессы в кластере 1С. Выделите под фоновые и регламентные задания (включая расчет себестоимости) отдельный рабочий сервер. Это позволит избежать блокировок и зависания сеансов пользователей во время выполнения процедуры закрытия месяца.
При расчете себестоимости платформа активно создает, изменяет и удаляет временные таблицы в базе данных. Соответственно, производительность СУБД напрямую зависит от скорости дисковой подсистемы, на которой расположена системная база TempDB (для Microsoft SQL Server или PostgreSQL). Настоятельно рекомендуется перенести файлы баз данных и особенно TempDB на высокоскоростные накопители NVMe SSD корпоративного класса, а также настроить регулярное обновление статистик СУБД перед запуском закрытия месяца.
Чтобы не копить колоссальный объем расчетов на последний день месяца, настройте регламентные задания для ежедневного распределения затрат и партий в фоновом режиме. Для этого используются стандартные регламентные задания: РаспределениеЗатратИРасчетСебестоимости, ОтражениеДокументовВРегламентированномУчете. Таким образом, к моменту финального закрытия месяца системе останется лишь скорректировать копейки и отклонения, а основная аналитическая работа уже будет выполнена в течение месяца.
---
В 1С:ERP реализовано четкое разделение между оперативным контуром (количественный учет движения товаров) и финансовым контуром (бухгалтерские и налоговые стоимостные проводки). Разберем, в каких регистрах накопления фиксируются движения ТМЦ и их стоимостная оценка.
Основным регистром, в котором хранится вся информация о стоимости запасов организации, является регистр накопления СебестоимостьТоваров (Регистр накопления «Себестоимость товаров»). Посмотрим на его структуру и логику заполнения по шагам:
ПриобретениеТоваровУслуг в регистр СебестоимостьТоваров сразу записывается количество и предварительная стоимость (цена поставщика). Данные пишутся в разрезе измерений: Организация, РазделУчета, АналитикаУчетаНоменклатуры, ВидЗапасов.ПередачаМатериаловВПроизводство) система делает запись в регистр СебестоимостьТоваров. При этом количество списывается сразу, а вот стоимостные ресурсы (такие как Стоимость, СтоимостьРегл, СтоимостьБезНДС) могут оставаться пустыми (равными нулю).СебестоимостьТоваров.Помимо основного регистра себестоимости, в расчете и хранении цен участвуют следующие регистры накопления:
ВыручкаИСебестоимостьПродаж — используется для фиксации себестоимости реализованной продукции и товаров для расчета финансового результата;ДетализацияПартийТоваровДляНДСиУСН — хранит детальную информацию о партиях приобретения ТМЦ, необходимую для корректного выделения входящего НДС и формирования расходов при УСН.Для понимания того, как изнутри выглядят движения по регистру себестоимости, приведем пример концептуального SQL-подобного запроса к таблице остатков и оборотов этого регистра. Разработчик или аналитик может использовать его для анализа структуры данных:
ВЫБРАТЬ
СебестоимостьОбороты.АналитикаУчетаНоменклатуры.Номенклатура КАК Товар,
СебестоимостьОбороты.Организация КАК Организация,
СебестоимостьОбороты.КоличествоПриход КАК КолПриход,
СебестоимостьОбороты.СтоимостьПриход КАК СуммаПриход,
СебестоимостьОбороты.КоличествоРасход КАК КолРасход,
СебестоимостьОбороты.СтоимостьРасход КАК СуммаРасход
ИЗ
РегистрНакопления.СебестоимостьТоваров.Обороты(&НачалоПериода, &КонецПериода, Авто, ) КАК СебестоимостьОбороты
Важное примечание: Если вы откроете движения документа списания до расчета себестоимости, вы увидите, что в бухгалтерском учете проводка (например, Дт 20.01 — Кт 10.01) сформирована либо вообще без суммы, либо по плановой (предварительной) цене. Окончательные точные суммы попадут в проводки регламентированного учета только после проведения регламентной операции «Отражение документов в регламентированном учете», которая запускается строго после успешного расчета себестоимости.
---
Требование бухгалтеров видеть стоимость списания материалов «здесь и сейчас» (в момент проведения документа, а не в конце месяца) — одна из наиболее частых методологических проблем при внедрении 1С:ERP. Рассмотрим три системных способа решения этой задачи без изменения типовой конфигурации программы.
В современных редакциях 1С:ERP (начиная с версии 2.5) механизм «Предварительного расчета себестоимости» был модернизирован в полноценный «Режим предварительного закрытия месяца».
Проанализируем, как работает данный инструмент:
Поведение системы при проведении документов списания во многом зависит от того, какой метод оценки стоимости товаров выбран в настройках учетной политики организации. Перейдем в меню НСИ и администрирование — Организации — Учетная политика и рассмотрим три варианта:
Если на предприятии используется метод оценки «Средняя за месяц», но бухгалтерам жизненно необходимо видеть стоимостные оценки в течение месяца, отличным выходом является использование плановых цен.
Разберем этот алгоритм по шагам:
УстановкаЦенНоменклатуры.---
Для успешного решения проблем с расчетом себестоимости в 1С:ERP на базах с 700+ пользователями необходимо действовать комплексно:
Использование данных рекомендаций позволит сделать процесс расчета себестоимости прозрачным, быстрым и удобным как для ИТ-специалистов, так и для сотрудников бухгалтерии.