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

