Как изменить вид номенклатуры для группы товаров в 1С:Управление торговлей 11?

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

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

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

Почему возникает ошибка при смене вида номенклатуры

В конфигурациях на платформе 1С:Предприятие 8.3 вид номенклатуры определяет фундаментальные параметры учета позиции справочника. Система выполняет строгие проверки при записи элемента по следующим причинам:

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

Способ 1. Использование режима разработчика в групповом изменении реквизитов

Самый простой и быстрый способ изменить вид номенклатуры без доработки конфигурации — воспользоваться встроенными возможностями типовой обработки Групповое изменение реквизитов.

Разберем по шагам порядок действий:

  1. Открываем обработку Групповое изменение реквизитов (раздел НСИ и администрирование — Обслуживание — Корректировка данных).
  2. Выбираем объект для изменения: Номенклатура. По кнопке Добавить условия отбора настраиваем список позиций, у которых необходимо изменить вид.
  3. Нажимаем кнопку Дополнительные параметры в нижней части формы обработки.
  4. В раскрывшемся окне переходим в раздел Специальные возможности и устанавливаем флаг Режим разработчика.
  5. В списке реквизитов находим поле Вид номенклатуры, отмечаем его галочкой и выбираем целевое значение.
  6. Нажимаем кнопку Изменить реквизиты.

При включении Режима разработчика обработка устанавливает свойство ОбменДанными.Загрузка = Истина для каждого модифицируемого объекта. Это отключает выполнение проверок в модуле объекта и позволяет записать новое значение реквизита.

Способ 2. Программная смена вида номенклатуры

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


Выборка = Справочники.Номенклатура.Выбрать();
Пока Выборка.Следующий() Цикл
    Если Выборка.ЭтоГруппа Тогда
        Продолжить;
    КонецЕсли;
    
    // Проверяем условие отбора
    Если Выборка.ВидНоменклатуры = СтарыйВидНоменклатуры Тогда
        НоменклатураОбъект = Выборка.ПолучитьОбъект();
        
        // Отключаем проверки бизнес-логики модулей
        НоменклатураОбъект.ОбменДанными.Загрузка = Истина;
        НоменклатураОбъект.ВидНоменклатуры = НовыйВидНоменклатуры;
        
        Попытка
            НоменклатураОбъект.Записать();
        Исключение
            Сообщить("Ошибка при записи позиции: " + НоменклатураОбъект.Наименование + " - " + ОписаниеОшибки());
        КонецПопытки;
    КонецЕсли;
КонецЦикла;

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

Способ 3. Штатный перенос через форму списка номенклатуры

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

  1. Открываем список справочника Номенклатура.
  2. Включаем отображение панели навигации По видам и свойствам.
  3. Выделяем нужные элементы в табличной части.
  4. Перетаскиваем выделенные позиции мышью (Drag-and-Drop) в требуемый вид номенклатуры в левой панели.
  5. В открывшемся окне сопоставления подтверждаем перенос значений дополнительных реквизитов.

Риски принудительного изменения вида номенклатуры

Применение режима ОбменДанными.Загрузка = Истина обходит прикладные механизмы контроля, что требует обязательной предварительной проверки на копии информационной базы. Обратим внимание на следующие риски:

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

Если характеристики учета кардинально отличаются (например, перевод из Товара в Услугу или смена политики учета серий), правильнее создать новые карточки номенклатуры, оприходовать остатки на новые позиции и списать их со старых карточек.

← На главную