Проблема с обновлением адресного классификатора (ФИАС или современного формата ГАР) — одна из самых «популярных» и в то же время сложных в администрировании 1С. Ситуация, когда небольшие регионы (например, Санкт-Петербург или Владимирская область) загружаются без проблем, а Москва вызывает «аварийное завершение процесса», знакома многим системным администраторам и программистам. Рассмотрим детально, почему это происходит и как мы можем совместно решить эту задачу.
Прежде всего, проанализируем специфику данных. Москва — это самый объемный регион в классификаторе. В формате ГАР (Государственный адресный реестр) количество объектов, связей и исторических записей по Москве измеряется сотнями тысяч и миллионами строк. Процесс загрузки такого массива данных требует колоссальных ресурсов от сервера 1С:Предприятия и СУБД. Когда система пишет об «аварийном завершении», это чаще всего означает, что какой-то из процессов (фоновое задание или рабочий процесс rphost) был принудительно остановлен операционной системой или самим кластером 1С из-за превышения лимитов.
Разберем ситуацию с точки зрения кластера 1С. Загрузка классификатора обычно выполняется как фоновое задание. Если в консоли администрирования кластера установлены жесткие ограничения, процесс просто не успевает завершиться. Проделаем следующие действия:
rphost установлен лимит памяти (например, 2-4 ГБ), загрузка Москвы может его легко превысить. Попробуем временно увеличить эти показатели или установить их в значение «0» (не ограничено) на период загрузки.Выясним причину, связанную с окружением. При загрузке классификатора 1С сначала скачивает файлы во временную директорию. Проанализируем состояние дисковой подсистемы:
Часто сервер 1С работает под учетной записью USR1CV8. Нам необходимо убедиться, что у этой учетной записи есть полные права на папку временных файлов (обычно это C:\Windows\Temp или папка профиля пользователя в AppData\Local\Temp). Если на системном диске недостаточно места (Москве в распакованном виде требуется несколько гигабайт свободного пространства для временных файлов), процесс прервется без объяснения причин.
Рассмотрим также влияние антивирусного ПО. При парсинге ГАР создается огромное количество мелких файлов. Рекомендуется временно отключить сканирование папок srvinfo и Temp на сервере на время операции.
Загрузка классификатора — это не просто копирование файлов, а массовая запись в таблицы базы данных, такие как АдресныеОбъекты. Посмотрим, что происходит на стороне SQL:
Если ваша база данных использует Full Recovery Model (Полную модель восстановления), то каждая вставленная запись фиксируется в логе транзакций (файл .ldf). При загрузке Москвы этот файл может мгновенно вырасти на 20-50 ГБ. Если место на диске с логами закончится, SQL-сервер выдаст ошибку, которую 1С интерпретирует как «аварийное завершение».
Рекомендация: Переключите базу данных в модель восстановления Simple перед загрузкой, а после завершения верните обратно и сделайте бэкап.
Иногда проблеме способствуют накопленные ошибки в кэше или индексах. Проделаем следующие шаги:
srvinfo).УправлениеПолнотекстовымПоиском, так как он может пытаться индексировать новые данные прямо в процессе их загрузки, создавая лишнюю нагрузку.Если фоновое задание на сервере упорно не справляется, попробуем обойти механизмы кластера. Выполним загрузку «локально» на сервере:
Бывают ситуации, когда записи в регистрах повреждены, и обновление поверх старых данных не проходит. Рассмотрим возможность полной очистки:
В конфигурации 1С:Управление торговлей 11 существует обработка «Очистить адресные сведения». Выберем только регион «г. Москва» и выполним очистку. Это удалит записи из регистров АдресныеОбъекты, но не затронет уже введенные адреса в документах и справочниках контрагентов. После полной очистки попробуем загрузить Москву «с нуля».
Если вы хотите проанализировать ситуацию программно, стоит взглянуть на то, как система обрабатывает данные. Мы можем проверить состояние загрузки через запрос к регистру сведений:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| АдресныеОбъекты.Наименование КАК Название,
| АдресныеОбъекты.ТипОбъекта КАК Тип
|ИЗ
| РегистрСведений.АдресныеОбъекты КАК АдресныеОбъекты
|ГДЕ
| АдресныеОбъекты.КодРегиона = 77"; // Код Москвы
Результат = Запрос.Выполнить();
Если запрос возвращает пустой результат или ошибка возникает на определенных этапах, стоит проверить содержимое ЖурналРегистрации. Ищите события с уровнем «Ошибка» и компонентой «АдресныйКлассификатор». Часто там содержится детальное описание: например, ошибка уникальности записей или нехватка прав на конкретную таблицу.
Проанализировав проблему, мы видим, что «аварийное завершение» — это следствие, а причина кроется в системных лимитах. Для успешной загрузки Москвы в 1С:УТ 11 мы рекомендуем:
8.3.22+.Следуя этим шагам, мы сможем преодолеть ограничения системы и успешно обновить адресные сведения в рабочей базе.