Почему перенесенные из 1С 7.7 товары не отображаются в подборе документов УТ 11 и как это исправить?

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

Переход со старых версий платформ (например, «1С:Торговля и Склад 7.7») на современные конфигурации семейства 1С 8.3 (в частности, «1С:Управление торговлей 11») — это сложный процесс, требующий глубокого понимания разницы в архитектуре данных. Часто после успешного, на первый взгляд, переноса справочников пользователи сталкиваются с неприятной проблемой: в справочнике Номенклатура все позиции отображаются корректно, но при попытке заполнить документ (например, «Заказ клиента» или «Реализация товаров и услуг») через форму подбора список товаров оказывается абсолютно пустым.

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

В чем кроется причина проблемы: разница архитектур 1С 7.7 и УТ 11

Для того чтобы понять суть неисправности, проанализируем структуру хранения данных в обеих конфигурациях. В устаревшей версии «1С:Торговля и Склад 7.7» классификация номенклатуры была устроена максимально просто. Понятие «Вид номенклатуры» там отсутствовало как самостоятельный объект метаданных, определяющий логику поведения системы. Карточка товара содержала лишь базовый набор реквизитов.

В современных конфигурациях на платформе 1С 8.3 (включая УТ 11, КА 2.5 и ERP) архитектура справочника номенклатуры претерпела кардинальные изменения:

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

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

Форма подбора товаров в документах УТ 11 работает через специализированный динамический список с жестко заданными отборами. При открытии подбора из документа «Заказ клиента» система автоматически накладывает невидимый для пользователя фильтр: показывать только те элементы, у которых тип номенклатуры соответствует продаваемым активам (то есть равен значению Товар, Услуга, Работа или МногооборотнаяТара). Так как у ваших импортированных позиций этот реквизит пуст, система подбора их просто игнорирует и показывает пустую таблицу.

Разгадка системных пиктограмм: «Желтая коробка» против «Черного треугольника»

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

Если при переносе данных из 7.7 в базу данных ошибочно записался признак ЭтоГруппа = Истина для обычных товаров, то выбрать их в табличную часть документов продажи будет физически невозможно. Платформа 1С блокирует выбор «папок» в качестве продаваемых позиций. Также треугольник может сигнализировать о нарушении иерархии или некорректном заполнении признака иерархического родителя объекта в базе данных.

Решение 1: Исправление данных с помощью «Группового изменения реквизитов»

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

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

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

Решение 2: Программное восстановление реквизитов (для программистов)

Бывают ситуации, когда стандартная групповая обработка прерывается из-за внутренних ошибок платформы. Это происходит потому, что при интерактивной записи элемента система запускает процедуру ПередЗаписью модуля объекта, которая проверяет заполненность других обязательных реквизитов (например, ставок НДС, базовых единиц измерения, которых в базе 7.7 могло просто не быть). Если эти реквизиты пусты, система выдает ошибку и отменяет транзакцию записи.

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


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

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

← На главную