Почему контактная информация БСП не отображается в форме списка нового справочника?

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

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

Система 1С:Предприятие, особенно на управляемых формах, имеет сложную архитектуру для вывода данных, и контактная информация, реализованная через БСП, требует специфических настроек. Даже если данные присутствуют в табличной части справочника, их отображение в динамическом списке зависит от многих факторов, от базовых настроек видимости до сложных связей в метаданных и прав доступа.

Мы выясним, почему такое происходит, и предоставим комплексный подход к решению этой задачи. Мы проанализируем настройки как самой формы списка, так и метаданных конфигурации, а также связанные объекты БСП. Давайте вместе пройдемся по всем возможным причинам и найдем решение.

Проверка базовых настроек видимости колонки в форме списка

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

  1. Видимость колонки в конфигураторе:

    Для начала, мы должны убедиться, что колонка, которую мы хотим использовать для отображения контактной информации, является видимой в конфигурации. Разработчик в сообщении 0 упомянул, что сделал колонку невидимой, а затем пытался изменить это в пользовательском режиме. Однако, для диагностики и корректной работы БСП, нам следует временно сделать ее видимой напрямую в конфигураторе.

    Откроем форму списка вашего справочника в конфигураторе. Найдем элемент управления "Динамический список". В нем развернем ветку "Элементы" и найдем нашу колонку, которую мы добавили для контактной информации (например, КонтактнаяИнформацияПредставление или аналогичную). В свойствах этой колонки убедимся, что свойство Видимость установлено в Истина.

  2. Свойство "Использование" для колонки:

    Следующим шагом является проверка свойства Использование для этой же колонки. Это свойство определяет, как колонка будет вести себя при открытии формы.

    Убедимся, что для нашей колонки свойство Использование установлено в значение Всегда. Это гарантирует, что колонка будет присутствовать на форме при ее открытии, независимо от пользовательских настроек или других условий.

    Если мы установим Использование в Авто или Не использовать, система может не выводить колонку, даже если ее видимость установлена в Истина.

  3. Сброс пользовательских настроек формы:

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

    Мы должны сбросить пользовательские настройки формы. Это можно сделать в режиме 1С:Предприятие. Откроем форму списка справочника, перейдем в меню "Еще" (или аналогичное, в зависимости от версии и интерфейса), выберем "Изменить форму..." и там найдем кнопку "Установить стандартные настройки" или "Сбросить настройки". Применим эти изменения и перезапустим 1С:Предприятие (если необходимо) для чистоты эксперимента.

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

Корректность настроек характеристик метаданных справочника

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

  1. Перейдем к настройкам характеристик справочника:

    В конфигураторе откроем наш новый справочник. Нажмем правой кнопкой мыши на справочник и выберем пункт "Прочие" -> "Характеристики" (или просто "Характеристики" в зависимости от версии платформы). Откроется окно "Настройки характеристик объекта".

  2. Добавим новую строку характеристик:

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

  3. Укажем вид характеристики:

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

  4. Настроим поле отбора видов:

    В поле Поле отбора видов мы должны выбрать реквизит ВидДляСписка. Этот реквизит является ключевым. Он присутствует в табличной части контактной информации и используется БСП для определения того, какую именно контактную информацию следует отображать в динамическом списке. Например, для телефона может быть указан вид "Телефон (для списка)", для email – "Email (для списка)".

  5. Настроим поле значения:

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

  6. Важность ВидДляСписка:

    Давайте подробнее остановимся на реквизите ВидДляСписка. При работе с контактной информацией в БСП, для каждого типа контактной информации (Телефон, Email, Адрес и т.д.) может существовать несколько "видов". Например, "Телефон рабочий", "Телефон мобильный", "Телефон домашний". Однако, для компактного отображения в списке БСП часто использует один агрегированный или наиболее важный вид. Для этого в табличной части контактной информации (например, КонтактнаяИнформация) существует реквизит ВидДляСписка типа СправочникСсылка.ВидКонтактнойИнформации. Именно значение этого реквизита используется для связи с настройками характеристик и определения того, что будет выведено в колонку списка.

    Мы должны убедиться, что в каждом элементе справочника, где заполнена контактная информация, в соответствующей строке табличной части КонтактнаяИнформация заполнен реквизит ВидДляСписка, и он ссылается на тот вид, который мы ожидаем увидеть в списке.

