Как реализовать групповое распределение по сериям в 1С:ERP 2.5?

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

При работе с большим количеством номенклатуры, для которой ведется серийный учет, пользователи часто сталкиваются с трудоемкостью ручного выбора серий. Если документ (например, Внутреннее потребление товаров или Перемещение товаров) содержит десятки строк, ручной подбор каждой серии превращается в рутину. Рассмотрим способы оптимизации этого процесса, начиная от типовых настроек автоматизации и заканчивая программными методами заполнения.

Метод 1. Автоматическое распределение по FEFO

Проанализируем самый простой и эффективный способ, заложенный в логику системы 1С:ERP. Если в вашей организации серии используются для учета сроков годности, наиболее логичным будет применение алгоритма FEFO (First Expire, First Out — первый истекает, первым выходит). Это позволяет программе автоматически подбирать серии с ближайшими сроками годности.

Для настройки этого механизма выполним следующие шаги:

  1. Перейдем в настройки Вида номенклатуры.
  2. В разделе Серии проверим используемую Политику учета серий.
  3. Если для вида номенклатуры установлена политика с типом «Управление остатками серий», выберем в поле «Способ указания серий» значение «Автозаполнение по FEFO».

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

Метод 2. Групповое заполнение через «Подбор и проверка товаров»

Разберем ситуацию, когда автоматическое распределение не подходит (например, серии — это не сроки годности, а номера партий, которые нужно выбирать визуально). В современных версиях ERP 2.5 для многих документов доступен интерфейс «Подбор и проверка товаров».

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

Метод 3. Использование команды «Заполнить серии по остаткам»

Посмотрим на возможности командной панели табличной части «Товары». Если политика учета серий настроена как «Управление остатками серий» (без обязательного указания при планировании отгрузки), в меню Заполнить над таблицей товаров появляется команда «Подобрать серии по остаткам».

Выясним, как это работает:

  1. Выделим все строки в документе (используем сочетание клавиш Ctrl+A).
  2. Нажмем Заполнить — Подобрать серии по остаткам.
  3. Программа проанализирует свободные остатки серий на складе и автоматически распределит их по выделенным строкам.

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

Метод 4. Распределение в ордерной схеме

Если на складе используется ордерная схема документооборота, то распределение по сериям зачастую эффективнее делать не в распоряжении (Перемещении/Реализации), а в документе Расходный ордер на товары. Рассмотрим почему:

В «Расходном ордере» на вкладке «Отгружаемые товары» существует мощный механизм «Заполнить — Подобрать серии по остаткам». Программа сама «схлопывает» одинаковые позиции и предлагает распределить имеющиеся на складе серии. Для кладовщика это основной инструмент массовой работы с сериями, который избавляет от необходимости открывать детальную форму для каждой позиции распоряжения.

Метод 5. Программная реализация группового заполнения

Если типовых средств недостаточно и требуется реализовать специфический алгоритм (например, распределение по определенным свойствам серий), проанализируем техническую сторону вопроса. В 1С:ERP серии хранятся не в основной табличной части Товары, а в скрытой или связанной табличной части (обычно она называется Серии или доступна через объект СерииНоменклатурыКлиентСервер).

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

Рассмотрим пример логики программного обхода и заполнения серий (фрагмент для понимания структуры):


// Пример упрощенной логики заполнения серий в документе
Для Каждого СтрокаТовар Из Объект.Товары Цикл
    Если НужнаСерия(СтрокаТовар.Номенклатура) Тогда
        // Находим свободные серии по остаткам (через запрос к регистру СвободныеОстатки)
        ТаблицаОстатков = ПолучитьОстаткиСерий(СтрокаТовар.Номенклатура, Объект.Склад);
        
        ОсталосьРаспределить = СтрокаТовар.Количество;
        Для Каждого СтрокаСерия Из ТаблицаОстатков Цикл
            Если ОсталосьРаспределить <= 0 Тогда Прервать; КонецЕсли;
            
            РаспределитьКоличество = Мин(СтрокаСерия.Остаток, ОсталосьРаспределить);
            
            // Добавляем запись в таблицу серий документа
            НоваяЗапись = Объект.Серии.Добавить();
            НоваяЗапись.КлючСвязи = СтрокаТовар.КлючСвязи;
            НоваяЗапись.Серия = СтрокаСерия.Серия;
            НоваяЗапись.Количество = РаспределитьКоличество;
            
            ОсталосьРаспределить = ОсталосьРаспределить - РаспределитьКоличество;
        КонецЦикла;
    КонецЕсли;
КонецЦикла;

При реализации собственного алгоритма важно помнить о вызове процедур из общего модуля СерииНоменклатурыКлиент. Это необходимо для того, чтобы форма документа «увидела» изменения в сериях и корректно пересчитала итоги, а также визуально отметила строки как заполненные.

Резюме

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

← На главную