Подробное описание работы механизма расчета себестоимости в программах начиная с версии ERP 2.1.3 (и соответствующих ей версий КА и УТ)
Зачастую, когда встаёт вопрос о валовой прибыли предприятия, то большой проблемой становится корректная оценка себестоимости товаров. Для того, чтобы программисту было понятно, как программа рассчитывает себестоимость, нужно понимать алгоритмы, которых придерживались разработчики. Данная статья описывает, как это работает в актуальных (начиная с версии ERP 2.1.3 (и соответствующих ей версий КА и УТ)) версиях программы, и наиболее полезна для программиста.
Данные алгоритмы описаны разработчиками в комментариях расчета себестоимости.
- Описание
- Подробнее
Описание
Механизм оффлайнового (неоперативного) расчета себестоимости, движения по регистрам себестоимости, общая информация.
Начиная с версии ERP 2.1.3 (и соответствующих ей версий КА и УТ) различаются два типа движения:
- "первичные" — формируемые в соответствии с логикой документов при их проведении;
- "расчетные" — формируемые данным механизмом (идентификатором типа движения является новый реквизит "РасчетСебестоимости" регистров накопления).
Список регистров, обслуживаемых механизмом расчета себестоимости, см. в ИсходящиеДанныеМеханизма()
Регистратором расчетных движений теперь является первичный документ (из реквизита ДокументДвижения), а не документ РасчетСебестоимостиТоваров. Документ РасчетСебестоимостиТоваров больше не делает движений по следующим регистрам: ВыручкаИСебестоимостьПродаж, Закупки, ПрочиеРасходыНезавершенногоПроизводства (есть только в ERP и КА) (документ остается регистратором для этих регистров для обратной совместимости).
При перепроведении документов расчетные движения сохраняются, независимо от внесенных в документ изменений (Для этого в модуле набор записей обслуживаемых регистров размещен специальный код. Для примера см. модуль регистра накопления СебестоимостьТоваров — вызовы процедур этого модуля.). Изменения в документе будут учтены в расчетных движениях при перерасчете себестоимости.
Начиная с версии ERP 2.1.3 изменился алгоритм формирования и записи движений.
Теперь по каждому обслуживаемому механизмом регистру движения формируются следующим образом:
- перед началом расчета старые расчетные движения не очищаются — они остаются в ИБ до окончания расчета;
- новые расчетные движения, формируемые механизмом, помещаются в таблицу значений;
- при достижении определенного размера таблицы значений или при окончании очередного этапа расчета;
- новые движения из таблицы значений перекладываются во временную таблицу;
- при окончании расчета сравниваются новые (из временной таблицы) и старые (из данных ИБ) движения:
- перезаписываются движения только у тех документов, у которых есть отличия между старыми и новыми расчетными движениями;
- только документы с перезаписанными движениями регистрируются к отражению в учете.
Данные изменения позволяют:
- посмотреть себестоимость по документу из самого документа — отчетом "Движения документа";
- при перерасчете себестоимости перезаписывать только реально измененные расчетные движения;
- регистрировать к отражению в учете только документы с перезаписанными движениями (в ERP и КА).
Переход на версию ERP 2.1.3 (и соответствующие ей версии КА2 и УТ11)
При переходе на новую версию ранее сформированные расчетные движения автоматически не изменяются,
т.к. для этого нужен не простой перенос движений между регистраторами, а "эмуляция" пересчета себестоимости, что чревато…
Если запустить перерасчет старого периода, то в нем будут сформированы корректные движения по новой схеме.
Запуск расчета себестоимости.
Точкой входа в алгоритм расчета является процедура РассчитатьВсе() в которую предаются параметры:
- период расчета — месяц;
- возможен "облегченный" предварительный расчет себестоимости — позволяет формировать некоторые отчеты (если за указанный период уже был выполнен фактический расчет, то предварительный расчет выполняться не будет);
- расчет выполняется или по указанному массиву организаций, или по всем организациям, связанным с указанной организацией по схеме Интеркампани (см. СвязиОрганизацийПоСхемеИнтеркампани()):
- если организация для расчета не указана, то будет выполнен расчет по всем организациям, имеющим в указанном периоде движения по регистрам себестоимости;
- все организации, по которым выполняется фактический расчет, должны иметь одинаковый метод оценки стоимости запасов (см. ОпределитьМетодОценкиСтоимости());
- запуск расчета себестоимости возможен как интерактивно (из механизма закрытия месяца), так и из регламентного задания.

