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