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