В процессе автоматизации торгового предприятия на базе 1С:Управление нашей фирмой (УНФ) пользователи часто сталкиваются с ситуацией, когда прайс-лист поставщика содержит множество позиций с одинаковыми наименованиями, но уникальными артикулами. Типичный пример — справочник метизов, где под общим названием «Болт» могут скрываться десятки товаров с разными техническими характеристиками и кодами производителя. При попытке стандартной загрузки через помощник Загрузка данных из файла программа нередко «схлопывает» все эти позиции в одну, оставляя только первый найденный артикул. Проанализируем, почему это происходит и как настроить систему для корректного импорта данных.
Разберем причину такого поведения системы. Большинство встроенных инструментов импорта в типовых конфигурациях на платформе 1С:Предприятие 8.3 по умолчанию настроены на поиск существующих элементов справочника Номенклатура по полю Наименование. Если программа находит в базе или в обрабатываемом файле несколько строк с одинаковым названием, она считает их дублями одной и той же карточки.
Проблема усугубляется тем, что упрощенный мастер загрузки, доступный непосредственно из списка номенклатуры, не всегда выводит расширенные настройки сопоставления на первый план. Рассмотрим подробнее способы, которые позволяют обойти это ограничение.
Самый правильный с точки зрения архитектуры 1С способ — указать программе, что уникальность товара определяется совокупностью полей или исключительно артикулом. Рассмотрим, как это сделать в актуальных релизах УНФ:
Если мы выбираем поиск по артикулу, программа сначала проверит наличие такого кода в базе. Если артикул уникален, 1С создаст новую карточку, даже если название «Болт» уже встречается в справочнике сто раз. Проанализируем ситуацию: если в самом Excel-файле есть дубли артикулов, программа снова выдаст ошибку, поэтому перед загрузкой важно убедиться в чистоте данных в файле-источнике.
Если штатные настройки сопоставления в вашем релизе УНФ ограничены, применим проверенный «костыль», который гарантирует создание разных карточек. Суть метода заключается в том, чтобы сделать каждое наименование уникальным еще на этапе подготовки файла в Excel.
Выясним, как быстро подготовить данные:
=A2 & " " & B2 (где A — название, B — артикул).При загрузке укажем эту новую колонку как основное Наименование. После завершения импорта у нас будут созданы уникальные карточки. Если для печатных форм вам нужны чистые названия, мы можем загрузить исходное слово «Болт» в поле Наименование для печати, которое не используется алгоритмами поиска дублей при загрузке.
Давайте проанализируем инструменты, которые предлагает конфигурация. В УНФ их как минимум три, и работают они по-разному:
Артикул, и Наименование, система применит логику «И», создавая новую запись только при несовпадении обоих параметров.Для разработчиков, которые решают задачу программно, важно понимать, как система ищет элементы. При использовании стандартных библиотек (БСП) часто вызываются методы поиска, аналогичные следующему запросу. Посмотрим на логику, которую можно реализовать в собственной обработке для более точного контроля:
// Пример логики поиска существующей номенклатуры по двум полям
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Номенклатура.Ссылка КАК Ссылка
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| Номенклатура.Наименование = &Наименование
| И Номенклатура.Артикул = &Артикул";
Запрос.УстановитьПараметр("Наименование", СтрокаИзФайла.Наименование);
Запрос.УстановитьПараметр("Артикул", СтрокаИзФайла.Артикул);
Результат = Запрос.Выполнить();
Если Результат.Пустой() Тогда
// Создаем новую карточку, так как комбинация Название + Артикул уникальна
НоваяНоменклатура = Справочники.Номенклатура.СоздатьЭлемент();
// ... заполнение реквизитов
КонецЕсли;
Именно отсутствие такой «связки» в стандартных настройках некоторых версий загрузчика и приводит к проблеме автора темы. Программа видит, что Наименование уже существует, и прекращает поиск, не доходя до проверки артикула.
Важно отметить, что наличие множества товаров с абсолютно одинаковыми рабочими наименованиями может затруднить работу пользователей в дальнейшем (например, при подборе товара в документы вручную). Рассмотрим альтернативные варианты организации данных в 1С:УНФ:
Характеристик. Артикулы в этом случае можно присвоить каждой характеристике отдельно.Таким образом, для решения проблемы загрузки необходимо либо переключить режим поиска в настройках помощника на «Артикул», либо предварительно подготовить данные в Excel, объединив название и код в одной колонке для обеспечения технической уникальности записей.