При работе с конфигурацией 1С:Управление нашей фирмой (УНФ) версии 1.6 пользователи часто сталкиваются с задачей массового обновления данных. Типичная ситуация: у вас уже создана база номенклатуры, заполнены Артикул и Наименование, но возникла необходимость загрузить или обновить значения многочисленных дополнительных реквизитов (например, габариты, цвет, материал или технические характеристики) из внешнего файла Excel.
Основная сложность заключается в том, что стандартный помощник «Загрузка данных из внешнего источника» считает поле Наименование обязательным. Если оставить эту колонку пустой в файле загрузки, система либо выдаст ошибку, либо (что еще хуже) может очистить существующие названия в базе. В данной статье мы разберем, как корректно сопоставить данные по артикулу и обновить дополнительные сведения, не повредив существующую информацию.
В платформе 1С:Предприятие 8.3 справочник Номенклатура имеет критически важные поля. Реквизит Наименование является основным представлением объекта. Программные механизмы загрузки в УНФ спроектированы так, что при импорте система проверяет наличие имени для каждого элемента. Даже если вы настраиваете поиск только по полю Артикул, логика обработки формы требует, чтобы колонка с названием была заполнена, так как она считается ключевой для идентификации и корректного сохранения объекта в базе данных.
Проанализируем самый надежный способ, который не требует программирования или изменения конфигурации. Если программа требует Наименование, мы предоставим ей его, но сделаем это так, чтобы текущие названия в 1С не изменились. Нам поможет функция ВПР (VLOOKUP) в Excel.
Рассмотрим пошаговый алгоритм действий:
Артикул и Наименование. Это будет наш справочный файл.Артикул и новые значения дополнительных реквизитов.ВПР подтянем названия из справочного файла (выгруженного из 1С) по ключевому полю Артикул. Это гарантирует, что названия в файле будут в точности совпадать с названиями в базе.Таким образом, при сопоставлении 1С увидит, что Наименование в файле и в базе совпадает, и просто «перезапишет» его тем же значением, одновременно обновив нужные нам дополнительные реквизиты.
Разберем, как правильно настроить сам инструмент загрузки в 1С:УНФ, чтобы минимизировать риск создания дублей или удаления данных.
При запуске помощника загрузки на этапе сопоставления колонок выполним следующие действия:
Наименование и оставим ее только на поле Артикул. Это скажет программе: «Ищи существующий товар в базе только по артикулу, не обращая внимания на название».Наименование, значит, в вашем релизе проверка зашита жестко. В этом случае необходимо вернуться к Решению 1.Если дополнительные реквизиты нужно заполнить сложным образом, проанализируем альтернативный путь через стандартную обработку ГрупповоеИзменениеРеквизитов. Этот метод подходит, если данных не слишком много или они поддаются логическому алгоритму.
Посмотрим, как это работает:
Комментарий), используя поиск по артикулу. В этом случае проверка наименования часто проходит мягче.Номенклатура, настроим отбор по нужным позициям.Для программистов и системных администраторов рассмотрим вариант с использованием механизма расширений. Мы можем вмешаться в процесс загрузки, не снимая конфигурацию с поддержки.
В модуле формы или в программном интерфейсе загрузки (в зависимости от версии БСП, интегрированной в УНФ) можно найти процедуру проверки заполнения. Пример логики, которую можно внедрить через расширение (метод &Вместо или &Перед):
// Пример логики в расширении для обхода проверки наименования
&После("ПроверитьЗаполнениеТаблицыЗагрузки")
Процедура ИмяРасширения_ПроверитьЗаполнениеТаблицыЗагрузки(ТаблицаДанных)
// Находим колонку "Наименование" в служебной таблице загрузки
// Если мы обновляем данные по Артикулу, принудительно помечаем
// проверку как пройденную для существующих элементов.
Для Каждого Строка Из ТаблицаДанных Цикл
Если ЗначениеЗаполнено(Строка.Артикул) Тогда
// Логика подмены признака обязательности
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Однако помните, что внесение изменений в код загрузки — это крайняя мера. Использование Excel с функцией ВПР остается самым быстрым и безопасным способом решения задачи для обычного пользователя.
Выясним, почему автор темы в Сообщении 0 опасается стирания данных. В 1С:УНФ механизм загрузки работает по принципу «что вижу в файле, то и записываю в базу». Если в настройках сопоставления колонок вы указали, что колонка №2 файла — это Наименование, а в самом файле эта колонка пуста, 1С воспримет это как команду «очистить значение реквизита».
Золотое правило загрузки: если вы не хотите менять какой-то реквизит, при настройке сопоставления в помощнике просто не выбирайте для него соответствие (оставьте значение «Не загружать» или снимите пометку с этой колонки). Если же система заставляет выбрать Наименование, воспользуйтесь методом склейки таблиц, описанным выше.
Для успешного обновления дополнительных реквизитов по артикулу без повреждения наименований выполним следующие действия:
VLOOKUP в Excel для подготовки эталонного файла, где Артикул соответствует актуальному Наименованию.Артикул).