Настройка элементов справочника "ВидыКонтактнойИнформации"

Даже при корректно настроенных характеристиках, контактная информация не будет отображаться, если сами виды контактной информации не настроены должным образом в справочнике ВидыКонтактнойИнформации.

  1. Проверка предопределенных элементов:

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

    Мы открываем справочник ВидыКонтактнойИнформации в режиме 1С:Предприятие или через конфигуратор. Фильтруем список по нашему новому справочнику-владельцу. Проверяем наличие всех необходимых видов.

  2. Свойство "Используется":

    Для каждого такого предопределенного элемента вида контактной информации (например, "Телефон") необходимо убедиться, что его свойство Используется установлено в значение Истина. Это свойство указывает системе, что данный вид контактной информации активен и должен быть доступен для использования.

  3. Функциональные опции:

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

Включение справочника в составной тип "ВладелецКонтактнойИнформации"

Для того чтобы БСП вообще "поняла", что наш новый справочник может хранить контактные данные и работать с ними, его необходимо включить в составной тип ВладелецКонтактнойИнформации.

  1. Найдем составной тип:

    Откроем конфигуратор. Перейдем в "Общие" -> "Общие типы". Найдем составной тип ВладелецКонтактнойИнформации.

  2. Добавим наш справочник:

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

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

Проверка структуры табличной части "КонтактнаяИнформация"

Хотя разработчик упомянул, что данные есть в табличной части, важно убедиться, что сама структура табличной части КонтактнаяИнформация в вашем справочнике соответствует требованиям БСП. Недостающие или некорректные реквизиты могут приводить к неверному отображению.

  1. Сравнение с типовыми справочниками:

    Мы сравним структуру нашей табличной части с эталонными объектами БСП. Например, откроем в конфигураторе справочники Пользователи или Контрагенты. Найдем их табличную часть КонтактнаяИнформация.

    Мы должны убедиться, что наша табличная часть имеет все обязательные реквизиты, как это определено в БСП. Особое внимание уделим типам реквизитов и их длинам.

  2. Наличие реквизита ВидДляСписка:

    Особо критично наличие реквизита ВидДляСписка с типом СправочникСсылка.ВидыКонтактнойИнформации. Мы уже обсуждали его важность в настройках характеристик. Если этот реквизит отсутствует или имеет некорректный тип, система не сможет определить, какой вид контактной информации нужно выводить в списке.

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

Права доступа пользователей

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

  1. Разрешения на подсистему "Контактная информация":

    Мы должны проверить, что у роли, которая назначена пользователю (например, БазовыеПрава или специально созданная роль), есть разрешение на просмотр подсистемы "Контактная информация". В конфигураторе откроем свойства роли, перейдем на вкладку "Права". Развернем подсистему "Контактная информация" и убедимся, что установлены флажки на "Чтение" и "Просмотр" для всех необходимых объектов, связанных с контактной информацией (справочники, регистры).

  2. Права на чтение справочника и его ТЧ:

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

    Мы должны проверить в той же роли права на наш справочник и его табличную часть, убедившись, что установлен флажок "Чтение".

Анализ кода формы списка "ПриСозданииНаСервере"

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

  1. Изучим обработчик события ПриСозданииНаСервере:

    Откроем форму списка нашего справочника в конфигураторе. Перейдем на вкладку "Модули" и найдем обработчик события ПриСозданииНаСервере.

    Мы внимательно проанализируем код в этом обработчике. Возможно, там присутствует логика, которая программно скрывает колонки, изменяет источник данных динамического списка или иным образом вмешивается в процесс формирования формы.

  2. Поиск вызовов стандартных процедур БСП:

    В этом же обработчике мы должны найти вызовы стандартных процедур БСП, которые отвечают за инициализацию и настройку контактной информации для формы списка. Типичный вызов выглядит примерно так:

    
    КонтактнаяИнформация.ПриСозданииНаСервере(ЭтаФорма, "Список", "Объект.КонтактнаяИнформация");
    

    Мы проверим, что такой вызов присутствует, корректно переданы параметры (например, имя динамического списка, путь к табличной части контактной информации). Если этот вызов отсутствует или выполнен некорректно, БСП не сможет настроить отображение контактной информации.

    Если мы обнаружим кастомный код, который может конфликтовать с БСП, нам потребуется скорректировать его или временно закомментировать для диагностики.

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

← На главную