При работе с адресным складом в современных конфигурациях 1С (таких как ERP 2.5, УТ 11 или КА 2) часто возникает путаница между понятиями «партия» и «серия». Пользователи и начинающие разработчики пытаются найти связь между финансовым документом поступления и конкретной ячейкой, в которой лежит товар. Давайте разберем, почему стандартный механизм партионного учета здесь не поможет и как правильно реализовать задачу отображения остатков в разрезе сроков годности.
Для начала проанализируем ситуацию, описанную в обсуждении. Основная ошибка заключается в попытке использовать «партию» как физическую характеристику товара. В системе 1С Партия — это прежде всего финансовая аналитика. Она хранится в регистрах себестоимости и нужна для расчета прибыли и стоимости списания (по методу FIFO или средней). Физически на складе партии никак не разделяются, если они не обладают уникальными свойствами (например, разными сроками годности).
Если нам необходимо знать, какой именно товар лежит в ячейке А-1-1 — с каким сроком годности или серийным номером — нам необходимо использовать механизм Серий. Именно серии являются тем «разрезом», который позволяет системе «видеть» разницу между двумя одинаковыми упаковками молока, пришедшими в разных поставках.
Просто включить использование серий недостаточно. Чтобы система фиксировала остатки в ячейках, необходимо правильно настроить Политику учета серий. Рассмотрим основные варианты, которые предлагает система:
Важно помнить: чтобы серии отображались в адресном складе, в настройках склада или области хранения должна быть установлена детализация учета до серий. Если этого не сделать, в регистре ТоварыВЯчейках серии будут пустыми, даже если они указаны в приходном ордере.
Разберем процесс, упомянутый в теме: Приходный ордер -> Размещение. Когда товар принимается на склад (зона приемки), в ордере указывается серия. На этом этапе товар числится в ячейке типа «Приемка». Когда создается документ Отбор (размещение) товаров, система переносит количество и серию из ордера в задание на размещение.
Если в документе отбора реквизит распоряжение пуст или серии не заполнены, необходимо проверить настройки складской группы номенклатуры. Возможно, для данного типа склада не активирован учет серий в складских операциях. Чтобы серии «пробрасывались» до конкретной ячейки А-1-1, они должны быть указаны в табличной части документа размещения.
Если перед нами стоит задача при выборе ячейки показать пользователю, какие серии и сроки годности там находятся, нам нужно обратиться к регистру накопления ТоварыВЯчейках. В этом регистре измерениями являются Номенклатура, Ячейка и Серия.
Рассмотрим пример запроса, который позволит получить остатки с датами срока годности для конкретной ячейки:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ТоварыВЯчейкахОстатки.Серия КАК Серия,
| ТоварыВЯчейкахОстатки.Серия.СрокГодности КАК СрокГодности,
| ТоварыВЯчейкахОстатки.ВНаличииОстаток КАК Остаток
|ИЗ
| РегистрНакопления.ТоварыВЯчейках.Остатки(&Период, Ячейка = &ВыбраннаяЯчейка И Номенклатура = &ВыбраннаяНоменклатура) КАК ТоварыВЯчейкахОстатки
|УПОРЯДОЧИТЬ ПО
| СрокГодности ВОЗР";
Запрос.УстановитьПараметр("Период", ТекущаяДата());
Запрос.УстановитьПараметр("ВыбраннаяЯчейка", Объект.Ячейка);
Запрос.УстановитьПараметр("ВыбраннаяНоменклатура", Объект.Номенклатура);
РезультатЗапроса = Запрос.Выполнить();
Проанализируем этот код. Мы обращаемся к виртуальной таблице Остатки. Обратите внимание, что дата срока годности — это реквизит самой серии. Таким образом, сортируя результат по СрокГодности, мы реализуем логику FEFO на форме выбора: пользователю в первую очередь будут предложены те товары, которые нужно списать быстрее.
Когда мы говорим о том, что «одна партия пришла сроком больше, чем вторая», мы подразумеваем, что система должна уметь их различать. Выясним причину, почему это может не работать в стандартной форме:
ТоварыВЯчейках поле Серия всегда будет пустым (Null или ПустаяСсылка). Информацию о сроке годности в конкретной ячейке вы не получите.СерияНоменклатуры. Не путайте её с датой документа поступления.Для решения задачи отображения «даты партии» в ячейке необходимо:
ТоварыВЯчейках для вывода информации на форму, выполняя соединение с данными справочника серий для получения дат.Таким образом, сортировка по сроку годности на форме — это абсолютно верный подход, при условии, что архитектура учета в базе настроена на поддержку серийного учета в ячейках.