Как исправить ошибку «Сведения о виде контактной информации повреждены или некорректно заполнены» в 1С:ЗУП 3.1?

Программист 1С v8.3 (Управляемые формы) 1С:Зарплата и Управление Персоналом IT и автоматизация бизнеса
← На главную

При переходе с редакции 2.5 на 1С:Зарплата и Управление Персоналом 3.1 (в частности, в версии КОРП при работе с блоком подбора персонала) пользователи и администраторы нередко сталкиваются с ошибкой валидации: «Сведения о виде контактной информации "Адрес электронной почты кандидата" были повреждены или некорректно заполнены». При этом поля контактных данных в карточках кандидатов или сотрудников отображаются пустыми либо форма не позволяет продолжить работу.

Разберем детально механизм возникновения этой неполадки и рассмотрим проверенные способы ее устранения штатным функционалом программы и средствами встроенного языка платформы 1С:Предприятие 8.

Выясним причину возникновения ошибки

Конфигурация 1С:ЗУП 3.1 построена с использованием Библиотеки стандартных подсистем (БСП). В подсистеме управления контактной информацией для каждого элемента справочника ВидыКонтактнойИнформации предусмотрен обязательный системный реквизит Тип. Данный реквизит определяет, чем именно является запись — адресом, телефоном, адресом электронной почты, веб-страницей или факсом (значение системного перечисления ТипыКонтактнойИнформации).

В момент открытия карточки кандидата, физического лица или сотрудника отрабатывают служебные алгоритмы десериализации контактных данных (в модуле УправлениеКонтактнойИнформациейСлужебный). Программа обращается к настройкам конкретного вида контактной информации. Если при переносе данных, конвертации или сбое обновления реквизит Тип для записи остался незаполненным (содержит Пустая ссылка или Неопределено), процедура разбора не может определить правила валидации структуры и выбрасывает исключение с текстом о повреждении сведений.

Основная сложность заключается в том, что в пользовательском интерфейсе (раздел Администрирование → Общие настройки → Виды контактной информации) поле выбора типа для уже записанного элемента заблокировано разработчиками. Это сделано намеренно для защиты от повреждения уже введенных в базу адресов, однако при ошибочном первоначальном заполнении блокировка препятствует простому исправлению через форму.

Способ 1. Использование обработки «Групповое изменение реквизитов»

Проанализируем самый доступный административный вариант, не требующий написания программного кода и установки сторонних обработок. Воспользуемся типовым инструментом групповой корректировки данных в режиме разработчика.

  1. Перейдем в раздел программы Администрирование → Обслуживание → Корректировка данных → Групповое изменение реквизитов.
  2. В открывшемся окне нажмем кнопку Дополнительные параметры (или перейдем в меню настроек) и установим флажок Показывать служебные реквизиты и Режим разработчика. Это позволит редактировать скрытые и системные поля объектов.
  3. В поле Выбирать укажем справочник Виды контактной информации.
  4. Обязательно настроим отбор, чтобы случайно не затронуть остальные элементы: нажмем Добавить условие, выберем поле Ссылка (или Наименование) и укажем значение Адрес электронной почты кандидата.
  5. В табличной части доступных реквизитов найдем реквизит Тип, установим напротив него флажок и выберем значение Адрес электронной почты.
  6. Нажмем кнопку Изменить реквизиты и дождемся завершения операции.

После успешной записи откроем карточку кандидата заново и убедимся, что предупреждение об ошибке больше не появляется.

Способ 2. Программное исправление через внешнюю обработку или консоль кода

Если у вас есть доступ к внешней обработке «Консоль кода» или возможность выполнить команду в контексте сервера, исправить значение реквизита можно напрямую через объектную модель. Посмотрим на пример программного заполнения типа контактной информации:


ВидКИСсылка = Справочники.ВидыКонтактнойИнформации.НайтиПоНаименованию("Адрес электронной почты кандидата");

Если ЗначениеЗаполнено(ВидКИСсылка) Тогда
    ВидКИОбъект = ВидКИСсылка.ПолучитьОбъект();
    ВидКИОбъект.Тип = Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты;
    
    // Отключаем системные проверки при необходимости
    ВидКИОбъект.ОбменДанными.Загрузка = Истина;
    ВидКИОбъект.Записать();
    
    Сообщить("Тип контактной информации успешно обновлен.");
Иначе
    Сообщить("Элемент с указанным наименованием не найден в справочнике.");
КонецЕсли;

Использование свойства ОбменДанными.Загрузка = Истина гарантирует обход прикладных блокировок формы и модуля объекта, позволяя принудительно прописать нужное значение перечисления.

Способ 3. Поиск и устранение дублирующихся элементов справочника

При конвертации базы данных из ЗУП 2.5 КОРП нередко возникает ситуация, когда в базе одновременно оказываются два одноименных элемента: предопределенный системный вид контактной информации и перенесенный пользовательский дубль без реквизитов. Рассмотрим, как устранить дублирование:

  1. Откроем раздел Администрирование → Обслуживание → Корректировка данных → Поиск и удаление дублей.
  2. В качестве области поиска выберем справочник Виды контактной информации.
  3. В правилах отбора укажем совпадение по наименованию.
  4. В результатах поиска выберем в качестве оригинала тот элемент, который является предопределенным (или у которого корректно заполнен реквизит Тип), а пустой элемент отметим как дубль.
  5. Выполним операцию Объединить. Программа автоматически заменит ссылки во всех существующих записях физических лиц и кандидатов, после чего удалит поврежденную запись.

Способ 4. Повторная инициализация данных БСП

Если повреждены системные предопределенные настройки подсистемы работы с адресами, можно принудительно запустить регламентные процедуры обновления конфигурации. Для этого запустим систему в режиме предприятия с параметром командной строки:

1cv8.exe ENTERPRISE /F "ПутьКБазе" /ЗапуститьОбновлениеИнформационнойБазы

При таком запуске Библиотека стандартных подсистем выполнит проверку соответствия предопределенных элементов и заполнит недостающие значения системных перечислений в автоматическом режиме.

← На главную