В процессе работы с программой 1С:Розница 2.2 часто возникает ситуация, когда справочник номенклатуры уже заполнен, но в нем отсутствуют важные реквизиты, например, Артикул. Если позиций в списке несколько сотен или тысяч, ручное заполнение превращается в рутину с высоким риском ошибок. Рассмотрим ситуацию, когда у нас есть файл Excel с названиями товаров и соответствующими им артикулами, и нам необходимо быстро «подтянуть» эти данные в существующие карточки номенклатуры в базе 1С.
Для решения этой задачи существует несколько надежных способов. Мы проанализируем использование стандартных инструментов, разберем типичные ошибки (такие как появление дублей) и выясним, как правильно настроить сопоставление данных.
Современные версии конфигурации 1С:Розница 2.2 на платформе 8.3 уже содержат в себе мощный инструмент для импорта данных. Многие пользователи ошибочно полагают, что он предназначен только для первоначального наполнения базы, но это не так. Разберем по шагам, как выполнить обновление существующих позиций.
Ctrl+C и вставляем в 1С через Ctrl+V).Номенклатура. Нам нужно указать, какая колонка является «Наименованием», а какая — «Артикулом».Артикул в базе сейчас пустое, мы не можем использовать его для поиска. В настройках сопоставления (обычно это кнопка «Изменить» или выбор ключевого поля) необходимо указать Наименование как поле поиска. Это даст программе команду: «Найди в базе товар с таким же названием и запиши в него артикул из этой же строки файла».Этот инструмент является классикой для специалистов 1С и входит в состав комплекта поставки на диске ИТС. Он более гибкий и позволяет детально настроить поведение системы при записи данных. Рассмотрим его использование подробнее.
Разберем ситуацию, описанную в обсуждении: почему у некоторых пользователей при использовании этой обработки создаются копии вместо обновления? Проблема кроется в настройке Полей поиска.
При работе с обработкой ЗагрузкаДанныхИзТабличногоДокумента.epf выполним следующие действия:
Наименование и Артикул.Наименование. Если вы поставите галочку и на Артикул, система будет искать объект, у которого одновременно совпадает и имя, и артикул. Так как артикул в базе пуст, совпадение не будет найдено, и программа создаст новый элемент.Рассмотрим причины, по которым автоматическое заполнение может пройти некорректно, даже если настройки выставлены правильно. Проблема часто кроется в качестве исходных данных в Excel.
1. Лишние пробелы. Программа 1С воспринимает строку "Молоко" и "Молоко " (с пробелом в конце) как разные объекты. Перед загрузкой в Excel крайне рекомендуется обработать колонку с наименованиями функцией =СЖПРОБЕЛЫ(A1). Это удалит невидимые знаки в начале и конце строки.
2. Спецсимволы и кавычки. В 1С могут использоваться «елочки» (« »), а в Excel — обычные кавычки (" "). При поиске по наименованию это критично. Проанализируем данные на наличие таких различий перед запуском процесса.
3. Длина поля. У реквизита Артикул в конфигурации есть ограничение по длине (например, 25 символов). Если в вашем файле Excel артикулы длиннее, они будут обрезаны. Проверим тип данных в конфигураторе, если возникли сомнения.
Если штатные средства по какой-то причине не подходят (например, требуется сложная логика сопоставления или поиск по нескольким полям), программист может написать небольшую обработку. Выясним, как выглядит упрощенный алгоритм обновления объекта на встроенном языке 1С:
// Пример упрощенного алгоритма обновления артикула
Пока ФайлExcel.Прочитать() Цикл
НазваниеТовара = ФайлExcel.Наименование;
НовыйАртикул = ФайлExcel.Артикул;
// Пытаемся найти ссылку на объект в базе
СсылкаНаТовар = Справочники.Номенклатура.НайтиПоНаименованию(НазваниеТовара, Истина);
Если Не СсылкаНаТовар.Пустая() Тогда
// Создаем объект для изменения
ОбъектТовар = СсылкаНаТовар.ПолучитьОбъект();
ОбъектТовар.Артикул = НовыйАртикул;
Попытка
ОбъектТовар.Записать();
Исключение
Сообщить("Ошибка при записи товара: " + НазваниеТовара);
КонецПопытки;
КонецЕсли;
КонецЦикла;
Этот код демонстрирует базовый принцип: находим ссылку через НайтиПоНаименованию, преобразуем ее в объект через ПолучитьОбъект(), меняем реквизит и записываем. В реальной задаче стоит добавить проверку на уникальность артикула, чтобы избежать конфликтов, если в настройках программы включен контроль уникальности.
Для массового заполнения поля Артикул в 1С:Розница 2.2 не обязательно покупать дорогостоящие внешние модули. Достаточно использовать штатную загрузку из файла или обработку с ИТС «Загрузка данных из табличного документа». Главное правило успеха — тщательная подготовка Excel-файла и правильная настройка полей поиска (по наименованию, так как артикул изначально пуст). Всегда делайте резервную копию базы данных перед выполнением массовых операций изменения реквизитов!