Перенос документов «Отчет производства за смену» (ОПЗС) из комплексных производственных систем, таких как «1С:Управление производственным предприятием 1.3» (УПП), в регламентированные базы вроде «1С:Бухгалтерия предприятия 2.0» (БП) — классическая задача при интеграции. Однако программисты часто сталкиваются с непредвиденными трудностями: в исходных документах УПП плановые цены могут отсутствовать, а при включенном режиме РАУЗ (расширенная аналитика учета затрат) в регистрах накопления нет прямого измерения Номенклатура.
В этой статье мы подробно разберем, как устроена архитектура хранения затрат в УПП, как связать ключи аналитики с конкретными позициями номенклатуры и какими способами можно заполнить плановую стоимость в приемнике, чтобы не нарушить методологию бухгалтерского учета.
Прежде чем приступать к написанию правил конвертации, нам необходимо разобраться в методологии учета. Часто разработчики путают два принципиально разных понятия:
Иногда возникает соблазн установить в правилах конвертации плановую цену равной «1 рублю» для всех позиций, уповая на то, что закрытие месяца в БП все равно скорректирует стоимость до фактической. Делать так категорически нельзя!
В «1С:Бухгалтерии» плановые цены выступают в роли коэффициентов распределения косвенных расходов. Если для всей продукции указать цену в 1 рубль, то программа распределит общепроизводственные и общехозяйственные затраты поровну на каждую единицу выпуска, независимо от сложности изделия. В итоге себестоимость дорогостоящего станка и дешевой гайки сравняется, что приведет к грубейшему искажению финансовой отчетности.
При включенном режиме РАУЗ в УПП все движения по производственным затратам и выпуску пишутся в регистр накопления УчетЗатратРегл (или УчетЗатрат для управленческого учета). Если мы откроем структуру этого регистра, то увидим, что привычного измерения Номенклатура там действительно нет. Вместо него используются универсальные измерения:
АналитикаУчетаЗатратАналитикаВидаУчетаАналитикаРаспределенияЗатратЭто сделано для оптимизации производительности СУБД и универсальности хранения данных. Связь между регистром накопления и конкретными субконто (номенклатура, склады, серии, характеристики) осуществляется через специальный вспомогательный регистр сведений — АналитикаУчетаЗатрат. Каждой уникальной комбинации параметров присваивается свой уникальный Ключ аналитики (ссылка на элемент этого регистра сведений).
Чтобы связать оборотные данные по выпуску с конкретной номенклатурой, нам необходимо выполнить соединение таблицы оборотов регистра накопления с регистром сведений по полю ключа аналитики. Рассмотрим пример запроса, который выбирает фактическую стоимость выпуска за период:
ВЫБРАТЬ
УчетЗатратОбороты.КлючАналитикиУчетаЗатрат КАК КлючАналитики,
АналитикаЗатрат.Номенклатура КАК Номенклатура,
АналитикаЗатрат.ХарактеристикаНоменклатуры КАК Характеристика,
УчетЗатратОбороты.КоличествоОборот КАК КоличествоВыпуска,
УчетЗатратОбороты.СтоимостьОборот КАК ФактическаяСтоимость,
ВЫБОР
КОГДА УчетЗатратОбороты.КоличествоОборот <> 0
ТОГДА УчетЗатратОбороты.СтоимостьОборот / УчетЗатратОбороты.КоличествоОборот
ИНАЧЕ 0
КОНЕЦ КАК ФактическаяЦенаЕдиницы
ИЗ
РегистрНакопления.УчетЗатратРегл.Обороты(&НачалоПериода, &КонецПериода, Авто, ) КАК УчетЗатратОбороты
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаУчетаЗатрат КАК АналитикаЗатрат
ПО УчетЗатратОбороты.КлючАналитикиУчетаЗатрат = АналитикаЗатрат.Ссылка
ГДЕ
АналитикаЗатрат.Номенклатура В (&СписокНоменклатуры)
И АналитикаЗатрат.Ссылка.РазделУчета = ЗНАЧЕНИЕ(Перечисление.РазделыУчетаАналитикиУчетаЗатрат.Выпуск)
В данном запросе мы соединяем виртуальную таблицу оборотов РегистрНакопления.УчетЗатратРегл.Обороты с таблицей регистра сведений РегистрСведений.АналитикаУчетаЗатрат по равенству полей КлючАналитикиУчетаЗатрат и Ссылка. Фильтр по разделу учета Выпуск позволяет отобрать только те записи, которые отражают выход готовой продукции из производства.
Если на предприятии настроен полноценный расчет плановой себестоимости, эти цены хранятся в регистре сведений ЦеныНоменклатуры по определенному типу цен. Название этого типа цен указывается в настройках параметров учета УПП. Вытащить плановую цену для заполнения ОПЗС в БП можно следующим запросом:
ВЫБРАТЬ
ЦеныСрезПоследних.Номенклатура КАК Номенклатура,
ЦеныСрезПоследних.ХарактеристикаНоменклатуры КАК Характеристика,
ЦеныСрезПоследних.Цена КАК ПлановаяЦена,
ЦеныСрезПоследних.Валюта КАК Валюта
ИЗ
РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
&Период,
ТипЦен = &ТипЦенПлановойСебестоимости
И Номенклатура В (&СписокНоменклатуры)
) КАК ЦеныСрезПоследних
Этот метод является наиболее правильным с точки зрения методологии учета. В правилах конвертации данных (КД 2.1) при выгрузке документа «Отчет производства за смену» мы можем использовать этот запрос в обработчике событий, передавая туда дату документа и список номенклатурных позиций из табличной части.
Если бухгалтеры или экономисты утверждают, что они «не знают плановых цен» и никогда их не вносили, мы можем помочь им настроить автоматическое заполнение этого регистра силами самой системы УПП. Для этого используется специализированная обработка «Расчет плановой себестоимости». Она умеет работать в двух режимах:
После того как обработка выполнит расчет, полученные цены автоматически запишутся в регистр ЦеныНоменклатуры, откуда мы легко сможем забирать их при конвертации документов.
Рассмотрим еще один сценарий. Если специфика бизнеса позволяет отказаться от промежуточной оценки выпуска в течение месяца, мы можем настроить программу-приемник («1С:Бухгалтерия») на работу вообще без использования плановой себестоимости. В БП 2.0 и БП 3.0 эта возможность поддерживается на уровне учетной политики.
Для реализации этого сценария выполним следующие действия:
При такой настройке колонка Цена (плановая) в документе «Отчет производства за смену» в БП перестает быть обязательной для заполнения и может оставаться пустой. Выпуск в течение месяца будет отражаться только в количественном выражении, а полноценная стоимостная оценка на счете 43 сформируется автоматически в конце месяца при выполнении регламентной операции «Закрытие месяца».
Этот вариант значительно упрощает процесс конвертации и избавляет разработчика от необходимости писать сложные запросы к базе УПП, однако лишает бухгалтеров возможности видеть ориентировочную стоимость запасов на складах до окончания отчетного периода.
Мы подробно разобрали проблему переноса плановых сумм из УПП в Бухгалтерию. Наилучшим решением является совместное использование методологических и технических средств: настройка в УПП автоматического расчета плановой себестоимости по фактическим данным прошлого периода и последующее извлечение этих данных простым запросом к срезу последних регистра ЦеныНоменклатуры.