При автоматизации учета часто возникает задача переноса данных из внешних таблиц Excel в справочники 1С. В то время как загрузка основных реквизитов справочников не вызывает сложностей, работа с дополнительными реквизитами, созданными через механизм Библиотеки Стандартных Подсистем (БСП), требует особого подхода. Давайте разберем, как решить эту задачу универсально, без покупки платных внешних обработок.
Прежде чем приступать к разработке, проанализируем, как 1С хранит эти данные. Все дополнительные реквизиты и сведения в современных конфигурациях базируются на Плане видов характеристик (ПВХ) «ДополнительныеРеквизитыИСведения». Значения реквизитов записываются либо в табличную часть объекта, либо в регистр сведений «ДополнительныеСведения».
Вместо того чтобы писать прямые запросы к таблицам базы данных (что чревато ошибками и нарушением целостности), мы будем использовать встроенный программный интерфейс БСП, который берет на себя всю логику проверки типов и записи значений.
Самый быстрый способ реализовать загрузку — воспользоваться типовой обработкой ЗагрузкаДанныхИзТабличногоДокумента. Она входит в состав большинства конфигураций на базе БСП. Основная идея заключается в том, чтобы использовать штатные возможности загрузки объекта, а в событии записи выполнить дополнительный код.
ЗагрузкаДанныхИзТабличногоДокумента.Сотрудники).Ключевым инструментом для записи является общий модуль УправлениеСвойствами. Основной метод, который нам понадобится — УправлениеСвойствами.ЗаписатьСвойства. Рассмотрим пример того, как может выглядеть структура кода для автоматизированной записи:
// Пример логики обработки данных
Для Каждого СтрокаТаблицы Из ТаблицаЗагрузки Цикл
// 1. Поиск объекта (ссылки)
СотрудникСсылка = Справочники.Сотрудники.НайтиПоКоду(СтрокаТаблицы.Код);
// 2. Подготовка структуры значений свойств
СвойстваОбъекта = Новый Структура;
СвойстваОбъекта.Вставить("ЦветГлаз", СтрокаТаблицы.ЦветГлаз); // Наименование свойства и значение
// 3. Запись через БСП
УправлениеСвойствами.ЗаписатьСвойства(СотрудникСсылка, СвойстваОбъекта);
КонецЦикла;
При реализации данного решения проанализируем несколько критических моментов, которые помогут избежать ошибок:
УправлениеСвойствами самостоятельно находит соответствующий элемент в ПВХ. Однако, если наименования могут дублироваться или меняться, рекомендуется использовать поиск по Ссылка или УникальныйИдентификатор, если он вам известен заранее.Число, Дата или Булево, обязательно приведите тип данных перед вызовом функции записи, иначе 1С выдаст ошибку несоответствия типов.Рассмотренный метод является наиболее «чистым» с точки зрения обновления конфигурации. Вам не требуется изменять метаданные справочников или создавать сложные правила обмена. Использование стандартного метода УправлениеСвойствами.ЗаписатьСвойства гарантирует, что все проверки (например, обязательность заполнения, проверка по списку значений или ограничения типа) сработают корректно, как если бы пользователь вводил данные вручную через форму.
Если же вы планируете сделать решение максимально удобным для пользователей, рассмотрите вариант создания небольшого Расширения конфигурации. В расширении можно добавить кнопку «Загрузить из Excel» в форму списка любого нужного вам справочника, что позволит запускать процесс загрузки прямо из интерфейса программы, не открывая сторонние обработки.