Каждый бухгалтер и кадровик, работающий в программе 1С:Зарплата и Управление Персоналом 3.1 (или других современных конфигурациях на платформе 1С:Предприятие 8.3), хотя бы раз сталкивался со странным поведением системы при вводе адресов. Мы выбираем адрес из классификатора ФИАС (ГАР), все поля заполняются корректно, индикатор горит зеленым цветом, мы нажимаем кнопку «Записать и закрыть». Однако при повторном открытии карточки сотрудника или организации мы с удивлением обнаруживаем, что адрес снова отображается как обычная текстовая строка в «произвольной форме». Система будто «забывает» структуру адреса.
В этой статье мы подробно разберем, почему возникает этот технический сбой, как работает подсистема контактной информации в 1С, и рассмотрим несколько эффективных способов решения этой проблемы.
Для начала давайте разберем внутреннюю кухню платформы. В современных конфигурациях 1С адрес в базе данных хранится не просто строкой, а в виде сериализованного текста в формате JSON (или XML в более старых версиях). Этот текст записывается в специальное скрытое поле ЗначенияПолей табличной части КонтактнаяИнформация.
Когда мы выбираем адрес через интерактивную форму, система формирует строго структурированную последовательность данных. Например, для адреса с литерой структура в формате JSON выглядит следующим образом:
{
"type": "address",
"country": "RU",
"addressType": "Муниципальный",
"fields": [
{"type": "Region", "value": "7700000000000"},
{"type": "Street", "value": "ул. Ленина"},
{"type": "House", "value": "19"},
{"type": "Letter", "value": "А"}
]
}
При записи элемента справочника (например, физического лица) 1С запускает фоновую валидацию адреса. Система пытается сопоставить каждый элемент структуры (регион, город, улица, дом, корпус) с записями в адресном классификаторе, загруженном в базу данных.
В чем заключается главная хитрость? Если хотя бы один элемент адреса (например, номер дома, владения или корпуса) не проходит внутренний форматный контроль БСП или отсутствует в локальной базе классификатора, система не выдает ошибку и не блокирует запись документа. Вместо этого алгоритм БСП «тихо» и без предупреждения переводит тип адреса в ВСвободнойФорме (Адрес в произвольной форме), чтобы пользователь мог продолжить работу. При повторном открытии формы мы видим обычный неструктурированный текст.
Рассмотрим по шагам четыре практических способа решения этой проблемы.
Наиболее распространенная причина сброса адреса — ручной ввод букв в цифровые поля. Например, если в поле «Владение» или «Дом» написать «19А», парсер БСП при записи попытается сопоставить это значение с числовым полем классификатора ГАР. Поскольку в классификаторе буква «А» чаще всего зарегистрирована как отдельный признак (литера), проверка завершится ошибкой валидации, и адрес перейдет в свободный формат.
Чтобы решить эту проблему, выполним следующие действия:
19).А).После такого разделения алгоритм БСП корректно распределит данные по нужным тегам XML/JSON-структуры, и адрес сохранит свой структурированный вид.
Федеральная налоговая служба полностью перешла на Государственный адресный реестр (ГАР), который одновременно поддерживает два типа деления территорий. В некоторых населенных пунктах (особенно это касается СНТ, дачных поселков или новых присоединенных территорий) адресация по муниципальной структуре кардинально отличается от административной.
Если адрес в классификаторе привязан к муниципальной структуре, а в настройках 1С по умолчанию выбрано административно-территориальное деление, сопоставление при записи не произойдет. Чтобы исправить это, проанализируем настройки формы:
Существует интересный и проверенный временем трюк, который часто используют разработчики и опытные пользователи при получении «грязных» данных из внешних систем (например, при загрузке электронных листков нетрудоспособности из СФР/ФСС).
Исторически в старых версиях БСП и регламентированных отчетах использовалась упрощенная функция разбиения строки адреса по запятым. Стандартный шаблон адреса в РФ раскладывается на 9 полей: Индекс, Регион, Район, Город, Населенный пункт, Улица, Дом, Корпус, Квартира.
Если нам необходимо принудительно заставить систему распознать адрес как структурированный, мы можем составить строку адреса вручную, разделив её ровно 9-ю запятыми (даже если некоторые поля остаются пустыми).
Пример строки для ввода:
142700, Московская обл, , Видное, , ул. Строителей, 10, , 15
При записи документа с таким значением внутренний парсер 1С автоматически поймет, на каких позициях находятся улица, дом и квартира, распределит их по соответствующим реквизитам базы данных и зафиксирует структурированный формат адреса.
Очень часто пользователи задаются вопросом: «Почему при вводе адрес отлично ищется в списке, горит зеленым цветом, но после сохранения сразу слетает?». Причина кроется в разнице работы веб-сервиса интернет-поддержки и локального классификатора базы данных.
Во время ввода адреса система обращается к веб-сервису 1С (облачному классификатору), где всегда содержатся самые свежие данные ГАР. Однако в момент сохранения объекта валидация может инициироваться повторно по локально загруженному в базу классификатору. Если локальный классификатор устарел или был загружен частично (например, без детализации до номеров домов для экономии дискового пространства), система «не найдет» введенный дом на диске компьютера, посчитает адрес некорректным и сбросит его в свободный формат.
Для окончательного устранения этой проблемы выполним следующие шаги:
Также администраторам рекомендуется зайти в справочник ВидыКонтактнойИнформации, найти используемый вид адреса и установить для него настройку «Редактировать только в диалоге». Это заблокирует пользователям возможность ручного ввода «сломанных» адресов в обход стандартной формы выбора, что минимизирует появление ошибок в базе данных.