Как определить серию (партию) товара в конкретной ячейке при адресном хранении

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

При работе с адресным складом в современных конфигурациях 1С (таких как ERP 2.5, УТ 11 или КА 2) часто возникает путаница между понятиями «партия» и «серия». Пользователи и начинающие разработчики пытаются найти связь между финансовым документом поступления и конкретной ячейкой, в которой лежит товар. Давайте разберем, почему стандартный механизм партионного учета здесь не поможет и как правильно реализовать задачу отображения остатков в разрезе сроков годности.

Различие между финансовой партией и физической серией

Для начала проанализируем ситуацию, описанную в обсуждении. Основная ошибка заключается в попытке использовать «партию» как физическую характеристику товара. В системе 1С Партия — это прежде всего финансовая аналитика. Она хранится в регистрах себестоимости и нужна для расчета прибыли и стоимости списания (по методу FIFO или средней). Физически на складе партии никак не разделяются, если они не обладают уникальными свойствами (например, разными сроками годности).

Если нам необходимо знать, какой именно товар лежит в ячейке А-1-1 — с каким сроком годности или серийным номером — нам необходимо использовать механизм Серий. Именно серии являются тем «разрезом», который позволяет системе «видеть» разницу между двумя одинаковыми упаковками молока, пришедшими в разных поставках.

Настройка политики учета серий для адресного склада

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

  1. Справочное указание серий: В этом режиме серия просто записывается в документе как комментарий. Система не контролирует остатки. Вы не сможете сделать запрос к базе и узнать, сколько штук серии «Срок до 2025 года» лежит в конкретной ячейке.
  2. Управление остатками серий: Это именно то, что нам нужно. При такой политике серия становится полноценным измерением в регистрах накопления. В этом случае в ячейке товар будет числиться не просто как «Товар Х — 10 шт», а как «Товар Х — Серия А — 5 шт» и «Товар Х — Серия Б — 5 шт».
  3. Управление по FEFO (First Expired, First Out): Продвинутый вариант управления остатками. Система не только ведет учет, но и сама предлагает кладовщику при отборе те ячейки, где лежит товар с наиболее близкой датой окончания срока годности.

Важно помнить: чтобы серии отображались в адресном складе, в настройках склада или области хранения должна быть установлена детализация учета до серий. Если этого не сделать, в регистре ТоварыВЯчейках серии будут пустыми, даже если они указаны в приходном ордере.

Как система связывает документы размещения и серии

Разберем процесс, упомянутый в теме: Приходный ордер -> Размещение. Когда товар принимается на склад (зона приемки), в ордере указывается серия. На этом этапе товар числится в ячейке типа «Приемка». Когда создается документ Отбор (размещение) товаров, система переносит количество и серию из ордера в задание на размещение.

Если в документе отбора реквизит распоряжение пуст или серии не заполнены, необходимо проверить настройки складской группы номенклатуры. Возможно, для данного типа склада не активирован учет серий в складских операциях. Чтобы серии «пробрасывались» до конкретной ячейки А-1-1, они должны быть указаны в табличной части документа размещения.

Техническая реализация отображения данных на форме

Если перед нами стоит задача при выборе ячейки показать пользователю, какие серии и сроки годности там находятся, нам нужно обратиться к регистру накопления ТоварыВЯчейках. В этом регистре измерениями являются Номенклатура, Ячейка и Серия.

Рассмотрим пример запроса, который позволит получить остатки с датами срока годности для конкретной ячейки:


Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ
    |   ТоварыВЯчейкахОстатки.Серия КАК Серия,
    |   ТоварыВЯчейкахОстатки.Серия.СрокГодности КАК СрокГодности,
    |   ТоварыВЯчейкахОстатки.ВНаличииОстаток КАК Остаток
    |ИЗ
    |   РегистрНакопления.ТоварыВЯчейках.Остатки(&Период, Ячейка = &ВыбраннаяЯчейка И Номенклатура = &ВыбраннаяНоменклатура) КАК ТоварыВЯчейкахОстатки
    |УПОРЯДОЧИТЬ ПО
    |   СрокГодности ВОЗР";

Запрос.УстановитьПараметр("Период", ТекущаяДата());
Запрос.УстановитьПараметр("ВыбраннаяЯчейка", Объект.Ячейка);
Запрос.УстановитьПараметр("ВыбраннаяНоменклатура", Объект.Номенклатура);

РезультатЗапроса = Запрос.Выполнить();

Проанализируем этот код. Мы обращаемся к виртуальной таблице Остатки. Обратите внимание, что дата срока годности — это реквизит самой серии. Таким образом, сортируя результат по СрокГодности, мы реализуем логику FEFO на форме выбора: пользователю в первую очередь будут предложены те товары, которые нужно списать быстрее.

Практические советы по работе с FEFO

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

Резюме

Для решения задачи отображения «даты партии» в ячейке необходимо:

  1. Перейти от понятия «Партия» к понятию «Серия».
  2. Установить тип политики серий «Управление остатками» или «Управление по FEFO».
  3. Включить учет серий на уровне настроек конкретного склада.
  4. Использовать данные регистра ТоварыВЯчейках для вывода информации на форму, выполняя соединение с данными справочника серий для получения дат.

Таким образом, сортировка по сроку годности на форме — это абсолютно верный подход, при условии, что архитектура учета в базе настроена на поддержку серийного учета в ячейках.

← На главную