Как автоматически заполнить регион контрагента в 1С:Бухгалтерии 3.0 на основе адреса?

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

При автоматизации учета часто возникает задача классификации контрагентов по регионам. Однако накопленная за долгие годы база данных содержит адреса в разном формате: от старых записей КЛАДР до произвольно введенных строк. Попытки парсить эти данные с помощью строковых функций Найти или ПСТР неэффективны из-за сокращений и различий в наименованиях. Рассмотрим, как решить эту задачу правильно с помощью механизмов 1С.

Понимание структуры хранения контактной информации

В современных конфигурациях, включая 1С:Бухгалтерию 3.0, адреса не хранятся в виде простой строки. Они записываются в регистр сведений КонтактнаяИнформация. Сам адрес представляет собой Хранилище значений, внутри которого данные упакованы в XML-формат. Этот формат строго структурирован и содержит все элементы адреса: индекс, регион, район, город и т.д.

Важно: Не пытайтесь анализировать текстовое представление адреса. Чтобы получить регион, нужно работать с данными внутри XML-структуры, которые уже сопоставлены с актуальным адресным классификатором (ФИАС).

Этап 1: Подготовка данных и очистка адресов

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

Этап 2: Использование возможностей БСП для извлечения региона

Поскольку конфигурация построена на Библиотеке стандартных подсистем (БСП), нам не нужно вручную разбирать XML-файл. Мы можем воспользоваться функционалом модуля УправлениеКонтактнойИнформацией.

Разберем алгоритм действий:

  1. Создайте внешнюю обработку.
  2. В процедуре обработки выберите записи из регистра КонтактнаяИнформация для нужных контрагентов.
  3. Используйте функции для чтения структуры адреса. Например, данные из поля Адрес можно превратить в структуру или структуру-массив с помощью штатных методов БСП.
  4. Из полученной структуры извлеките значение поля, соответствующего региону.

Пример логики обращения к контактной информации:


// Примерный алгоритм получения региона
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ ОбъектыКонтактнойИнформации.ЗначениеПоля КАК АдресXML
               |ИЗ РегистрСведений.КонтактнаяИнформация КАК ОбъектыКонтактнойИнформации
               |ГДЕ ОбъектыКонтактнойИнформации.Объект = &СсылкаНаКонтрагента";
// ... выполнение запроса
// Полученный XML разбирается функциями БСП

Этап 3: Заполнение доп. реквизита

После того как вы извлекли регион из XML-структуры, у вас на руках будет либо ссылка на элемент справочника (если регионы у вас хранятся справочником), либо строка, которую нужно сопоставить с вашим набором значений доп. реквизита.

Для записи данных в доп. реквизит воспользуйтесь методом УправлениеСвойствами.ЗаписатьСвойство или прямым обращением к плану видов характеристик ДополнительныеРеквизитыИСведения, если это предусмотрено архитектурой вашей задачи.

Альтернативный вариант: Загрузка через табличный документ

Если автоматическое заполнение через код кажется слишком сложным или требует разового действия, можно поступить иначе:

  1. Выгрузите список контрагентов и их адреса в Excel-файл.
  2. С помощью функций Excel (например, ВПР или ЛЕВСИМВ) или специализированных скриптов приведите адреса к названиям регионов.
  3. Подготовьте таблицу со столбцами: Контрагент и Регион.
  4. Воспользуйтесь штатной обработкой ЗагрузкаДанныхИзТабличногоДокумента, которая встроена в БСП.
  5. В настройках обработки укажите соответствие колонок файла объектам в 1С (дополнительному реквизиту).

Этот метод предпочтительнее «Группового изменения объектов», так как он позволяет предварительно проверить корректность сопоставления регионов в Excel, исключив ошибки человеческого фактора.

Заключение

Проанализировав ситуацию, мы пришли к выводу, что использование XML-структуры контактной информации — единственный надежный способ. Использование БСП позволяет избежать проблем с вариативностью написания адресов. Рекомендуем начать с приведения базы к актуальному классификатору, после чего выполнение задачи по заполнению доп. реквизитов станет технически простой операцией.

← На главную