Рассмотрим одну из актуальных и сложных тем в 1С:ERP – работу с плановыми калькуляциями. Многие пользователи сталкиваются с некорректными расчетами, задвоением движений и трудностями в учете полуфабрикатов. Давайте вместе разберем причины этих проблем и найдем способы их решения, опираясь на опыт производственников и техническую документацию.
Начнем с понимания того, для чего вообще нужны плановые калькуляции в 1С:ERP. Они являются мощным инструментом для:
Плановые калькуляции позволяют нам учесть все необходимые ресурсы и затраты, связанные с производством, и установить плановую цену продукта. Это включает затраты на материалы, труд, амортизацию оборудования, коммунальные услуги и другие расходы. Функционал плановых калькуляций находится в блоке "Производство" 1С:ERP и тесно интегрирован с другими подсистемами, что обеспечивает централизованное проведение расчетов и комплексный анализ данных. Плановая себестоимость может быть использована для управленческого учета в течение определенного периода, что позволяет получить оперативные данные без необходимости ежедневного расчета фактической себестоимости.
Достоверный результат плановой калькуляции напрямую зависит от качества исходных данных. Давайте разберем по шагам, что необходимо сделать перед расчетом:
Если расчет не удался, сформируется "Протокол расчета". Внимательно изучите его, он подробно покажет, по каким позициям возникли проблемы и почему.
Теперь давайте проанализируем наиболее распространенные проблемы, с которыми сталкиваются пользователи, и выясним их причины, опираясь на информацию из форумов и наш совместный опыт.
Многие пользователи отмечают, что при расчете плановых калькуляций могут возникать задвоения движений и ошибки при разузловании. Разберем эту ситуацию подробнее.
КлючПартии в регистрахПользователи сталкиваются с некорректным расчетом из-за проблем с измерением КлючПартии.
ПлановыеТрудозатраты, ПлановыеМатериальныеЗатраты, ПлановыеПрочиеЗатраты измерение КлючПартии было добавлено с типом УникальныйИдентификатор. Проблема в том, что УникальныйИдентификатор не может быть измерением регистра накопления напрямую. В итоге, реквизит имеет пустой (незаполненный) тип, что приводит к некорректному расчету и сбоям в работе подсистемы.Еще одна серьезная проблема – невозможность отследить, куда сколько полуфабриката пошло.
Изделие. Это означает, что если один и тот же полуфабрикат используется в производстве нескольких разных изделий, система суммирует его затраты без привязки к конкретному изделию.Изделие 1 - Полуфабрикат 1 (10 шт)
Изделие 2 - Полуфабрикат 1 (5 шт)
В типовой конфигурации в регистре мы можем увидеть запись: Полуфабрикат 1 (15 шт - 1000 руб.), но без возможности узнать, сколько из этих 15 штук пошло на Изделие 1, а сколько на Изделие 2.
Рассмотрим, как правильно учитывать полуфабрикаты, чтобы избежать проблем.
Предположим, Продукт состоит из: Материал1, Полуфабрикат1, Полуфабрикат2.
Полуфабрикат1 состоит из: Материал1, Полуфабрикат2.
В этом случае все компоненты должны участвовать в соответствии с нормами расхода, перемножаясь на разных уровнях в разных пропорциях. Калькуляция рассчитывается для того, что в ней указано. Если Полуфабрикат2 входит в состав Полуфабриката1, который, в свою очередь, входит в Продукт, то затраты на Полуфабрикат2 должны быть учтены на обоих уровнях, но без зацикливания (т.е. Полуфабрикат1 не может входить в состав Полуфабриката2).
В плановых калькуляциях версии 2.5+ мы можем добавлять список продукции или полуфабрикатов, плановую себестоимость которых нужно узнать, и для каждой строки выбирать соответствующую ресурсную спецификацию.
Хотя в типовой конфигурации многие процессы скрыты, мы можем посмотреть на логику работы через модуль менеджера ресурсных спецификаций. Например, алгоритм подбора и заполнения спецификаций часто находится в модуле менеджера объекта РесурсныеСпецификации. Если вы столкнулись с необходимостью доработки, вам может пригодиться следующий подход для обхода спецификаций:
// Пример схематичного кода для обхода спецификаций (для понимания логики)
Функция ПолучитьСоставИзделия(Изделие, Спецификация, ТаблицаСостава)
// Здесь происходит разузлование спецификации
// Получаем компоненты из текущей спецификации
Для Каждого Компонент Из Спецификация.Состав Цикл
Если Компонент.Номенклатура.ТипНоменклатуры = Перечисления.ТипыНоменклатуры.Полуфабрикат Тогда
// Если компонент - полуфабрикат, рекурсивно вызываем функцию
НоваяСпецификация = ПолучитьАктуальнуюСпецификацию(Компонент.Номенклатура);
Если НоваяСпецификация Тогда
ПолучитьСоставИзделия(Компонент.Номенклатура, НоваяСпецификация, ТаблицаСостава);
КонецЕсли;
Иначе
// Добавляем материал в таблицу состава
СтрокаСостава = ТаблицаСостава.Добавить();
СтрокаСостава.Номенклатура = Компонент.Номенклатура;
СтрокаСостава.Количество = Компонент.Количество;
// Здесь может быть добавлена проверка на дублирование
КонецЕсли;
КонецЦикла;
КонецФункции;
Обратите внимание, что в этом схематичном примере в реальном коде необходимо добавить проверки на зацикливание и на уже добавленные элементы, чтобы избежать ошибок, о которых мы говорили ранее.
Работа с плановыми калькуляциями в 1С:ERP требует внимательности к деталям и глубокого понимания логики системы. Мы выяснили, что многие проблемы связаны с недоработками в старых версиях конфигурации, особенно в части обработки измерений в регистрах и логики разузлования. Однако, при правильной настройке исходных данных (цены, спецификации, нормативы) и использовании актуальных версий 1С:ERP, можно добиться корректных и достоверных результатов. Всегда обращайте внимание на "Протокол расчета" и, при необходимости, не бойтесь анализировать код для более глубокого понимания причин ошибок.
← К списку