Как настроить серийный учет по FEFO в 1С:Управление торговлей 11 посреди года и избежать типичных ошибок?

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

При работе в крупных торговых базах 1С:Управление торговлей 11 (УТ 11) часто возникает ситуация, когда руководство компании ставит задачу: «Мы хотим сделать так, чтобы старый товар продавался раньше нового». Программисты и аналитики часто путают эту задачу с глобальным финансовым партионным учетом. На самом деле для решения этой проблемы нужен не финансовый партионный учет по всей базе, а точечный складской учет по сериям с политикой FEFO (First Expire, First Out).

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

Шаг 1. Разделяем понятия: «Партии» vs «Серии» в УТ 11

Для начала давайте разберемся, почему не стоит без крайней необходимости включать глобальный партионный учет в базе, которая успешно работала три года «по средней» себестоимости. Проанализируем ключевые различия этих механизмов в архитектуре УТ 11:

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

Шаг 2. Почему нельзя просто «поставить галочку» в существующем виде номенклатуры?

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

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

  1. Опасный путь (через разблокировку реквизитов): Если использовать стандартную обработку «Групповое изменение реквизитов» и принудительно разрешить редактирование реквизита использования серий для старого вида номенклатуры, система позволит записать изменения. Однако при первой же попытке перепровести любой старый документ реализации или поступления за прошлые 3 года программа выдаст ошибку. Она начнет требовать указания серий, которых в исторических документах физически нет. Это полностью заблокирует нормальную работу пользователей и механизмы закрытия прошлых периодов.
  2. Безопасный путь (официальная методика): Создание нового вида номенклатуры с включенными сериями, создание новых карточек товаров и перенос остатков. Рассмотрим этот процесс по шагам далее.

Шаг 3. Пошаговый алгоритм перехода на серийный учет

Разобьем процедуру перехода на несколько последовательных этапов, которые позволят выполнить задачу аккуратно и без потери данных.

Этап 1. Настройка политики учета серий

Перейдем в раздел НСИ и администрирование -> Номенклатура -> Разрезы учета и убедимся, что включена опция Серии товаров. Создадим новую политику учета серий со следующими настройками:

Этап 2. Создание новой структуры НСИ

Создадим новый Вид номенклатуры (например, «Товары с серийным учетом (FEFO)») и привяжем к нему созданную на предыдущем шаге политику учета серий. После этого создадим новые карточки номенклатуры. Чтобы не запутаться, можно временно переименовать старые карточки, добавив к их наименованию префикс «[АРХИВ]» или «[БЕЗ СЕРИЙ]».

Этап 3. Подготовка и перенос остатков

Для корректного ввода серий нам понадобится провести инвентаризацию и перенести остатки со старых карточек товаров на новые. Проанализируем этот процесс. Нам необходимо выполнить списание остатков со старых карточек и оприходование на новые карточки с указанием серий.

Для автоматизации этого процесса программист может написать обработку, которая заполнит документы списания и оприходования. Рассмотрим пример программного создания документа списания и оприходования остатков:


// Пример заполнения табличной части переноса остатков
НовыйДокументСписание = Документы.СписаниеНедостачТоваров.СоздатьДокумент();
НовыйДокументСписание.Дата = РабочаяДата;
НовыйДокументСписание.Организация = ВыбраннаяОрганизация;
НовыйДокументСписание.Склад = ВыбранныйСклад;

Для Каждого СтрокаОстатков Из ТаблицаОстатков Цикл
    НоваяСтрока = НовыйДокументСписание.Товары.Добавить();
    НоваяСтрока.Номенклатура = СтрокаОстатков.СтараяНоменклатура;
    НоваяСтрока.Характеристика = СтрокаОстатков.Характеристика;
    НоваяСтрока.Количество = СтрокаОстатков.КоличествоОстаток;
КонецЦикла;

НовыйДокументСписание.Записать(РежимЗаписиДокумента.Проведение);

При оприходовании товаров на новые карточки номенклатуры обязательно указываем сгенерированные серии (например, привязанные к дате реального поступления товара на склад, если эти данные можно восстановить из истории закупок):


НовыйДокументОприходование = Документы.ОприходованиеИзлишковТоваров.СоздатьДокумент();
НовыйДокументОприходование.Дата = РабочаяДата;
НовыйДокументОприходование.Организация = ВыбраннаяОрганизация;
НовыйДокументОприходование.Склад = ВыбранныйСклад;

Для Каждого СтрокаОстатков Из ТаблицаОстатков Цикл
    НоваяСтрока = НовыйДокументОприходование.Товары.Добавить();
    НоваяСтрока.Номенклатура = СтрокаОстатков.НоваяНоменклатура; // Новая карточка с поддержкой серий
    НоваяСтрока.Характеристика = СтрокаОстатков.Характеристика;
    НоваяСтрока.Количество = СтрокаОстатков.КоличествоОстаток;
    
    // Создание и привязка серии номенклатуры
    НоваяСерия = Справочники.СерииНоменклатуры.СоздатьСерию(СтрокаОстатков.НоваяНоменклатура);
    НоваяСерия.Номер = "Партия_от_" + Формат(СтрокаОстатков.ДатаПоступления, "ДФ=yyyyMMdd");
    НоваяСерия.СрокГодности = СтрокаОстатков.ДатаПоступления + (365 * 24 * 3600); // Пример расчета срока годности
    НоваяСерия.Записать();
    
    НоваяСтрока.Серия = НоваяСерия.Ссылка;
КонецЦикла;

НовыйДокументОприходование.Записать(РежимЗаписиДокумента.Проведение);

Шаг 4. Анализ складских процессов и человеческого фактора

Самая большая сложность внедрения серийного учета лежит не в плоскости программирования 1С, а в процессах на реальном физическом складе. Разберем основные проблемы, с которыми вы можете столкнуться:

Таким образом, мы выяснили, что переход на автоматический учет серий по методу FEFO позволяет решить задачу ротации запасов без глобального изменения финансовой учетной политики и без пересчета себестоимости за прошлые годы. Рассмотренный нами алгоритм создания новых карточек и переноса остатков гарантирует стабильную работу базы данных 1С.

← На главную