--- title: Подключение к подсистеме Контактная информация slug: общие-подключение-объектов-к-бсп-подключение-к-подсистемам/подключение-к-подсистеме-контактная-информация --- > [Подсистема БСП «Контактная информация» (ИТС)](https://its.1c.ru/db/pubcloud1c#content:80:hdoc:p513) ## 1. Создать в объекте ТЧ "Контактная информация" Копируем из любого объекта БСП, который подключен к этой подсистеме. Например, справочник "Пользователи" ## 2. Включить объект в определяемый тип "ВладелецКонтактнойИнформации" ## 3. В справочнике ВидыКонтактнойИнформации добавить предопределенные элементы В конфигураторе обязательно необходимо добавить __предопределенную группу__. Предопределенные элементы можно будет добавить в обработчиках обновления. Имя группы рекомендуется создавать по шаблону **ВидОбъектаМетаданныхОбъектМетаданных**, например __СправочникКонтрагенты__ ## 4. Добавить/заполнить реквизиты новых видов контактной информации Есть несколько вариантов создания предопределенных элементов справочника `ВидыКонтактнойИнформации`: - при начальном заполнении базы. Вариант, если база пустая и только внедряется - при обновлении базы. - без обновления ### ВАРИАНТ 1. Обновление "ручками". Самый простой способ Создаем внешнюю обработку с одной кнопкой, в серверный обработчик кнопки добавляем блок кода ```bsl // Добавление нового предопределенного вида контактной информации Мессенджеры. ПараметрыВида = УправлениеКонтактнойИнформацией.ПараметрыВидаКонтактнойИнформации(Перечисления.ТипыКонтактнойИнформации.Телефон); ПараметрыВида.Наименование = НСтр("ru = 'Телефон'"); ПараметрыВида.Вид = "ТелефонКонтрагента"; ПараметрыВида.Имя = "ТелефонКонтрагента"; ПараметрыВида.Группа = УправлениеКонтактнойИнформацией.ВидКонтактнойИнформацииПоИмени("СправочникКонтрагенты"); ПараметрыВида.Порядок = 5; ПараметрыВида.МожноИзменятьСпособРедактирования = Истина; ПараметрыВида.ОтображатьВсегда = Истина; ПараметрыВида.РазрешитьВводНесколькихЗначений = Истина; УправлениеКонтактнойИнформацией.УстановитьСвойстваВидаКонтактнойИнформации(ПараметрыВида); // и т.д. ``` Выполняем. Мы великолепны. ### ВАРИАНТ 2. При обновлении Если добавление/обновление видов контактной информации допускается объединить с обновлением информационной базы, тогда нужно дополнить процедуру `ПриДобавленииОбработчиковОбновления` общего модуля `ОбновлениеИнформационнойБазы<ИмяПодсистемы>`. ```bsl // См. ОбновлениеИнформационнойБазыБСП.ПриДобавленииОбработчиковОбновления. Процедура ПриДобавленииОбработчиковОбновления(Обработчики) Экспорт Обработчик = Обработчики.Добавить(); // версия библиотеки, на которую переходим. Укажите "*" чтобы обработчик // выполнялся всегда при запуске обновления Обработчик.Версия = "3.1.10.17"; // описываем имя обработчика, который будет заполнять вид контактной информации Обработчик.Процедура = "ОбновлениеИнформационнойБазы<ИмяПодсистемы>.ДобавитьВидКонтактнойИнформацииКонтрагентаТелефон"; Обработчик.ВыполнятьВГруппеОбязательных = Истина; Обработчик.РежимВыполнения = "Оперативно"; КонецПроцедуры ... Процедура ДобавитьВидКонтактнойИнформацииКонтрагентаТелефон() Экспорт // Добавление нового предопределенного вида контактной информации Мессенджеры. ПараметрыВида = УправлениеКонтактнойИнформацией.ПараметрыВидаКонтактнойИнформации(Перечисления.ТипыКонтактнойИнформации.Телефон); ПараметрыВида.Наименование = НСтр("ru = 'Телефон'"); ПараметрыВида.Вид = "ТелефонКонтрагента"; ПараметрыВида.Имя = "ТелефонКонтрагента"; ПараметрыВида.Группа = УправлениеКонтактнойИнформацией.ВидКонтактнойИнформацииПоИмени("СправочникКонтрагенты"); ПараметрыВида.Порядок = 5; ПараметрыВида.МожноИзменятьСпособРедактирования = Истина; ПараметрыВида.ОтображатьВсегда = Истина; ПараметрыВида.РазрешитьВводНесколькихЗначений = Истина; УправлениеКонтактнойИнформацией.УстановитьСвойстваВидаКонтактнойИнформации(ПараметрыВида); // и т.д. КонецПроцедуры ``` Теперь можно запустить конфигурацию с флагом __/ЗапуститьОбновлениеИнформационнойБазы__ и все обновится ### ВАРИАНТ 3. При начальном заполнении (не рекомендуется на заполненной базе) Этот вариант подойдет только тогда, когда база данных только что была развернута из шаблона и при __первом__ запуске выполняются обработчики __начального заполнения__. В этом варианте предопределенные элементы __нужно создавать вручную в конфигураторе__ В `ОбщийМодуль.УправлениеКонтактнойИнформациейПереопределяемый` в процедуре `ПриНачальномЗаполненииЭлементов` для заполнения необходимых реквизитов созданных предопределенных элементов нужно прописать что-то вроде: ```bsl // Смотри также ОбновлениеИнформационнойБазыПереопределяемый.ПриНачальномЗаполненииЭлементов // // Параметры: // КодыЯзыков - см. ОбновлениеИнформационнойБазыПереопределяемый.ПриНачальномЗаполненииЭлементов.КодыЯзыков // Элементы - см. ОбновлениеИнформационнойБазыПереопределяемый.ПриНачальномЗаполненииЭлементов.Элементы // ТабличныеЧасти - см. ОбновлениеИнформационнойБазыПереопределяемый.ПриНачальномЗаполненииЭлементов.ТабличныеЧасти // Процедура ПриНачальномЗаполненииЭлементов(КодыЯзыков, Элементы, ТабличныеЧасти) Экспорт // Не забываем, что у нас уже есть предопределенная группа // СправочникКонтрагенты и элемент ТелефонКонтрагента, // которые созданы ручками в конфигураторе. Тут только обновление реквизитов Элемент = Элементы.Добавить(); Элемент.ИмяПредопределенногоВида = "ТелеофонКонтрагента"; Элемент.Родитель = "СправочникКонтрагенты"; Элемент.ИмяГруппы = "СправочникКонтрагенты"; Элемент.Тип = Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты; Элемент.РазрешитьВводНесколькихЗначений = Истина; Элемент.ОтображатьВсегда = Истина; Элемент.Используется = Истина; **КонецПроцедуры** ``` ## 4. Настройка форм ### Форма элемента Для отображения группы элементов контактной информации на форме нужно создать группу. Например - `ГруппаКонтактнаяИнформация`. __В модуле формы добавляем:__ ```bsl #Область ОбработчикиСобытийФормы &НаСервере Процедура ПриЧтенииНаСервере(ТекущийОбъект) // СтандартныеПодсистемы.КонтактнаяИнформация УправлениеКонтактнойИнформацией.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект); // Конец СтандартныеПодсистемы.КонтактнаяИнформация КонецПроцедуры &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) // СтандартныеПодсистемы.КонтактнаяИнформация ДополнительныеПараметры = УправлениеКонтактнойИнформацией.ПараметрыКонтактнойИнформации(); ДополнительныеПараметры.Вставить("ИмяЭлементаДляРазмещения", "ГруппаКонтактнаяИнформация"); УправлениеКонтактнойИнформацией.ПриСозданииНаСервере(ЭтотОбъект, Объект, ДополнительныеПараметры); // Конец СтандартныеПодсистемы.КонтактнаяИнформация КонецПроцедуры &НаСервере Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты) // СтандартныеПодсистемы.КонтактнаяИнформация УправлениеКонтактнойИнформацией.ОбработкаПроверкиЗаполненияНаСервере(ЭтотОбъект, Объект, Отказ); // Конец СтандартныеПодсистемы.КонтактнаяИнформация КонецПроцедуры &НаСервере Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) // СтандартныеПодсистемы.КонтактнаяИнформация УправлениеКонтактнойИнформацией.ПередЗаписьюНаСервере(ЭтотОбъект, ТекущийОбъект); // Конец СтандартныеПодсистемы.КонтактнаяИнформация КонецПроцедуры &НаСервере Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи) // СтандартныеПодсистемы.КонтактнаяИнформация УправлениеКонтактнойИнформацией.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект); // Конец СтандартныеПодсистемы.КонтактнаяИнформация КонецПроцедуры #КонецОбласти #Область СлужебныеПроцедурыИФункции // СтандартныеПодсистемы.КонтактнаяИнформация &НаКлиенте Процедура Подключаемый_КонтактнаяИнформацияПриИзменении(Элемент) УправлениеКонтактнойИнформациейКлиент.НачатьИзменение(ЭтотОбъект, Элемент); КонецПроцедуры &НаКлиенте Процедура Подключаемый_КонтактнаяИнформацияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) УправлениеКонтактнойИнформациейКлиент.НачатьВыбор(ЭтотОбъект, Элемент, , СтандартнаяОбработка); КонецПроцедуры &НаКлиенте Процедура Подключаемый_КонтактнаяИнформацияПриНажатии(Элемент, СтандартнаяОбработка) УправлениеКонтактнойИнформациейКлиент.НачатьВыбор(ЭтотОбъект, Элемент, , СтандартнаяОбработка); КонецПроцедуры &НаКлиенте Процедура Подключаемый_КонтактнаяИнформацияОчистка(Элемент, СтандартнаяОбработка) УправлениеКонтактнойИнформациейКлиент.НачатьОчистку(ЭтотОбъект, Элемент.Имя); КонецПроцедуры &НаКлиенте Процедура Подключаемый_КонтактнаяИнформацияВыполнитьКоманду(Команда) УправлениеКонтактнойИнформациейКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда.Имя); КонецПроцедуры &НаКлиенте Процедура Подключаемый_КонтактнаяИнформацияАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка) УправлениеКонтактнойИнформациейКлиент.АвтоПодборАдреса(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка); КонецПроцедуры &НаКлиенте Процедура Подключаемый_КонтактнаяИнформацияОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) УправлениеКонтактнойИнформациейКлиент.ОбработкаВыбора(ЭтотОбъект, ВыбранноеЗначение, Элемент.Имя, СтандартнаяОбработка); КонецПроцедуры &НаКлиенте Процедура Подключаемый_КонтактнаяИнформацияОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка) УправлениеКонтактнойИнформациейКлиент.НачатьОбработкуНавигационнойСсылки(ЭтотОбъект, Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка); КонецПроцедуры &НаКлиенте Процедура Подключаемый_ПродолжитьОбновлениеКонтактнойИнформации(Результат, ДополнительныеПараметры) Экспорт ОбновитьКонтактнуюИнформацию(Результат); КонецПроцедуры &НаСервере Процедура ОбновитьКонтактнуюИнформацию(Результат) УправлениеКонтактнойИнформацией.ОбновитьКонтактнуюИнформацию(ЭтотОбъект, Объект, Результат); КонецПроцедуры // Конец СтандартныеПодсистемы.КонтактнаяИнформация #КонецОбласти ``` __Не забываем привязать события формы к обработчикам__ ### Форма списка Для того, чтобы можно было вывести в форму списка элементы контактной информации нужно настроить в конфигураторе __характеристики__ Создаем форму списка, выводим `ссылку` и устанавливаем `ПользовательскаяВидимость = Ложь` ![Характеристики](/bsp_kontaktnaya_informaciya/harakteristiki.png) Что мы настраиваем: В части __Виды характеристик__ 1. Виды характеристик - тот элемент, где хранятся характеристики объекта. В нашем случае `Характеристика` - это __вид контактной информации__ 2. Поле ключа - `ссылка` 3. Поле отбора - `Родитель`, т.к. мы все виды контактной информации этого элемента находятся в одной группе 4. Значение отбора - выбираем предопределенную группу, куда мы поместили все виды контактной информации этого объекта 5. Поле пути к данным - `ссылка` В части __Значения характеристик__ 1. Значения характеристик - табличная часть `КонтактнаяИнформация` нашего объекта 2. Поле объекта - `ссылка` 3. Поле вида - `ВидДляСписка` 4. Поле значения - `представление` Теперь через меню `Ещё > Изменить форму` можно в форму списка добавить контакты через поле `Ссылка` ![Итог](/bsp_kontaktnaya_informaciya/result.png)