При внедрении учета по сериям в конфигурации «1С:Управление производственным предприятием» (УПП) пользователи и аналитики регулярно сталкиваются с архитектурным парадоксом: серии активно участвуют в складских движениях и производственных затратах, но полностью отсутствуют в ключевых регистрах взаиморасчетов и аналитики — в регистре накопления ЗаказыПокупателей, а также в регистрах Продажи и ПродажиСебестоимость. В результате типовой отчет «Валовая прибыль» не позволяет оценить финансовый результат отгрузки конкретной серии, а менеджеры лишены стандартной возможности контролировать обеспечение заказа определенной партией товара.
Разберем методологию разработчиков платформы, выясним причины такого поведения системы и рассмотрим рабочие способы решения этой задачи как стандартными инструментами, так и с помощью минимальных доработок.
Проанализируем концептуальное различие между двумя похожими аналитическими разрезами номенклатуры — характеристиками и сериями:
С точки зрения разработчиков УПП, регистры Продажи и ПродажиСебестоимость создавались как высокоуровневые финансовые витрины для коммерческой отчетности. Серия была исключена из их измерений сознательно, чтобы избежать комбинаторного взрыва числа записей и снижения производительности при проведении регламентных документов закрытия месяца. Однако на практике (особенно в фармацевтике, металлургии, кабельном производстве и торговле импортными товарами) расчет валовой прибыли и резервирование в разрезе серий являются обязательным требованием бизнеса.
Если конфигурация находится на поддержке и менять структуру метаданных нельзя, получим финансовый результат отгрузки в разрезе серий через сопоставление данных торговых и складских регистров с помощью отчета на базе схемы компоновки данных (СКД).
В зависимости от используемого режима учета себестоимости применим соответствующий подход:
ПартииТоваровНаСкладах (или ПартииТоваровНаСкладахБухгалтерскийУчет). В этом регистре измерение СерияНоменклатуры присутствует штатно. Чтобы увидеть валовую прибыль по сериям, свяжем в запросе СКД обороты регистра Продажи (для получения выручки) и расходные движения регистра ПартииТоваровНаСкладах по регистратору (документу РеализацияТоваровУслуг). В результате себестоимость каждой списанной серии подтягивается напрямую из движений партий.УчетЗатрат. Серия номенклатуры входит в состав измерений ключа аналитики учета номенклатуры. Для выгрузки себестоимости по сериям построим отчет по регистру УчетЗатрат с отбором по разделу учета «Товары» (или «Затраты на выпуск» для продукции) и коду операции реализации, сгруппировав данные по документу движения и серии.Выясним, как зафиксировать нужную серию за клиентом до момента выписки отгрузочных документов, если в регистре ЗаказыПокупателей измерение СерияНоменклатуры отсутствует.
Штатный механизм УПП позволяет закрепить серию на складе следующими шагами:
РезервированиеТоваров (или табличной частью «Товары» самого заказа с указанием склада размещения). В настройках параметров учета активируем возможность указания серий при резервировании.ТоварыВРезервеНаСкладах с сохранением привязки «Заказ покупателя — Номенклатура — Серия».РеализацияТоваровУслуг на основании заказа покупателя система автоматически заполнит табличную часть зарезервированными сериями по кнопке «Заполнить» — «По остаткам» или «Заполнить и провести».Важное ограничение: зарезервировать по конкретной серии можно только тот товар, который уже поступил на склад и имеет сформированную серию. Разместить заказ покупателя в заказе поставщику с явным указанием будущей серии типовой функционал не позволяет, так как идентификатор серии поставщика становится известен только в момент фактического оформления поступления.
Если на предприятии требуется регулярный анализ маржинальности серий через стандартный отчет «Валовая прибыль» и разработка внешних отчетов по партиям не устраивает пользователей, выполним точечную доработку метаданных.
Разберем алгоритм внесения изменений:
СерияНоменклатуры (тип СправочникСсылка.СерииНоменклатуры) в регистры накопления:
ПродажиПродажиСебестоимостьЗакупки (при необходимости сквозного контроля цен поставки по сериям).РеализацияТоваровУслуг найдем процедуру формирования движений по регистрам продаж (для партионного учета) и дополним заполнение набора записей: при обходе строк списываемых партий передадим серию текущей строки в ресурс формирования движений по продажам.РасчетСебестоимостиВыпуска. На этапе трансляции себестоимости в регистр ПродажиСебестоимость обеспечим перенос серии из ключа аналитики списания номенклатуры в соответствующее измерение регистра продаж.Посмотрим на пример заполнения движения регистра при проведении накладной:
Движение = Движения.ПродажиСебестоимость.ДобавитьРасход();
Движение.Период = Дата;
Движение.Номенклатура = ВыборкаПоПартиям.Номенклатура;
Движение.ХарактеристикаНоменклатуры = ВыборкаПоПартиям.ХарактеристикаНоменклатуры;
Движение.СерияНоменклатуры = ВыборкаПоПартиям.СерияНоменклатуры;
Движение.Количество = ВыборкаПоПартиям.Количество;
Движение.Стоимость = ВыборкаПоПартиям.Стоимость;
После включения серии в регистры продаж типовые отчеты «Валовая прибыль» и «Продажи» смогут выводить группировку по сериям без необходимости написания сложных запросов объединения со складскими остатками.