Как программно получить себестоимость товара в 1С:Бухгалтерия 3.0?

Программист 1С v8.3 (Управляемые формы) 1C:Бухгалтерия Бухгалтерский учет IT и автоматизация бизнеса
← На главную

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

Архитектурные особенности учета себестоимости в 1С:Бухгалтерия 3.0

В конфигурации 1С:Бухгалтерия 3.0 основным источником данных о себестоимости товарно-материальных ценностей (ТМЦ) является регистр бухгалтерии Хозрасчетный. Учет товаров ведет на счете 41.01 (или других субсчетах счета 41, а также на счетах 10 для материалов и 43 для готовой продукции).

Рассмотрим важные нюансы, которые необходимо учитывать при написании запроса к остаткам:

  1. Скользящая и фактическая себестоимость: В течение отчетного месяца при проведении списаний или реализаций программа фиксирует операционную (скользящую) себестоимость. Окончательная фактическая себестоимость рассчитывается только при выполнении регламентной операции Корректировка стоимости номенклатуры в рамках процедуры закрытия месяца.
  2. Метод оценки МПЗ: В зависимости от настроек учетной политики (по средней или ФИФО) себестоимость рассчитывается либо как средняя стоимость остатка, либо в разрезе партий поступления (субконто Партии).
  3. Складской учет: Если в настройках программы включен только количественный учет по складам, суммовой остаток хранится в целом по организации. В этом случае группировка по субконто Склады вернет нулевую сумму, поэтому расчет стоимости единицы производят без детализации по складам.

Получение средней себестоимости с помощью запроса

Для расчета средней себестоимости номенклатуры на определенный момент времени обратимся к виртуальной таблице остатков РегистрБухгалтерии.Хозрасчетный.Остатки. Формула расчета сводится к делению дебетового остатка по сумме на дебетовый остаток по количеству.

Проанализируем пример запроса, получающего себестоимость единицы товара:


ВЫБРАТЬ
    ХозрасчетныйОстатки.Субконто1 КАК Номенклатура,
    ВЫБОР
        КОГДА ХозрасчетныйОстатки.КоличествоОстатокДт = 0
            ТОГДА 0
        ИНАЧЕ ХозрасчетныйОстатки.СуммаОстатокДт / ХозрасчетныйОстатки.КоличествоОстатокДт
    КОНЕЦ КАК Себестоимость
ИЗ
    РегистрБухгалтерии.Хозрасчетный.Остатки(
        &ГраницаМоментВремениИЛИДата,
        Счет = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ТоварыНаСкладах),
        ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура),
        Субконто1 = &Номенклатура
    ) КАК ХозрасчетныйОстатки

Выясним ключевые особенности данного запроса:

  1. В качестве счета учета передается значение ПланСчетов.Хозрасчетный.ТоварыНаСкладах (счет 41.01). При необходимости можно указать список счетов (например, счета учета материалов 10 или продукции 43).
  2. Отбор по виду субконто гарантирует получение данных в разрезе конкретной позиции &Номенклатура.
  3. Конструкция ВЫБОР защищает от ошибки деления на ноль, если дебетовый количественный остаток равен нулю.

Альтернативные способы получения себестоимости

Посмотрим на другие решения, применяемые при разработке собственных механизмов:

  1. Использование логики типовых документов: Полезно изучить модуль менеджера документа ИнвентаризацияТоваровНаСкладе. Процедура ЗаполнитьПоОстаткам() демонстрирует типовой пример заполнения учетного количества и учетных цен номенклатуры.
  2. Использование функций общего модуля: В типовой конфигурации получение сведений об остатках и стоимости материалов/товаров можно выполнять с помощью вызова функций серверного модуля УчетНоменклатурыСервер. Это позволяет учитывать действующие настройки учетной политики организации.
← На главную