Массовая загрузка данных в 1С — это стандартная задача, с которой сталкивается любой технический специалист при запуске новой базы или актуализации сведений о контрагентах. Однако загрузка адресов имеет свои нюансы, так как в большинстве конфигураций контактная информация хранится не в самом справочнике Контрагенты, а в подчиненных структурах: регистрах сведений или табличных частях. Рассмотрим подробнее, как решить задачу загрузки 3500 адресов из файла Excel, опираясь на опыт разработчиков и возможности платформы.
Для конфигураций на обычных формах (таких как Бухгалтерия 2.0 или Управление торговлей 10.3) существует проверенный инструмент — "Загрузка данных из табличного документа". Эту обработку можно найти на диске или портале ИТС. Она позволяет сопоставлять колонки Excel с полями объектов 1С.
Проанализируем важный нюанс: если мы просто выберем справочник Контрагенты, мы сможем загрузить наименование, ИНН и КПП, но поле "Адрес" может отсутствовать в списке доступных для загрузки. Это происходит потому, что адреса физически хранятся в регистре сведений КонтактнаяИнформация. Для успешного импорта через типовую обработку нужно выполнить следующие шаги:
КонтактнаяИнформация.Выясним причину возможных сложностей: если загрузить только поле "Представление", адрес в карточке контрагента появится, но он не будет "разобран" по полям (город, улица, дом). Для системы такой адрес останется просто строкой текста, что может вызвать проблемы при формировании регламентированной отчетности.
Если типовая обработка не подходит или требуется сложная логика поиска контрагентов, воспользуемся программным кодом. Разберем по шагам создание записей в регистре. В старых версиях конфигураций (на платформе 8.2) работа ведется напрямую с регистром сведений.
Посмотрим на пример кода, который позволяет создать запись для конкретного владельца:
// Создаем набор записей для конкретного контрагента
Набор = РегистрыСведений.КонтактнаяИнформация.СоздатьНаборЗаписей;
Набор.Отбор.Объект.Установить(СсылкаНаКонтрагента);
Набор.Отбор.Тип.Установить(Перечисления.ТипыКонтактнойИнформации.Адрес);
Набор.Отбор.Вид.Установить(Справочники.ВидыКонтактнойИнформации.ЮрАдресКонтрагента);
// Добавляем новую запись в набор
НоваяЗапись = Набор.Добавить();
НоваяЗапись.Объект = СсылкаНаКонтрагента;
НоваяЗапись.Тип = Перечисления.ТипыКонтактнойИнформации.Адрес;
НоваяЗапись.Вид = Справочники.ВидыКонтактнойИнформации.ЮрАдресКонтрагента;
НоваяЗапись.Представление = СтрокаАдресаИзExcel;
// Записываем данные в базу
Набор.Записать();
В данном примере мы используем объект СоздатьНаборЗаписей. Это более надежный метод, чем использование менеджера записи, так как он позволяет корректно обновлять существующую информацию, предварительно установив фильтр по владельцу и виду адреса.
Проанализируем ситуацию с современными базами (Бухгалтерия 3.0, УТ 11, Розница 2.3). Здесь архитектура изменилась. Контактная информация теперь часто хранится в табличных частях самих справочников. При этом структура хранения стала сложнее: помимо представления, 1С хранит адрес в формате XML или JSON в поле ЗначенияПолей.
Если вы просто запишете строку в табличную часть, 1С не сможет отобразить ее в форме выбора адреса ФИАС. В современных системах рекомендуется использовать программный интерфейс (API) Библиотеки Стандартных Подсистем (БСП). Рассмотрим использование общего модуля УправлениеКонтактнойИнформацией:
// Пример формирования структуры для записи адреса в БСП
ВидАдреса = Справочники.ВидыКонтактнойИнформации.ЮридическийАдресКонтрагента;
ТипАдреса = Перечисления.ТипыКонтактнойИнформации.Адрес;
// Используем программный интерфейс для корректного заполнения
УправлениеКонтактнойИнформацией.ЗаписатьКонтактнуюИнформацию(СсылкаНаКонтрагента, СтрокаАдресаИзExcel, ВидАдреса, ТипАдреса);
Использование метода ЗаписатьКонтактнуюИнформацию позволяет системе автоматически обработать строку и, по возможности, сформировать необходимые служебные данные. Если конфигурация поддерживает интеграцию с ФИАС (ГАР), система постарается сопоставить адрес с государственным реестром.
Часто при открытии скачанных из интернета обработок возникает ошибка "Неверный формат хранилища данных". Выясним причину: скорее всего, обработка была создана в более новой версии платформы (например, 8.3.20) и вы пытаетесь открыть ее в старой версии (например, 8.2). В этом случае поможет только конвертация обработки через конфигуратор или поиск версии, соответствующей вашей платформе.
Важные моменты при подготовке файла Excel:
Подводя итог, отметим, что для разовой загрузки в старых конфигурациях проще всего использовать ЗагрузкаДанныхИзТабличногоДокумента с настройкой на регистр сведений. Для современных систем оптимальным является использование встроенного помощника "Загрузка данных из файла" (раздел Администрирование), который уже "знает" о табличных частях и корректно обрабатывает контактную информацию.