Как загрузить адреса контрагентов из Excel в 1С:Предприятие

Программист 1С v8.3 (Обычные формы) 1C:Бухгалтерия
← На главную

Массовая загрузка данных в 1С — это стандартная задача, с которой сталкивается любой технический специалист при запуске новой базы или актуализации сведений о контрагентах. Однако загрузка адресов имеет свои нюансы, так как в большинстве конфигураций контактная информация хранится не в самом справочнике Контрагенты, а в подчиненных структурах: регистрах сведений или табличных частях. Рассмотрим подробнее, как решить задачу загрузки 3500 адресов из файла Excel, опираясь на опыт разработчиков и возможности платформы.

Метод 1: Использование типовой обработки с ИТС

Для конфигураций на обычных формах (таких как Бухгалтерия 2.0 или Управление торговлей 10.3) существует проверенный инструмент — "Загрузка данных из табличного документа". Эту обработку можно найти на диске или портале ИТС. Она позволяет сопоставлять колонки Excel с полями объектов 1С.

Проанализируем важный нюанс: если мы просто выберем справочник Контрагенты, мы сможем загрузить наименование, ИНН и КПП, но поле "Адрес" может отсутствовать в списке доступных для загрузки. Это происходит потому, что адреса физически хранятся в регистре сведений КонтактнаяИнформация. Для успешного импорта через типовую обработку нужно выполнить следующие шаги:

  1. В обработке выберите режим загрузки в Регистр сведений.
  2. Укажите имя регистра: КонтактнаяИнформация.
  3. Настройте поля сопоставления. Обязательно должны быть заполнены: Объект (сам контрагент, поиск по ИНН или наименованию), Тип (Адрес), Вид (Юридический, Фактический и т.д.) и Представление (сама строка адреса из Excel).

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

Метод 2: Программная загрузка через набор записей

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

Посмотрим на пример кода, который позволяет создать запись для конкретного владельца:


// Создаем набор записей для конкретного контрагента
Набор = РегистрыСведений.КонтактнаяИнформация.СоздатьНаборЗаписей;
Набор.Отбор.Объект.Установить(СсылкаНаКонтрагента);
Набор.Отбор.Тип.Установить(Перечисления.ТипыКонтактнойИнформации.Адрес);
Набор.Отбор.Вид.Установить(Справочники.ВидыКонтактнойИнформации.ЮрАдресКонтрагента);

// Добавляем новую запись в набор
НоваяЗапись = Набор.Добавить();
НоваяЗапись.Объект = СсылкаНаКонтрагента;
НоваяЗапись.Тип = Перечисления.ТипыКонтактнойИнформации.Адрес;
НоваяЗапись.Вид = Справочники.ВидыКонтактнойИнформации.ЮрАдресКонтрагента;
НоваяЗапись.Представление = СтрокаАдресаИзExcel;

// Записываем данные в базу
Набор.Записать();

В данном примере мы используем объект СоздатьНаборЗаписей. Это более надежный метод, чем использование менеджера записи, так как он позволяет корректно обновлять существующую информацию, предварительно установив фильтр по владельцу и виду адреса.

Метод 3: Особенности современных конфигураций (БСП 3.0 и выше)

Проанализируем ситуацию с современными базами (Бухгалтерия 3.0, УТ 11, Розница 2.3). Здесь архитектура изменилась. Контактная информация теперь часто хранится в табличных частях самих справочников. При этом структура хранения стала сложнее: помимо представления, 1С хранит адрес в формате XML или JSON в поле ЗначенияПолей.

Если вы просто запишете строку в табличную часть, 1С не сможет отобразить ее в форме выбора адреса ФИАС. В современных системах рекомендуется использовать программный интерфейс (API) Библиотеки Стандартных Подсистем (БСП). Рассмотрим использование общего модуля УправлениеКонтактнойИнформацией:


// Пример формирования структуры для записи адреса в БСП
ВидАдреса = Справочники.ВидыКонтактнойИнформации.ЮридическийАдресКонтрагента;
ТипАдреса = Перечисления.ТипыКонтактнойИнформации.Адрес;

// Используем программный интерфейс для корректного заполнения
УправлениеКонтактнойИнформацией.ЗаписатьКонтактнуюИнформацию(СсылкаНаКонтрагента, СтрокаАдресаИзExcel, ВидАдреса, ТипАдреса);

Использование метода ЗаписатьКонтактнуюИнформацию позволяет системе автоматически обработать строку и, по возможности, сформировать необходимые служебные данные. Если конфигурация поддерживает интеграцию с ФИАС (ГАР), система постарается сопоставить адрес с государственным реестром.

Работа с ошибками и форматом данных

Часто при открытии скачанных из интернета обработок возникает ошибка "Неверный формат хранилища данных". Выясним причину: скорее всего, обработка была создана в более новой версии платформы (например, 8.3.20) и вы пытаетесь открыть ее в старой версии (например, 8.2). В этом случае поможет только конвертация обработки через конфигуратор или поиск версии, соответствующей вашей платформе.

Важные моменты при подготовке файла Excel:

  1. Уникальный идентификатор: Всегда используйте ИНН или связку ИНН+КПП для поиска контрагента. Поиск по наименованию крайне ненадежен из-за возможных лишних пробелов или кавычек.
  2. Типизация адресов: Разделите в файле юридический и фактический адреса по разным колонкам.
  3. Очистка данных: Перед загрузкой удалите из строк адреса лишние символы и двойные пробелы — это повысит шанс корректного распознавания адреса встроенными классификаторами 1С.

Подводя итог, отметим, что для разовой загрузки в старых конфигурациях проще всего использовать ЗагрузкаДанныхИзТабличногоДокумента с настройкой на регистр сведений. Для современных систем оптимальным является использование встроенного помощника "Загрузка данных из файла" (раздел Администрирование), который уже "знает" о табличных частях и корректно обрабатывает контактную информацию.

← На главную