Как в 1С:УНФ продавать наборы запчастей с возможностью изменения состава в счете?

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

Многие пользователи 1С:УНФ сталкиваются с задачей реализации комплектов товаров, например, готовых наборов для технического обслуживания автомобиля. Типовой механизм Набор в системе работает очень строго: при добавлении в документ он воспринимается как единая сущность. Если пользователю необходимо удалить один из элементов или изменить количество запчастей, типовой функционал либо запрещает это делать, либо требует удаления всего набора целиком. Разберем, как решить эту проблему, не вступая в конфликт с архитектурой программы.

Почему типовой механизм «Набор» не дает нужной гибкости

Важно понимать, что в 1С:УНФ Набор — это не просто группировка позиций, а жесткая структура, предназначенная для быстрой продажи фиксированного комплекта. Система использует эту сущность для автоматизации списания себестоимости и складских остатков. Разработчики намеренно ограничили возможность редактирования состава внутри документа Счет на оплату, чтобы исключить ошибки в учете и пересортицу. Любая попытка «разбить» набор вручную приводит к нарушению логической связи, поэтому нам потребуются альтернативные подходы.

Решение 1: Использование механизма «Спецификации»

Вместо использования типа номенклатуры Набор, мы можем задействовать механизм Спецификации. Хотя в УНФ они чаще применяются для задач производства, их можно адаптировать для формирования состава документа:

  1. Создаем Спецификацию, в которой перечисляем все необходимые компоненты комплекта (ремень, ролики и т.д.).
  2. С помощью внешнего расширения добавляем в форму Счета на оплату кнопку «Заполнить по спецификации».
  3. При выборе этой функции система считывает состав спецификации и переносит товары в табличную часть как обычные, независимые позиции.

Это дает нам ключевое преимущество: связь с «комплектом» разрывается сразу после заполнения. Теперь менеджер может свободно менять количество или удалять любые строки, так как для системы это обычные товары.

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

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

Как это работает:

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

Решение 3: Варианты комплектации

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

Рекомендация по выбору метода

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

  1. Изолировано от типовых механизмов Наборы.
  2. Не создает проблем при обновлении 1С.
  3. Позволяет менеджеру работать в привычном интерфейсе, просто выбирая шаблон комплекта.

Для реализации логики разворота набора программно, вы можете использовать следующий примерный алгоритм (упрощенно):


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

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

← На главную