Как исправить ошибку сведений о виде контактной информации при создании нового контрагента в 1С:Бухгалтерии 3.0?

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

При попытке записать нового контрагента в конфигурации «1С:Бухгалтерия предприятия 3.0» пользователи нередко сталкиваются с неприятной системной ошибкой: «Сведения о виде контактной информации "Электронная почта" были повреждены или некорректно заполнены, т.к. обязательное поле тип не заполнено». При этом ошибка возникает даже в том случае, когда карточка создается с нуля и заполнено лишь наименование, а контактная информация вовсе не вводилась.

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

Почему возникает ошибка при создании нового контрагента

В конфигурациях, построенных на базе Библиотеки стандартных подсистем (БСП), контактная информация формируется динамически. При открытии или записи формы контрагента программный комплекс обращается к справочнику ВидыКонтактнойИнформации и считывает настройки для группы «Контрагенты».

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

Выясним причину появления пустых типов контактной информации. Чаще всего они возникают в следующих ситуациях:

  1. Некорректная синхронизация данных через универсальный формат EnterpriseData или нетиповые правила конвертации, когда создаются новые элементы видов контактной информации без заполнения типа.
  2. Сбои или прерывания при переходе со старых редакций и выполнении отложенных процедур обновления информационной базы.
  3. Ошибочное ручное дублирование записей через внешние обработки.

Способ 1. Удаление дублей и очистка справочника

В типовом пользовательском интерфейсе поле Тип в форме элемента справочника ВидыКонтактнойИнформации блокируется для редактирования сразу после первой записи объекта. Это сделано разработчиками платформы для предотвращения рассогласования уже сохраненных контактных данных. Поэтому изменить тип вручную через карточку не получится.

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

  1. Перейдем в раздел Администрирование — Общие настройки — Виды контактной информации (либо откроем справочник напрямую через функцию «Все функции» / «Функции для технического специалиста»).
  2. Найдем группу Контрагенты и проанализируем список подчиненных видов. Обратим внимание на дублирующиеся строки «Электронная почта».
  3. Пометим на удаление пустые и некорректно созданные элементы. Как только на ошибочном элементе устанавливается пометка удаления, подсистема БСП перестает включать его в обязательную проверку при создании контрагентов.
  4. Перейдем в раздел Администрирование — Обслуживание — Корректировка данных — Поиск и удаление дублей. Настроим поиск по справочнику ВидыКонтактнойИнформации, выберем в качестве оригинала предопределенный элемент и выполним замену ссылок с последующим удалением помеченных объектов.

Способ 2. Программное заполнение реквизита «Тип»

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

Посмотрим на пример кода на встроенном языке 1С:


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

Рассмотрим подробнее логику работы этого скрипта: мы обходим все действующие элементы справочника, выявляем записи с пустым типом и явно присваиваем им значение перечисления Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты с последующей записью объекта.

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

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

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

Способ 4. Проверка регламентных процедур обновления

После выполнения корректировок обязательно проверим состояние фоновых заданий обновления информационной базы. Перейдем в раздел Администрирование — Обслуживание — Результаты обновления и дополнительная обработка данных.

Убедимся, что все отложенные обработчики, связанные с контактной информацией, успешно завершены. При обнаружении ошибок или зависших заданий запустим их повторное выполнение вручную.

← На главную