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