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