Обновление
This commit is contained in:
parent
160559530b
commit
67d6bb2c06
BIN
public/bsp-vzaimodeystviya/1.png
Normal file
BIN
public/bsp-vzaimodeystviya/1.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 13 KiB |
@ -2,78 +2,25 @@
|
||||
title: Подключение к подсистеме Взаимодействия
|
||||
slug: общие-бсп-стандартные-подсистемы-3-1-10-взаимодействия/подключение-к-подсистеме-взаимодействия
|
||||
---
|
||||
# Настройка объекта
|
||||
Создаем новый документ/справочник. В документе должны быть реквизит `Ответственный` (СправочникСсылка.Пользователи) и табличная часть `ПартнерыИКонтактныеЛица`.
|
||||
|
||||
Табличная часть со следующими реквизитами:
|
||||
## Настройка **определяемых типов**
|
||||
В определяемый тип `КонтактВзаимодействия` необходимо включить справочники, элементы которых будут выступать контактами - `Контрагенты`, `Пользователи`, `КонтактныеЛицаКонтрагентов` и прочее. **`КонтактВзаимодействия` должен быть подключен к подсистеме `Контактная информация`**
|
||||
|
||||
- `Партнер` (СправочникСсылка.Партнеры)
|
||||
- `РольПартнера` (СправочникСсылка.РолиПартнеровВСделкахИПроектах)
|
||||
- `КонтактноеЛицо` (СправочникСсылка.КонтактныеЛицаПартнеров)
|
||||
- `РольКонтактногоЛица` (СправочникСсылка.РолиКонтактныхЛицВСделакахИПроектах)
|
||||
- `Комментарий` (Строка)
|
||||
В определяемый тип `ПредметВзаимодействия` необходимо включить справочники/документы, элементы которых будут выступать предметами взаимодействий - `ЗаказКлиента`, `ЗаказПоставщику`, `КоммерческоеПредложение` и прочее.
|
||||
|
||||
Добавляем этот документ в определяемый тип `ПредметВзаимодействия`
|
||||
## Настройка модуля менеджера **предметов взаимодействий**
|
||||
|
||||
В модуле менеджера должны быть определены 2 экспортные функции:
|
||||
- `ПолучитьКонтакты` - возвращает список контактов
|
||||
- `ТекстЗапросаПоКонтактам` - возвращает текст запроса, который позволяет получить `КонтактыВзаимодействия` из предмета взаимодействия.
|
||||
|
||||
# Общие модули
|
||||
В общем модуле `ВзаимодействияКлиентСерверПереопределяемый` в процедуре `ПриОпределенииВозможныхПредметов` добавляем наш документ
|
||||
```bsl
|
||||
// Задает типы предметов взаимодействий, например: заказы, вакансии и т.п.
|
||||
// Используется, если в конфигурации определен хотя бы один предмет взаимодействий.
|
||||
// СтандартныеПодсистемы.Взаимодействия
|
||||
|
||||
// Получить контакты.
|
||||
//
|
||||
// Параметры:
|
||||
// ТипыПредметов - Массив - предметы взаимодействий (Строка),
|
||||
// например, "ДокументСсылка.ЗаказПокупателя" и т.п.
|
||||
//
|
||||
Процедура ПриОпределенииВозможныхПредметов(ТипыПредметов) Экспорт
|
||||
|
||||
ТипыПредметов.Добавить("ДокументСсылка.ТестовыйДокумент");
|
||||
|
||||
КонецПроцедуры
|
||||
```
|
||||
# Настройка формы объекта
|
||||
На форме документа создаем реквизит `ВзаимодействиеОснование` с составным типом `ДокументСсылка.ЭлектронноеПисьмоИсходящее, ДокументСсылка.ЗапланированноеВзаимодействие, ДокументСсылка.ЭлектронноеПисьмоВходящее, ДокументСсылка.ТелефонныйЗвонок, ДокументСсылка.Встреча`; реквизит `НеобходимоОповещение` типа `Булево`
|
||||
|
||||
В обработчиках `ПриСозданииНаСервере`, `ПриЗаписиНаСервере` и `ПослеЗаписи` определяем вызовы стандартных процедур
|
||||
```bsl
|
||||
&НаСервере
|
||||
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
|
||||
|
||||
// СтандартныеПодсистемы.Взаимодействия
|
||||
Взаимодействия.ПодготовитьОповещения(ЭтотОбъект,Параметры);
|
||||
// Конец СтандартныеПодсистемы.Взаимодействия
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
&НаСервере
|
||||
Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
|
||||
|
||||
// СтандартныеПодсистемы.Взаимодействия
|
||||
Если ЗначениеЗаполнено(ВзаимодействиеОснование) Тогда
|
||||
Взаимодействия.ПриЗаписиПредметаИзФормы(
|
||||
ТекущийОбъект.Ссылка, ВзаимодействиеОснование, Отказ);
|
||||
КонецЕсли;
|
||||
// Конец СтандартныеПодсистемы.Взаимодействия
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
&НаКлиенте
|
||||
Процедура ПослеЗаписи(ПараметрыЗаписи)
|
||||
|
||||
// СтандартныеПодсистемы.Взаимодействия
|
||||
ВзаимодействияКлиент.ВзаимодействиеПредметПослеЗаписи(ЭтотОбъект,Объект,ПараметрыЗаписи,"ТестовыйДокумент");
|
||||
// Конец СтандартныеПодсистемы.Взаимодействия
|
||||
|
||||
КонецПроцедуры
|
||||
```
|
||||
|
||||
# Настройка модуля менеджера
|
||||
В модуле менеджера должна быть реализована экспортная функция `ПолучитьКонтакты`, которая будет возвращать список контактных лиц для заполнения в документе взаимодействия. Например:
|
||||
```bsl
|
||||
// Получить партнера и контактных лиц сделки.
|
||||
//
|
||||
// Параметры:
|
||||
// Ссылка - ДокументСсылка._ДемоЗаказПокупателя - документ, контакты которого необходимо получить.
|
||||
// Ссылка - См.ОпределяемыйТип.ПредметВзаимодействия - объект, контакты которого необходимо получить.
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Массив - массив, содержащий контакты документа.
|
||||
@ -96,46 +43,32 @@ slug: общие-бсп-стандартные-подсистемы-3-1-10-вз
|
||||
Возврат РезультатЗапроса.Выгрузить().ВыгрузитьКолонку("Контакт");
|
||||
|
||||
КонецФункции
|
||||
```
|
||||
> Но эта функция может возвращать и пустой массив
|
||||
|
||||
# Опционально
|
||||
|
||||
В модуле менеджера каждого объекта метаданных, определенного как «`предмет взаимодействий`», необходимо реализовать экспортную функцию `ТекстЗапросаПоКонтактам`, в которой сформировать текст запроса по контактам, содержащимся в предмете взаимодействий. Например, ссылки на контакты взаимодействий могут иметься в реквизитах шапки и табличных частей предметов взаимодействий.
|
||||
|
||||
Функция принимает необязательный параметр `ЭтоФрагментЗапроса` типа `Булево`, указывающий на режим формирования запроса. Если данный параметр имеет значение `Истина`, то формируемый в функции запрос является частью другого запроса и должен начинаться с конструкции `ОБЪЕДИНИТЬ`. Возвращаемое значение – `Строка`, содержащая в себе текст запроса по контактам предмета взаимодействий. Например
|
||||
```bsl
|
||||
// Возвращает текст запроса по контактам взаимодействий, содержащимся в документе.
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Строка
|
||||
//
|
||||
Функция ТекстЗапросаПоКонтактам(ЭтоФрагментЗапроса = Ложь) Экспорт
|
||||
|
||||
ТекстЗапроса = "
|
||||
|ВЫБРАТЬ РАЗЛИЧНЫЕ
|
||||
| _ДемоЗаказПокупателя.Партнер КАК Контакт
|
||||
| ЗаказКлиента.Контрагент КАК Контакт
|
||||
|ИЗ
|
||||
| Документ._ДемоЗаказПокупателя КАК _ДемоЗаказПокупателя
|
||||
| Документ.ЗаказКлиента КАК ЗаказКлиента
|
||||
|ГДЕ
|
||||
| _ДемоЗаказПокупателя.Ссылка = &Предмет
|
||||
| И (НЕ _ДемоЗаказПокупателя.Партнер = ЗНАЧЕНИЕ(Справочник._ДемоПартнеры.ПустаяСсылка))
|
||||
|
|
||||
|ОБЪЕДИНИТЬ ВСЕ
|
||||
|
|
||||
|ВЫБРАТЬ РАЗЛИЧНЫЕ
|
||||
| _ДемоЗаказПокупателяПартнерыИКонтактныеЛица.Партнер
|
||||
|ИЗ
|
||||
| Документ._ДемоЗаказПокупателя.ПартнерыИКонтактныеЛица КАК _ДемоЗаказПокупателяПартнерыИКонтактныеЛица
|
||||
|ГДЕ
|
||||
| _ДемоЗаказПокупателяПартнерыИКонтактныеЛица.Ссылка = &Предмет
|
||||
| И (НЕ _ДемоЗаказПокупателяПартнерыИКонтактныеЛица.Партнер = ЗНАЧЕНИЕ(Справочник._ДемоПартнеры.ПустаяСсылка))
|
||||
| И _ДемоЗаказПокупателяПартнерыИКонтактныеЛица.КонтактноеЛицо = ЗНАЧЕНИЕ(Справочник._ДемоКонтактныеЛицаПартнеров.ПустаяСсылка)
|
||||
| ЗаказКлиента.Ссылка = &Предмет
|
||||
| И (НЕ ЗаказКлиента.Контрагент = ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка))
|
||||
|
|
||||
|ОБЪЕДИНИТЬ ВСЕ
|
||||
|
|
||||
|ВЫБРАТЬ
|
||||
| _ДемоЗаказПокупателяПартнерыИКонтактныеЛица.КонтактноеЛицо
|
||||
| ЗаказКлиента.КонтактноеЛицо
|
||||
|ИЗ
|
||||
| Документ._ДемоЗаказПокупателя.ПартнерыИКонтактныеЛица КАК _ДемоЗаказПокупателяПартнерыИКонтактныеЛица
|
||||
| Документ.ЗаказКлиента КАК ЗаказКлиента
|
||||
|ГДЕ
|
||||
| _ДемоЗаказПокупателяПартнерыИКонтактныеЛица.Ссылка = &Предмет
|
||||
| И (НЕ _ДемоЗаказПокупателяПартнерыИКонтактныеЛица.КонтактноеЛицо = ЗНАЧЕНИЕ(Справочник._ДемоКонтактныеЛицаПартнеров.ПустаяСсылка))";
|
||||
| ЗаказКлиента.Ссылка = &Предмет
|
||||
| И (НЕ ЗаказКлиента.КонтактноеЛицо = ЗНАЧЕНИЕ(Справочник.КонтактныеЛицаКонтрагентов.ПустаяСсылка))";
|
||||
|
||||
Если ЭтоФрагментЗапроса Тогда
|
||||
ТекстЗапроса = "
|
||||
@ -146,4 +79,199 @@ slug: общие-бсп-стандартные-подсистемы-3-1-10-вз
|
||||
Возврат ТекстЗапроса;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Конец СтандартныеПодсистемы.Взаимодействия
|
||||
```
|
||||
|
||||
<details style="margin: 1em 0; padding: 0.5em; border: 1px solid #ccc; border-radius: 6px;">
|
||||
<summary style="font-weight: bold; cursor: pointer;">Об аргументе ЭтоФрагментЗапроса</summary>
|
||||
|
||||
Аргумент `ЭтоФрагментЗапроса` функции `ТекстЗапросаПоКонтактам` необходим при вызове этого метода в момент открытия формы добавления `участников взаимодействия` (по стеку из процедуры `ВзаимодействияПереопределяемый.ПриПоискеКонтактов`) - система автоматически подставляет к предопределенным источникам контактов взаимодействия те, которые указаны в конкретном предмете:
|
||||
|
||||
```bsl
|
||||
ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
|
||||
КонтактыВзаимодействия.Контакт КАК Контакт
|
||||
ПОМЕСТИТЬ ТаблицаКонтактов
|
||||
ИЗ
|
||||
Документ.Встреча.Участники КАК КонтактыВзаимодействия
|
||||
ГДЕ
|
||||
...
|
||||
...
|
||||
ОБЪЕДИНИТЬ ВСЕ
|
||||
|
||||
ВЫБРАТЬ РАЗЛИЧНЫЕ
|
||||
КонтактыВзаимодействия.Контакт
|
||||
ИЗ
|
||||
Документ.ЗапланированноеВзаимодействие.Участники КАК КонтактыВзаимодействия
|
||||
ГДЕ
|
||||
...
|
||||
...
|
||||
ОБЪЕДИНИТЬ ВСЕ
|
||||
|
||||
ВЫБРАТЬ РАЗЛИЧНЫЕ
|
||||
КонтактыВзаимодействия.АбонентКонтакт
|
||||
ИЗ
|
||||
Документ.ТелефонныйЗвонок КАК КонтактыВзаимодействия
|
||||
ГДЕ
|
||||
...
|
||||
...
|
||||
ОБЪЕДИНИТЬ ВСЕ
|
||||
...
|
||||
|
||||
```
|
||||
> и еще много источников, которые подсистема собирает
|
||||
```bsl
|
||||
...
|
||||
|
||||
// Это наша реализация
|
||||
ОБЪЕДИНИТЬ ВСЕ
|
||||
|
||||
ВЫБРАТЬ РАЗЛИЧНЫЕ
|
||||
ЗаказКлиента.Контрагент
|
||||
ИЗ
|
||||
Документ.ЗаказКлиента КАК ЗаказКлиента
|
||||
ГДЕ
|
||||
ЗаказКлиента.Ссылка = &Предмет
|
||||
И НЕ ЗаказКлиента.Контрагент = ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)
|
||||
|
||||
ОБЪЕДИНИТЬ ВСЕ
|
||||
|
||||
ВЫБРАТЬ
|
||||
ЗаказКлиента.КонтактноеЛицо
|
||||
ИЗ
|
||||
Документ.ЗаказКлиента КАК ЗаказКлиента
|
||||
ГДЕ
|
||||
ЗаказКлиента.Ссылка = &Предмет
|
||||
И НЕ ЗаказКлиента.КонтактноеЛицо = ЗНАЧЕНИЕ(Справочник.КонтактныеЛицаКонтрагентов.ПустаяСсылка)
|
||||
```
|
||||
|
||||

