ПриЗаписиДокумента (БСП)

Автор: 1С
ОбщийМодуль.Взаимодействия
БСП

При записи документа. Заполняет данные регистра сведений КонтактыВзаимодействий для переданного массива взаимодействий.

// Заполняет данные регистра сведений КонтактыВзаимодействий для переданного массива взаимодействий.
//
// Параметры:
//  МассивВзаимодействий    - Массив - массив для которого будут заполнены данные о контактах.
//  РассчитыватьРассмотрено - Булево - признак необходимости расчета состояний контактов взаимодействий.
//
Процедура ПриЗаписиДокумента(ДокументОбъект) Экспорт

	УстановитьПривилегированныйРежим(Истина);
	
	Если НеЗаписыватьКонтакты(ДокументОбъект.ДополнительныеСвойства) Тогда
		Возврат;
	КонецЕсли;
	
	НаборЗаписей = РегистрыСведений.КонтактыВзаимодействий.СоздатьНаборЗаписей();
	НаборЗаписей.Отбор.Взаимодействие.Установить(ДокументОбъект.Ссылка);
	
	Таблица = Новый ТаблицаЗначений;
	ОписаниеТиповКонтактов = Новый ОписаниеТипов(ТипыКонтактов());
	Таблица.Колонки.Добавить("Контакт", ОписаниеТиповКонтактов);
	Таблица.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(100, ДопустимаяДлина.Переменная)));

	Если ТипЗнч(ДокументОбъект) = Тип("ДокументОбъект.Встреча") Тогда
		
		Для Каждого Участник Из ДокументОбъект.Участники Цикл
			
			НоваяСтрока = Таблица.Добавить();
			НоваяСтрока.Контакт        = Участник.Контакт;
			НоваяСтрока.Представление  = Участник.ПредставлениеКонтакта;
			
		КонецЦикла;
		
	ИначеЕсли ТипЗнч(ДокументОбъект) = Тип("ДокументОбъект.ЗапланированноеВзаимодействие") Тогда
		
		Для Каждого Участник Из ДокументОбъект.Участники Цикл
			
			НоваяСтрока = Таблица.Добавить();
			НоваяСтрока.Контакт        = Участник.Контакт;
			НоваяСтрока.Представление  = Участник.ПредставлениеКонтакта;
			
		КонецЦикла;
		
	ИначеЕсли ТипЗнч(ДокументОбъект) = Тип("ДокументОбъект.ТелефонныйЗвонок") Тогда
		
		НоваяСтрока = Таблица.Добавить();
		НоваяСтрока.Контакт        = ДокументОбъект.АбонентКонтакт;
		НоваяСтрока.Представление  = ДокументОбъект.АбонентПредставление;
		
	ИначеЕсли ТипЗнч(ДокументОбъект) = Тип("ДокументОбъект.СообщениеSMS") Тогда
		
		Для Каждого Абонент Из ДокументОбъект.Адресаты Цикл
			
			НоваяСтрока = Таблица.Добавить();
			НоваяСтрока.Контакт        = Абонент.Контакт;
			НоваяСтрока.Представление  = Абонент.ПредставлениеКонтакта;
			
		КонецЦикла;
		
	ИначеЕсли ТипЗнч(ДокументОбъект) = Тип("ДокументОбъект.ЭлектронноеПисьмоВходящее") Тогда
		
		НоваяСтрока = Таблица.Добавить();
		НоваяСтрока.Контакт        = ДокументОбъект.ОтправительКонтакт;
		НоваяСтрока.Представление  = ДокументОбъект.ОтправительПредставление;
		
	ИначеЕсли ТипЗнч(ДокументОбъект) = Тип("ДокументОбъект.ЭлектронноеПисьмоИсходящее") Тогда
		
		Для Каждого Адресат Из ДокументОбъект.ПолучателиПисьма Цикл
			
			НоваяСтрока = Таблица.Добавить();
			НоваяСтрока.Контакт        = Адресат.Контакт;
			НоваяСтрока.Представление  = Адресат.Представление;
			
		КонецЦикла;
		
		Для Каждого Адресат Из ДокументОбъект.ПолучателиКопий Цикл
			
			НоваяСтрока = Таблица.Добавить();
			НоваяСтрока.Контакт        = Адресат.Контакт;
			НоваяСтрока.Представление  = Адресат.Представление;
			
		КонецЦикла;
		
		Для Каждого Адресат Из ДокументОбъект.ПолучателиСкрытыхКопий Цикл
			
			НоваяСтрока = Таблица.Добавить();
			НоваяСтрока.Контакт        = Адресат.Контакт;
			НоваяСтрока.Представление  = Адресат.Представление;
			
		КонецЦикла;
		
	КонецЕсли;
	
	Для Каждого СтрокаТаблицы Из Таблица Цикл
		Если НЕ ЗначениеЗаполнено(СтрокаТаблицы.Контакт) Тогда
			СтрокаТаблицы.Контакт = Справочники.Пользователи.ПустаяСсылка();
		КонецЕсли;
	КонецЦикла;
	
	Запрос = Новый Запрос;
	Запрос.Текст = "
	|ВЫБРАТЬ РАЗЛИЧНЫЕ
	|	ТаблицаКонтактов.Контакт,
	|	ТаблицаКонтактов.Представление
	|ПОМЕСТИТЬ ТаблицаКонтактов
	|ИЗ
	|	&ТаблицаКонтактов КАК ТаблицаКонтактов
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ РАЗЛИЧНЫЕ
	|	ВЫБОР
	|		КОГДА ТаблицаКонтактов.Контакт = ЗНАЧЕНИЕ(Справочник.Пользователи.ПустаяСсылка)
	|			ТОГДА ЕСТЬNULL(СтроковыеКонтактыВзаимодействий.Ссылка, НЕОПРЕДЕЛЕНО)
	|		ИНАЧЕ ТаблицаКонтактов.Контакт
	|	КОНЕЦ КАК Контакт,
	|	ТаблицаКонтактов.Представление
	|ИЗ
	|	ТаблицаКонтактов КАК ТаблицаКонтактов
	|		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СтроковыеКонтактыВзаимодействий КАК СтроковыеКонтактыВзаимодействий
	|		ПО ТаблицаКонтактов.Представление = СтроковыеКонтактыВзаимодействий.Наименование
	|			И (НЕ СтроковыеКонтактыВзаимодействий.ПометкаУдаления)";
	
	Запрос.УстановитьПараметр("ТаблицаКонтактов", Таблица);
	
	Таблица = Запрос.Выполнить().Выгрузить();
	
	Для Каждого СтрокаТаблицы Из Таблица Цикл
		Если СтрокаТаблицы.Контакт = Неопределено Тогда
			СтроковыйКонтактВзаимодействий              = Справочники.СтроковыеКонтактыВзаимодействий.СоздатьЭлемент();
			СтроковыйКонтактВзаимодействий.Наименование = СтрокаТаблицы.Представление;
			СтроковыйКонтактВзаимодействий.Записать();
			СтрокаТаблицы.Контакт                        = СтроковыйКонтактВзаимодействий.Ссылка;
		КонецЕсли;
	КонецЦикла;
	
	Таблица.Свернуть("Контакт");
	
	Таблица.Колонки.Добавить("Взаимодействие");
	Таблица.ЗаполнитьЗначения(ДокументОбъект.Ссылка, "Взаимодействие");
	НаборЗаписей.ДополнительныеСвойства.Вставить("РассчитыватьРассмотрено", Истина);
	НаборЗаписей.Загрузить(Таблица);
	
	НаборЗаписей.Записать();
	
КонецПроцедуры

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

Рекомендации

Похожие публикации

ПриЗаписиВзаимодействияИзФормы (БСП)

ПроверитьДатуЗапретаИзмененияПередЗаписьюДокумента (БСП)

ПередЗаписьюДокумента (БСП)

ПередЗаписьюВзаимодействияИзФормы (БСП)

АвтономнаяРаботаПроверитьВозможностьЗаписиОбщихДанныхДокумент (БСП)

ПриПолученииТабличныхДокументовОбъекта (БСП)

МеханизмРегистрацииОбъектовПередЗаписьюДокумента (БСП)

Документ Регистратор При Проверке Записи

TurboConf - расширение Конфигуратора 1С