Как массово загрузить дополнительные реквизиты в справочники 1С из Excel?

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

При автоматизации учета часто возникает задача переноса данных из внешних таблиц Excel в справочники 1С. В то время как загрузка основных реквизитов справочников не вызывает сложностей, работа с дополнительными реквизитами, созданными через механизм Библиотеки Стандартных Подсистем (БСП), требует особого подхода. Давайте разберем, как решить эту задачу универсально, без покупки платных внешних обработок.

Понимание структуры хранения дополнительных реквизитов

Прежде чем приступать к разработке, проанализируем, как 1С хранит эти данные. Все дополнительные реквизиты и сведения в современных конфигурациях базируются на Плане видов характеристик (ПВХ) «ДополнительныеРеквизитыИСведения». Значения реквизитов записываются либо в табличную часть объекта, либо в регистр сведений «ДополнительныеСведения».

Вместо того чтобы писать прямые запросы к таблицам базы данных (что чревато ошибками и нарушением целостности), мы будем использовать встроенный программный интерфейс БСП, который берет на себя всю логику проверки типов и записи значений.

Решение через обработку «Загрузка данных из табличного документа»

Самый быстрый способ реализовать загрузку — воспользоваться типовой обработкой ЗагрузкаДанныхИзТабличногоДокумента. Она входит в состав большинства конфигураций на базе БСП. Основная идея заключается в том, чтобы использовать штатные возможности загрузки объекта, а в событии записи выполнить дополнительный код.

  1. Откройте обработку ЗагрузкаДанныхИзТабличногоДокумента.
  2. Выберите нужный справочник (например, Сотрудники).
  3. Настройте маппинг колонок Excel с реквизитами справочника.
  4. В модуле обработки или через механизм «Обработчик записи» внедрите программный вызов функций БСП.

Программная реализация записи реквизитов

Ключевым инструментом для записи является общий модуль УправлениеСвойствами. Основной метод, который нам понадобится — УправлениеСвойствами.ЗаписатьСвойства. Рассмотрим пример того, как может выглядеть структура кода для автоматизированной записи:


// Пример логики обработки данных
Для Каждого СтрокаТаблицы Из ТаблицаЗагрузки Цикл
    // 1. Поиск объекта (ссылки)
    СотрудникСсылка = Справочники.Сотрудники.НайтиПоКоду(СтрокаТаблицы.Код);
    
    // 2. Подготовка структуры значений свойств
    СвойстваОбъекта = Новый Структура;
    СвойстваОбъекта.Вставить("ЦветГлаз", СтрокаТаблицы.ЦветГлаз); // Наименование свойства и значение
    
    // 3. Запись через БСП
    УправлениеСвойствами.ЗаписатьСвойства(СотрудникСсылка, СвойстваОбъекта);
КонецЦикла;

Важные аспекты разработки

При реализации данного решения проанализируем несколько критических моментов, которые помогут избежать ошибок:

Преимущества подхода

Рассмотренный метод является наиболее «чистым» с точки зрения обновления конфигурации. Вам не требуется изменять метаданные справочников или создавать сложные правила обмена. Использование стандартного метода УправлениеСвойствами.ЗаписатьСвойства гарантирует, что все проверки (например, обязательность заполнения, проверка по списку значений или ограничения типа) сработают корректно, как если бы пользователь вводил данные вручную через форму.

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

← На главную