Массовое обновление справочников 1С: файл, обмен, групповая правка и API

· 10 мин

Содержание

Обновить справочник в 1С 8.3 можно пятью способами. Для десятка элементов хватит ручной правки карточки. Для сотни позиций с одним общим изменением подходит групповое изменение реквизитов: в БП 3.0 это Администрирование → Обслуживание → Корректировка данных → Групповое изменение реквизитов. Новый прайс поставщика грузят из Excel командой загрузки в списке справочника. Данные из другой базы 1С переносят обменом. Регулярное обновление из внешней системы настраивают через OData или HTTP-сервис.

Типичная ситуация: снабженец прислал таблицу на 800 строк с новыми артикулами и ценами, а в базе уже 3 000 позиций номенклатуры. Если загрузить файл «как есть», половина строк превратится в дубли. Поэтому порядок такой: сначала подготовить данные и выбрать ключ сопоставления, потом выбрать способ.

Подготовка данных перед обновлением справочника

Большинство проблем с массовым обновлением возникают до нажатия кнопки «Загрузить». Источник с грязными данными даст грязный справочник, и чистить его потом дольше, чем готовить файл.

Выберите ключ сопоставления

1С должна понять, какая строка файла соответствует какому элементу базы. Варианты ключа:

  • 🔑 Код — надёжно, если коды в файле взяты из этой же базы.
  • 🏷️ Артикул — хорошо для номенклатуры, если артикулы уникальны и заполнены у всех.
  • 🧾 ИНН (и КПП) — для контрагентов. Учтите филиалы: у них ИНН общий, отличается КПП.
  • 📝 Наименование — худший вариант. «Болт М8х40» и «Болт М8 х 40» для программы разные строки.

Если надёжного ключа нет, сначала выгрузите справочник из 1С в Excel (в списке: Ещё → Вывести список…), допишите в прайс колонку «Код» через ВПР по артикулу, а потом загружайте обратно.

Почистите таблицу

  1. Удалите пустые строки и строки-итоги внизу листа.
  2. Уберите объединённые ячейки и многострочные заголовки: шапка — ровно одна строка.
  3. Приведите числа к числовому формату. Цена 1 250,00 ₽ текстом не загрузится как число.
  4. Удалите пробелы в начале и конце наименований (функция СЖПРОБЕЛЫ в Excel).
  5. Проверьте дубли ключа: условное форматирование «Повторяющиеся значения» по колонке артикула.
  6. Единицы измерения приведите к тем, что уже есть в базе: «шт», а не «шт.» и «штука» вперемешку.

Сделайте копию базы

Перед массовым изменением справочника сделайте резервную копию информационной базы. Групповую правку нельзя отменить одной кнопкой. Для файловой базы хватит копии каталога или выгрузки .dt из Конфигуратора. Для клиент-серверной — резервной копии СУБД.

Лучше всего сначала прогнать загрузку на копии базы и сверить результат. Это занимает полчаса и страхует от ошибки на тысячах элементов.

Ручная правка и групповое изменение реквизитов

Когда достаточно карточки

Если нужно поправить 5–10 элементов, откройте каждый из списка, измените поле и нажмите Записать и закрыть. Для поиска используйте строку поиска над списком или отбор по колонке. Ничего изобретать тут не нужно.

Групповое изменение: одно значение для многих элементов

Типовые задачи для этого инструмента:

  • 📦 поставить ставку НДС 20% всем товарам из группы;
  • 📂 перенести 200 позиций в другую группу справочника;
  • 📏 заменить единицу измерения;
  • 🏢 проставить вид номенклатуры или статью затрат.

Порядок в БП 3.0:

  1. Откройте Администрирование → Обслуживание → Корректировка данных → Групповое изменение реквизитов.
  2. В поле «Изменять» выберите справочник, например «Номенклатура».
  3. Настройте отбор: по группе, виду, пустому реквизиту. Счётчик покажет, сколько элементов попало под условие.
  4. В табличной части отметьте реквизиты и укажите новые значения.
  5. Нажмите Изменить реквизиты и дождитесь завершения.

Есть и короткий путь прямо из списка: выделите строки (Ctrl или Shift + клик), откройте меню Ещё и выберите Изменить выделенные…. Откроется та же обработка, но уже с выделенными элементами.

Групповое изменение пишет значения во все отобранные элементы сразу. Проверьте счётчик отобранных до запуска: пустой отбор означает «весь справочник».

