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