Почему серии в 1С:ERP указываются в отдельной табличной части и как с ними правильно работать?

Программист 1С v8.3 (Управляемые формы) 1С:ERP Управление предприятием Управленческий учет
← На главную

Переход с системы 1С:УПП на 1С:ERP часто вызывает вопросы у разработчиков и аналитиков, особенно в части учета серий. В старых конфигурациях мы привыкли видеть серию непосредственно в строке с товаром. В 1С:ERP же архитектура значительно усложнилась: серии часто вынесены в отдельную табличную часть или вовсе скрыты. Давайте подробно разберем, зачем это было сделано, от чего зависит способ хранения серий и как программно извлекать эти данные. Для переноса начальных остатков и документов за прошлые периоды применяется перенос данных из 1С:УПП 1.3 в 1С:ERP 2.

Архитектурная логика: нормализация данных

Первый вопрос, который возникает: зачем усложнять структуру документа и выносить серии в отдельную таблицу? Проанализируем ситуацию с точки зрения производительности и удобства ведения учета. В 1С:ERP реализована поддержка архитектуры «одна строка товара — много серий».

Рассмотрим пример: компания продает 100 единиц продукции, которые физически относятся к 20 различным сериям (партиям выпуска или срокам годности). Если бы серия указывалась в основной табличной части Товары, нам пришлось бы создать 20 строк. В каждой из этих строк дублировались бы финансовые данные: цена, ставка НДС, скидки, подразделение-получатель и прочее. Это приводит к избыточности данных и усложняет расчеты.

Использование отдельной табличной части Серии позволяет:

  1. Хранить финансовые параметры (цены, налоги) в одной строке ТЧ Товары.
  2. Хранить складские аналитики (серии, сроки годности, номера упаковок) в подчиненной таблице.
  3. Связывать эти таблицы через техническое поле КлючСвязи.

Влияние политик учета серий на способ хранения

Важно понимать, что поведение системы не статично. То, где именно вы увидите серии, напрямую зависит от настроек объекта Политика учета серий, которая назначается Виду номенклатуры. Разберем основные варианты:

1. Справочное указание. Серии указываются «для галочки». Они не влияют на остатки в регистрах и нужны только для печати в документах. В этом случае они всегда находятся в отдельной табличной части и не участвуют в движениях по складским регистрам.

2. Управление остатками серий. Это наиболее распространенный вариант. Система обязана знать, какую конкретно серию мы списываем, чтобы контролировать остатки на складах. Серия становится полноценным измерением складских регистров.

3. Учет себестоимости по сериям. Рассмотрим этот «тяжелый» режим подробнее. Когда в политике включен этот флаг, серия становится частью Ключа аналитики учета номенклатуры. Это означает, что себестоимость считается не просто по товару, а по каждой конкретной серии. В некоторых документах (например, «Передача материалов в производство») при такой настройке серия может отображаться прямо в основной ТЧ Товары для удобства пользователя, но в большинстве случаев связь все равно идет через КлючСвязи.

Специфика ордерного склада

Проанализируем ситуацию, упомянутую в обсуждении: почему в документе «Реализация товаров и услуг» табличная часть Серии может быть пустой, хотя учет по сериям ведется? Причина кроется в настройке «Управление остатками серий по факту отбора».

На ордерных складах финансовый документ (Реализация) фиксирует только продажу, а физическое списание товара с полок происходит в документе «Расходный ордер на товары». В этом случае:

Программная работа с сериями: где искать данные?

Универсальной функции «верни таблицу» в типовом решении нет, так как источники данных зависят от контекста. Однако мы можем выработать алгоритм для разработчика.

Вариант А: Работа с документом. Если нам нужно получить серии из формы или объекта документа до его проведения, мы должны соединить две таблицы. Посмотрим на логику запроса:


ВЫБРАТЬ
    Товары.Номенклатура,
    Товары.Количество,
    Серии.Серия,
    Серии.Количество КАК КоличествоПоСерии
ИЗ
    ДокументОбъект.Товары КАК Товары
    ЛЕВОЕ СОЕДИНЕНИЕ ДокументОбъект.Серии КАК Серии
    ПО Товары.КлючСвязи = Серии.КлючСвязи

Важно помнить: если Серии.КлючСвязи равен 0 или строка в ТЧ Серии отсутствует, значит, для данной строки товара серия либо не указана, либо указывается непосредственно в ТЧ Товары (зависит от конкретного типа документа).

Вариант Б: Работа с регистрами. Это наиболее надежный способ получения фактических данных после проведения документа. Разберем основные регистры:

  1. Регистр накопления ДвиженияСерийТоваров: Это «золотой стандарт» для отчетов по сериям. Сюда данные пишутся практически всегда, если в документе фигурируют серии (кроме некоторых чисто финансовых корректировок).
  2. Регистр накопления ТоварыНаСкладах: Здесь серия появится в измерениях только если в политике учета серий включен флаг «Учет остатков на складах».
  3. Регистр накопления СебестоимостьТоваров: Здесь серии нет в явном виде. Она «спрятана» внутри измерения АналитикаУчетаНоменклатуры. Чтобы достать серию, нужно соединиться со справочником КлючиАналитикиУчетаНоменклатуры и проверить поле Серия.

Полезные методы в коде

При разработке рекомендуется использовать возможности общего модуля СерииНоменклатурыКлиентСервер. В нем собраны процедуры для проверки необходимости заполнения серий. Также обратите внимание на механизмы формирования временной таблицы ВТТоварыССериями, которая часто используется в процедурах проведения документов (ОбработкаПроведения).

Подводя итог, можно сказать: чтобы грамотно получать данные по сериям в 1С:ERP, необходимо сначала выяснить, какая Политика учета серий используется и является ли склад ордерным. Если вам нужна просто информация о том, что было списано по факту, — используйте регистр ДвиженияСерийТоваров. Если вам нужно финансовое распределение — анализируйте КлючиАналитикиУчетаНоменклатуры. При необходимости быстро получить готовые данные по остаткам и стоимости товаров с детальным разрезом по сериям можно воспользоваться внешним отчетом по остаткам и доступности товаров.

← На главную