Переход на новые версии программных продуктов фирмы «1С» часто преподносит сюрпризы технического характера. Одним из наиболее резонансных обновлений стал выход релиза 1С:Бухгалтерия Предприятия 3.0.65 (и аналогичных релизов конфигурации 1С:Зарплата и Управление Персоналом 3.1.8). В этих версиях произошли фундаментальные изменения в подсистеме адресного классификатора, которые привели к временному отключению привычного веб-сервиса автозаполнения, а также к массовым ошибкам вида Файл не обнаружен при попытке локальной загрузки баз ФИАС.
В данной статье мы подробно проанализируем причины произошедших изменений, разберем техническую подоплеку ошибок и выработаем пошаговые инструкции по их устранению.
Для начала выясним первопричину глобальных изменений в программе. Фирма «1С» осуществила перевод адресного классификатора на новый формат представления данных в соответствии с Приказом ФНС России № ММВ-7-17/535@. До этого момента в Российской Федерации и в базах данных «1С» использовалось исключительно административно-территориальное деление (субъект, район, город, сельсовет, улица, дом). Новый формат ФИАС базируется на муниципальном делении (муниципальный район, городской округ, городское/сельское поселение и т.д.).
Такой переход потребовал от разработчиков «1С» полного перепроектирования структуры таблиц базы данных СУБД, в которых хранятся адреса. Изменились регистры сведений, структура индексов и логика работы механизмов сопоставления. Именно поэтому при обновлении на релиз 3.0.65.69 пользователи увидели предупреждение: «Ранее загруженные сведения классификатора стали недействительными!». Старые данные физически больше не подходят под новые программные алгоритмы.
Многие пользователи, привыкшие работать без локальной загрузки гигабайтов адресных сведений на свои серверы, обнаружили, что в разделе администрирования пропал переключатель интеграции с веб-сервисом «1С». Это вызвало массу вопросов и предположений об окончательном закрытии онлайн-сервиса.
Разберем реальную техническую картину. На момент выпуска релиза 3.0.65 центральный веб-сервер фирмы «1С», отдающий адресные сведения по API, еще не был технически модернизирован для полноценной трансляции данных в разрезе муниципального деления. Чтобы пользователи не получали каскадные ошибки и аварийные завершения сеансов при попытке ввести адрес через интернет, разработчики приняли решение временно скрыть этот функционал из интерфейса настроек.
За выбор источника данных в системе отвечает скрытая константа. Посмотрим, как это выглядит изнутри программного кода. Мы можем принудительно обратиться к константе ИсточникДанныхАдресногоКлассификатора. В прежних релизах она принимала значение перечисления Сервис1С или оставалась пустой при локальном режиме. В версии 3.0.65 программные проверки стали жестко блокировать это значение до момента обновления серверов самой «1С». В последующих подрелизах, после завершения технических работ на стороне серверной инфраструктуры ИТС, эта опция была успешно возвращена в стандартный интерфейс.
Если веб-сервис временно недоступен, системным администраторам приходится загружать адресные сведения локально из файлов. При попытке пакетной загрузки всех регионов РФ из общего архива 00.zip программа прерывает процесс со следующей критической ошибкой:
Ошибка при вызове метода контекста (ОткрытьФайл): Файл не обнаружен 'C:\Users\...\AppData\Local\Temp\...\80_ADDROBJ.FI'
Проанализируем причину этой проблемы. Ошибка кроется в административно-территориальной реформе укрупнения субъектов Российской Федерации. Ряд регионов прекратили свое существование как самостоятельные субъекты РФ и вошли в состав соседних территорий:
В официальной базе ФНС эти регионы исключены из активного перечня, но оставлены в архивных целях для обратной совместимости. На портале ИТС отдельные файлы загрузки по этим регионам отсутствуют. Однако при автоматическом формировании суммарного zip-архива всего классификатора (файл 00.zip) генератор пакетов создает для них пустые папки. Размер таких архивов составляет всего 8 КБ, и внутри них нет обязательных структурированных файлов данных (например, 80_ADDROBJ.FI).
Когда парсер «1С» обрабатывает общий архив 00.zip по порядку, он доходит до этих регионов, пытается инициализировать распаковку несуществующих файлов данных и аварийно завершает работу всей процедуры загрузки.
Рассмотрим, как правильно обновить адресный классификатор ФИАС нового формата и обойти вышеописанные ошибки программы.
Перед загрузкой новых данных крайне важно полностью удалить старый классификатор, так как в регистрах сведений могут возникнуть дубли записей или ошибки нарушения уникальности индексов при обновлении конфигурации. Для этого выполним следующие действия:
В случае, если база данных сильно повреждена или стандартная очистка зависает, мы можем воспользоваться программным кодом для полной очистки регистров сведений в режиме внешнего соединения или через групповую обработку объектов:
// Пример программной очистки таблиц адресных объектов перед новой загрузкой
РегистрыДляОчистки = Новый Массив;
РегистрыДляОчистки.Добавить("АдресныеОбъекты");
РегистрыДляОчистки.Добавить("ДомаЗданияСтроения");
РегистрыДляОчистки.Добавить("ИсторияАдресныхОбъектов");
Для Каждого ИмяРегистра Из РегистрыДляОчистки Цикл
Набор = РегистрыСведений[ИмяРегистра].СоздатьНаборЗаписей();
Набор.Записать(Истина); // Запись пустого набора очищает таблицу физически
КонецЦикла;
Для ручной загрузки классификатора нам потребуется дистрибутив ФИАС нового формата. Обратите внимание, что старый формат ФИАС (без поддержки муниципальных делений) больше не поддерживается программой!
00.zip.00.zip, нам необходимо распаковать его во временную папку на жестком диске.После успешной загрузки классификатора структура ввода адресов в карточках контрагентов, физических лиц и организаций изменится. Проанализируем ключевые моменты работы в новом интерфейсе:
Следуя этой методике, мы сможем восстановить корректную работу адресного классификатора ФИАС в базах «1С», избежать ошибок при обновлении конфигураций и обеспечить правильное формирование отчетности для контролирующих органов.