Как программно получить текущую себестоимость материалов и полуфабрикатов в 1С:УПП при включенном РАУЗ

Программист 1С v8.3 (Обычные формы) Управленческий учет Промышленность, строительство и АПК
← На главную

Работа с себестоимостью в конфигурации 1С:Управление производственным предприятием (УПП) существенно меняется при переходе на режим РАУЗ (Расширенная аналитика учета затрат). В отличие от традиционного партионного учета, где мы привыкли обращаться к регистру ПартииТоваровНаСкладах, РАУЗ использует принципиально иную архитектуру. В этой статье мы подробно разберем, как программно вытащить данные о стоимости материалов и полуфабрикатов, учитывая специфику этой системы.

Понимаем архитектуру РАУЗ: Где искать данные?

Первое, что нам необходимо усвоить: в РАУЗ нет прямого разделения на партии. Все данные о движениях и остатках ТМЦ, а также затрат на производство, хранятся в универсальных регистрах накопления. Основными для нас являются:

  1. УчетЗатрат — используется для целей управленческого учета.
  2. УчетЗатратРег — предназначен для регламентированного (бухгалтерского и налогового) учета.

Рассмотрим структуру этих регистров. В них вы не найдете привычных измерений Номенклатура, Склад или Серия. Вместо этого используются так называемые Ключи аналитики. Это ссылки на специальные справочники, которые группируют наборы параметров:

Шаг 1: Получение ключей аналитики

Чтобы программно получить себестоимость конкретного материала, нам сначала нужно узнать его ключ аналитики. Проанализируем, как это сделать с помощью запроса. Мы будем искать соответствие номенклатуры и склада в справочниках аналитик.

Для этого удобно использовать функции общих модулей или написать прямой запрос к регистру сведений АналитикаУчетаНоменклатуры. Посмотрим на пример формирования аналитик в коде:


// Пример получения ключа аналитики для номенклатуры
Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ
    |	АналитикаУчетаНоменклатуры.Ссылка КАК КлючНоменклатуры
    |ИЗ
    |	Справочник.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры
    |ГДЕ
    |	АналитикаУчетаНоменклатуры.Номенклатура = &Номенклатура
    |	И АналитикаУчетаНоменклатуры.Склад = &Склад";

Запрос.УстановитьПараметр("Номенклатура", ВыбраннаяНоменклатура);
Запрос.УстановитьПараметр("Склад", ВыбранныйСклад);
Результат = Запрос.Выполнить();

Шаг 2: Запрос к остаткам регистра УчетЗатратРег

После того как мы определили ключи, нам нужно обратиться к виртуальной таблице остатков регистра УчетЗатратРег. Важно понимать, что фактическая себестоимость — это результат деления ресурса Стоимость на ресурс Количество.

Давайте проанализируем пример запроса, который собирает данные по остаткам в разрезе стоимости:


Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ
    |	УчетЗатратРегОстатки.КоличествоОстаток КАК ОстатокКол,
    |	УчетЗатратРегОстатки.СтоимостьОстаток КАК ОстатокСумма
    |ИЗ
    |	РегистрНакопления.УчетЗатратРег.Остатки(&Период, 
    |		АналитикаУчетаНоменклатуры = &КлючНоменклатуры 
    |		И АналитикаВидаУчета = &КлючВидаУчета) КАК УчетЗатратРегОстатки";

Запрос.УстановитьПараметр("Период", ТекущаяДата());
Запрос.УстановитьПараметр("КлючНоменклатуры", ПолученныйКлючНоменклатуры);
Запрос.УстановитьПараметр("КлючВидаУчета", ПолученныйКлючВидаУчета);

Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
    Если Выборка.ОстатокКол <> 0 Тогда
        СебестоимостьЕдиницы = Выборка.ОстатокСумма / Выборка.ОстатокКол;
    КонецЕсли;
КонецЕсли;

Проблема "пустой стоимости" в середине месяца

Выясним одну критическую особенность РАУЗ. В течение месяца, до того как будет запущен документ РасчетСебестоимостиВыпуска, стоимость списания материалов может быть нулевой или некорректной. Это происходит потому, что РАУЗ рассчитывает точную средневзвешенную стоимость методом решения линейных уравнений только в конце периода.

Если вам нужно получить текущую фактическую себестоимость (с учетом всех приходов и доп. расходов) до завершения месяца, воспользуйтесь следующими рекомендациями:

  1. Предварительный расчет себестоимости: Проведите документ РасчетСебестоимостиВыпуска с видом операции "Предварительный". Он рассчитает средние цены на текущий момент и запишет их в регистры. Это позволит типовым отчетам и вашим запросам видеть адекватные цифры.
  2. Способ формирования стоимости: Проверьте настройки параметров учета. Если выбран режим "По прямым затратам", то приходы фиксируются по цене поставщика, но распределение транспортно-заготовительных расходов (ТЗР) все равно потребует запуска расчета.

Особенности для полуфабрикатов собственного производства

Для полуфабрикатов ситуация сложнее, так как их стоимость складывается из материальных и нематериальных затрат (зарплата, амортизация и т.д.). Рассмотрим, как получить их стоимость:

Отличие УПП от ERP и Комплексной автоматизации 2.0

Важно не путать УПП с более современными конфигурациями. В обсуждениях часто упоминается регистр Текущая себестоимость номенклатуры. Запомним: в 1С:УПП 1.3 такого регистра не существует. Это объект из архитектуры ERP 2.0. В УПП мы работаем исключительно через систему ключей аналитики в регистрах УчетЗатрат.

Подведем итог: для программного получения себестоимости в УПП с РАУЗ мы должны сначала определить ключи аналитики через соответствующие справочники, а затем обратиться к остаткам регистра УчетЗатратРег. Для получения актуальных данных в середине месяца обязательным условием является наличие проведенного документа Расчет себестоимости выпуска в предварительном режиме.

← На главную