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