Skip to content

Подключение к подсистеме Контактная информация

Подсистема БСП «Контактная информация» (ИТС)

1. Создать в объекте ТЧ “Контактная информация”

Копируем из любого объекта БСП, который подключен к этой подсистеме. Например, справочник “Пользователи”

2. Включить объект в определяемый тип “ВладелецКонтактнойИнформации”

3. В справочнике ВидыКонтактнойИнформации добавить предопределенные элементы

В конфигураторе обязательно необходимо добавить предопределенную группу. Предопределенные элементы можно будет добавить в обработчиках обновления.

Имя группы рекомендуется создавать по шаблону ВидОбъектаМетаданныхОбъектМетаданных, например СправочникКонтрагенты

4. Добавить/заполнить реквизиты новых видов контактной информации

Есть несколько вариантов создания предопределенных элементов справочника ВидыКонтактнойИнформации:

  • при начальном заполнении базы. Вариант, если база пустая и только внедряется
  • при обновлении базы.
  • без обновления

ВАРИАНТ 1. Обновление “ручками”. Самый простой способ

Создаем внешнюю обработку с одной кнопкой, в серверный обработчик кнопки добавляем блок кода

// Добавление нового предопределенного вида контактной информации Мессенджеры.
ПараметрыВида = УправлениеКонтактнойИнформацией.ПараметрыВидаКонтактнойИнформации(Перечисления.ТипыКонтактнойИнформации.Телефон);
ПараметрыВида.Наименование = НСтр("ru = 'Телефон'");
ПараметрыВида.Вид = "ТелефонКонтрагента";
ПараметрыВида.Имя = "ТелефонКонтрагента";
ПараметрыВида.Группа = УправлениеКонтактнойИнформацией.ВидКонтактнойИнформацииПоИмени("СправочникКонтрагенты");
ПараметрыВида.Порядок = 5;
ПараметрыВида.МожноИзменятьСпособРедактирования = Истина;
ПараметрыВида.ОтображатьВсегда = Истина;
ПараметрыВида.РазрешитьВводНесколькихЗначений = Истина;
УправлениеКонтактнойИнформацией.УстановитьСвойстваВидаКонтактнойИнформации(ПараметрыВида);
// и т.д.

Выполняем. Мы великолепны.

ВАРИАНТ 2. При обновлении

Если добавление/обновление видов контактной информации допускается объединить с обновлением информационной базы, тогда нужно дополнить процедуру ПриДобавленииОбработчиковОбновления общего модуля ОбновлениеИнформационнойБазы<ИмяПодсистемы>.

// См. ОбновлениеИнформационнойБазыБСП.ПриДобавленииОбработчиковОбновления.
Процедура ПриДобавленииОбработчиковОбновления(Обработчики) Экспорт
Обработчик = Обработчики.Добавить();
// версия библиотеки, на которую переходим. Укажите "*" чтобы обработчик
// выполнялся всегда при запуске обновления
Обработчик.Версия = "3.1.10.17";
// описываем имя обработчика, который будет заполнять вид контактной информации
Обработчик.Процедура = "ОбновлениеИнформационнойБазы<ИмяПодсистемы>.ДобавитьВидКонтактнойИнформацииКонтрагентаТелефон";
Обработчик.ВыполнятьВГруппеОбязательных = Истина;
Обработчик.РежимВыполнения = "Оперативно";
КонецПроцедуры
...
Процедура ДобавитьВидКонтактнойИнформацииКонтрагентаТелефон() Экспорт
// Добавление нового предопределенного вида контактной информации Мессенджеры.
ПараметрыВида = УправлениеКонтактнойИнформацией.ПараметрыВидаКонтактнойИнформации(Перечисления.ТипыКонтактнойИнформации.Телефон);
ПараметрыВида.Наименование = НСтр("ru = 'Телефон'");
ПараметрыВида.Вид = "ТелефонКонтрагента";
ПараметрыВида.Имя = "ТелефонКонтрагента";
ПараметрыВида.Группа = УправлениеКонтактнойИнформацией.ВидКонтактнойИнформацииПоИмени("СправочникКонтрагенты");
ПараметрыВида.Порядок = 5;
ПараметрыВида.МожноИзменятьСпособРедактирования = Истина;
ПараметрыВида.ОтображатьВсегда = Истина;
ПараметрыВида.РазрешитьВводНесколькихЗначений = Истина;
УправлениеКонтактнойИнформацией.УстановитьСвойстваВидаКонтактнойИнформации(ПараметрыВида);
// и т.д.
КонецПроцедуры

