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