Как загрузить адреса контрагентов из Excel в 1С на обычных формах

Программист 1С v8.3 (Обычные формы) 1С:Управление торговлей Торговля и дистрибуция
← На главную

При импорте данных из Excel в программы 1С на обычных формах (например, Управление торговлей 10.3 или Управление торговлей для Казахстана 2.2) пользователи и начинающие разработчики часто сталкиваются с проблемой: при универсальной загрузке контрагентов отсутствует возможность напрямую записать адрес. В результате контрагенты создаются, а их контактные данные остаются пустыми.

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

Архитектура хранения контактной информации в обычных формах

Для понимания логики работы 1С проанализируем устройство хранения адресов в различных конфигурациях:

  1. В современных конфигурациях на управляемых формах (БП 3.0, ЗУП 3.1, УТ 11, ERP) контактная информация хранится непосредственно в табличной части объекта или связанном справочнике.
  2. В конфигурациях на обычных формах (УТ 10.3, УТ KZ 2.2, БП 2.0, ЗУП 2.5, УПП) контактная информация вынесена в отдельный независимый регистр сведений КонтактнаяИнформация (или связанный справочник).

Основной конфликт при загрузке из Excel возникает из-за несоответствия типов данных. В файле Excel наименование или ИНН/ИИН контрагента представлены простой строкой. Однако измерение Объект в регистре сведений КонтактнаяИнформация имеет тип СправочникСсылка.Контрагенты. Попытка записать строковое значение в ссылочное поле приводит к ошибке или неккоректному заполнению данных.

Этап 1: Получение ссылки на контрагента по ИНН/ИИН

Чтобы записать адрес в регистр, необходимо предварительно найти существующую ссылку на контрагента в базе 1С. Наиболее надежный реквизит для поиска — это ИНН (или ИИН/БИН).

Рассмотрим пример кода, который ищет контрагента в справочнике по реквизиту ИНН и возвращает ссылочный тип:


СтрокаИНН = СокрЛП(СтрокаИзExcelИИН);
НайденнаяСсылка = Справочники.Контрагенты.НайтиПоРеквизиту("ИНН", СтрокаИНН);

Если Не НайденнаяСсылка.Пустая() Тогда
    // Контрагент найден, переходим к записи адреса в регистр
Иначе
    Сообщить("Контрагент с ИНН " + СтрокаИНН + " не найден в базе!");
КонецЕсли;

Этап 2: Загрузка данных через универсальную обработку

Если загрузка выполняется с помощью стандартной обработки «Загрузка данных из табличного документа», весь процесс следует разделить на два шага:

  1. Первый шаг: Выполнить загрузку самих контрагентов в справочник Контрагенты (заполнить наименование, ИНН/БИН и прочие базовые реквизиты).
  2. Второй шаг: Переключить обработку в режим «Загрузка в регистр сведений» и выбрать регистр КонтактнаяИнформация.

Выясним подробнее, как правильно настроить колонки для второго шага:

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

Этап 3: Программная запись контактной информации

В случае, если загрузка пишется в виде собственной внешней обработки, для программного создания или обновления записи адреса рекомендуется использовать методы типового общего модуля УправлениеКонтактнойИнформацией:


ТекстАдреса = СокрЛП(СтрокаИзExcelАдрес);
ВидАдреса = Справочники.ВидыКонтактнойИнформации.ЮрАдресКонтрагента;

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

Важные нюансы при подготовке Excel-файла

Проанализируем частые ошибки при работе с исходным файлом Excel:

← На главную