Заполнить контакты массива взаимодействий. Заполняет данные регистра сведений КонтактыВзаимодействий для переданного массива взаимодействий.
// Заполняет данные регистра сведений КонтактыВзаимодействий для переданного массива взаимодействий.
//
// Параметры:
// МассивВзаимодействий - Массив - массив для которого будут заполнены данные о контактах.
// РассчитыватьРассмотрено - Булево - признак необходимости расчета состояний контактов взаимодействий.
//
Процедура ЗаполнитьКонтактыМассиваВзаимодействий(МассивВзаимодействий, РассчитыватьРассмотрено = Ложь) Экспорт
УстановитьПривилегированныйРежим(Истина);
Запрос = Новый Запрос;
Запрос.Текст = "
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ВстречаУчастники.Ссылка КАК Взаимодействие,
| ВстречаУчастники.Контакт,
| ВстречаУчастники.ПредставлениеКонтакта КАК ПредставлениеКонтакта
|ПОМЕСТИТЬ ИнформацияОКонтактах
|ИЗ
| Документ.Встреча.Участники КАК ВстречаУчастники
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактыВзаимодействий КАК КонтактыВзаимодействий
| ПО ВстречаУчастники.Ссылка = КонтактыВзаимодействий.Взаимодействие
|ГДЕ
| ВстречаУчастники.Ссылка В
| (&МассивВзаимодействий)
|
|ОБЪЕДИНИТЬ
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ЗапланированноеВзаимодействиеУчастники.Ссылка,
| ЗапланированноеВзаимодействиеУчастники.Контакт,
| ЗапланированноеВзаимодействиеУчастники.ПредставлениеКонтакта
|ИЗ
| Документ.ЗапланированноеВзаимодействие.Участники КАК ЗапланированноеВзаимодействиеУчастники
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактыВзаимодействий КАК КонтактыВзаимодействий
| ПО ЗапланированноеВзаимодействиеУчастники.Ссылка = КонтактыВзаимодействий.Взаимодействие
|ГДЕ
| ЗапланированноеВзаимодействиеУчастники.Ссылка В
| (&МассивВзаимодействий)
|
|ОБЪЕДИНИТЬ
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ТелефонныйЗвонок.Ссылка,
| ТелефонныйЗвонок.АбонентКонтакт,
| ТелефонныйЗвонок.АбонентПредставление
|ИЗ
| Документ.ТелефонныйЗвонок КАК ТелефонныйЗвонок
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактыВзаимодействий КАК КонтактыВзаимодействий
| ПО (КонтактыВзаимодействий.Взаимодействие = ТелефонныйЗвонок.Ссылка)
|ГДЕ
| ТелефонныйЗвонок.Ссылка В
| (&МассивВзаимодействий)
|
|ОБЪЕДИНИТЬ
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| СообщениеSMSАдресаты.Ссылка,
| СообщениеSMSАдресаты.Контакт,
| СообщениеSMSАдресаты.ПредставлениеКонтакта
|ИЗ
| Документ.СообщениеSMS.Адресаты КАК СообщениеSMSАдресаты
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактыВзаимодействий КАК КонтактыВзаимодействий
| ПО СообщениеSMSАдресаты.Ссылка = КонтактыВзаимодействий.Взаимодействие
|ГДЕ
| СообщениеSMSАдресаты.Ссылка В
| (&МассивВзаимодействий)
|
|ОБЪЕДИНИТЬ
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ЭлектронноеПисьмоВходящее.Ссылка,
| ЭлектронноеПисьмоВходящее.ОтправительКонтакт,
| ЭлектронноеПисьмоВходящее.ОтправительПредставление
|ИЗ
| Документ.ЭлектронноеПисьмоВходящее КАК ЭлектронноеПисьмоВходящее
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактыВзаимодействий КАК КонтактыВзаимодействий
| ПО (КонтактыВзаимодействий.Взаимодействие = ЭлектронноеПисьмоВходящее.Ссылка)
|ГДЕ
| ЭлектронноеПисьмоВходящее.Ссылка В
| (&МассивВзаимодействий)
|
|ОБЪЕДИНИТЬ
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ЭлектронноеПисьмоИсходящееПолучателиПисьма.Ссылка,
| ЭлектронноеПисьмоИсходящееПолучателиПисьма.Контакт,
| ЭлектронноеПисьмоИсходящееПолучателиПисьма.Представление
|ИЗ
| Документ.ЭлектронноеПисьмоИсходящее.ПолучателиПисьма КАК ЭлектронноеПисьмоИсходящееПолучателиПисьма,
| РегистрСведений.КонтактыВзаимодействий КАК КонтактыВзаимодействий
|ГДЕ
| ЭлектронноеПисьмоИсходящееПолучателиПисьма.Ссылка В
| (&МассивВзаимодействий)
|
|ОБЪЕДИНИТЬ
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ЭлектронноеПисьмоИсходящееПолучателиКопий.Ссылка,
| ЭлектронноеПисьмоИсходящееПолучателиКопий.Контакт,
| ЭлектронноеПисьмоИсходящееПолучателиКопий.Представление
|ИЗ
| Документ.ЭлектронноеПисьмоИсходящее.ПолучателиКопий КАК ЭлектронноеПисьмоИсходящееПолучателиКопий
|ГДЕ
| ЭлектронноеПисьмоИсходящееПолучателиКопий.Ссылка В
| (&МассивВзаимодействий)
|
|ОБЪЕДИНИТЬ
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ЭлектронноеПисьмоИсходящееПолучателиСкрытыхКопий.Ссылка,
| ЭлектронноеПисьмоИсходящееПолучателиСкрытыхКопий.Контакт,
| ЭлектронноеПисьмоИсходящееПолучателиСкрытыхКопий.Представление
|ИЗ
| Документ.ЭлектронноеПисьмоИсходящее.ПолучателиСкрытыхКопий КАК ЭлектронноеПисьмоИсходящееПолучателиСкрытыхКопий
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактыВзаимодействий КАК КонтактыВзаимодействий
| ПО ЭлектронноеПисьмоИсходящееПолучателиСкрытыхКопий.Ссылка = КонтактыВзаимодействий.Взаимодействие
|ГДЕ
| ЭлектронноеПисьмоИсходящееПолучателиСкрытыхКопий.Ссылка В
| (&МассивВзаимодействий)
|
|ИНДЕКСИРОВАТЬ ПО
| ПредставлениеКонтакта
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ИнформацияОКонтактах.Взаимодействие КАК Взаимодействие,
| ВЫБОР
| КОГДА ИнформацияОКонтактах.Контакт = НЕОПРЕДЕЛЕНО
| ТОГДА ЕСТЬNULL(СтроковыеКонтактыВзаимодействий.Ссылка, НЕОПРЕДЕЛЕНО)
| ИНАЧЕ ИнформацияОКонтактах.Контакт
| КОНЕЦ КАК Контакт,
| ИнформацияОКонтактах.ПредставлениеКонтакта
|ИЗ
| ИнформацияОКонтактах КАК ИнформацияОКонтактах
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СтроковыеКонтактыВзаимодействий КАК СтроковыеКонтактыВзаимодействий
| ПО ИнформацияОКонтактах.ПредставлениеКонтакта = СтроковыеКонтактыВзаимодействий.Наименование
|ИТОГИ ПО
| Взаимодействие";
Запрос.УстановитьПараметр("МассивВзаимодействий", МассивВзаимодействий);
РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() Тогда
Возврат;
КонецЕсли;
ВыборкаВзаимодействие = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
НачатьТранзакцию();
Попытка
Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить("РегистрСведений.КонтактыВзаимодействий");
ТаблицаОбластиБлокировки = Новый ТаблицаЗначений;
ТаблицаОбластиБлокировки.Колонки.Добавить("Взаимодействие");
Для Каждого ЭлементМассива Из МассивВзаимодействий Цикл
НоваяСтрока = ТаблицаОбластиБлокировки.Добавить();
НоваяСтрока.Взаимодействие = ЭлементМассива;
КонецЦикла;
ЭлементБлокировки.ИсточникДанных = ТаблицаОбластиБлокировки;
Блокировка.Заблокировать();
Пока ВыборкаВзаимодействие.Следующий() Цикл
ВыборкаДетали = ВыборкаВзаимодействие.Выбрать();
НаборЗаписей = РегистрыСведений.КонтактыВзаимодействий.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Взаимодействие.Установить(ВыборкаВзаимодействие.Взаимодействие);
Пока ВыборкаДетали.Следующий() Цикл
НоваяЗапись = НаборЗаписей.Добавить();
НоваяЗапись.Взаимодействие = ВыборкаВзаимодействие.Взаимодействие;
Если ВыборкаДетали.Контакт <> Неопределено Тогда
НоваяЗапись.Контакт = ВыборкаДетали.Контакт;
Иначе
СтроковыйКонтактВзаимодействий = Справочники.СтроковыеКонтактыВзаимодействий.СоздатьЭлемент();
СтроковыйКонтактВзаимодействий.Наименование = ВыборкаДетали.ПредставлениеКонтакта;
СтроковыйКонтактВзаимодействий.Записать();
НоваяЗапись.Контакт = СтроковыйКонтактВзаимодействий.Ссылка;
КонецЕсли;
КонецЦикла;
Если РассчитыватьРассмотрено Тогда
НаборЗаписей.ДополнительныеСвойства.Вставить("РассчитыватьРассмотрено", Истина);
КонецЕсли;
НаборЗаписей.Записать();
КонецЦикла;
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
ВызватьИсключение;
КонецПопытки;
КонецПроцедуры
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
ЗаполнитьКонтактыПоПредмету (БСП)
ЗаполнитьКонтактыДляВстречи (БСП)
УстановитьПредметДляМассиваВзаимодействий (БСП)
РассчитатьРассмотреноПоКонтактам (БСП)