В практике работы с конфигурацией 1С:Бухгалтерия предприятия 3.0 (БП 3.0) нередко встречается ситуация, когда поля ввода адресной и контактной информации в карточке контрагента начинают отображаться некорректно. Данные либо не отображаются вовсе, либо их невозможно отредактировать. При этом при попытке открыть почтовый или юридический адрес система выдает критическую ошибку: Значение не является значением объектного типа (Вид) в общем модуле УправлениеКонтактнойИнформациейКлиент.
Разберем подробно причины этого поведения и пошагово рассмотрим способы восстановления работоспособности базы данных.
Выясним причину, по которой механизм контактной информации перестает работать. Как правило, корень проблемы кроется не в программном коде формы, а в состоянии данных справочника ВидыКонтактнойИнформации. Проанализируем типичную картину сбоя:
Вид информации по его внутреннему идентификатору.УправлениеКонтактнойИнформациейКлиент на строке 107 (или аналогичной в разных релизах) происходит обращение к свойству ДанныеСтроки.Вид. Если связь между данными в таблице и метаданными разорвана, ДанныеСтроки не содержат ожидаемого объекта, что приводит к аварийному завершению работы.Рассмотрим подробнее способы решения проблемы, начиная от простых и заканчивая более сложными техническими манипуляциями.
Прежде чем переходить к редактированию данных, исключим влияние локальных факторов. Выполним следующие действия:
Local и Roaming в профиле пользователя.Если справочник «Виды контактной информации» в конфигураторе содержит все необходимые группы, а в режиме «1С:Предприятие» они отсутствуют или отображаются некорректно, это означает нарушение связи Internal ID. Посмотрим, как восстановить эти связи с помощью встроенных механизмов платформы.
Создадим внешнюю обработку или воспользуемся консолью кода, чтобы принудительно инициализировать обновление предопределенных данных. Напишем следующий фрагмент кода:
// Инициализация восстановления предопределенных элементов
Справочники.ВидыКонтактнойИнформации.УстановитьПредопределенныеЭлементы();
ИнформационнаяБаза.ОбновитьПредопределенныеДанные();
Этот метод заставит систему сопоставить записи в таблице базы данных с объектами метаданных конфигурации. В многих случаях это возвращает группам их системный статус и восстанавливает иерархию.
Конфигурация БП 3.0 построена на базе Библиотеки стандартных подсистем (БСП), которая содержит механизмы регенерации контактной информации. Проанализируем ситуацию: возможно, после обновления или сбоя не отработали фоновые процедуры.
/C СтартОбновленияИнформационнойБазы.ОбновлениеИнформационнойБазы через «Функции для технического специалиста». Найдем в списке процедур те, что связаны с контактной информацией, и запустим их выполнение вручную.Если группы в справочнике физически существуют, но элементы к ним не привязаны, мы можем восстановить структуру вручную. Воспользуемся стандартной обработкой «Групповое изменение реквизитов»:
Виды контактной информации.Родитель и укажем соответствующую группу (например, «Контактная информация справочника Контрагенты»).Пример программного исправления признака группы:
ОбъектГруппа = Справочники.ВидыКонтактнойИнформации.НайтиПоНаименованию("Контактная информация справочника ""Контрагенты""").ПолучитьОбъект();
Если НЕ ОбъектГруппа.ЭтоГруппа Тогда
// Внимание: Данная операция требует осторожности и может потребовать
// временного снятия контроля уникальности или замены объекта
Сообщить("Требуется пересоздание группы или исправление типа объекта через SQL/обработку");
КонецЕсли;
Если стандартные методы не помогают, воспользуемся механизмом Тестирование и исправление информационной базы в Конфигураторе. Важно правильно выставить настройки:
Это может помочь, если ссылки на виды контактной информации в регистрах сведений или табличных частях стали «битыми». Система создаст новые элементы, которые потом можно будет объединить с правильными через обработку «Поиск и замена дублей».
Если проблема возникла сразу после перехода с 1С:Бухгалтерии 2.0 на 3.0, проанализируем процесс конвертации. В старой версии адресная информация хранилась в виде строк, а в новой — в специализированных хранилищах и табличных частях. Если этап конвертации данных не завершился успешно, справочник видов контактной информации останется пустым или заполненным частично.
В этом случае рекомендуется выполнить выгрузку справочника ВидыКонтактнойИнформации из пустой типовой базы того же релиза с помощью обработки «Выгрузка и загрузка данных XML» и загрузить его в проблемную базу. При загрузке система сопоставит элементы по GUID, и иерархия будет восстановлена.
Важно: Перед любыми манипуляциями с данными справочников обязательно создавайте резервную копию информационной базы!