При работе с большим количеством номенклатуры, для которой ведется серийный учет, пользователи часто сталкиваются с трудоемкостью ручного выбора серий. Если документ (например, Внутреннее потребление товаров или Перемещение товаров) содержит десятки строк, ручной подбор каждой серии превращается в рутину. Рассмотрим способы оптимизации этого процесса, начиная от типовых настроек автоматизации и заканчивая программными методами заполнения.
Проанализируем самый простой и эффективный способ, заложенный в логику системы 1С:ERP. Если в вашей организации серии используются для учета сроков годности, наиболее логичным будет применение алгоритма FEFO (First Expire, First Out — первый истекает, первым выходит). Это позволяет программе автоматически подбирать серии с ближайшими сроками годности.
Для настройки этого механизма выполним следующие шаги:
Важный нюанс: при такой настройке программа сама распределит серии при проведении документа или по нажатию кнопки заполнения, исходя из текущих остатков и их сроков годности. Это полностью исключает необходимость заходить в каждую строку табличной части.
Разберем ситуацию, когда автоматическое распределение не подходит (например, серии — это не сроки годности, а номера партий, которые нужно выбирать визуально). В современных версиях ERP 2.5 для многих документов доступен интерфейс «Подбор и проверка товаров».
Вместо того чтобы работать в основной табличной части документа, мы можем открыть это рабочее место. Проанализируем его преимущества:
Посмотрим на возможности командной панели табличной части «Товары». Если политика учета серий настроена как «Управление остатками серий» (без обязательного указания при планировании отгрузки), в меню Заполнить над таблицей товаров появляется команда «Подобрать серии по остаткам».
Выясним, как это работает:
Ctrl+A).Этот способ является «золотой серединой» между полной автоматизацией и ручным контролем, так как позволяет за один клик заполнить весь документ, но оставляет возможность ручной корректировки.
Если на складе используется ордерная схема документооборота, то распределение по сериям зачастую эффективнее делать не в распоряжении (Перемещении/Реализации), а в документе Расходный ордер на товары. Рассмотрим почему:
В «Расходном ордере» на вкладке «Отгружаемые товары» существует мощный механизм «Заполнить — Подобрать серии по остаткам». Программа сама «схлопывает» одинаковые позиции и предлагает распределить имеющиеся на складе серии. Для кладовщика это основной инструмент массовой работы с сериями, который избавляет от необходимости открывать детальную форму для каждой позиции распоряжения.
Если типовых средств недостаточно и требуется реализовать специфический алгоритм (например, распределение по определенным свойствам серий), проанализируем техническую сторону вопроса. В 1С:ERP серии хранятся не в основной табличной части Товары, а в скрытой или связанной табличной части (обычно она называется Серии или доступна через объект СерииНоменклатурыКлиентСервер).
При написании собственной обработки для заполнения серий необходимо учитывать следующие моменты:
Товары связывается с записями в таблице серий через уникальный идентификатор (ключ связи).Рассмотрим пример логики программного обхода и заполнения серий (фрагмент для понимания структуры):
// Пример упрощенной логики заполнения серий в документе
Для Каждого СтрокаТовар Из Объект.Товары Цикл
Если НужнаСерия(СтрокаТовар.Номенклатура) Тогда
// Находим свободные серии по остаткам (через запрос к регистру СвободныеОстатки)
ТаблицаОстатков = ПолучитьОстаткиСерий(СтрокаТовар.Номенклатура, Объект.Склад);
ОсталосьРаспределить = СтрокаТовар.Количество;
Для Каждого СтрокаСерия Из ТаблицаОстатков Цикл
Если ОсталосьРаспределить <= 0 Тогда Прервать; КонецЕсли;
РаспределитьКоличество = Мин(СтрокаСерия.Остаток, ОсталосьРаспределить);
// Добавляем запись в таблицу серий документа
НоваяЗапись = Объект.Серии.Добавить();
НоваяЗапись.КлючСвязи = СтрокаТовар.КлючСвязи;
НоваяЗапись.Серия = СтрокаСерия.Серия;
НоваяЗапись.Количество = РаспределитьКоличество;
ОсталосьРаспределить = ОсталосьРаспределить - РаспределитьКоличество;
КонецЦикла;
КонецЕсли;
КонецЦикла;
При реализации собственного алгоритма важно помнить о вызове процедур из общего модуля СерииНоменклатурыКлиент. Это необходимо для того, чтобы форма документа «увидела» изменения в сериях и корректно пересчитала итоги, а также визуально отметила строки как заполненные.
Для решения задачи группового распределения серий в 1С:ERP 2.5 в первую очередь стоит проверить настройки Политики учета серий и возможность использования FEFO. Если требуется ручной, но массовый подбор — используйте рабочее место «Подбор и проверка товаров» или команду «Заполнить по остаткам» в ордерной схеме. Программная доработка возможна и не имеет принципиальных ограничений, но требует внимательной работы с ключами связи табличных частей.