В процессе работы с программами на платформе 1С:Предприятие 8.3 (такими как Зарплата и управление персоналом 3.1, Бухгалтерия предприятия 3.0 или ERP) пользователи часто сталкиваются со странным поведением адресного классификатора. Одной из наиболее раздражающих ошибок является ситуация, когда при заполнении личных данных сотрудника в поле «Адрес по прописке» программа автоматически подставляет один и тот же город, какой бы район области вы ни выбрали. Рассмотрим причины возникновения этой ошибки и разберем по шагам методы ее решения.
Проблема проявляется в режиме «Административно-территориальное деление». Вы выбираете область (например, Московскую), выбираете конкретный район, но в поле «Город» система упорно выводит административный центр региона или совершенно другой населенный пункт, игнорируя заданную фильтрацию по району. При этом, если сменить область, город может измениться на другой, но внутри новой области он снова будет «заморожен» для всех районов.
Почему это происходит? Современные конфигурации 1С используют ГАР (Государственный адресный реестр), который пришел на смену старому классификатору ФИАС. Структура ГАР значительно сложнее, так как она поддерживает два типа иерархии: административную и муниципальную. Основные причины сбоя:
АдресныеОбъекты начинают возвращать первое попавшееся значение, соответствующее верхнему уровню иерархии (области), игнорируя уточняющие параметры района.Как показывает практика и опыт участников форума, наиболее эффективным (хотя и трудоемким) способом исправления данной ошибки в файловых информационных базах является процедура выгрузки и последующей загрузки базы данных. Разберем, почему это помогает.
Когда мы выгружаем базу в файл .dt, платформа сохраняет только «чистые» данные без индексов. При обратной загрузке из .dt система полностью пересоздает все таблицы и, что самое важное, заново выстраивает все индексы. Это устраняет любые логические перекосы в регистре АдресныеОбъекты.
Порядок действий:
1С:Предприятие и проверьте заполнение адреса.Если база данных имеет большой объем и выгрузка/загрузка занимает слишком много времени, попробуем решить задачу стандартными средствами диагностики. Проанализируем ситуацию: нам нужно восстановить целостность таблиц адресного классификатора.
Запустите Тестирование и исправление (через Конфигуратор: Администрирование — Тестирование и исправление...). В появившемся окне установите следующие флаги:
После выполнения этих процедур индексы, на которые опирается форма выбора адреса, будут обновлены.
Иногда проблема кроется не в индексах базы, а в самих данных, которые были загружены некорректно (например, произошел обрыв связи во время скачивания данных с серверов 1С). В этом случае поможет полная очистка адресных сведений по проблемному региону.
Рассмотрим алгоритм действий в интерфейсе программы:
В некоторых релизах программ Зарплата и управление персоналом (ЗУП) ошибка может быть чисто интерфейсной. Проанализируем, как можно «протолкнуть» верное значение через форму ввода:
Если вы решите исследовать проблему на уровне кода, обратите внимание на работу формы ФизЛица_Адрес или общей формы ВводАдреса. Проблема часто локализована в обработчике события ПриИзменении поля выбора района. В типовых решениях за это отвечает механизм КонтактнаяИнформацияСлужебный.
Проверьте, как заполняются параметры выбора для поля «Город». В некоторых сбойных релизах параметр СвязиПараметровВыбора может быть настроен некорректно, из-за чего список выбора городов не ограничивается выбранным районом, а берет первый элемент из кэша области. Выглядит это примерно так (упрощенно):
// Пример логики, которая может сбоить
ЭлементГород = ЭтаФорма.Элементы.Адрес_Город;
НовыеСвязи = Новый СвязиПараметровВыбора;
НовыеСвязи.Добавить("Отбор.Район", "Адрес_Район");
ЭлементГород.СвязиПараметровВыбора = НовыеСвязи;
Если программные методы и ТиИ не помогают, а база файловая — использование утилиты chdbfl.exe (находится в папке bin установленной платформы) является обязательным шагом перед выгрузкой в .dt. Она проверяет физическую целостность файла 1Cv8.1CD.
Резюмируем: при возникновении «странного» поведения с городами в адресах, начните с очистки кэша и проверки через chdbfl.exe, а если это не поможет — выполните цикл выгрузки-загрузки базы через .dt. Это гарантированно перестроит адресные индексы и вернет программе предсказуемость.