ЗаполнитьРеквизитыПоУмолчанию (БСП)

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

Заполнить реквизиты по умолчанию. Вызывается из обработчиков заполнения документов - взаимодействий и предметов заполнения.

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

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

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

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

ЗаполнитьРеквизитыПоСКД (БСП)

Установка видимости реквизита по умолчанию

ЗаполнитьСистемнуюУчетнуюЗапись (БСП)

ЗаполнитьНаборыСДополнительнымиРеквизитами (БСП)

ЗаполнитьЗначениеРеквизитаУпорядочивания (БСП)

ЗаполнитьРеквизитыФайлаИзИсходногоФайла (БСП)

ЗаполнитьДополнительныеРеквизитыВФорме (БСП)

ПолучитьПрефиксообразующиеРеквизиты (БСП)

Обновлятор-1С: групповое (пакетное) обновление и обслуживание всех баз за один раз