10 KiB
title, slug
title | slug |
---|---|
Взаимодействия | общие-подключение-объектов-к-бсп-подключение-к-подсистемам/взаимодействия |
Настройка объекта
Создаем новый документ/справочник. В документе должны быть реквизит Ответственный
(СправочникСсылка.Пользователи) и табличная часть ПартнерыИКонтактныеЛица
.
Табличная часть со следующими реквизитами:
Партнер
(СправочникСсылка.Партнеры)РольПартнера
(СправочникСсылка.РолиПартнеровВСделкахИПроектах)КонтактноеЛицо
(СправочникСсылка.КонтактныеЛицаПартнеров)РольКонтактногоЛица
(СправочникСсылка.РолиКонтактныхЛицВСделакахИПроектах)Комментарий
(Строка)
Добавляем этот документ в определяемый тип ПредметВзаимодействия
Общие модули
В общем модуле ВзаимодействияКлиентСерверПереопределяемый
в процедуре ПриОпределенииВозможныхПредметов
добавляем наш документ
// Задает типы предметов взаимодействий, например: заказы, вакансии и т.п.
// Используется, если в конфигурации определен хотя бы один предмет взаимодействий.
//
// Параметры:
// ТипыПредметов - Массив - предметы взаимодействий (Строка),
// например, "ДокументСсылка.ЗаказПокупателя" и т.п.
//
Процедура ПриОпределенииВозможныхПредметов(ТипыПредметов) Экспорт
ТипыПредметов.Добавить("ДокументСсылка.ТестовыйДокумент");
КонецПроцедуры
Настройка формы объекта
На форме документа создаем реквизит ВзаимодействиеОснование
с составным типом ДокументСсылка.ЭлектронноеПисьмоИсходящее, ДокументСсылка.ЗапланированноеВзаимодействие, ДокументСсылка.ЭлектронноеПисьмоВходящее, ДокументСсылка.ТелефонныйЗвонок, ДокументСсылка.Встреча
; реквизит НеобходимоОповещение
типа Булево
В обработчиках ПриСозданииНаСервере
, ПриЗаписиНаСервере
и ПослеЗаписи
определяем вызовы стандартных процедур
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// СтандартныеПодсистемы.Взаимодействия
Взаимодействия.ПодготовитьОповещения(ЭтотОбъект,Параметры);
// Конец СтандартныеПодсистемы.Взаимодействия
КонецПроцедуры
&НаСервере
Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
// СтандартныеПодсистемы.Взаимодействия
Если ЗначениеЗаполнено(ВзаимодействиеОснование) Тогда
Взаимодействия.ПриЗаписиПредметаИзФормы(
ТекущийОбъект.Ссылка, ВзаимодействиеОснование, Отказ);
КонецЕсли;
// Конец СтандартныеПодсистемы.Взаимодействия
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
// СтандартныеПодсистемы.Взаимодействия
ВзаимодействияКлиент.ВзаимодействиеПредметПослеЗаписи(ЭтотОбъект,Объект,ПараметрыЗаписи,"ТестовыйДокумент");
// Конец СтандартныеПодсистемы.Взаимодействия
КонецПроцедуры
Настройка модуля менеджера
В модуле менеджера должна быть реализована экспортная функция ПолучитьКонтакты
, которая будет возвращать список контактных лиц для заполнения в документе взаимодействия. Например:
// Получить партнера и контактных лиц сделки.
//
// Параметры:
// Ссылка - ДокументСсылка._ДемоЗаказПокупателя - документ, контакты которого необходимо получить.
//
// Возвращаемое значение:
// Массив - массив, содержащий контакты документа.
//
Функция ПолучитьКонтакты(Ссылка) Экспорт
Если НЕ ЗначениеЗаполнено(Ссылка) Тогда
Возврат Новый Массив;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст = ТекстЗапросаПоКонтактам();
Запрос.УстановитьПараметр("Предмет", Ссылка);
РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() Тогда
Возврат Новый Массив;
КонецЕсли;
Возврат РезультатЗапроса.Выгрузить().ВыгрузитьКолонку("Контакт");
КонецФункции
Но эта функция может возвращать и пустой массив
Опционально
В модуле менеджера каждого объекта метаданных, определенного как «предмет взаимодействий
», необходимо реализовать экспортную функцию ТекстЗапросаПоКонтактам
, в которой сформировать текст запроса по контактам, содержащимся в предмете взаимодействий. Например, ссылки на контакты взаимодействий могут иметься в реквизитах шапки и табличных частей предметов взаимодействий.
Функция принимает необязательный параметр ЭтоФрагментЗапроса
типа Булево
, указывающий на режим формирования запроса. Если данный параметр имеет значение Истина
, то формируемый в функции запрос является частью другого запроса и должен начинаться с конструкции ОБЪЕДИНИТЬ
. Возвращаемое значение – Строка
, содержащая в себе текст запроса по контактам предмета взаимодействий. Например
Функция ТекстЗапросаПоКонтактам(ЭтоФрагментЗапроса = Ложь) Экспорт
ТекстЗапроса = "
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| _ДемоЗаказПокупателя.Партнер КАК Контакт
|ИЗ
| Документ._ДемоЗаказПокупателя КАК _ДемоЗаказПокупателя
|ГДЕ
| _ДемоЗаказПокупателя.Ссылка = &Предмет
| И (НЕ _ДемоЗаказПокупателя.Партнер = ЗНАЧЕНИЕ(Справочник._ДемоПартнеры.ПустаяСсылка))
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| _ДемоЗаказПокупателяПартнерыИКонтактныеЛица.Партнер
|ИЗ
| Документ._ДемоЗаказПокупателя.ПартнерыИКонтактныеЛица КАК _ДемоЗаказПокупателяПартнерыИКонтактныеЛица
|ГДЕ
| _ДемоЗаказПокупателяПартнерыИКонтактныеЛица.Ссылка = &Предмет
| И (НЕ _ДемоЗаказПокупателяПартнерыИКонтактныеЛица.Партнер = ЗНАЧЕНИЕ(Справочник._ДемоПартнеры.ПустаяСсылка))
| И _ДемоЗаказПокупателяПартнерыИКонтактныеЛица.КонтактноеЛицо = ЗНАЧЕНИЕ(Справочник._ДемоКонтактныеЛицаПартнеров.ПустаяСсылка)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| _ДемоЗаказПокупателяПартнерыИКонтактныеЛица.КонтактноеЛицо
|ИЗ
| Документ._ДемоЗаказПокупателя.ПартнерыИКонтактныеЛица КАК _ДемоЗаказПокупателяПартнерыИКонтактныеЛица
|ГДЕ
| _ДемоЗаказПокупателяПартнерыИКонтактныеЛица.Ссылка = &Предмет
| И (НЕ _ДемоЗаказПокупателяПартнерыИКонтактныеЛица.КонтактноеЛицо = ЗНАЧЕНИЕ(Справочник._ДемоКонтактныеЛицаПартнеров.ПустаяСсылка))";
Если ЭтоФрагментЗапроса Тогда
ТекстЗапроса = "
| ОБЪЕДИНИТЬ ВСЕ
|" + ТекстЗапроса;
КонецЕсли;
Возврат ТекстЗапроса;
КонецФункции