Загрузка контактной информации в современные конфигурации, такие как 1С:ERP Управление предприятием или 1С:Комплексная автоматизация, существенно отличается от старых методов, применявшихся в 1С:УПП или 1С:Бухгалтерии 2.0. Основная сложность заключается в том, что система ожидает не просто текстовую строку, а строго структурированные данные, соответствующие адресному классификатору (ФИАС/ГАР). Давайте подробно разберем, как решить эту задачу программно и с помощью типовых инструментов.
В старых версиях программ 1С адрес часто хранился как обычная строка. В современных конфигурациях на базе Библиотеки стандартных подсистем (БСП) контактная информация (КИ) хранится в табличных частях справочников Контрагенты или Партнеры. Рассмотрим структуру этой табличной части:
ВидыКонтактнойИнформации (например, Юридический адрес контрагента).Если мы запишем данные только в Представление, при открытии карточки контрагента система не сможет сопоставить адрес с ФИАС. Это приведет к ошибкам при выгрузке отчетности в ФНС или формировании электронных счетов-фактур. Поэтому наша задача — научиться формировать содержимое поля Значения полей.
Если у нас есть «сырой» адрес из Excel, нам нужно превратить его в структуру, которую понимает 1С. Для этого мы проанализируем возможности общего модуля УправлениеКонтактнойИнформацией. Рассмотрим основной метод разбора:
// Пример программного разбора текстовой строки в структуру адреса
ТекстАдреса = "127051, Москва г, Неглинная ул, дом 10";
ТипАдреса = Перечисления.ТипыКонтактнойИнформации.Адрес;
// Функция пытается сопоставить текст с ФИАС
СтруктураАдреса = УправлениеКонтактнойИнформацией.АдресИзПредставления(ТекстАдреса, Ложь, ТипАдреса);
Функция АдресИзПредставления берет на себя самую сложную часть работы — поиск соответствий в загруженном классификаторе. После того как мы получили структуру, её необходимо преобразовать в JSON-строку для записи в базу данных.
После получения структуры данных нам нужно воспользоваться методом формирования итоговой строки. Это обеспечит «валидность» адреса для системы. Посмотрим на пример кода:
// Преобразуем структуру в JSON-строку
ЗначениеДляЗаписи = УправлениеКонтактнойИнформацией.СформироватьJSONЗначениПолей(СтруктураАдреса);
// Записываем в табличную часть контрагента
НоваяСтрокаКИ = ОбъектКонтрагент.КонтактнаяИнформация.Добавить();
НоваяСтрокаКИ.Тип = Перечисления.ТипыКонтактнойИнформации.Адрес;
НоваяСтрокаКИ.Вид = Справочники.ВидыКонтактнойИнформации.ЮрАдресКонтрагента;
НоваяСтрокаКИ.Представление = ТекстАдреса;
НоваяСтрокаКИ.ЗначенияПолей = ЗначениеДляЗаписи;
Важный нюанс: при работе с современными версиями 1С:ERP важно учитывать переход на ГАР (Государственный адресный реестр). В структуре адреса теперь важно разделять административно-территориальное и муниципальное деление. Штатные функции БСП обычно учитывают это автоматически, если классификатор в базе актуален.
Часто бывает так, что адреса в Excel-файле «грязные» или неполные. Выясним причину, по которой ручной разбор может быть неэффективен: человеческий фактор при заполнении Excel. В этом случае лучшим решением будет использование сервиса 1С:Контрагент.
Мы можем автоматизировать процесс, имея только ИНН контрагентов. Рассмотрим алгоритм пакетного заполнения:
Пример вызова метода для получения данных по ИНН:
// Метод возвращает структуру с данными из ЕГРЮЛ
Данные = СведенияОКонтрагентах.ДанныеЮридическогоЛицаПоИНН(КонтрагентИНН);
Если Данные <> Неопределено Тогда
ЮридическийАдрес = Данные.ЮридическийАдрес;
// ЮридическийАдрес уже содержит структурированные данные
КонецЕсли;
Типовая обработка Загрузка данных из табличного документа часто не позволяет напрямую корректно заполнить табличную часть контактной информации в ERP, так как она не умеет «на лету» формировать JSON. В этом случае мы рекомендуем следующий порядок действий:
АдресИзПредставления и СформироватьJSONЗначениПолей для каждой строки.Если встроенный парсер 1С не справляется (например, адрес написан в очень свободной форме), проанализируем ситуацию с внешними API. Сервисы типа DaData позволяют передать любую строку и получить обратно массив данных с четким разделением на индекс, город, улицу и, что самое важное, ID ФИАС (GUID). Получив GUID объекта, мы можем найти его в базе 1С и программно заполнить адресные поля, что гарантирует 100% точность данных.
Подведем итог: для корректной работы 1С:ERP с адресами всегда стремитесь заполнять поле Значения полей в формате JSON. Используйте штатные модули БСП для разбора строк и, по возможности, автоматизируйте заполнение через ИНН и сервис 1С:Контрагент, чтобы избежать ошибок ручного ввода.