После перехода на новые релизы УПП многие пользователи сталкиваются с тем, что механизм работы с адресным классификатором перестал функционировать корректно. Основная причина кроется в переходе 1С на использование государственного адресного реестра и формате обмена данными JSON. Разберем, как восстановить работоспособность системы и обеспечить корректное заполнение данных для регламентированной отчетности.
Прежде чем переходить к изменению кода, необходимо убедиться, что классификатор загружен правильно. Важно помнить: стандартная интернет-поддержка не всегда корректно очищает «мусор» от старого КЛАДРа.
XML.Если после этого при попытке редактирования контактной информации в карточке сотрудника или контрагента адрес все еще требует ручного ввода с самого начала, значит, проблема в несоответствии структуры данных JSON и старых полей поле1, поле2, ..., хранящихся в регистре КонтактнаяИнформация.
Официальный баг-трекер 1С подтверждает наличие ошибки, при которой в документах, передающих данные в ФСС, не заполняется уникальный номер ФИАС. Рассмотрим, как устранить эту ошибку программно.
В модуле формы документа НачислениеПоБольничномуЛисту в методе АдресРегистрацииВФормеНачалоВыбора необходимо заменить логику вызова. Вместо прямого получения кода КЛАДР, мы будем использовать функционал нового общего модуля.
Замените текущий код на следующий блок:
ТекстОшибки = Неопределено;
КодыАдреса = ПрямыеВыплатыПособийСоциальногоСтрахования.КодыАдреса(СтруктураАдреса.JSON, ТекстОшибки);
ЭлементыФормы.АдресРегистрацииКодПоКЛАДР.Значение = КодыАдреса.ИдентификаторОбъектаФИАС;
Для реализации этой логики необходимо создать или дополнить общий модуль ПрямыеВыплатыПособийСоциальногоСтрахования. Убедитесь, что у него взведены флаги Сервер и Клиент (обычное приложение).
Добавьте в модуль следующую функцию, которая будет правильно преобразовывать данные адреса:
#Область СлужебныеПроцедурыИФункции
#Область Адреса
Функция КодыАдреса(Адрес, ТекстОшибки = Неопределено) Экспорт
Результат = Новый Структура("КодКЛАДР, ИдентификаторОбъектаФИАС");
Попытка
КодыАдреса = АдресныйКлассификатор.КодыАдреса(Адрес);
Результат.КодКЛАДР = Формат(КодыАдреса.КодКЛАДР, "ЧГ=0");
Если ЗначениеЗаполнено(КодыАдреса.ИдентификаторДома) Тогда
Результат.ИдентификаторОбъектаФИАС = Строка(КодыАдреса.ИдентификаторДома);
Иначе
Результат.ИдентификаторОбъектаФИАС = Строка(КодыАдреса.Идентификатор);
КонецЕсли;
Исключение
ТекстОшибки = СтрШаблон(
НСтр("ru = 'При вызове функции ""%1"" с параметром ""%2"" возникла ошибка ""%3"".
|Подробности: |%4.'"),
"АдресныйКлассификатор.КодыАдреса",
Адрес,
КраткоеПредставлениеОшибки(ИнформацияОбОшибке()),
ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
Возврат Неопределено;
КонецПопытки;
Возврат Результат;
КонецФункции
#КонецОбласти
#КонецОбласти
Чтобы изменения корректно сохранялись в структуре данных, необходимо доработать модуль обработки РедактированиеКонтактнойИнформации. В методе РедактироватьМодальноЭлементАдресаРазделенногоЗапятыми после строки, где присваивается строковое представление адреса, добавьте принудительную вставку JSON-структуры:
Элемент.Значение = СтрАдрес;
Элемент.Вставить("JSON", ЭтотОбъект.Значение);
Важное примечание: После внесения данных исправлений, старые записи в регистре контактной информации, заведенные по КЛАДРу, могут требовать ручного перевыбора в карточках контрагентов. Это необходимо, чтобы система смогла сформировать корректную JSON-структуру, которую ожидает новый алгоритм. Если адрес был введен верно, но «не подцепляется» в больничный лист, используйте кнопку выбора адреса еще раз — это обновит данные объекта ФИАС в вашей базе.
Таким образом, мы переводим работу документов с устаревшего принципа поиска по полям КЛАДР на использование уникальных идентификаторов ФИАС, что исключает ошибки при обмене с ФСС и обеспечивает корректное заполнение отчетов.