Если меняете поле, которое влияет на учёт (счёт учёта, ставку НДС), это не трогает уже проведённые документы. Новые значения подтянутся только в новых документах или при перезаполнении старых.

Загрузка справочника из файла Excel

Это основной способ, когда данные пришли таблицей. В БП 3.0, УТ 11 и КА 2 в списке номенклатуры есть команда загрузки из файла. Она встроена в типовую конфигурацию и работает через встроенный помощник.

Порядок загрузки

  1. Откройте справочник, например Справочники → Товары и услуги → Номенклатура в БП 3.0.
  2. В командной панели списка нажмите Загрузить (если кнопки не видно — она в меню Ещё).
  3. Скопируйте данные из Excel и вставьте в таблицу помощника или выберите файл.
  4. Сопоставьте колонки: укажите, какая колонка — наименование, артикул, единица, ставка НДС.
  5. На следующем шаге программа покажет, какие строки нашла в базе, а какие считает новыми. Проверьте именно этот экран.
  6. Подтвердите загрузку.

Ключевой момент — шаг 5. Если строка, которая должна обновить существующий элемент, помечена как новая, остановитесь и проверьте ключ: лишний пробел в артикуле или другая раскладка буквы «С» в коде дают именно такую картину.

Что загрузка не делает

  • ❌ не создаёт автоматически ставки, единицы и виды номенклатуры, которых нет в базе (или создаёт их с пустыми настройками);
  • ❌ не переносит цены в справочник: цены в БП 3.0 задаются документом «Установка цен номенклатуры», у которого своя загрузка из файла;
  • ❌ не удаляет элементы, которых нет в файле.
Сопоставление полей
Наименование→Наименование
Артикул→Артикул (ключ поиска)
Ед. изм.→Единица измерения
НДС→Ставка НДС
Группа→Родитель (группа справочника)
Полное название→Полное наименование

Универсальная обработка для других справочников

Если у нужного справочника нет кнопки загрузки, используют универсальную внешнюю обработку загрузки из табличного документа (ЗагрузкаДанныхИзТабличногоДокумента.epf). Она распространялась с диском ИТС и умеет грузить в любой справочник: вы выбираете объект, вставляете таблицу, отмечаете колонки и поле поиска. Режим «Не создавать новых элементов» превращает её в инструмент чистого обновления существующих записей.

Обновление справочников через обмен с другой базой 1С

Когда эталонные справочники живут в одной базе (например, в УТ), а другим нужна их копия, Excel не нужен. Используют обмен.

Синхронизация данных

Если между базами настроена типовая синхронизация (УТ ↔ БП, ЗУП ↔ БП), справочники обновятся при очередном сеансе обмена. Настройки находятся в Администрирование → Синхронизация данных. Там же видно, какие справочники участвуют в обмене и в какую сторону они передаются.

Частая ловушка: справочник правят в обеих базах. Тогда при обмене срабатывает приоритет одной из сторон, и правки во второй базе молча перезаписываются. Договоритесь, какая база владеет справочником, и правьте его только там.

Универсальный обмен в формате XML

Для разового переноса между базами одной конфигурации подходит обработка Выгрузка и загрузка данных XML (файл ВыгрузкаЗагрузкаДанныхXML82.epf, работает и в 8.3). Последовательность:

  1. В базе-источнике откройте обработку через меню Файл → Открыть (в «Такси» — значок меню в заголовке окна).
  2. На вкладке выгрузки отметьте нужный справочник и при необходимости отбор.
  3. Выгрузите в XML-файл.
  4. В базе-приёмнике откройте ту же обработку, укажите файл и загрузите.

Элементы сопоставляются по уникальному идентификатору ссылки. Если справочник в приёмнике создавался не из этой базы, будут дубли. Для баз разных конфигураций нужны правила обмена, подготовленные в «Конвертации данных», а это уже работа программиста.

Обработка XML пишет данные в режиме обмена: без части проверок заполнения и без обработчиков, которые срабатывают при интерактивной записи. Результат проверяйте выборочно.

Справочники-классификаторы

Банки, валюты, адресный классификатор, ОКОФ обновляются не вручную, а из классификаторов фирмы 1С через интернет-поддержку. Подключите её в Администрирование → Интернет-поддержка и сервисы. После этого классификаторы загружаются автоматически, а в списке банков доступен подбор из классификатора.

