Многие владельцы доработанных старых конфигураций, таких как Альфа-Авто, сталкиваются с тем, что встроенный механизм КЛАДР перестал соответствовать требованиям регуляторов и форматам, используемым в электронном документообороте. Давайте разберем, почему попытки прямого редактирования файлов классификатора ведут в тупик и какими путями можно решить задачу корректной выгрузки адресов в УПД и другие формы.
Первое, что приходит на ум при возникновении ошибки — открыть файлы КЛАДР и поправить структуру подчинения. Однако, проанализировав ситуацию, мы понимаем, что этот путь является неэффективным по следующим причинам:
1С каждый адресный элемент обладает уникальным Кодом или GUID. Система жестко связывает элементы иерархией. При попытке вручную изменить родителя для города или района, база данных выдаст ошибку уникальности кода или ссылочной целостности, так как алгоритмы поиска 1С зашиты в логику метаданных.ЭДО требуются актуальные идентификаторы ФИАС/ГАР. Старый КЛАДР их просто не содержит.Самым эффективным современным решением является использование внешних API, таких как DaData. Этот метод позволяет не хранить весь гигантский справочник у себя, а выполнять «нормализацию» адреса в момент формирования документа.
Разберем алгоритм работы:
ЭДО мы берем текстовое представление адреса из карточки контрагента в Альфа-Авто.HTTP-запрос в API сервиса.Идентификаторы ГАР, почтовые индексы и правильную иерархию.XML-файл документа ЭДО «на лету».Таким образом, мы оставляем внутреннюю структуру базы нетронутой, но при этом передаем контрагентам и в налоговую данные, полностью соответствующие актуальным справочникам.
Если использование внешних сервисов невозможно по требованиям безопасности или политики компании, мы можем реализовать собственную логику работы с ГАР (Государственным адресным реестром). Обратите внимание, что ГАР — это массивная структура, и хранить ее в полном объеме внутри старой конфигурации нецелесообразно.
Предлагаем следующую стратегию:
Ссылка на элемент справочника адресов Альфа-Авто и Идентификатор ГАР.ФИАС/ГАР (доступны на ресурсах ИТС 1С) для наполнения вашего справочника или регистра. Это позволит системе при формировании файла сопоставлять старый внутренний код с новым стандартом ГАР.Рассмотрим пример того, как это может выглядеть в коде (концептуально):
// Пример получения данных из регистра соответствий при формировании XML для ЭДО
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ ИД_ГАР ИЗ РегистрСведений.СоответствиеАдресов ГДЕ ОбъектАдреса = &Адрес";
Запрос.УстановитьПараметр("Адрес", ТекущийАдресКонтрагента);
Результат = Запрос.Выполнить().Выбрать();
Если Результат.Следующий() Тогда
АктуальныйИД = Результат.ИД_ГАР;
// Подставляем актуальный ИД в узел XML
КонецЕсли;
Проанализировав обе стратегии, мы рекомендуем склоняться к первому варианту, так как он снимает с вас головную боль по постоянному обновлению базы адресов. Если же вы выбираете второй вариант, обязательно ознакомьтесь с технической документацией по структуре ГАР, так как она кардинально отличается от КЛАДР.
Помните: Любое решение должно строиться на принципе «минимального вмешательства» в основной код конфигурации. Создание внешних модулей или промежуточных регистров позволит вам в будущем легче обновлять или дорабатывать систему, не боясь «сломать» логику работы адресного классификатора.