Теперь можно запустить конфигурацию с флагом /ЗапуститьОбновлениеИнформационнойБазы и все обновится

ВАРИАНТ 3. При начальном заполнении (не рекомендуется на заполненной базе)

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

В ОбщийМодуль.УправлениеКонтактнойИнформациейПереопределяемый в процедуре ПриНачальномЗаполненииЭлементов для заполнения необходимых реквизитов созданных предопределенных элементов нужно прописать что-то вроде:

// Смотри также ОбновлениеИнформационнойБазыПереопределяемый.ПриНачальномЗаполненииЭлементов
//
// Параметры:
// КодыЯзыков - см. ОбновлениеИнформационнойБазыПереопределяемый.ПриНачальномЗаполненииЭлементов.КодыЯзыков
// Элементы - см. ОбновлениеИнформационнойБазыПереопределяемый.ПриНачальномЗаполненииЭлементов.Элементы
// ТабличныеЧасти - см. ОбновлениеИнформационнойБазыПереопределяемый.ПриНачальномЗаполненииЭлементов.ТабличныеЧасти
//
Процедура ПриНачальномЗаполненииЭлементов(КодыЯзыков, Элементы, ТабличныеЧасти) Экспорт
// Не забываем, что у нас уже есть предопределенная группа
// СправочникКонтрагенты и элемент ТелефонКонтрагента,
// которые созданы ручками в конфигураторе. Тут только обновление реквизитов
Элемент = Элементы.Добавить();
Элемент.ИмяПредопределенногоВида = "ТелеофонКонтрагента";
Элемент.Родитель = "СправочникКонтрагенты";
Элемент.ИмяГруппы = "СправочникКонтрагенты";
Элемент.Тип = Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты;
Элемент.РазрешитьВводНесколькихЗначений = Истина;
Элемент.ОтображатьВсегда = Истина;
Элемент.Используется = Истина;
**КонецПроцедуры**

5. Настройка форм

Форма элемента

Для отображения группы элементов контактной информации на форме нужно создать группу. Например - ГруппаКонтактнаяИнформация.

В модуле формы добавляем:

