Как настроить загрузку номенклатуры из Excel в 1С при совпадении наименований и распределить товары по группам?

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

При импорте справочника номенклатуры из внешних таблиц Excel с помощью универсальной обработки «Загрузка данных из табличного документа» часто возникают две типичные проблемы. Первая: если в прайс-листе присутствуют разные позиции с одинаковым названием (например, запчасти под именем «Брызговик», но с уникальными каталожными номерами), обработка по умолчанию находит первую попавшуюся запись и пропускает остальные строки файла. Вторая сложность: распределение загружаемых позиций по соответствующим каталогам и автоматическое создание недостающих папок в иерархии справочника.

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

Настройка полей поиска для предотвращения пропуска дублей наименований

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

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

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

Загрузка номенклатуры в предопределенную или вычисляемую группу

Рассмотрим подробнее механизм привязки элементов к иерархической структуре. Если все товары из файла необходимо поместить в одну конкретную существующую папку, достаточно в настройках колонки Родитель выбрать режим Устанавливать и в поле Значение по умолчанию выбрать нужную группу справочника.

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

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


ИмяГруппы = СокрЛП(СтрЗаменить(ТекстЯчейки, Символы.НПП, " "));
Если ЗначениеЗаполнено(ИмяГруппы) Тогда
    СсылкаГруппы = Справочники.Номенклатура.НайтиПоНаименованию(ИмяГруппы, Истина);
    
    Если СсылкаГруппы.Пустая() Тогда
        НоваяГруппа = Справочники.Номенклатура.СоздатьГруппу();
        НоваяГруппа.УстановитьНовыйКод();
        НоваяГруппа.Наименование = ИмяГруппы;
        Попытка
            НоваяГруппа.Записать();
            Результат = НоваяГруппа.Ссылка;
        Исключение
            Сообщить("Не удалось создать группу: " + ИмяГруппы + " (" + ОписаниеОшибки() + ")");
            Результат = Справочники.Номенклатура.ПустаяСсылка();
        КонецПопытки;
    Иначе
        Результат = СсылкаГруппы;
    КонецЕсли;
Иначе
    Результат = Справочники.Номенклатура.ПустаяСсылка();
КонецЕсли;

Нюансы поиска и построения многоуровневой структуры

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

  1. Точное соответствие при поиске: метод НайтиПоНаименованию(Наименование, ТочноеСоответствие, Родитель) по умолчанию принимает второй параметр со значением Ложь. Это означает, что при поиске папки «Мазда» может быть ошибочно найдена папка «Мазда 6». Всегда явно указывайте второй параметр: Истина.
  2. Учет родителя при поиске одинаковых подгрупп: если структура каталогов содержит одноименные папки в разных разделах (например, «Детали кузова -> Мазда» и «Детали двигателя -> Мазда»), метод поиска без передачи третьего параметра вернет первую попавшуюся группу в дереве. Чтобы сохранить корректную подчиненность, поиск подпапки должен производиться с обязательной передачей ссылки на родительскую группу верхнего уровня.
  3. Скрытые неразрывные пробелы: при чтении данных из файлов Excel в ячейках часто встречаются неразрывные пробелы (код 160). Обычная функция СокрЛП удаляет только стандартные пробелы (код 32). Использование конструкции СтрЗаменить(Текст, Символы.НПП, " ") предотвращает дублирование групп из-за невидимых символов.

Ошибка «Полное наименование номенклатуры недопустимо для группы»

Проанализируем ситуацию, когда обработка прерывается исключением Полное наименование номенклатуры недопустимо для группы. В конфигурациях 1С для стандартных и дополнительных реквизитов справочников предусмотрено свойство ИспользованиеРеквизита. У реквизита НаименованиеПолное (или Артикул, СтавкаНДС) обычно установлено значение «Для элемента».

Эта ошибка возникает в двух случаях:

  1. Попытка присвоить реквизиты элемента объекту-папке: если в программном коде вычисляемого выражения для поиска или создания папки используется метод СоздатьГруппу(), к полученному объекту нельзя обращаться по реквизитам элемента (например, НоваяГруппа.НаименованиеПолное = ... или НоваяГруппа.Артикул = ...). Папка справочника принимает только стандартные свойства группы, такие как Наименование, Родитель и Код.
  2. Неверная типизация строк в табличном документе: если сам файл Excel содержит смешанные данные (строки-заголовки и строки-товары) и загружается единым списком, обработка пытается применить единый шаблон реквизитов ко всем строкам. В таком случае рекомендуется разделять процесс на два этапа: сначала импортировать структуру папок, а затем загружать товары в уже готовые каталоги с установкой соответствия родителей.
← На главную