Как загрузить цены из Excel в 1С:УТ 11.4, если наименования товаров не совпадают?

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

Одной из самых частых задач при работе с 1С:Управление торговлей (УТ 11.4) является обновление цен из прайс-листов поставщиков. Ситуация осложняется, когда названия товаров в Excel-файле не идентичны тем, что заведены в базе 1С. Например, в учетной системе товар называется «Болт М8х20 стальной», а в файле поставщика — «Болт 8*20 (ст)». Рассмотрим эффективные способы сопоставления данных, которые позволят обработать 700 и более позиций без ручного ввода каждого значения.

Способ 1. Сопоставление через механизм «Номенклатура поставщика»

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

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

  1. Проверим настройки: перейдем в раздел НСИ и администрирование — Настройка НСИ и разделов — Номенклатура. В разделе Дополнительная информация должен быть включен флаг Номенклатура поставщиков.
  2. В карточке партнера (вашего поставщика) на вкладке Номенклатура поставщика можно вручную или массово задать соответствия.
  3. При использовании документа Цены поставщиков (прайс-листы) и загрузке данных из внешнего файла, система предложит окно сопоставления. Если вы один раз укажете соответствие «их» наименования вашему, 1С запомнит эту связь в регистре НоменклатураКонтрагентов.
  4. При следующей загрузке из этого же файла система автоматически распознает все 700 позиций.

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

Способ 2. Предварительная подготовка данных в Excel (функция ВПР)

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

Рассмотрим процесс сопоставления с помощью функции ВПР (VLOOKUP):

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

Пример формулы в Excel для сопоставления:

=ВПР(A2; 'ВыгрузкаИз1С'!$A$1:$B$5000; 2; 0)

Где A2 — название в прайсе, а диапазон 'ВыгрузкаИз1С'!$A$1:$B$5000 — справочник из 1С. После этого в файле прайса появится колонка с точным названием из 1С, и штатная загрузка отработает мгновенно.

Способ 3. Использование Power Query для нечеткого поиска

Когда названия различаются на уровне опечаток, лишних пробелов или порядка слов (например, «Ромашка ООО» vs «ООО Ромашка»), обычный ВПР не поможет. В этом случае выясним, как работает Power Query (надстройка Excel, доступная в версиях 2016+).

  1. Загрузим в Power Query таблицу из 1С и таблицу из прайс-листа.
  2. Выберем команду Объединить запросы.
  3. В настройках объединения включим Нечеткое соответствие (Fuzzy Matching).
  4. Установим порог сходства (например, 0.8). Система сама найдет наиболее похожие строки.
  5. Проверим результат, исправим спорные моменты и выгрузим готовую таблицу для загрузки в 1С.

Способ 4. Программный поиск через «Загрузку данных из табличного документа»

Если вы используете универсальную обработку ЗагрузкаДанныхИзТабличногоДокумента.epf, можно прописать алгоритм поиска непосредственно в настройках колонок. Посмотрим на пример кода, который можно вставить в поле Выражение для поиска по реквизиту НаименованиеПолное (которое в интерфейсе обычно и есть «Наименование для печати»):


// Пример кода для поиска номенклатуры по полному наименованию
ТекстовоеИмя = СокрЛП(ТекстЯчейки); // Текст из Excel
НайденнаяСсылка = Справочники.Номенклатура.НайтиПоРеквизиту("НаименованиеПолное", ТекстовоеИмя);

Если НайденнаяСсылка.Пустая() Тогда
    // Если не нашли, можно попробовать поиск по обычному наименованию
    НайденнаяСсылка = Справочники.Номенклатура.НайтиПоНаименованию(ТекстовоеИмя);
КонецЕсли;

Результат = НайденнаяСсылка;

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

Способ 5. Сопоставление по Артикулу или Коду

Проанализируем самый надежный вариант. Если в прайс-листе поставщика есть Артикул, и этот же артикул заведен у вас в 1С, то название вообще не имеет значения. При загрузке через документ Установка цен номенклатуры (или через помощник загрузки цен) в окне настройки колонок укажите:

В этом случае 1С проигнорирует текстовые различия и свяжет данные по уникальному коду. Если артикулы есть только в Excel, но их нет в 1С — стоит потратить время один раз на их заполнение, так как это значительно упростит все последующие загрузки.

Резюме и рекомендации

Для 700 позиций наиболее эффективным будет следующий путь:

  1. Если загрузки регулярные — используйте Номенклатуру поставщика. Система «обучается» в процессе и запоминает связи.
  2. Если загрузка разовая — используйте Excel (ВПР) или Power Query для быстрого сопоставления двух списков.
  3. Всегда проверяйте наличие Артикулов. Поиск по строке (наименованию) — это самый ненадежный способ автоматизации, чувствительный к каждому лишнему пробелу или символу «№» вместо «#».

Помните, что в 1С:УТ 11.4 объект Номенклатура имеет два основных строковых поля: Наименование (рабочее наименование) и НаименованиеПолное (наименование для печати). При программном поиске или настройке загрузки обязательно уточняйте, по какому именно полю вы ищете соответствие.

← На главную