Как организовать адресное хранение на складе 1000 кв. м при использовании 1С:УПП: выбор между WMS, доработкой и готовыми решениями

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

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

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

---

Анализ исходных данных: почему классическая WMS может стать ошибкой

Для начала проанализируем параметры склада. Площадь в 1000 кв. м — это относительно небольшой объект. Если это не склад фармацевтической продукции или мелких дорогостоящих автозапчастей с десятками тысяч SKU, внедрение тяжелой, обособленной WMS-системы (например, 1С:WMS или Axelot) чаще всего экономически нецелесообразно.

Рассмотрим, из чего складывается бюджет внедрения классической внешней WMS-системы:

  1. Стоимость программного обеспечения: покупка лицензий на саму систему и рабочие места для ТСД.
  2. Инфраструктура: создание бесшовного покрытия Wi-Fi на складе, покупка защищенных промышленных ТСД, выделение отдельного сервера под базу данных WMS.
  3. Интеграция: написание сложных механизмов обмена данными между 1С:УПП и внешней WMS в режиме реального времени.
  4. Внедрение и обучение: услуги внешних консультантов, поддержка в период запуска.

Для склада в 1000 кв. м совокупная стоимость такого проекта может оказаться несопоставимой с получаемым экономическим эффектом. Кроме того, внедрение полноценной WMS требует выделения в штат как минимум одного системного администратора/оператора WMS для оперативного разбора зависших задач и исправления ошибок обмена.

---

Вариант 1. Доработка адресного хранения внутри 1С:УПП

В коробочной версии «1С:УПП 1.3» уже есть базовый механизм — так называемое статическое (справочное) адресное хранение. Оно позволяет закрепить за конкретным товаром одну или несколько ячеек в карточке номенклатуры. Однако эта схема не ведет количественного учета в разрезе ячеек. Программа не знает, сколько именно штук товара лежит в ячейке А-10, а сколько в Б-20, и не умеет автоматически выдавать задания на сборку с учетом партий и сроков годности.

Если вы принимаете решение дорабатывать УПП собственными силами или с привлечением франчайзи, давайте разберем два пути реализации.

Путь А. Динамическое справочное адресное хранение (без количественного учета в проводках)

Это наиболее простой и безопасный для стабильности базы УПП вариант. Мы создаем простой регистр сведений РегистрСведений.АдресноеХранение со следующей структурой:

При приемке товара кладовщик размещает его в пустую или частично заполненную ячейку и фиксирует это действие на ТСД или бумаге. В регистр делается запись. При отгрузке система по ФИФО анализирует доступные серии, находит по регистру ячейки, в которых лежит эта серия, и формирует для сборщика упорядоченный по маршруту обхода лист отбора. Когда ячейка полностью опустошается, запись из регистра сведений удаляется.

Преимущество: этот контур никак не влияет на проведение основных документов по партиям и бухгалтерскому учету. Даже если кладовщик совершит ошибку, это не заблокирует отгрузку и не приведет к расхождению себестоимости.

Путь Б. Полноценный количественный учет по ячейкам

Некоторые разработчики предлагают превратить склад в УПП в полноценный ордерный склад с количественным учетом. Для этого создается новый регистр накопления остатков (например, РегистрНакопления.ТоварыВЯчейкахОтправителя) и переписываются типовые документы проведения: ПоступлениеТоваровУслуг, РеализацияТоваровУслуг, ПеремещениеТоваров.

Рассмотрим, почему этот путь сопряжен с колоссальными рисками:

  1. Постоянные блокировки и расхождения остатков: реальный склад — это живой организм. Если программа считает, что в ячейке лежит 10 штук товара, а по факту там лежит 9 (один повредили или перепутали при размещении), сборщик не сможет завершить документ отгрузки. Ему придется останавливать работу, звать администратора, делать корректировки. Персонал начнет нервничать и саботировать систему.
  2. Проблема двух контуров: финансовый (логический) учет в УПП и физический учет на складе начнут расходиться. Попытки исправить документы задним числом (например, скорректировать поступление из-за недовоза) будут приводить к каше в партиях и ячейках.

Если вы решите программировать этот функционал самостоятельно, будьте готовы потратить много времени на отладку кода работы с ТСД и обработку нештатных складских ситуаций (заблокированный проход к стеллажу, переполненная ячейка, обнаружение пересорта в процессе сборки).

---

Вариант 2. Использование специализированного софта для ТСД (Оптимальный выбор)

Чтобы получить все преимущества динамического адресного хранения и не переписывать логику проведения документов в УПП, оптимально использовать готовое промежуточное ПО (мидлвар) для терминалов сбора данных. На рынке СНГ лидируют два продукта, имеющие коробочные модули интеграции с УПП 1.3 на обычных формах: DataMobile (модуль «Динамическое адресное хранение») и Mobile SMARTS: Склад 15 (от компании Клеверенс).

