Как реализовать учет и резервирование кабельной продукции в 1С:УТ 11?

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

При автоматизации учета в торговых компаниях, занимающихся кабельной продукцией, возникает специфическая задача: учет товара не просто в метрах, а в разрезе конкретных бухт (барабанов). Проблема заключается в том, что 100 метров кабеля на складе могут состоять из двух кусков по 50 метров или десяти кусков по 10 метров. Если клиенту нужен цельный кусок в 80 метров, система должна это понимать. Рассмотрим, как грамотно реализовать механизм резервирования и движения по регистрам для такого случая в конфигурации 1С:Управление торговлей 11 (УТ 11).

Анализ штатных механизмов против кастомной разработки

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

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

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

Логика движений в регистре резервов кабельной продукции

Предположим, мы создали регистр накопления РезервыКабельнойПродукции (вид: Остатки). Измерения: Склад, Номенклатура, КабельнаяБухта. Ресурс: Количество. Разберем по шагам, как документы должны влиять на этот регистр.

1. Заказ клиента
Это основной документ, инициирующий резерв. Проанализируем ситуацию: клиент хочет забронировать определенную бухту. Документ должен делать движение Приход в наш регистр. Если в заказе используется статус «К обеспечению» или «Резервировать по мере поступления», логика усложняется, но для жесткого резерва на складе это всегда «Приход» по конкретной аналитике бухты.

2. Реализация товаров и услуг
Когда товар фактически уходит со склада, резерв должен быть снят. Документ делает движение Расход. При этом важно проверять, была ли реализация создана на основании заказа. Если да, мы уменьшаем резерв. Если реализация была «прямая» (без заказа), то движения по регистру резервов могут не требоваться, если только ваша бизнес-логика не подразумевает автоматическое резервирование в момент отгрузки.

3. Заказ поставщику и Поступление товаров и услуг
Здесь кроется важный нюанс. Заказ поставщику сам по себе не создает резерв на складе (так как товара еще нет), но он может создавать «Ожидаемый остаток». А вот Поступление товаров и услуг делает Приход в регистр остатков. В регистр резервов поступление делает движения только в том случае, если товар пришел под конкретный «Заказ клиента» (обособленный учет). В УТ 11 это называется «Назначение».

4. Перемещение товаров
Проанализируем перемещение между складами. Если кабель зарезервирован на Складе №1, а мы перемещаем его на Склад №2, документ должен сделать две записи в регистр резервов:
- Расход со Склада №1;
- Приход на Склад №2.
Это позволит сохранить цепочку резерва за конкретным заказом клиента при смене физического местоположения бухты.

5. Сборка (разборка) товаров — Ключевой документ
Для кабеля этот документ критичен. Когда мы отрезаем от бухты в 500 метров кусок в 50 метров, происходит процесс «разборки».
- Исходная бухта (500 м) списывается (Расход в остатках и резервах).
- Появляются две новые позиции: Отрезок (50 м) и Остаток в бухте (450 м). Они приходуются (Приход).
Выясним причину, почему это важно: если зарезервирована была целая бухта, а ее «разделали», программный код должен автоматически перекинуть резерв на новые образовавшиеся объекты (серии или элементы справочника).

Пример реализации кода для обработки проведения

Рассмотрим упрощенный пример того, как может выглядеть фрагмент кода в модуле проведения документа ЗаказКлиента для нашего нового регистра. Программисту необходимо встроиться в процедуру ОбработкаПроведения или использовать механизм подписок на события.


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

Важные рекомендации по учету отрезков

Разберем ситуацию, упомянутую в обсуждении: наличие на складе двух кусков по 3 метра при потребности в 5 метрах. Чтобы система не выдавала ложноположительный результат («товар есть»), при резервировании в Заказе клиента должна срабатывать проверка:

Подведем итог: реализация учета кабельной продукции требует добавления разреза «Бухта» во все складские документы. Использование серий — это путь наименьшего сопротивления, так как он требует минимального вмешательства в типовой код. Создание собственного регистра — более гибкий, но трудозатратный путь, требующий внимательной проработки движений в 10+ видах документов, включая специфические операции сборки и разборки.

← На главную