Автоматизация подбора серий по принципу FEFO (First Expired, First Out — первым истекает, первым выходит) является критически важной задачей для производственных предприятий, работающих со скоропортящейся продукцией или сырьем, имеющим ограниченный срок годности. В системе 1С:ERP Управление предприятием 2.5 механизм заполнения серий в документе Этап производства, для которого, к слову, существует удобная внешняя печатная форма «Задание на производство», может вызывать затруднения, так как его работа зависит от совокупности настроек склада, политики учета серий и текущего состояния самого документа.
В рамках данной статьи мы подробно разберем, какие действия необходимо предпринять, чтобы кнопка заполнения серий по FEFO в табличной части Обеспечение материалами и работами работала корректно, и проанализируем программный код системы, отвечающий за доступность этой функции.
Первым делом проанализируем настройки Вида номенклатуры. Ошибки на этом этапе — самая частая причина того, что система выдает сообщение: «В табличной части нет товаров, по которым можно заполнить серии по FEFO».
Рассмотрим два основных типа политик, поддерживающих FEFO:
Этап производства) поля серий остаются пустыми. Система «виртуально» списывает их по срокам годности только в отчетах. В этом случае кнопка заполнения в документе работать не будет, так как физическое указание серии в строке не предусмотрено логикой политики.Важный момент: если вы изменили политику учета серий для номенклатуры, у которой уже есть остатки, необходимо перепровести документы поступления или выполнить корректировку остатков, чтобы серии зафиксировались в регистре Товары на складах. Без реальных остатков в разрезе серий, проверить которые можно с помощью отчета Остатки номенклатуры по сериям с датой прихода, механизм FEFO не найдет данных для заполнения.
Выясним причину, по которой даже при правильной политике кнопка может оставаться неактивной или выдавать ошибку. Механизм автоматического подбора серий в Этапе производства жестко завязан на логику обеспечения.
Проанализируем состояние строки в табличной части Обеспечение материалами и работами:
Также проверим статус самого документа Этап производства. Для корректной работы всех автоматических подборов документ должен находиться в статусе К выполнению. В статусах «Формируется» или «Завершен» возможность редактирования и заполнения серий может быть ограничена.
Теперь перейдем к технической части и разберем, как система на уровне кода понимает, можно ли заполнить серии. В табличных частях документов 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 в настройках политики.
Проанализируем ситуацию, когда политика настроена верно, но заполнение всё равно не происходит. Это может быть связано с настройками склада:
Этапе производства, а в документе Расходный ордер на товары. Это зависит от настройки в политике: «Указывать серии при планировании отбора» или «По факту отбора». Если выбрано «По факту отбора», в Этапе серии будут недоступны.Для того чтобы серии заполнялись именно в Этапе производства, убедитесь, что в политике для данного склада выбрано Указывать серии при планировании отгрузки или используется политика Управление остатками серий по FEFO.
Выясним одну важную деталь, связанную с кэшированием данных в строках документа. Если вы открыли документ, увидели, что серии не заполняются, пошли в настройки, поменяли политику учета серий и вернулись в тот же самый документ — кнопка не заработает сразу.
Почему это происходит? Реквизит СтатусУказанияСерий, о котором мы говорили выше, записывается в строку ТЧ в момент добавления номенклатуры в документ. Простое перепроведение не всегда обновляет этот скрытый реквизит.
Рекомендуемый алгоритм действий для исправления:
Этап производства.В этом случае система заново рассчитает СтатусУказанияСерий, увидит актуальные настройки политики и позволит механизму подбора обратиться к остаткам в регистре Товары на складах для выбора серий с ближайшими сроками годности.
Для успешного заполнения серий по FEFO в Этапе производства необходимо соблюдение трех условий: политика Управление остатками серий по FEFO (с ведением реальных остатков), статус строки Отгрузить и наличие положительных остатков серий с заполненными сроками годности на складе. Программный контроль через СтатусУказанияСерий гарантирует, что система предложит серии только тогда, когда это предусмотрено бизнес-процессом предприятия. Корректное списание является основой для дальнейшего план-фактного анализа израсходованных материалов и контроля эффективности производства.