Как настроить автоматическое заполнение серий по FEFO в этапе производства 1С:ERP 2.5?

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

Автоматизация подбора серий по принципу FEFO (First Expired, First Out — первым истекает, первым выходит) является критически важной задачей для производственных предприятий, работающих со скоропортящейся продукцией или сырьем, имеющим ограниченный срок годности. В системе 1С:ERP Управление предприятием 2.5 механизм заполнения серий в документе Этап производства, для которого, к слову, существует удобная внешняя печатная форма «Задание на производство», может вызывать затруднения, так как его работа зависит от совокупности настроек склада, политики учета серий и текущего состояния самого документа.

В рамках данной статьи мы подробно разберем, какие действия необходимо предпринять, чтобы кнопка заполнения серий по FEFO в табличной части Обеспечение материалами и работами работала корректно, и проанализируем программный код системы, отвечающий за доступность этой функции.

Шаг 1. Анализ и выбор политики учета серий

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

Рассмотрим два основных типа политик, поддерживающих FEFO:

  1. Авторасчет по FEFO остатков серий: При такой политике серии указываются только в документах поступления. В документах расхода (включая Этап производства) поля серий остаются пустыми. Система «виртуально» списывает их по срокам годности только в отчетах. В этом случае кнопка заполнения в документе работать не будет, так как физическое указание серии в строке не предусмотрено логикой политики.
  2. Управление остатками серий по FEFO: Это именно тот вариант, который нам нужен. Данная политика требует обязательного указания серий в документах отгрузки. Система сама предложит наиболее подходящие серии с истекающим сроком годности, и они будут физически записаны в документ.

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

Шаг 2. Проверка колонки «Действие» и статуса документа

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

Проанализируем состояние строки в табличной части Обеспечение материалами и работами:

Также проверим статус самого документа Этап производства. Для корректной работы всех автоматических подборов документ должен находиться в статусе К выполнению. В статусах «Формируется» или «Завершен» возможность редактирования и заполнения серий может быть ограничена.

Шаг 3. Программный анализ: реквизит СтатусУказанияСерий

Теперь перейдем к технической части и разберем, как система на уровне кода понимает, можно ли заполнить серии. В табличных частях документов ERP существует скрытый реквизит СтатусУказанияСерий. Это числовой идентификатор, который вычисляется динамически при изменении номенклатуры, склада или политики.

Рассмотрим функцию, которая проверяет наличие строк, доступных для заполнения по FEFO:


Функция ЕстьСтрокиСЗаполняемымиПоFEFOСериями(ТЧ) Экспорт
    // Система ищет строки с определенными статусами
    Возврат ТЧ.НайтиСтроки(Новый Структура("СтатусУказанияСерий", 6)).Количество() > 0
        Или ТЧ.НайтиСтроки(Новый Структура("СтатусУказанияСерий", 5)).Количество() > 0
        Или ТЧ.НайтиСтроки(Новый Структура("СтатусУказанияСерий", 25)).Количество() > 0;
КонецФункции

Как мы видим, для работы FEFO статус должен принимать значения 5, 6 или 25. Разберем подробнее, как формируется этот статус в зависимости от настроек политики учета серий. Посмотрим на алгоритм функции СтатусУказанияСерии:


Функция СтатусУказанияСерии(Склад, Номенклатура, ИмяПараметраПолитикиУчетаСерий) Экспорт
    // ... (подготовка запроса к справочнику ВидыНоменклатуры)
    Если Выборка.УчитыватьСебестоимостьПоСериям Тогда 
        СтатусУказанияСерий = 14;
    ИначеЕсли Выборка.УказыватьПриПланированииОтгрузки Тогда 
        СтатусУказанияСерий = 10;
    ИначеЕсли Выборка.УказыватьПриПланированииОтбора Тогда
        СтатусУказанияСерий = 8;
    ИначеЕсли Выборка.УчетСерийПоFEFO Тогда
        // Именно этот статус (6) позволяет заполнять серии по кнопке FEFO
        СтатусУказанияСерий = 6;
    ИначеЕсли Выборка.УказыватьПоФактуОтбора Тогда
        СтатусУказанияСерий = 4;
    Иначе
        СтатусУказанияСерий = 2;
    КонецЕсли;
    Возврат СтатусУказанияСерий;
КонецФункции

Из этого кода становится ясно, что если в вашей политике установлены флаги «Учитывать себестоимость» или «Указывать при планировании», статус будет иным (14, 10 или 8), и стандартная кнопка заполнения по FEFO в некоторых контекстах может вести себя иначе. Для прямой работы механизма FEFO приоритетным является флаг Учет серий по FEFO в настройках политики.

Шаг 4. Влияние настроек склада и ордерной схемы

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

  1. Ордерный склад (Расход): Если на складе используется ордерная схема при отгрузке, то серии могут указываться не в самом Этапе производства, а в документе Расходный ордер на товары. Это зависит от настройки в политике: «Указывать серии при планировании отбора» или «По факту отбора». Если выбрано «По факту отбора», в Этапе серии будут недоступны.
  2. Адресное хранение (Ячейки): При использовании адресного хранения (высокая детализация) система часто требует подбора серий непосредственно в момент создания складских заданий на отбор, так как конкретная серия лежит в конкретной ячейке.

Для того чтобы серии заполнялись именно в Этапе производства, убедитесь, что в политике для данного склада выбрано Указывать серии при планировании отгрузки или используется политика Управление остатками серий по FEFO.

Шаг 5. Принудительное обновление данных

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

Почему это происходит? Реквизит СтатусУказанияСерий, о котором мы говорили выше, записывается в строку ТЧ в момент добавления номенклатуры в документ. Простое перепроведение не всегда обновляет этот скрытый реквизит.

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

  1. Убедитесь, что политика «Управление остатками по FEFO» установлена и активна для нужного склада.
  2. Зайдите в Этап производства.
  3. Удалите проблемные строки с товарами.
  4. Заново добавьте товары через кнопку Подобрать материалы или простым добавлением строки.
  5. Установите действие Отгрузить.
  6. Нажмите кнопку Заполнить серии по FEFO.

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

Резюме

Для успешного заполнения серий по FEFO в Этапе производства необходимо соблюдение трех условий: политика Управление остатками серий по FEFO (с ведением реальных остатков), статус строки Отгрузить и наличие положительных остатков серий с заполненными сроками годности на складе. Программный контроль через СтатусУказанияСерий гарантирует, что система предложит серии только тогда, когда это предусмотрено бизнес-процессом предприятия. Корректное списание является основой для дальнейшего план-фактного анализа израсходованных материалов и контроля эффективности производства.

← На главную