Как массово заполнить или обновить артикулы номенклатуры в 1С:Розница 2.2 из Excel

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

В процессе работы с программой 1С:Розница 2.2 часто возникает ситуация, когда справочник номенклатуры уже заполнен, но в нем отсутствуют важные реквизиты, например, Артикул. Если позиций в списке несколько сотен или тысяч, ручное заполнение превращается в рутину с высоким риском ошибок. Рассмотрим ситуацию, когда у нас есть файл Excel с названиями товаров и соответствующими им артикулами, и нам необходимо быстро «подтянуть» эти данные в существующие карточки номенклатуры в базе 1С.

Для решения этой задачи существует несколько надежных способов. Мы проанализируем использование стандартных инструментов, разберем типичные ошибки (такие как появление дублей) и выясним, как правильно настроить сопоставление данных.

Способ 1. Использование штатного помощника «Загрузка данных из файла»

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

  1. Перейдем в раздел НСИ, откроем справочник Номенклатура и нажмем кнопку Загрузить из файла. Если кнопки нет на панели, ее можно найти через меню «Еще» или в разделе «Администрирование — Обслуживание — Загрузка данных из файла».
  2. В открывшемся окне выберем вариант «Загрузить свои данные из таблицы». Нам будет предложено поле, куда можно просто скопировать данные из Excel (выделяем нужные колонки в Excel, копируем через Ctrl+C и вставляем в 1С через Ctrl+V).
  3. Нажмем «Далее». На этом этапе система предложит сопоставить колонки из файла с реквизитами справочника Номенклатура. Нам нужно указать, какая колонка является «Наименованием», а какая — «Артикулом».
  4. Самый важный момент: поскольку поле Артикул в базе сейчас пустое, мы не можем использовать его для поиска. В настройках сопоставления (обычно это кнопка «Изменить» или выбор ключевого поля) необходимо указать Наименование как поле поиска. Это даст программе команду: «Найди в базе товар с таким же названием и запиши в него артикул из этой же строки файла».
  5. Обратим внимание на режим загрузки. Нам необходимо убедиться, что выбран режим Обновление существующих. Если оставить режим «Создавать новые», система может наплодить дубликатов, если найдет малейшее расхождение в символах.

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

Этот инструмент является классикой для специалистов 1С и входит в состав комплекта поставки на диске ИТС. Он более гибкий и позволяет детально настроить поведение системы при записи данных. Рассмотрим его использование подробнее.

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

При работе с обработкой ЗагрузкаДанныхИзТабличногоДокумента.epf выполним следующие действия:

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

Анализ рисков: Почему данные могут не сопоставиться?

Рассмотрим причины, по которым автоматическое заполнение может пройти некорректно, даже если настройки выставлены правильно. Проблема часто кроется в качестве исходных данных в Excel.

1. Лишние пробелы. Программа 1С воспринимает строку "Молоко" и "Молоко " (с пробелом в конце) как разные объекты. Перед загрузкой в Excel крайне рекомендуется обработать колонку с наименованиями функцией =СЖПРОБЕЛЫ(A1). Это удалит невидимые знаки в начале и конце строки.

2. Спецсимволы и кавычки. В 1С могут использоваться «елочки» (« »), а в Excel — обычные кавычки (" "). При поиске по наименованию это критично. Проанализируем данные на наличие таких различий перед запуском процесса.

3. Длина поля. У реквизита Артикул в конфигурации есть ограничение по длине (например, 25 символов). Если в вашем файле Excel артикулы длиннее, они будут обрезаны. Проверим тип данных в конфигураторе, если возникли сомнения.

Программный подход: Написание простой обработки

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


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

Этот код демонстрирует базовый принцип: находим ссылку через НайтиПоНаименованию, преобразуем ее в объект через ПолучитьОбъект(), меняем реквизит и записываем. В реальной задаче стоит добавить проверку на уникальность артикула, чтобы избежать конфликтов, если в настройках программы включен контроль уникальности.

Подведение итогов

Для массового заполнения поля Артикул в 1С:Розница 2.2 не обязательно покупать дорогостоящие внешние модули. Достаточно использовать штатную загрузку из файла или обработку с ИТС «Загрузка данных из табличного документа». Главное правило успеха — тщательная подготовка Excel-файла и правильная настройка полей поиска (по наименованию, так как артикул изначально пуст). Всегда делайте резервную копию базы данных перед выполнением массовых операций изменения реквизитов!

← На главную