Подключение к подсистеме Контактная информация
1. Создать в объекте ТЧ “Контактная информация”
Копируем из любого объекта БСП, который подключен к этой подсистеме. Например, справочник “Пользователи”
2. Включить объект в определяемый тип “ВладелецКонтактнойИнформации”
3. В справочнике ВидыКонтактнойИнформации добавить предопределенные элементы
В конфигураторе обязательно необходимо добавить предопределенную группу. Предопределенные элементы можно будет добавить в обработчиках обновления.
Имя группы рекомендуется создавать по шаблону ВидОбъектаМетаданныхОбъектМетаданных, например СправочникКонтрагенты
4. Добавить/заполнить реквизиты новых видов контактной информации
Есть несколько вариантов создания предопределенных элементов справочника ВидыКонтактнойИнформации
:
- при начальном заполнении базы. Вариант, если база пустая и только внедряется
- при обновлении базы.
- без обновления
ВАРИАНТ 1. Обновление “ручками”. Самый простой способ
Создаем внешнюю обработку с одной кнопкой, в серверный обработчик кнопки добавляем блок кода
// Добавление нового предопределенного вида контактной информации Мессенджеры. ПараметрыВида = УправлениеКонтактнойИнформацией.ПараметрыВидаКонтактнойИнформации(Перечисления.ТипыКонтактнойИнформации.Телефон); ПараметрыВида.Наименование = НСтр("ru = 'Телефон'"); ПараметрыВида.Вид = "ТелефонКонтрагента"; ПараметрыВида.Имя = "ТелефонКонтрагента"; ПараметрыВида.Группа = УправлениеКонтактнойИнформацией.ВидКонтактнойИнформацииПоИмени("СправочникКонтрагенты"); ПараметрыВида.Порядок = 5; ПараметрыВида.МожноИзменятьСпособРедактирования = Истина; ПараметрыВида.ОтображатьВсегда = Истина; ПараметрыВида.РазрешитьВводНесколькихЗначений = Истина; УправлениеКонтактнойИнформацией.УстановитьСвойстваВидаКонтактнойИнформации(ПараметрыВида);
// и т.д.
Выполняем. Мы великолепны.
ВАРИАНТ 2. При обновлении
Если добавление/обновление видов контактной информации допускается объединить с обновлением информационной базы, тогда нужно дополнить процедуру ПриДобавленииОбработчиковОбновления
общего модуля ОбновлениеИнформационнойБазы<ИмяПодсистемы>
.
// См. ОбновлениеИнформационнойБазыБСП.ПриДобавленииОбработчиковОбновления.Процедура ПриДобавленииОбработчиковОбновления(Обработчики) Экспорт
Обработчик = Обработчики.Добавить(); // версия библиотеки, на которую переходим. Укажите "*" чтобы обработчик // выполнялся всегда при запуске обновления Обработчик.Версия = "3.1.10.17"; // описываем имя обработчика, который будет заполнять вид контактной информации Обработчик.Процедура = "ОбновлениеИнформационнойБазы<ИмяПодсистемы>.ДобавитьВидКонтактнойИнформацииКонтрагентаТелефон"; Обработчик.ВыполнятьВГруппеОбязательных = Истина; Обработчик.РежимВыполнения = "Оперативно";
КонецПроцедуры
...
Процедура ДобавитьВидКонтактнойИнформацииКонтрагентаТелефон() Экспорт
// Добавление нового предопределенного вида контактной информации Мессенджеры. ПараметрыВида = УправлениеКонтактнойИнформацией.ПараметрыВидаКонтактнойИнформации(Перечисления.ТипыКонтактнойИнформации.Телефон); ПараметрыВида.Наименование = НСтр("ru = 'Телефон'"); ПараметрыВида.Вид = "ТелефонКонтрагента"; ПараметрыВида.Имя = "ТелефонКонтрагента"; ПараметрыВида.Группа = УправлениеКонтактнойИнформацией.ВидКонтактнойИнформацииПоИмени("СправочникКонтрагенты"); ПараметрыВида.Порядок = 5; ПараметрыВида.МожноИзменятьСпособРедактирования = Истина; ПараметрыВида.ОтображатьВсегда = Истина; ПараметрыВида.РазрешитьВводНесколькихЗначений = Истина; УправлениеКонтактнойИнформацией.УстановитьСвойстваВидаКонтактнойИнформации(ПараметрыВида);
// и т.д.
КонецПроцедуры
Теперь можно запустить конфигурацию с флагом /ЗапуститьОбновлениеИнформационнойБазы и все обновится
ВАРИАНТ 3. При начальном заполнении (не рекомендуется на заполненной базе)
Этот вариант подойдет только тогда, когда база данных только что была развернута из шаблона и при первом запуске выполняются обработчики начального заполнения. В этом варианте предопределенные элементы нужно создавать вручную в конфигураторе
В ОбщийМодуль.УправлениеКонтактнойИнформациейПереопределяемый
в процедуре ПриНачальномЗаполненииЭлементов
для заполнения необходимых реквизитов созданных предопределенных элементов нужно прописать что-то вроде:
// Смотри также ОбновлениеИнформационнойБазыПереопределяемый.ПриНачальномЗаполненииЭлементов//// Параметры:// КодыЯзыков - см. ОбновлениеИнформационнойБазыПереопределяемый.ПриНачальномЗаполненииЭлементов.КодыЯзыков// Элементы - см. ОбновлениеИнформационнойБазыПереопределяемый.ПриНачальномЗаполненииЭлементов.Элементы// ТабличныеЧасти - см. ОбновлениеИнформационнойБазыПереопределяемый.ПриНачальномЗаполненииЭлементов.ТабличныеЧасти//Процедура ПриНачальномЗаполненииЭлементов(КодыЯзыков, Элементы, ТабличныеЧасти) Экспорт
// Не забываем, что у нас уже есть предопределенная группа // СправочникКонтрагенты и элемент ТелефонКонтрагента, // которые созданы ручками в конфигураторе. Тут только обновление реквизитов
Элемент = Элементы.Добавить(); Элемент.ИмяПредопределенногоВида = "ТелеофонКонтрагента"; Элемент.Родитель = "СправочникКонтрагенты"; Элемент.ИмяГруппы = "СправочникКонтрагенты"; Элемент.Тип = Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты; Элемент.РазрешитьВводНесколькихЗначений = Истина; Элемент.ОтображатьВсегда = Истина; Элемент.Используется = Истина;
**КонецПроцедуры**
5. Настройка форм
Форма элемента
Для отображения группы элементов контактной информации на форме нужно создать группу. Например - ГруппаКонтактнаяИнформация
.
В модуле формы добавляем:
#Область ОбработчикиСобытийФормы
&НаСервереПроцедура ПриЧтенииНаСервере(ТекущийОбъект)
// СтандартныеПодсистемы.КонтактнаяИнформация УправлениеКонтактнойИнформацией.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект); // Конец СтандартныеПодсистемы.КонтактнаяИнформация
КонецПроцедуры
&НаСервереПроцедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// СтандартныеПодсистемы.КонтактнаяИнформация ДополнительныеПараметры = УправлениеКонтактнойИнформацией.ПараметрыКонтактнойИнформации(); ДополнительныеПараметры.Вставить("ИмяЭлементаДляРазмещения", "ГруппаКонтактнаяИнформация"); УправлениеКонтактнойИнформацией.ПриСозданииНаСервере(ЭтотОбъект, Объект, ДополнительныеПараметры); // Конец СтандартныеПодсистемы.КонтактнаяИнформация
КонецПроцедуры
&НаСервереПроцедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты)
// СтандартныеПодсистемы.КонтактнаяИнформация УправлениеКонтактнойИнформацией.ОбработкаПроверкиЗаполненияНаСервере(ЭтотОбъект, Объект, Отказ); // Конец СтандартныеПодсистемы.КонтактнаяИнформация
КонецПроцедуры
&НаСервереПроцедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
// СтандартныеПодсистемы.КонтактнаяИнформация УправлениеКонтактнойИнформацией.ПередЗаписьюНаСервере(ЭтотОбъект, ТекущийОбъект); // Конец СтандартныеПодсистемы.КонтактнаяИнформация
КонецПроцедуры
&НаСервереПроцедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
// СтандартныеПодсистемы.КонтактнаяИнформация УправлениеКонтактнойИнформацией.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект); // Конец СтандартныеПодсистемы.КонтактнаяИнформация
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
// СтандартныеПодсистемы.КонтактнаяИнформация&НаКлиентеПроцедура Подключаемый_КонтактнаяИнформацияПриИзменении(Элемент) УправлениеКонтактнойИнформациейКлиент.НачатьИзменение(ЭтотОбъект, Элемент);КонецПроцедуры
&НаКлиентеПроцедура Подключаемый_КонтактнаяИнформацияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) УправлениеКонтактнойИнформациейКлиент.НачатьВыбор(ЭтотОбъект, Элемент, , СтандартнаяОбработка);КонецПроцедуры
&НаКлиентеПроцедура Подключаемый_КонтактнаяИнформацияПриНажатии(Элемент, СтандартнаяОбработка) УправлениеКонтактнойИнформациейКлиент.НачатьВыбор(ЭтотОбъект, Элемент, , СтандартнаяОбработка);КонецПроцедуры
&НаКлиентеПроцедура Подключаемый_КонтактнаяИнформацияОчистка(Элемент, СтандартнаяОбработка) УправлениеКонтактнойИнформациейКлиент.НачатьОчистку(ЭтотОбъект, Элемент.Имя);КонецПроцедуры
&НаКлиентеПроцедура Подключаемый_КонтактнаяИнформацияВыполнитьКоманду(Команда) УправлениеКонтактнойИнформациейКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда.Имя);КонецПроцедуры
&НаКлиентеПроцедура Подключаемый_КонтактнаяИнформацияАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка) УправлениеКонтактнойИнформациейКлиент.АвтоПодборАдреса(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка);КонецПроцедуры
&НаКлиентеПроцедура Подключаемый_КонтактнаяИнформацияОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) УправлениеКонтактнойИнформациейКлиент.ОбработкаВыбора(ЭтотОбъект, ВыбранноеЗначение, Элемент.Имя, СтандартнаяОбработка);КонецПроцедуры
&НаКлиентеПроцедура Подключаемый_КонтактнаяИнформацияОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка) УправлениеКонтактнойИнформациейКлиент.НачатьОбработкуНавигационнойСсылки(ЭтотОбъект, Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка);КонецПроцедуры
&НаКлиентеПроцедура Подключаемый_ПродолжитьОбновлениеКонтактнойИнформации(Результат, ДополнительныеПараметры) Экспорт ОбновитьКонтактнуюИнформацию(Результат);КонецПроцедуры
&НаСервереПроцедура ОбновитьКонтактнуюИнформацию(Результат) УправлениеКонтактнойИнформацией.ОбновитьКонтактнуюИнформацию(ЭтотОбъект, Объект, Результат);КонецПроцедуры// Конец СтандартныеПодсистемы.КонтактнаяИнформация
#КонецОбласти
Не забываем привязать события формы к обработчикам
Форма списка
Для того, чтобы можно было вывести в форму списка элементы контактной информации нужно настроить в конфигураторе характеристики
Создаем форму списка, выводим ссылку
и устанавливаем ПользовательскаяВидимость = Ложь
Что мы настраиваем: В части Виды характеристик
- Виды характеристик - тот элемент, где хранятся характеристики объекта. В нашем случае
Характеристика
- это вид контактной информации - Поле ключа -
ссылка
- Поле отбора -
Родитель
, т.к. мы все виды контактной информации этого элемента находятся в одной группе - Значение отбора - выбираем предопределенную группу, куда мы поместили все виды контактной информации этого объекта
- Поле пути к данным -
ссылка
В части Значения характеристик
- Значения характеристик - табличная часть
КонтактнаяИнформация
нашего объекта - Поле объекта -
ссылка
- Поле вида -
ВидДляСписка
- Поле значения -
представление
Теперь через меню Ещё > Изменить форму
можно в форму списка добавить контакты через поле Ссылка
Дополнительно
Добавление произвольных реквизитов с контактной информацией.pdf
Хранение истории изменений контактной информации.pdf
Создание статических элементов управления контактной информации.pdf