|
||||
|
||||
</details>
|
||||
|
||||
## Настройка переопределяемых модулей
|
||||
При необходимости можно вписать реализацию в функции переопределяемых модулей подсистемы:
|
||||
- `ВзаимодействияКлиентСерверПереопределяемый` (Обязательно),
|
||||
- `ВзаимодействияПереопределяемый` (Обязательно),
|
||||
- `ВзаимодействияКлиентПереопределяемый` (опционально)
|
||||
|
||||
### Общий модуль ВзаимодействияКлиентСерверПереопределяемый
|
||||
Дополнить код процедур:
|
||||
- `ПриОпределенииВозможныхПредметов` - добавляем предметы, которые были добавлены в определяемый тип `ПредметВзаимодействия` (кроме стандартных)
|
||||
- `ПриОпределенииВозможныхКонтактов` - добавляем описание контактов (из определяемого типа `КонтактВзаимодействия`). Контакт должен быть подключен к подсистеме `КонтактнаяИнформация`
|
||||
|
||||
```bsl
|
||||
|
||||
// Задает типы предметов взаимодействий, например: заказы, вакансии и т.п.
|
||||
// Используется, если в конфигурации определен хотя бы один предмет взаимодействий.
|
||||
//
|
||||
// Параметры:
|
||||
// ТипыПредметов - Массив - предметы взаимодействий (Строка),
|
||||
// например, "ДокументСсылка.ЗаказПокупателя" и т.п.
|
||||
//
|
||||
Процедура ПриОпределенииВозможныхПредметов(ТипыПредметов) Экспорт
|
||||
|
||||
// _Демо начало примера
|
||||
ТипыПредметов.Добавить("ДокументСсылка._ДемоЗаказПокупателя");
|
||||
// _Демо конец примера
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Задает описания возможных типов контактов взаимодействий, например: партнеры, контактные лица и т.п.
|
||||
// Используется, если в конфигурации определен хотя бы один тип контактов взаимодействий,
|
||||
// помимо справочника Пользователи.
|
||||
//
|
||||
// Параметры:
|
||||
// ТипыКонтактов - Массив - содержит описания типов контактов взаимодействий (Структура) и их свойства:
|
||||
// * Тип - Тип - тип ссылки контакта.
|
||||
// * Имя - Строка - имя типа контакта , как оно определено в метаданных.
|
||||
// * Представление - Строка - представление типа контакта для отображения пользователю.
|
||||
// * Иерархический - Булево - признак того, является ли справочник иерархическим.
|
||||
// * ЕстьВладелец - Булево - признак того, что у контакта есть владелец.
|
||||
// * ИмяВладельца - Строка - имя владельца контакта, как оно определено в метаданных.
|
||||
// * ИскатьПоДомену - Булево - признак того, что контакты данного типа будет подбираться
|
||||
// по совпадению домена, а не по полному адресу электронной почты.
|
||||
// * Связь - Строка - описывает возможную связь данного контакта с другим контактом, в
|
||||
// случае когда текущий контакт является реквизитом другого контакта.
|
||||
// Описывается следующей строкой "ИмяТаблицы.ИмяРеквизита".
|
||||
// * ИмяРеквизитаПредставлениеКонтакта - Строка - имя реквизита контакта, из которого будет получено
|
||||
// представление контакта. Если не указано, то используется
|
||||
// стандартный реквизит Наименование.
|
||||
// * ВозможностьИнтерактивногоСоздания - Булево - признак возможности интерактивного создания контакта из
|
||||
// документов - взаимодействий.
|
||||
// * ИмяФормыНовогоКонтакта - Строка - полное имя формы для создания нового контакта.
|
||||
// Например, "Справочник.Партнеры.Форма.ПомощникНового".
|
||||
// Если не заполнено, то открывается форма элемента по умолчанию.
|
||||
//
|
||||
Процедура ПриОпределенииВозможныхКонтактов(ТипыКонтактов) Экспорт
|
||||
|
||||
// _Демо начало примера
|
||||
Контакт = ВзаимодействияКлиентСервер.НовоеОписаниеКонтакта();
|
||||
Контакт.Тип = Тип("СправочникСсылка._ДемоПартнеры");
|
||||
Контакт.Имя = "_ДемоПартнеры";
|
||||
Контакт.Представление = НСтр("ru = 'Демо: Партнеры'");
|
||||
Контакт.Иерархический = Истина;
|
||||
ТипыКонтактов.Добавить(Контакт);
|
||||
|
||||
Контакт = ВзаимодействияКлиентСервер.НовоеОписаниеКонтакта();
|
||||
Контакт.Тип = Тип("СправочникСсылка._ДемоКонтактныеЛицаПартнеров");
|
||||
Контакт.Имя = "_ДемоКонтактныеЛицаПартнеров";
|
||||
Контакт.Представление = НСтр("ru = 'Демо: Контактные лица партнеров'");
|
||||
Контакт.ЕстьВладелец = Истина;
|
||||
Контакт.ИмяВладельца = "_ДемоПартнеры";
|
||||
ТипыКонтактов.Добавить(Контакт);
|
||||
|
||||
Контакт = ВзаимодействияКлиентСервер.НовоеОписаниеКонтакта();
|
||||
Контакт.Тип = Тип("СправочникСсылка._ДемоКонтрагенты");
|
||||
Контакт.Имя = "_ДемоКонтрагенты";
|
||||
Контакт.Представление = НСтр("ru = 'Демо: Контрагенты'");
|
||||
ТипыКонтактов.Добавить(Контакт);
|
||||
// _Демо конец примера
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
```
|
||||
|
||||
### Общий модуль ВзаимодействияПереопределяемый
|
||||
|
||||
Дополнить процедуру `ПриПоискеКонтактов`
|
||||
|
||||
```bsl
|
||||
|
||||
// Вызывается для получения контактов (участников) по указанному предмету взаимодействия.
|
||||
// Используется, если в конфигурации определен хотя бы один предмет взаимодействий.
|
||||
//
|
||||
// Параметры:
|
||||
// ИмяТаблицыКонтактов - Строка - имя таблицы предмета взаимодействий, в котором требуется выполнить поиск.
|
||||
// Например, "Документы.ЗаказПокупателя".
|
||||
// ТекстЗапросаДляПоиска - Строка - в этот параметр указать фрагмент запроса для поиска. При выполнении запроса
|
||||
// в параметр запроса &Предмет подставляется ссылка на предмет взаимодействия.
|
||||
//
|
||||
Процедура ПриПоискеКонтактов(Знач ИмяТаблицыКонтактов, ТекстЗапросаДляПоиска) Экспорт
|
||||
|
||||
Если ИмяТаблицыКонтактов = Метаданные.Документы.ЗаказКлиента.ПолноеИмя() Тогда
|
||||
ТекстЗапросаДляПоиска = Документы.ЗаказКлиента.ТекстЗапросаПоКонтактам(Истина);
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
```
|
||||
|
||||
## Если не добавлена подсистема "Настройки программы"
|
||||
|
||||
<details style="margin: 1em 0; padding: 0.5em; border: 1px solid #ccc; border-radius: 6px;">
|
||||
<summary style="font-weight: bold; cursor: pointer;">Подробнее</summary>
|
||||
|
||||
Если в конфигурации не используется подсистема Настройки программы, то на рабочем месте администратора приложения необходимо разместить константы:
|
||||
|
||||
- `ИспользоватьПочтовыйКлиент`,
|
||||
- `ОтправлятьПисьмаВФорматеHTML`,
|
||||
- `ИспользоватьПрочиеВзаимодействия`,
|
||||
- `ИспользоватьПризнакРассмотрено`.
|
||||
См. пример в форме `Органайзер` обработки `ПанельАдминистрированияБСП`.
|
||||
|
||||
В форме персональных настроек разместить вызов команды `ЖурналДокументов.Взаимодействия.Команда.НастройкиРаботыСПочтой`. Пример размещения см. в демонстрационной конфигурации в общей форме `_ДемоМоиНастройки`.
|
||||
|
||||
Разместить в командном интерфейсе пользователей, использующих подсистему, журнал документов `Взаимодействия`.
|
||||
|
||||
</details>
|
Loading…
x
Reference in New Issue
Block a user