Как правильно получить себестоимость товара на заданную дату в 1С:Управление торговлей 10.3?

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

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

Разграничение понятий: себестоимость остатков и себестоимость продаж

Первое, что нам необходимо сделать, — это четко разделить два разных вида себестоимости. Проанализируем, чем они отличаются:

  1. Себестоимость остатков: Это оценка товаров, которые в данный момент находятся на складе. Она хранится в регистре накопления ПартииТоваровНаСкладах. Именно эта сумма увеличивает валюту баланса и показывает, сколько денег «заморожено» в товаре.
  2. Себестоимость продаж: Это стоимость товаров, которые уже покинули склад в результате реализации. Эти данные фиксируются в регистре ПродажиСебестоимость. Она нужна для расчета валовой прибыли.

Рассмотрим ситуацию: если за выбранный период движений по товару не было, то расчетная себестоимость остатка и себестоимость последней продажи могут совпадать, но это не правило. Себестоимость — величина динамическая, особенно при использовании метода ФИФО или при постоянных закупках по разным ценам.

Анализ ключевых регистров накопления

Для получения данных мы чаще всего обращаемся к двум регистрам. Выясним их особенности в УТ 10.3.

Регистр «Партии товаров на складах (управленческий учет)»

Это основной источник данных для оценки остатков. Стоит обратить внимание на структуру его измерений. Многие программисты ищут в нем измерение Организация, но его там нет. Это обусловлено архитектурой УТ 10.3: одна конкретная партия (документ поступления) не может принадлежать сразу двум организациям. Организация является реквизитом документа-регистратора, создавшего запись в этом регистре.

Регистр «Продажи себестоимость»

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

Влияние учетной политики на расчет

Проанализируем настройки, которые критически влияют на результат. Перейдем в настройки параметров учета и учетную политику:

  1. Вести партионный учет по организациям: Если этот флаг установлен, система при списании партий будет жестко контролировать, чтобы товар, купленный на «Организацию А», не был списан при продаже от «Организации Б». Это разделяет себестоимость в разрезе компаний.
  2. Стратегия списания партий: По ФИФО или По средней. При методе «По средней» в УТ 10.3 крайне важно помнить о регламентном документе КорректировкаСтоимостиСписанияТоваров. Без его ежемесячного проведения «средняя» цена будет оперативной (на момент документа), а не средневзвешенной за месяц.

Почему «разъезжаются» ведомости по складам и партиям?

Рассмотрим типовую проблему: количество в Ведомости по товарам на складах не совпадает с количеством в Ведомости по партиям товаров на складах. Это происходит по следующим причинам:

Как программно получить себестоимость на дату

Если нам необходимо получить себестоимость для корректировки или аналитики, рассмотрим алгоритм работы с запросом. Самый правильный способ — обращение к виртуальной таблице остатков регистра партий.

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


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

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

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

  1. Последняя закупочная цена: Проанализируем регистр накопления Закупки или найдем последний документ ПоступлениеТоваровУслуг. Это наиболее логичная оценка стоимости для управленческого учета.
  2. Тип цен номенклатуры: Можно обратиться к регистру сведений ЦеныНоменклатуры, выбрав тип цен «Закупочная».
  3. Срез последних движений по партиям: Посмотрим, по какой стоимости товар списывался или приходовался в последний раз, даже если сейчас остаток нулевой.

Восстановление последовательности как метод решения

Прежде чем приступать к написанию обработок корректировки, выясним, не решит ли проблему штатный механизм. В УТ 10.3 существует обработка Проведение по партиям. Она находится в меню «Документы» — «Дополнительно». Проанализируем ситуацию: если «граница последовательности» застряла на дате три месяца назад, то все отчеты по себестоимости за текущий период будут выдавать неверные данные. Для таких случаев можно использовать инструмент для автоматической корректировки партий и складских остатков.

Последовательность действий должна быть такой:

  1. Убедиться, что складские остатки (количество) верны.
  2. Запустить восстановление последовательности партионного учета.
  3. Выполнить документ Корректировка стоимости списания товаров (если используется учет «по среднему»).
  4. И только если после этих действий Ведомость по партиям все еще не совпадает с Ведомостью по складам, прибегать к ручной корректировке регистров.

Для корректировки используйте документ Корректировка записей регистров. При добавлении записей в ПартииТоваровНаСкладах в качестве документа-регистратора партии (измерение ДокументОприходования) обычно указывают сам документ корректировки или специально созданный пустой документ ОприходованиеТоваров, чтобы «закрыть» расхождение стоимостных показателей. Для этой задачи можно использовать обработку для заполнения документа «Корректировка записей регистров» остатками регистра партий.

← На главную