Как подключить контактную информацию к справочнику или документу в БСП
Адреса, телефоны и e-mail в типовых конфигурациях хранятся через подсистему «Контактная информация». В статье — все шаги, чтобы подключить её к своему объекту, и процедура программной настройки свойств видов контактной информации.
Пошаговое подключение подсистемы
1) В нашем объекте добавляем табличную часть
"КонтактнаяИнформация", а точнее копируем ее из другого существующего
справочника или документа, например, из справочника Пользователи,
который изначально находится в составе конфигурации БСП.
2) На форме элемента нашего объекта добавляем группу с
наименованием "ГруппаКонтактнаяИнформация". Именно в этой группе и
будет отображаться интерфейс контактной информации.
3) В справочнике "ВидыКонтактнойИнформации" находим его предопределенные элементы и по этим примерам добавляем новую предопределенную группу, например по шаблону - СправочникПользователи, а внутри нее все необходимые элементы контактной информации, по тем же примерам.
4) В дереве конфигурации находим определяемый тип "ВладелецКонтактнойИнформации" и добавляем в него тип нашего объекта.
5) В модуле формы элемента нашего объекта размещаем следующие куски кода:
В процедуре ПриСозданииНаСервере добавляем:
//СтандартныеПодсистемы.КонтактнаяИнформация
УправлениеКонтактнойИнформацией.ПриСозданииНаСервере(ЭтотОбъект, Объект, "ГруппаКонтактнаяИнформация", ПоложениеЗаголовкаЭлементаФормы.Лево);
// Конец СтандартныеПодсистемы.КонтактнаяИнформация
В процедуре ПриЧтенииНаСервере добавляем:
// СтандартныеПодсистемы.КонтактнаяИнформация
УправлениеКонтактнойИнформацией.ПриЧтенииНаСервере(ЭтаФорма, ТекущийОбъект);
// Конец СтандартныеПодсистемы.КонтактнаяИнформация
В процедуре ОбработкаПроверкиЗаполненияНаСервере добавляем:
// СтандартныеПодсистемы.КонтактнаяИнформация
УправлениеКонтактнойИнформацией.ОбработкаПроверкиЗаполненияНаСервере(ЭтотОбъект, Объект, Отказ);
// Конец СтандартныеПодсистемы.КонтактнаяИнформация
В процедуре ПередЗаписьюНаСервере добавляем:
// СтандартныеПодсистемы.КонтактнаяИнформация
УправлениеКонтактнойИнформацией.ПередЗаписьюНаСервере(ЭтотОбъект, ТекущийОбъект);
// Конец СтандартныеПодсистемы.КонтактнаяИнформация
Добавляем следующие процедуры:
// ПРОЦЕДУРЫ ПОДСИСТЕМЫ "КОНТАКТНАЯ ИНФОРМАЦИЯ"
&НаКлиенте
Процедура Подключаемый_КонтактнаяИнформацияПриИзменении(Элемент)
УправлениеКонтактнойИнформациейКлиент.ПриИзменении(ЭтотОбъект, Элемент);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_КонтактнаяИнформацияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
УправлениеКонтактнойИнформациейКлиент.НачалоВыбора(ЭтотОбъект, Элемент, , СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_КонтактнаяИнформацияПриНажатии(Элемент, СтандартнаяОбработка)
УправлениеКонтактнойИнформациейКлиент.НачалоВыбора(ЭтотОбъект, Элемент,, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_КонтактнаяИнформацияОчистка(Элемент, СтандартнаяОбработка)
УправлениеКонтактнойИнформациейКлиент.Очистка(ЭтотОбъект, Элемент.Имя);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_КонтактнаяИнформацияВыполнитьКоманду(Команда)
УправлениеКонтактнойИнформациейКлиент.ВыполнитьКоманду(ЭтотОбъект, Команда.Имя);
КонецПроцедуры
&НаСервере
Процедура Подключаемый_ОбновитьКонтактнуюИнформацию(Результат)
УправлениеКонтактнойИнформацией.ОбновитьКонтактнуюИнформацию(ЭтотОбъект, Объект, Результат);
КонецПроцедуры
6) На этом шаге добавление механизма контактной информации готово. Но остается один важный момент, необходимо установить нужные свойства для каждого добавленного элемента контактной информации для нашего объекта. Это делается только программным путем. В общем модуле "ПользователиСлужебный" находим процедуру "ОбновитьПредопределенныеВидыКонтактнойИнформацииПользователей". Берем ее в качестве шаблона и копируем в модуль менеджера нашего объекта, изменив наименование на ОбновитьПредопределенныеВидыКонтактнойИнформацииОрганизации (например если наш справочник Организации). И в этой процедуре таким же образом прописываем все наши добавленные элементы контактной информации. После этого выполняем эту процедуру, например, через внешнюю обработку.
Актуальность для новых версий
В БСП 3.x подсистема подключается похожим образом: табличная часть «КонтактнаяИнформация», определяемый тип «ВладелецКонтактнойИнформации» и вызовы модулей УправлениеКонтактнойИнформацией и УправлениеКонтактнойИнформациейКлиент в форме. Свойства видов контактной информации в новых версиях удобнее задавать функциями ПараметрыВидаКонтактнойИнформации и УстановитьСвойстваВидаКонтактнойИнформации в обработчике обновления информационной базы. Состав параметров обработчиков сверяйте с документацией своей версии БСП.
Частые вопросы
Откуда взять табличную часть КонтактнаяИнформация?
Скопировать из объекта, где подсистема уже подключена, например из справочника «Пользователи», чтобы сохранить точный состав реквизитов.
Зачем добавлять тип в ВладелецКонтактнойИнформации?
Без этого механизм подсистемы не воспринимает объект как владельца контактной информации, и поля не создаются на форме.
Почему поля контактной информации не отображаются?
Проверьте, что на форме есть группа «ГруппаКонтактнаяИнформация» и для объекта созданы предопределённые виды контактной информации.
Как задать свойства видов контактной информации?
Только программно: процедурой в модуле менеджера объекта по образцу процедуры из модуля ПользователиСлужебный, выполненной один раз.