#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
// СтандартныеПодсистемы.КонтактнаяИнформация
УправлениеКонтактнойИнформацией.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
// Конец СтандартныеПодсистемы.КонтактнаяИнформация
КонецПроцедуры
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// СтандартныеПодсистемы.КонтактнаяИнформация
ДополнительныеПараметры = УправлениеКонтактнойИнформацией.ПараметрыКонтактнойИнформации();
ДополнительныеПараметры.Вставить("ИмяЭлементаДляРазмещения", "ГруппаКонтактнаяИнформация");
УправлениеКонтактнойИнформацией.ПриСозданииНаСервере(ЭтотОбъект, Объект, ДополнительныеПараметры);
// Конец СтандартныеПодсистемы.КонтактнаяИнформация
КонецПроцедуры
&НаСервере
Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты)
// СтандартныеПодсистемы.КонтактнаяИнформация
УправлениеКонтактнойИнформацией.ОбработкаПроверкиЗаполненияНаСервере(ЭтотОбъект, Объект, Отказ);
// Конец СтандартныеПодсистемы.КонтактнаяИнформация
КонецПроцедуры
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
// СтандартныеПодсистемы.КонтактнаяИнформация
УправлениеКонтактнойИнформацией.ПередЗаписьюНаСервере(ЭтотОбъект, ТекущийОбъект);
// Конец СтандартныеПодсистемы.КонтактнаяИнформация
КонецПроцедуры
&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
// СтандартныеПодсистемы.КонтактнаяИнформация
УправлениеКонтактнойИнформацией.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект);
// Конец СтандартныеПодсистемы.КонтактнаяИнформация
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
// СтандартныеПодсистемы.КонтактнаяИнформация
&НаКлиенте
Процедура Подключаемый_КонтактнаяИнформацияПриИзменении(Элемент)
УправлениеКонтактнойИнформациейКлиент.НачатьИзменение(ЭтотОбъект, Элемент);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_КонтактнаяИнформацияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
УправлениеКонтактнойИнформациейКлиент.НачатьВыбор(ЭтотОбъект, Элемент, , СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_КонтактнаяИнформацияПриНажатии(Элемент, СтандартнаяОбработка)
УправлениеКонтактнойИнформациейКлиент.НачатьВыбор(ЭтотОбъект, Элемент, , СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_КонтактнаяИнформацияОчистка(Элемент, СтандартнаяОбработка)
УправлениеКонтактнойИнформациейКлиент.НачатьОчистку(ЭтотОбъект, Элемент.Имя);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_КонтактнаяИнформацияВыполнитьКоманду(Команда)
УправлениеКонтактнойИнформациейКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда.Имя);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_КонтактнаяИнформацияАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка)
УправлениеКонтактнойИнформациейКлиент.АвтоПодборАдреса(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_КонтактнаяИнформацияОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
УправлениеКонтактнойИнформациейКлиент.ОбработкаВыбора(ЭтотОбъект, ВыбранноеЗначение, Элемент.Имя, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_КонтактнаяИнформацияОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
УправлениеКонтактнойИнформациейКлиент.НачатьОбработкуНавигационнойСсылки(ЭтотОбъект, Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПродолжитьОбновлениеКонтактнойИнформации(Результат, ДополнительныеПараметры) Экспорт
ОбновитьКонтактнуюИнформацию(Результат);
КонецПроцедуры
&НаСервере
Процедура ОбновитьКонтактнуюИнформацию(Результат)
УправлениеКонтактнойИнформацией.ОбновитьКонтактнуюИнформацию(ЭтотОбъект, Объект, Результат);
КонецПроцедуры
// Конец СтандартныеПодсистемы.КонтактнаяИнформация
#КонецОбласти

Не забываем привязать события формы к обработчикам

Форма списка

Для того, чтобы можно было вывести в форму списка элементы контактной информации нужно настроить в конфигураторе характеристики

Создаем форму списка, выводим ссылку и устанавливаем ПользовательскаяВидимость = Ложь

Характеристики

Что мы настраиваем: В части Виды характеристик

  1. Виды характеристик - тот элемент, где хранятся характеристики объекта. В нашем случае Характеристика - это вид контактной информации
  2. Поле ключа - ссылка
  3. Поле отбора - Родитель, т.к. мы все виды контактной информации этого элемента находятся в одной группе
  4. Значение отбора - выбираем предопределенную группу, куда мы поместили все виды контактной информации этого объекта
  5. Поле пути к данным - ссылка

В части Значения характеристик

  1. Значения характеристик - табличная часть КонтактнаяИнформация нашего объекта
  2. Поле объекта - ссылка
  3. Поле вида - ВидДляСписка
  4. Поле значения - представление

Теперь через меню Ещё > Изменить форму можно в форму списка добавить контакты через поле Ссылка Итог

Дополнительно

Добавление произвольных реквизитов с контактной информацией.pdf

Хранение истории изменений контактной информации.pdf

Создание статических элементов управления контактной информации.pdf