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