Одной из самых частых задач при работе с 1С:Управление торговлей (УТ 11.4) является обновление цен из прайс-листов поставщиков. Ситуация осложняется, когда названия товаров в Excel-файле не идентичны тем, что заведены в базе 1С. Например, в учетной системе товар называется «Болт М8х20 стальной», а в файле поставщика — «Болт 8*20 (ст)». Рассмотрим эффективные способы сопоставления данных, которые позволят обработать 700 и более позиций без ручного ввода каждого значения.
Для конфигурации 1С:Управление торговлей 11.4 наиболее методически верным решением является использование штатного функционала Номенклатура поставщиков. Этот механизм позволяет хранить в базе 1С связь между вашей карточкой товара и тем, как этот товар называется у конкретного контрагента.
Разберем алгоритм действий по шагам:
НоменклатураКонтрагентов.Важный момент: Если загрузка разовая, этот метод может показаться трудозатратным, но для регулярной работы с прайсами это лучший вариант, исключающий ошибки в будущем.
Если в 1С наименования хранятся в поле Наименование для печати, а в Excel именно такие названия, мы можем подготовить файл так, чтобы 1С «узнала» позиции по их основному наименованию или коду. Проанализируем ситуацию: нам нужно «подтянуть» в файл Excel уникальный идентификатор (Код или Артикул) из 1С.
Рассмотрим процесс сопоставления с помощью функции ВПР (VLOOKUP):
Наименование (основное) и Наименование для печати (полное).ВПР, чтобы найти Наименование для печати из нашего прайса в выгруженном из 1С списке и вернуть соответствующее ему Основное наименование или Код.Пример формулы в Excel для сопоставления:
=ВПР(A2; 'ВыгрузкаИз1С'!$A$1:$B$5000; 2; 0)
Где A2 — название в прайсе, а диапазон 'ВыгрузкаИз1С'!$A$1:$B$5000 — справочник из 1С. После этого в файле прайса появится колонка с точным названием из 1С, и штатная загрузка отработает мгновенно.
Когда названия различаются на уровне опечаток, лишних пробелов или порядка слов (например, «Ромашка ООО» vs «ООО Ромашка»), обычный ВПР не поможет. В этом случае выясним, как работает Power Query (надстройка Excel, доступная в версиях 2016+).
Если вы используете универсальную обработку ЗагрузкаДанныхИзТабличногоДокумента.epf, можно прописать алгоритм поиска непосредственно в настройках колонок. Посмотрим на пример кода, который можно вставить в поле Выражение для поиска по реквизиту НаименованиеПолное (которое в интерфейсе обычно и есть «Наименование для печати»):
// Пример кода для поиска номенклатуры по полному наименованию
ТекстовоеИмя = СокрЛП(ТекстЯчейки); // Текст из Excel
НайденнаяСсылка = Справочники.Номенклатура.НайтиПоРеквизиту("НаименованиеПолное", ТекстовоеИмя);
Если НайденнаяСсылка.Пустая() Тогда
// Если не нашли, можно попробовать поиск по обычному наименованию
НайденнаяСсылка = Справочники.Номенклатура.НайтиПоНаименованию(ТекстовоеИмя);
КонецЕсли;
Результат = НайденнаяСсылка;
Такой подход позволяет гибко управлять логикой поиска прямо в процессе импорта, не меняя структуру файла Excel.
Проанализируем самый надежный вариант. Если в прайс-листе поставщика есть Артикул, и этот же артикул заведен у вас в 1С, то название вообще не имеет значения. При загрузке через документ Установка цен номенклатуры (или через помощник загрузки цен) в окне настройки колонок укажите:
Номенклатура.Артикул (Поле поиска).Цена.В этом случае 1С проигнорирует текстовые различия и свяжет данные по уникальному коду. Если артикулы есть только в Excel, но их нет в 1С — стоит потратить время один раз на их заполнение, так как это значительно упростит все последующие загрузки.
Для 700 позиций наиболее эффективным будет следующий путь:
Помните, что в 1С:УТ 11.4 объект Номенклатура имеет два основных строковых поля: Наименование (рабочее наименование) и НаименованиеПолное (наименование для печати). При программном поиске или настройке загрузки обязательно уточняйте, по какому именно полю вы ищете соответствие.