Внешняя обработка для обновления справочника

Когда нужен нестандартный алгоритм, пишут свою обработку. Примеры задач: обновить у товаров поле только при условии, загрузить характеристики из CSV-выгрузки маркетплейса, разнести 5 000 штрихкодов.

Минимальный рабочий фрагмент: найти элемент по коду и обновить реквизит.

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

Проверка «не пишем без изменений» нужна не для красоты. Каждая запись создаёт версию объекта (если включено версионирование) и регистрирует изменение для обмена. Без проверки 5 000 «пустых» записей раздуют очередь обмена.

Как запустить обработку

  • Разово: Файл → Открыть и выбор файла .epf. Нужны права на интерактивное открытие внешних обработок; при запуске платформа предупредит о небезопасном действии.
  • Постоянно: Администрирование → Печатные формы, отчеты и обработки → Дополнительные отчеты и обработки. Обработка регистрируется в базе, права на неё раздаются группам пользователей.

Обработку на тысячи элементов запускайте вне рабочего времени или порциями. Каждая запись элемента — транзакция, и параллельная работа пользователей с теми же элементами даст ошибки блокировки.

Автоматическое обновление справочника через веб-сервисы

Если справочник регулярно меняется во внешней системе (сайт, PIM, складская программа), ручная загрузка раз в неделю не годится. Нужен канал, по которому система сама передаёт изменения.

СпособКогда подходитЧто нужно
OData (стандартный интерфейс)внешняя система умеет REST и сама пишет данныепубликация базы на веб-сервере, настройка состава OData
HTTP-сервис в расширениинужна своя логика проверки и сопоставленияпрограммист, расширение конфигурации
Регламентное задание + файлсистема умеет только класть файл на диск или FTPобработка загрузки, серверная база
Типовая синхронизацияобе стороны — типовые конфигурации 1Снастройка в «Синхронизации данных»

OData за 4 шага

  1. Опубликуйте базу на веб-сервере (Apache или IIS) через Конфигуратор: Администрирование → Публикация на веб-сервере, с флажком публикации стандартного интерфейса OData.
  2. В режиме Предприятия откройте обработку «Настройка стандартного интерфейса OData» (через Все функции → Обработки) и отметьте справочник.
  3. Создайте отдельного пользователя 1С для интеграции с минимальными правами.
  4. Передайте разработчику внешней системы адрес вида https://сервер/база/odata/standard.odata/Catalog_Номенклатура.

Изменение элемента выполняется запросом PATCH к конкретному элементу по его идентификатору. Создание — запросом POST к коллекции.

OData пишет данные минуя проверки формы. Если в карточке есть обязательные поля, которые заполняет форма, через OData они останутся пустыми. Тестируйте на копии.

HTTP-сервис в расширении сложнее в разработке, зато вся логика (поиск по артикулу, защита от дублей, журнал загрузки) живёт на стороне 1С. Для серьёзной интеграции это обычно правильный выбор.

Типичные ошибки при обновлении справочника и их причины

Диагностика: выберите симптом

Если результат не устроил

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

При небольших потерях помогает история версий объектов. Если версионирование справочника включено, в карточке элемента можно открыть историю изменений и вернуть предыдущую версию.

Частые вопросы об обновлении справочников

Можно ли обновить справочник в одной базе так, чтобы изменения сами ушли в другие?
Да, если между базами настроена синхронизация данных. Правьте справочник в той базе, которая им владеет, а изменения уйдут при следующем сеансе обмена.
Почему после изменения ставки НДС в номенклатуре старые документы не изменились?
Проведённые документы хранят значения, действовавшие на момент заполнения. Новая ставка попадёт только в новые документы или в старые после перезаполнения табличной части.
Нужен ли монопольный режим для массового обновления справочника?
Нет. Монопольный режим нужен для изменения структуры конфигурации и загрузки .dt. Изменение элементов справочника идёт в обычном режиме, но лучше выбирать время, когда с ними никто не работает.
Как удалить из справочника элементы, которых нет в новом файле?
Загрузка их не трогает. Отберите такие элементы, установите им пометку удаления, а затем запустите удаление помеченных объектов: программа удалит только те, на которые нет ссылок.
Обновляется ли справочник при обновлении конфигурации?
Пользовательские элементы — нет. Релиз меняет структуру справочника и предопределённые элементы, а ваши записи остаются как были.