Как выбрать вариант комплектации номенклатуры в документе Заказ клиента в 1С:УТ 11.5

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

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

Анализ проблемы: почему в Заказе клиента нет выбора варианта?

Для начала проанализируем внутреннюю логику системы. В 1С:УТ существует два принципиально разных механизма работы со сложными товарами:

  1. Наборы (динамические): это «виртуальные» сущности. Они не хранятся на складе в собранном виде, а распадаются на комплектующие прямо в момент печати чека или реализации. Для наборов выбор состава в Заказе клиента предусмотрен штатно.
  2. Комплекты (сборка): это полноценные товары, которые должны быть предварительно собраны документом Сборка (разборка) товаров. Вариант комплектации в данном случае — это лишь инструкция для кладовщика, как собрать этот товар. С точки зрения Заказа клиента, комплект — это одна единица SKU, и программе «не важно», по какому рецепту она будет получена, так как на складе она должна появиться как готовое изделие.

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

Решение 1: Использование характеристик номенклатуры (Штатный метод)

Это наиболее корректный с точки зрения методики 1С способ. В последних версиях УТ 11.5 реализована возможность связывать варианты комплектации (спецификации) с конкретными характеристиками номенклатуры. Рассмотрим, как это настроить:

  1. Включите использование характеристик для вида номенклатуры.
  2. Создайте характеристики, соответствующие вашим вариантам (например, «Вариант №1», «Вариант №2»).
  3. В карточке номенклатуры перейдите в раздел Варианты комплектации.
  4. Для каждого варианта укажите в поле Характеристика соответствующее значение.

В чем преимущество: при создании документа Заказ клиента менеджер выбирает номенклатуру и характеристику. Когда на основании заказа будет создан Заказ на сборку, система автоматически подставит тот вариант комплектации, который жестко закреплен за этой характеристикой. Таким образом, выбор «пробрасывается» через всю цепочку документов без написания кода.

Решение 2: Переход на механизм «Наборов-пакетов»

Если ваша деятельность не подразумевает длительного процесса сборки и хранения готовых комплектов на складе, проанализируем возможность использования Наборов.

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

Решение 3: Использование дополнительных реквизитов (Без программирования в коде)

Если вам нужно просто «передать информацию» с сайта или зафиксировать выбор менеджера, но вы не хотите использовать характеристики, можно пойти по пути добавления метаданных:

  1. Откройте Дополнительные реквизиты и сведения.
  2. Добавьте для табличной части «Товары» документа Заказ клиента новый реквизит «Вариант комплектации» с типом значения СправочникСсылка.ВариантыКомплектацииНоменклатуры.
  3. Теперь в заказе появится колонка, где можно выбрать вариант.

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

Решение 4: Программная доработка (Создание расширения)

Если требуется автоматизировать логику перебора вариантов (например: «если нет комплектующих для Варианта 1, пробуем Вариант 2»), необходимо прибегнуть к доработке. Рассмотрим пример логики, которую можно реализовать в расширении для формы документа или в модуле менеджера при обработке проведения.

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


// Функция проверяет возможность сборки по конкретному варианту
Функция ПроверитьВозможностьСборки(НоменклатураКомплекта, ВариантСборки, Количество) Экспорт
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |   ВариантыКомплектацииТовары.Номенклатура КАК Комплектующая,
        |   ВариантыКомплектацииТовары.Количество * &КоличествоЗаказа / ВариантыКомплектации.Количество КАК Требуется
        |ИЗ
        |   Справочник.ВариантыКомплектации.Товары КАК ВариантыКомплектацииТовары
        |ГДЕ
        |   ВариантыКомплектацииТовары.Ссылка = &ВариантСборки";
    
    Запрос.УстановитьПараметр("ВариантСборки", ВариантСборки);
    Запрос.УстановитьПараметр("КоличествоЗаказа", Количество);
    
    РезультатЗапроса = Запрос.Выполнить().Выгрузить();
    
    Для Каждого Строка Состава Из РезультатЗапроса Цикл
        Остаток = СкладскиеОстатки.ПолучитьОстаток(СтрокаСостава.Комплектующая); // Условная функция получения остатка
        Если Остаток < СтрокаСостава.Требуется Тогда
            Возврат Ложь;
        КонецЕсли;
    КонецЦикла;
    
    Возврат Истина;
КонецФункции

Эту логику следует внедрять не в сам Заказ клиента, а в механизм формирования документов обеспечения. В Заказе клиента рекомендуется добавить колонку для хранения выбранного варианта, а в расширении для документа Заказ на сборку переопределить процедуру заполнения (ПриСозданииНаОсновании), чтобы система подтягивала данные из вашей новой колонки в заказе.

Рекомендации по интеграции с сайтом

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

Резюме

Выясним причину выбора того или иного метода. Если вам важна чистота учета и типовая поддержка — используйте характеристики. Если состав комплекта всегда уникален и меняется «на лету» — переходите на наборы. Если же вы строите сложную систему автоматического подбора спецификаций в зависимости от остатков — без расширения конфигурации и доработки табличной части Заказа клиента не обойтись.

← На главную