From 67d6bb2c06dfbabcc66c83b3ef877b4cd8a6a8b6 Mon Sep 17 00:00:00 2001 From: wakadakawaka Date: Tue, 19 Aug 2025 19:49:24 +0500 Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/bsp-vzaimodeystviya/1.png | Bin 0 -> 12858 bytes .../3.1.10/Взаимодействия/Подключение к подсистеме Взаимодействия.md | 370 ++++++++++++------ 2 files changed, 249 insertions(+), 121 deletions(-) create mode 100644 public/bsp-vzaimodeystviya/1.png diff --git a/public/bsp-vzaimodeystviya/1.png b/public/bsp-vzaimodeystviya/1.png new file mode 100644 index 0000000000000000000000000000000000000000..9799c1f47685920f5143be3596916a2075c293e7 GIT binary patch literal 12858 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 +Об аргументе ЭтоФрагментЗапроса + +Аргумент `ЭтоФрагментЗапроса` функции `ТекстЗапросаПоКонтактам` необходим при вызове этого метода в момент открытия формы добавления `участников взаимодействия` (по стеку из процедуры `ВзаимодействияПереопределяемый.ПриПоискеКонтактов`) - система автоматически подставляет к предопределенным источникам контактов взаимодействия те, которые указаны в конкретном предмете: + +```bsl +ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ + КонтактыВзаимодействия.Контакт КАК Контакт +ПОМЕСТИТЬ ТаблицаКонтактов +ИЗ + Документ.Встреча.Участники КАК КонтактыВзаимодействия +ГДЕ +... +... +ОБЪЕДИНИТЬ ВСЕ + +ВЫБРАТЬ РАЗЛИЧНЫЕ + КонтактыВзаимодействия.Контакт +ИЗ + Документ.ЗапланированноеВзаимодействие.Участники КАК КонтактыВзаимодействия +ГДЕ +... +... +ОБЪЕДИНИТЬ ВСЕ + +ВЫБРАТЬ РАЗЛИЧНЫЕ + КонтактыВзаимодействия.АбонентКонтакт +ИЗ + Документ.ТелефонныйЗвонок КАК КонтактыВзаимодействия +ГДЕ +... +... +ОБЪЕДИНИТЬ ВСЕ +... + +``` +> и еще много источников, которые подсистема собирает +```bsl +... + +// Это наша реализация +ОБЪЕДИНИТЬ ВСЕ + +ВЫБРАТЬ РАЗЛИЧНЫЕ + ЗаказКлиента.Контрагент +ИЗ + Документ.ЗаказКлиента КАК ЗаказКлиента +ГДЕ + ЗаказКлиента.Ссылка = &Предмет + И НЕ ЗаказКлиента.Контрагент = ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка) + +ОБЪЕДИНИТЬ ВСЕ + +ВЫБРАТЬ + ЗаказКлиента.КонтактноеЛицо +ИЗ + Документ.ЗаказКлиента КАК ЗаказКлиента +ГДЕ + ЗаказКлиента.Ссылка = &Предмет + И НЕ ЗаказКлиента.КонтактноеЛицо = ЗНАЧЕНИЕ(Справочник.КонтактныеЛицаКонтрагентов.ПустаяСсылка) +``` + +![Изображение](/bsp-vzaimodeystviya/1.png) + + + +## Настройка переопределяемых модулей +При необходимости можно вписать реализацию в функции переопределяемых модулей подсистемы: +- `ВзаимодействияКлиентСерверПереопределяемый` (Обязательно), +- `ВзаимодействияПереопределяемый` (Обязательно), +- `ВзаимодействияКлиентПереопределяемый` (опционально) + +### Общий модуль ВзаимодействияКлиентСерверПереопределяемый +Дополнить код процедур: +- `ПриОпределенииВозможныхПредметов` - добавляем предметы, которые были добавлены в определяемый тип `ПредметВзаимодействия` (кроме стандартных) +- `ПриОпределенииВозможныхКонтактов` - добавляем описание контактов (из определяемого типа `КонтактВзаимодействия`). Контакт должен быть подключен к подсистеме `КонтактнаяИнформация` + +```bsl + // Задает типы предметов взаимодействий, например: заказы, вакансии и т.п. // Используется, если в конфигурации определен хотя бы один предмет взаимодействий. // @@ -26,124 +170,108 @@ slug: общие-бсп-стандартные-подсистемы-3-1-10-вз // например, "ДокументСсылка.ЗаказПокупателя" и т.п. // Процедура ПриОпределенииВозможныхПредметов(ТипыПредметов) Экспорт - - ТипыПредметов.Добавить("ДокументСсылка.ТестовыйДокумент"); - -КонецПроцедуры -``` -# Настройка формы объекта -На форме документа создаем реквизит `ВзаимодействиеОснование` с составным типом `ДокументСсылка.ЭлектронноеПисьмоИсходящее, ДокументСсылка.ЗапланированноеВзаимодействие, ДокументСсылка.ЭлектронноеПисьмоВходящее, ДокументСсылка.ТелефонныйЗвонок, ДокументСсылка.Встреча`; реквизит `НеобходимоОповещение` типа `Булево` - -В обработчиках `ПриСозданииНаСервере`, `ПриЗаписиНаСервере` и `ПослеЗаписи` определяем вызовы стандартных процедур -```bsl -&НаСервере -Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) - - // СтандартныеПодсистемы.Взаимодействия - Взаимодействия.ПодготовитьОповещения(ЭтотОбъект,Параметры); - // Конец СтандартныеПодсистемы.Взаимодействия - + + // _Демо начало примера + ТипыПредметов.Добавить("ДокументСсылка._ДемоЗаказПокупателя"); + // _Демо конец примера + КонецПроцедуры -&НаСервере -Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) - - // СтандартныеПодсистемы.Взаимодействия - Если ЗначениеЗаполнено(ВзаимодействиеОснование) Тогда - Взаимодействия.ПриЗаписиПредметаИзФормы( - ТекущийОбъект.Ссылка, ВзаимодействиеОснование, Отказ); - КонецЕсли; - // Конец СтандартныеПодсистемы.Взаимодействия - -КонецПроцедуры - -&НаКлиенте -Процедура ПослеЗаписи(ПараметрыЗаписи) - - // СтандартныеПодсистемы.Взаимодействия - ВзаимодействияКлиент.ВзаимодействиеПредметПослеЗаписи(ЭтотОбъект,Объект,ПараметрыЗаписи,"ТестовыйДокумент"); - // Конец СтандартныеПодсистемы.Взаимодействия - -КонецПроцедуры -``` - -# Настройка модуля менеджера -В модуле менеджера должна быть реализована экспортная функция `ПолучитьКонтакты`, которая будет возвращать список контактных лиц для заполнения в документе взаимодействия. Например: -```bsl -// Получить партнера и контактных лиц сделки. +// Задает описания возможных типов контактов взаимодействий, например: партнеры, контактные лица и т.п. +// Используется, если в конфигурации определен хотя бы один тип контактов взаимодействий, +// помимо справочника Пользователи. // // Параметры: -// Ссылка - ДокументСсылка._ДемоЗаказПокупателя - документ, контакты которого необходимо получить. +// ТипыКонтактов - Массив - содержит описания типов контактов взаимодействий (Структура) и их свойства: +// * Тип - Тип - тип ссылки контакта. +// * Имя - Строка - имя типа контакта , как оно определено в метаданных. +// * Представление - Строка - представление типа контакта для отображения пользователю. +// * Иерархический - Булево - признак того, является ли справочник иерархическим. +// * ЕстьВладелец - Булево - признак того, что у контакта есть владелец. +// * ИмяВладельца - Строка - имя владельца контакта, как оно определено в метаданных. +// * ИскатьПоДомену - Булево - признак того, что контакты данного типа будет подбираться +// по совпадению домена, а не по полному адресу электронной почты. +// * Связь - Строка - описывает возможную связь данного контакта с другим контактом, в +// случае когда текущий контакт является реквизитом другого контакта. +// Описывается следующей строкой "ИмяТаблицы.ИмяРеквизита". +// * ИмяРеквизитаПредставлениеКонтакта - Строка - имя реквизита контакта, из которого будет получено +// представление контакта. Если не указано, то используется +// стандартный реквизит Наименование. +// * ВозможностьИнтерактивногоСоздания - Булево - признак возможности интерактивного создания контакта из +// документов - взаимодействий. +// * ИмяФормыНовогоКонтакта - Строка - полное имя формы для создания нового контакта. +// Например, "Справочник.Партнеры.Форма.ПомощникНового". +// Если не заполнено, то открывается форма элемента по умолчанию. // -// Возвращаемое значение: -// Массив - массив, содержащий контакты документа. -// -Функция ПолучитьКонтакты(Ссылка) Экспорт - - Если НЕ ЗначениеЗаполнено(Ссылка) Тогда - Возврат Новый Массив; - КонецЕсли; - - Запрос = Новый Запрос; - Запрос.Текст = ТекстЗапросаПоКонтактам(); - Запрос.УстановитьПараметр("Предмет", Ссылка); - РезультатЗапроса = Запрос.Выполнить(); - - Если РезультатЗапроса.Пустой() Тогда - Возврат Новый Массив; - КонецЕсли; +Процедура ПриОпределенииВозможныхКонтактов(ТипыКонтактов) Экспорт + + // _Демо начало примера + Контакт = ВзаимодействияКлиентСервер.НовоеОписаниеКонтакта(); + Контакт.Тип = Тип("СправочникСсылка._ДемоПартнеры"); + Контакт.Имя = "_ДемоПартнеры"; + Контакт.Представление = НСтр("ru = 'Демо: Партнеры'"); + Контакт.Иерархический = Истина; + ТипыКонтактов.Добавить(Контакт); + + Контакт = ВзаимодействияКлиентСервер.НовоеОписаниеКонтакта(); + Контакт.Тип = Тип("СправочникСсылка._ДемоКонтактныеЛицаПартнеров"); + Контакт.Имя = "_ДемоКонтактныеЛицаПартнеров"; + Контакт.Представление = НСтр("ru = 'Демо: Контактные лица партнеров'"); + Контакт.ЕстьВладелец = Истина; + Контакт.ИмяВладельца = "_ДемоПартнеры"; + ТипыКонтактов.Добавить(Контакт); + + Контакт = ВзаимодействияКлиентСервер.НовоеОписаниеКонтакта(); + Контакт.Тип = Тип("СправочникСсылка._ДемоКонтрагенты"); + Контакт.Имя = "_ДемоКонтрагенты"; + Контакт.Представление = НСтр("ru = 'Демо: Контрагенты'"); + ТипыКонтактов.Добавить(Контакт); + // _Демо конец примера + +КонецПроцедуры - Возврат РезультатЗапроса.Выгрузить().ВыгрузитьКолонку("Контакт"); - -КонецФункции ``` -> Но эта функция может возвращать и пустой массив -# Опционально +### Общий модуль ВзаимодействияПереопределяемый -В модуле менеджера каждого объекта метаданных, определенного как «`предмет взаимодействий`», необходимо реализовать экспортную функцию `ТекстЗапросаПоКонтактам`, в которой сформировать текст запроса по контактам, содержащимся в предмете взаимодействий. Например, ссылки на контакты взаимодействий могут иметься в реквизитах шапки и табличных частей предметов взаимодействий. +Дополнить процедуру `ПриПоискеКонтактов` -Функция принимает необязательный параметр `ЭтоФрагментЗапроса` типа `Булево`, указывающий на режим формирования запроса. Если данный параметр имеет значение `Истина`, то формируемый в функции запрос является частью другого запроса и должен начинаться с конструкции `ОБЪЕДИНИТЬ`. Возвращаемое значение – `Строка`, содержащая в себе текст запроса по контактам предмета взаимодействий. Например ```bsl -Функция ТекстЗапросаПоКонтактам(ЭтоФрагментЗапроса = Ложь) Экспорт - - ТекстЗапроса = " - |ВЫБРАТЬ РАЗЛИЧНЫЕ - | _ДемоЗаказПокупателя.Партнер КАК Контакт - |ИЗ - | Документ._ДемоЗаказПокупателя КАК _ДемоЗаказПокупателя - |ГДЕ - | _ДемоЗаказПокупателя.Ссылка = &Предмет - | И (НЕ _ДемоЗаказПокупателя.Партнер = ЗНАЧЕНИЕ(Справочник._ДемоПартнеры.ПустаяСсылка)) - | - |ОБЪЕДИНИТЬ ВСЕ - | - |ВЫБРАТЬ РАЗЛИЧНЫЕ - | _ДемоЗаказПокупателяПартнерыИКонтактныеЛица.Партнер - |ИЗ - | Документ._ДемоЗаказПокупателя.ПартнерыИКонтактныеЛица КАК _ДемоЗаказПокупателяПартнерыИКонтактныеЛица - |ГДЕ - | _ДемоЗаказПокупателяПартнерыИКонтактныеЛица.Ссылка = &Предмет - | И (НЕ _ДемоЗаказПокупателяПартнерыИКонтактныеЛица.Партнер = ЗНАЧЕНИЕ(Справочник._ДемоПартнеры.ПустаяСсылка)) - | И _ДемоЗаказПокупателяПартнерыИКонтактныеЛица.КонтактноеЛицо = ЗНАЧЕНИЕ(Справочник._ДемоКонтактныеЛицаПартнеров.ПустаяСсылка) - | - |ОБЪЕДИНИТЬ ВСЕ - | - |ВЫБРАТЬ - | _ДемоЗаказПокупателяПартнерыИКонтактныеЛица.КонтактноеЛицо - |ИЗ - | Документ._ДемоЗаказПокупателя.ПартнерыИКонтактныеЛица КАК _ДемоЗаказПокупателяПартнерыИКонтактныеЛица - |ГДЕ - | _ДемоЗаказПокупателяПартнерыИКонтактныеЛица.Ссылка = &Предмет - | И (НЕ _ДемоЗаказПокупателяПартнерыИКонтактныеЛица.КонтактноеЛицо = ЗНАЧЕНИЕ(Справочник._ДемоКонтактныеЛицаПартнеров.ПустаяСсылка))"; - - Если ЭтоФрагментЗапроса Тогда - ТекстЗапроса = " - | ОБЪЕДИНИТЬ ВСЕ - |" + ТекстЗапроса; - КонецЕсли; - - Возврат ТекстЗапроса; - -КонецФункции -``` \ No newline at end of file + +// Вызывается для получения контактов (участников) по указанному предмету взаимодействия. +// Используется, если в конфигурации определен хотя бы один предмет взаимодействий. +// +// Параметры: +// ИмяТаблицыКонтактов - Строка - имя таблицы предмета взаимодействий, в котором требуется выполнить поиск. +// Например, "Документы.ЗаказПокупателя". +// ТекстЗапросаДляПоиска - Строка - в этот параметр указать фрагмент запроса для поиска. При выполнении запроса +// в параметр запроса &Предмет подставляется ссылка на предмет взаимодействия. +// +Процедура ПриПоискеКонтактов(Знач ИмяТаблицыКонтактов, ТекстЗапросаДляПоиска) Экспорт + + Если ИмяТаблицыКонтактов = Метаданные.Документы.ЗаказКлиента.ПолноеИмя() Тогда + ТекстЗапросаДляПоиска = Документы.ЗаказКлиента.ТекстЗапросаПоКонтактам(Истина); + КонецЕсли; + +КонецПроцедуры + +``` + +## Если не добавлена подсистема "Настройки программы" + +
+Подробнее + +Если в конфигурации не используется подсистема Настройки программы, то на рабочем месте администратора приложения необходимо разместить константы: + +- `ИспользоватьПочтовыйКлиент`, +- `ОтправлятьПисьмаВФорматеHTML`, +- `ИспользоватьПрочиеВзаимодействия`, +- `ИспользоватьПризнакРассмотрено`. +См. пример в форме `Органайзер` обработки `ПанельАдминистрированияБСП`. + +В форме персональных настроек разместить вызов команды `ЖурналДокументов.Взаимодействия.Команда.НастройкиРаботыСПочтой`. Пример размещения см. в демонстрационной конфигурации в общей форме `_ДемоМоиНастройки`. + +Разместить в командном интерфейсе пользователей, использующих подсистему, журнал документов `Взаимодействия`. + +
\ No newline at end of file