Рассмотрим, как работает эта архитектура:

  1. Вся логика «физического» склада (в какую ячейку положить, из какой забрать, контроль габаритов ячейки, генерация штрихкодов ячеек) переносится на сторону специализированного софта на ТСД.
  2. В базе 1С:УПП не создаются тяжелые регистры накопления. Интеграция происходит через внешние обработки или REST API.
  3. При поступлении товара в УПП создается документ ПриходныйОрдерНаТовары. Он выгружается на ТСД. Кладовщик сканирует штрихкод товара, штрихкод серии (срока годности) и штрихкод ячейки, куда он его физически помещает. Информация о размещении записывается в собственную базу ТСД-системы.
  4. При отгрузке документ РасходныйОрдерНаТовары уходит на ТСД. Программа на ТСД сама рассчитывает оптимальный маршрут обхода ячеек сборщиком с учетом ФИФО по срокам годности, хранящимся в ее базе. Кладовщик собирает товар, сканируя ячейки и штрихкоды упаковок.
  5. После завершения сборки ТСД передает в УПП готовый заполненный документ, подтверждая, что физически этот товар собран.

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

---

Специфика учета весового товара и фасовки на складе

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

---

Пример реализации простой структуры хранения данных

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

Допустим, мы создали справочник Склады и подчиненный ему справочник СкладскиеЯчейки с реквизитами Зона, Стеллаж, Полка, Позиция. Нам необходимо программно сгенерировать штрихкоды для новых ячеек по шаблону: Зона-Стеллаж-Полка-Позиция (например, А-01-03-02).

Проанализируем пример кода для генерации и записи таких элементов:


Процедура СоздатьЯчейкиСклада(СкладСсылка, ЗонаИмя, КоличествоСтеллажей, КоличествоПолок, КоличествоПозиций) Экспорт
    
    Для Стеллаж = 1 По КоличествоСтеллажей Цикл
        Для Полка = 1 По КоличествоПолок Цикл
            Для Позиция = 1 По КоличествоПозиций Цикл
                
                СтрокаСтеллаж = Формат(Стеллаж, "ЧЦ=2; ЧГ=0");
                СтрокаПолка   = Формат(Полка, "ЧЦ=2; ЧГ=0");
                СтрокаПозиция = Формат(Позиция, "ЧЦ=2; ЧГ=0");
                
                НаименованиеЯчейки = ЗонаИмя + "-" + СтрокаСтеллаж + "-" + СтрокаПолка + "-" + СтрокаПозиция;
                
                // Проверим, нет ли уже такой ячейки в справочнике
                СсылкаНаЯчейку = Справочники.СкладскиеЯчейки.НайтиПоНаименованию(НаименованиеЯчейки, Истина, , СкладСсылка);
                
                Если Не ЗначениеЗаполнено(СсылкаНаЯчейку) Тогда
                    НоваяЯчейка = Справочники.СкладскиеЯчейки.СоздатьЭлемент();
                    НоваяЯчейка.Владелец   = СкладСсылка;
                    НоваяЯчейка.Наименование = НаименованиеЯчейки;
                    НоваяЯчейка.Зона         = ЗонаИмя;
                    НоваяЯчейка.Стеллаж      = Стеллаж;
                    НоваяЯчейка.Полка        = Полка;
                    НоваяЯчейка.Позиция      = Позиция;
                    
                    НоваяЯчейка.Записать();
                    
                    // Генерируем уникальный штрихкод для ячейки (например, формат Code128)
                    ШтрихкодСимвол = "CELL" + СокрЛП(НоваяЯчейка.Ссылка.УникальныйИдентификатор());
                    
                    РегистрШтрихкодов = РегистрыСведений.Штрихкоды.СоздатьМенеджерЗаписи();
                    РегистрШтрихкодов.Владелец   = НоваяЯчейка.Ссылка;
                    РегистрШтрихкодов.Штрихкод   = ШтрихкодСимвол;
                    РегистрШтрихкодов.ТипШтрихкода = ПланыВидовХарактеристик.ТипыШтрихкодов.Code128;
                    РегистрШтрихкодов.Записать();
                КонецЕсли;
                
            КонецЦикла;
        КонецЦикла;
    КонецЦикла;
    
    Сообщить("Генерация структуры ячеек для зоны " + ЗонаИмя + " успешно завершена!");
    
КонецПроцедуры

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

---

Пошаговый план внедрения изменений на складе

Какое бы программное обеспечение вы ни выбрали, помните золотое правило складской логистики: автоматизация хаоса приводит к автоматизированному хаосу. Не начинайте программирование или установку софта до того, как наведете физический порядок.

Рекомендуем придерживаться следующей последовательности действий:

  1. Физическая подготовка склада: очистите проходы, разметьте зоны хранения (приемка, зона отбора, зона долгосрочного хранения, зона брака). Пронумеруйте стеллажи, полки и ячейки. Оклейте их этикетками со штрихкодами (используйте качественную ламинацию или защитную пленку, так как на складе этикетки быстро затираются).
  2. Организационные изменения: внедрите жесткое правило — ни один товар не должен перемещаться по складу без сканирования или отражения в бумажном листе перемещений. Возможно, на первом этапе придется сменить начальника склада, если старый привык работать "по памяти" и сопротивляется изменениям.
  3. Тестовый запуск: начните автоматизацию с одного процесса — например, только с приемки и размещения товара. Когда кладовщики привыкнут работать с адресной сеткой на приемке, подключайте процесс инвентаризации отдельных ячеек, и только в самую последнюю очередь — автоматический отбор под отгрузку.

Разумный выбор ИТ-архитектуры и планомерное обучение персонала позволят вам организовать образцовый порядок на складе площадью 1000 кв. м с минимальными финансовыми затратами и без риска нарушить стабильную работу конфигурации «1С:УПП».

← На главную