Документооборот с контролирующими органами / Мастер расширенные настройки / Модуль формы

файл
&НаКлиенте
Перем КонтекстЭДОКлиент Экспорт;

#Область ОбработчикиСобытийФормы

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	// Пропускаем инициализацию, чтобы гарантировать получение формы при передаче параметра "АвтоТест".
	Если Параметры.Свойство("АвтоТест") Тогда
		Возврат;
	КонецЕсли;
	
	ОбработатьПараметры(Параметры);
	ИзменитьОформлениеФормы();

КонецПроцедуры

&НаКлиенте
Процедура ПриОткрытии(Отказ)
	
	ОписаниеОповещения = Новый ОписаниеОповещения("ПриОткрытииЗавершение", ЭтотОбъект);
	ДокументооборотСКОКлиент.ПолучитьКонтекстЭДО(ОписаниеОповещения);
	
КонецПроцедуры

&НаКлиенте
Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка)
	
	ОписаниеОповещения = Новый ОписаниеОповещения(
		"ПередЗакрытием_Завершение", 
		ЭтотОбъект);
	
	ОбщегоНазначенияКлиент.ПоказатьПодтверждениеЗакрытияФормы(
		ОписаниеОповещения, 
		Отказ, 
		ЗавершениеРаботы);
	
КонецПроцедуры

#КонецОбласти

#Область ОбработчикиСобытийЭлементовШапкиФормы

&НаКлиенте
Процедура ТелефонОсновнойАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка)
	
	ОбработкаЗаявленийАбонентаКлиент.АвтоПодборКонтактов(ЭтотОбъект, Текст, ДанныеВыбора, СтандартнаяОбработка, "ТелефонОсновной");
	
КонецПроцедуры

&НаКлиенте
Процедура ЭлектроннаяПочтаОрганизацииАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка)
	
	ОбработкаЗаявленийАбонентаКлиент.АвтоПодборКонтактов(ЭтотОбъект, Текст, ДанныеВыбора, СтандартнаяОбработка, "ЭлектроннаяПочтаОрганизации");
	
КонецПроцедуры

&НаКлиенте
Процедура ПодключитьЭДОПриИзменении(Элемент)
	
	ОбработкаЗаявленийАбонентаКлиентСервер.УстановитьМодифицированность(ЭтотОбъект);

	ИзменитьОформление1СЭДО();
	
КонецПроцедуры

&НаКлиенте
Процедура НомерОсновнойПоставки1сПриИзменении(Элемент)
	Модифицированность = Истина;
	ИзменитьОформлениеФормы();
КонецПроцедуры

&НаКлиенте
Процедура НомерОсновнойПоставки1сОчистка(Элемент, СтандартнаяОбработка)
	Модифицированность = Истина;
	ИзменитьОформлениеФормы();
КонецПроцедуры

&НаКлиенте
Процедура ТелефонОсновнойПриИзменении(Элемент)
	ИзменитьОформлениеФормы();
	Модифицированность = Истина;
	ТелефонОсновной_ПриИзмененииТекстаРедактирования(Элемент.ТекстРедактирования);
КонецПроцедуры

&НаКлиенте
Процедура ТелефонОсновнойИзменениеТекстаРедактирования(Элемент, Текст, СтандартнаяОбработка)
	
	ТелефонОсновной_ПриИзмененииТекстаРедактирования(Текст);
		
КонецПроцедуры

&НаКлиенте
Процедура ВладелецЭЦПДолжностьПриИзменении(Элемент)
	Модифицированность = Истина;
	ИзменитьОформлениеФормы();
КонецПроцедуры

&НаКлиенте
Процедура ВладелецЭЦППодразделениеПриИзменении(Элемент)
	Модифицированность = Истина;
	ИзменитьОформлениеФормы();
КонецПроцедуры

&НаКлиенте
Процедура ВывестиОшибку(Элемент)
	
	Если Элемент.Подсказка <> "" Тогда
		ПоказатьПредупреждение(,Элемент.Подсказка);
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ЗаполнитьЮридическийАдресПоФактическомуНажатие(Элемент)
	
	АдресЮридическийЗначение = АдресФактическийЗначение;
	АдресЮридическийПредставление = АдресФактическийПредставление;
	
	ИзменитьОформлениеФормы();
	
КонецПроцедуры

&НаКлиенте
Процедура ЗаполнитьФактическийАдресПоЮридическомуНажатие(Элемент)
	
	АдресФактическийЗначение = АдресЮридическийЗначение;
	АдресФактическийПредставление = АдресЮридическийПредставление;
	
	ИзменитьОформлениеФормы();
	
КонецПроцедуры

&НаКлиенте
Процедура АдресЮридическийПредставлениеНажатие(Элемент, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	
	ОписаниеОповещения = Новый ОписаниеОповещения(
		"АдресЮридическийПредставлениеНажатие_Завершение", 
		ЭтотОбъект, 
		Элемент);
		
	ДополнительныеПараметры = КонтекстЭДОКлиент.ПараметрыПроцедурыРедактироватьАдрес();
	ДополнительныеПараметры.Вставить("Адрес",             АдресЮридическийЗначение);
	ДополнительныеПараметры.Вставить("АдресИмя",          Элемент.Имя);
	ДополнительныеПараметры.Вставить("Элемент",           Элемент);
	ДополнительныеПараметры.Вставить("Оповещение",        ОписаниеОповещения);
	ДополнительныеПараметры.Вставить("ПринудительноФИАС", Истина);
	ДополнительныеПараметры.Вставить("ТолькоПросмотр",    ЗапретитьИзменение);
		
	КонтекстЭДОКлиент.РедактироватьАдрес(ДополнительныеПараметры);
	
КонецПроцедуры

&НаКлиенте
Процедура АдресФактическийПредставлениеНажатие(Элемент, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	
	ОписаниеОповещения = Новый ОписаниеОповещения(
		"АдресФактическийПредставлениеНажатие_Завершение", 
		ЭтотОбъект, 
		Элемент);
		
	ДополнительныеПараметры = КонтекстЭДОКлиент.ПараметрыПроцедурыРедактироватьАдрес();
	ДополнительныеПараметры.Вставить("Адрес",             АдресФактическийЗначение);
	ДополнительныеПараметры.Вставить("АдресИмя",          Элемент.Имя);
	ДополнительныеПараметры.Вставить("Элемент",           Элемент);
	ДополнительныеПараметры.Вставить("Оповещение",        ОписаниеОповещения);
	ДополнительныеПараметры.Вставить("ПринудительноФИАС", Истина);
	ДополнительныеПараметры.Вставить("ТолькоПросмотр",    ЗапретитьИзменение);
	
	КонтекстЭДОКлиент.РедактироватьАдрес(ДополнительныеПараметры);
	
КонецПроцедуры

&НаКлиенте
Процедура ПолучатьСМСПриИзменении(Элемент)
	Модифицированность = Истина;
	УстановитьДоступностьМобильногоТелефона(ЭтотОбъект);
КонецПроцедуры

&НаКлиенте
Процедура ТелефонМобильныйПриИзменении(Элемент)
	
	ИзменитьОформлениеФормы();
	Модифицированность = Истина;
	ТелефонМобильныйИзменился = Истина;
	ТелефонМобильный_ПриИзмененииТекстаРедактирования(Элемент.ТекстРедактирования, Истина);
	
КонецПроцедуры

&НаКлиенте
Процедура ТелефонМобильныйИзменениеТекстаРедактирования(Элемент, Текст, СтандартнаяОбработка)
	
	ТелефонМобильныйИзменился = Истина;
	ТелефонМобильный_ПриИзмененииТекстаРедактирования(Текст, Истина);
		
КонецПроцедуры

&НаКлиенте
Процедура ОткрытьПараметрыПодключенияРасширеннаяПодсказкаОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	Если ЗначениеЗаполнено(СсылкаОписаниеСервисаЭДО) Тогда
		ПерейтиПоНавигационнойСсылке(СсылкаОписаниеСервисаЭДО);
	КонецЕсли;
	
КонецПроцедуры

#КонецОбласти

#Область ОбработчикиКомандФормы

&НаКлиенте
Процедура ОткрытьПараметрыПодключения(Команда)
	
	ОписаниеОповещения = Новый ОписаниеОповещения(
		"ОткрытьПараметрыПодключения_Завершение", 
		ЭтотОбъект);
		
	ЭлектронныйДокументооборотСКонтролирующимиОрганамиКлиентПереопределяемый.ОткрытьФормуНастроекРегистрацииЭДО(
		НастройкиДляЭДО, 
		ОписаниеОповещения); 
	
КонецПроцедуры

&НаКлиенте
Процедура Сохранить(Команда = Неопределено)
	
	ДанныеКорректны = Истина;
	РеквизитыУказаныКорректно(ДанныеКорректны, Истина);
	
	Если ДанныеКорректны Тогда
		
		// Если нет ЭП в облаке, то телефон один, поэтому не спрашиваем
		СпроситьПроИзменениеТелефона = ТелефонМобильныйИзменился И РежимРаботыСКлючами = 1
			И НЕ КонтекстЭДОКлиент.ТелефоныСовпадают(ТелефонМобильныйДляПаролей, ТелефонМобильный);
		
		Если СпроситьПроИзменениеТелефона Тогда
			СпроситьПроИзменениеТелефона();
		Иначе
			ЗакрытьПослеПроверки();
		КонецЕсли; 
		
	КонецЕсли;
	
КонецПроцедуры

#КонецОбласти

#Область СлужебныеПроцедурыИФункции

&НаКлиенте
Процедура ОткрытьПараметрыПодключения_Завершение(Результат, ВходящийКонтекст) Экспорт
	
	Если Результат = Неопределено Тогда
		Возврат;
	КонецЕсли;
	
	НастройкиДляЭДО = Результат;
	
	ОбработкаЗаявленийАбонентаКлиентСервер.УстановитьМодифицированность(ЭтотОбъект);
	
	ИзменитьОформление1СЭДО();
	
КонецПроцедуры

&НаКлиенте
Процедура СпроситьПроИзменениеТелефона()
	
	ОписаниеОповещения = Новый ОписаниеОповещения(
		"ОбновитьТелефонДляПаролейПоТелефонуМобильному_Завершение", 
		ЭтотОбъект);
				
	ТекстВопроса = НСтр("ru = 'Вы изменили номер мобильного телефона для SMS-уведомлений о статусе отправки отчетов и входящих сообщениях.
                         |Изменить также номер мобильного телефона, на который высылаются пароли для отправки отчетности?'");
		
	ПоказатьВопрос(ОписаниеОповещения, ТекстВопроса, РежимДиалогаВопрос.ДаНет);
	
КонецПроцедуры
	
&НаКлиенте
Процедура ОбновитьТелефонДляПаролейПоТелефонуМобильному_Завершение(Ответ, ВходящийКонтекст) Экспорт
	
	Если Ответ = КодВозвратаДиалога.Да Тогда
		ТелефонМобильныйДляПаролей = ТелефонМобильный;
	КонецЕсли;
	
	ЗакрытьПослеПроверки();
	
КонецПроцедуры

&НаКлиенте
Процедура ЗакрытьПослеПроверки()
	
	ДополнительныеПараметры = Новый Структура(ПараметрыФормы);
	ЗаполнитьЗначенияСвойств(ДополнительныеПараметры, ЭтотОбъект, ПараметрыФормы); 
	ДополнительныеПараметры.Вставить("ПараметрыФормы", 		ПараметрыФормы);
	ДополнительныеПараметры.Вставить("Модифицированность", 	Модифицированность);
	
	Модифицированность = Ложь;
	
	Закрыть(ДополнительныеПараметры);
	
КонецПроцедуры

&НаКлиенте
Процедура ТелефонМобильный_ПриИзмененииТекстаРедактирования(Текст, ИзмененоВручную = Ложь)
	
	Если ИзмененоВручную Тогда
		Пауза = 1.5;
	Иначе
		Пауза = 0.1;
	КонецЕсли;
	
	Представление = ЭлектроннаяПодписьВМоделиСервисаКлиентСервер.ПолучитьПредставлениеТелефона(Текст);
	
	// Обновляем фактичекое значение
	Если ЗначениеЗаполнено(Представление) Тогда
		// Устанавливаем телефон в виде +7 ХХХ ХХХ-ХХ-ХХ
		ТелефонМобильный = Представление;
	Иначе
		// В противном случае, устанавливаем то, что ввел пользователь
		ТелефонМобильный = Текст;
	КонецЕсли;
	
	ОтключитьОбработчикОжидания("Подключаемый_ОбновитьТелефонМобильный");
	ПодключитьОбработчикОжидания("Подключаемый_ОбновитьТелефонМобильный", Пауза, Истина);
		
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ОбновитьТелефонМобильный()
	
	Представление = ЭлектроннаяПодписьВМоделиСервисаКлиентСервер.ПолучитьПредставлениеТелефона(ТелефонМобильный);
	
	// Меняем отображение на форме
	Если ЗначениеЗаполнено(Представление) Тогда
		Элементы.ТелефонМобильный.ОбновитьТекстРедактирования();
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ТелефонОсновной_ПриИзмененииТекстаРедактирования(Текст, Пауза = 1.5)
	
	Представление = ЭлектроннаяПодписьВМоделиСервисаКлиентСервер.ПолучитьПредставлениеТелефона(Текст);
	
	// Обновляем фактичекое значение
	Если ЗначениеЗаполнено(Представление) Тогда
		// Устанавливаем телефон в виде +7 ХХХ ХХХ-ХХ-ХХ
		ТелефонОсновной = Представление;
	Иначе
		// В противном случае, устанавливаем то, что ввел пользователь
		ТелефонОсновной = Текст;
	КонецЕсли;
	
	ОтключитьОбработчикОжидания("Подключаемый_ОбновитьТелефонОсновной");
	ПодключитьОбработчикОжидания("Подключаемый_ОбновитьТелефонОсновной", Пауза, Истина);
		
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ОбновитьТелефонОсновной()
	
	Представление = ЭлектроннаяПодписьВМоделиСервисаКлиентСервер.ПолучитьПредставлениеТелефона(ТелефонОсновной);
	
	// Меняем отображение на форме
	Если ЗначениеЗаполнено(Представление) Тогда
		Элементы.ТелефонОсновной.ОбновитьТекстРедактирования();
	КонецЕсли;
	
КонецПроцедуры

&НаСервере
Функция РеквизитыУказаныКорректно(МастерДалее = Истина, ВыводитьСообщения = Истина)
	
	Возврат ОбработкаЗаявленийАбонента.РасширенныеНастройкиУказаныКорректно(ЭтотОбъект, МастерДалее, ВыводитьСообщения, Истина);
	
КонецФункции

&НаКлиенте
Процедура АдресЮридическийПредставлениеНажатие_Завершение(РезультатЗакрытия, ДополнительныеПараметры) Экспорт
	
	НовыйАдрес = КонтекстЭДОКлиент.РедактироватьАдресКонвертацияРезультата(РезультатЗакрытия, Истина);
	
	Если НовыйАдрес.Модифицированность Тогда
		
		Модифицированность = Истина;
		
		ОписаниеОповещения = Новый ОписаниеОповещения(
			"АдресЮридическийПредставлениеНажатие_ПослеОбновления", 
			ЭтотОбъект, 
			ДополнительныеПараметры);
		
		КонтекстЭДОКлиент.ОбновитьАдрес(НовыйАдрес, "АдресЮридический", ОписаниеОповещения, ЭтоЮридическоеЛицо);
		
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура АдресЮридическийПредставлениеНажатие_ПослеОбновления(Результат, ВходящийКонтекст) Экспорт
	
	ИнициализироватьФактическийАдрес();
	ИзменитьОформлениеФормы();
	
КонецПроцедуры

&НаСервере
Процедура ИнициализироватьФактическийАдрес()
	
	Если (НЕ ЗначениеЗаполнено(АдресФактическийПредставление) ИЛИ НЕ ЗначениеЗаполнено(АдресФактическийЗначение))
		И (ЗначениеЗаполнено(АдресЮридическийПредставление) ИЛИ ЗначениеЗаполнено(АдресЮридическийЗначение)) Тогда
		
		АдресФактическийЗначение      = АдресЮридическийЗначение;
		АдресФактическийПредставление = АдресЮридическийПредставление;
		
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура АдресФактическийПредставлениеНажатие_Завершение(РезультатЗакрытия, ДополнительныеПараметры) Экспорт
	
	НовыйАдрес = КонтекстЭДОКлиент.РедактироватьАдресКонвертацияРезультата(РезультатЗакрытия, Истина);
	
	Если НовыйАдрес.Модифицированность Тогда
		
		Модифицированность = Истина;
		
		ОписаниеОповещения = Новый ОписаниеОповещения(
			"АдресФактическийПредставлениеНажатие_ПослеОбновления", 
			ЭтотОбъект, 
			ДополнительныеПараметры);
		
		КонтекстЭДОКлиент.ОбновитьАдрес(НовыйАдрес, "АдресФактический", ОписаниеОповещения, ЭтоЮридическоеЛицо);
		
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура АдресФактическийПредставлениеНажатие_ПослеОбновления(Результат, ВходящийКонтекст) Экспорт
	
	ИзменитьОформлениеФормы();
	
КонецПроцедуры

&НаКлиенте
Процедура ПриОткрытииЗавершение(Результат, ДополнительныеПараметры) Экспорт
	
	КонтекстЭДОКлиент = Результат.КонтекстЭДО;
	
	// Прорисовываем телефоны (у него отключено Авто обновление текста редактирования)
	// Для предотвращения ошибки, когда номер заполнен не полностью и поэтому не отображается совсем
	Элементы.ТелефонМобильный.ОбновитьТекстРедактирования();
	ТелефонМобильный_ПриИзмененииТекстаРедактирования(ТелефонМобильный);
	Элементы.ТелефонОсновной.ОбновитьТекстРедактирования();
	ТелефонОсновной_ПриИзмененииТекстаРедактирования(ТелефонОсновной, 0.1);
	ЭлектроннаяПочтаОрганизации_ПриИзмененииТекстаРедактирования(ЭлектроннаяПочтаОрганизации);
	
	КонтекстЭДОКлиент.ИзменитьПодсказкуРегНомера(ЭтотОбъект);
	
КонецПроцедуры

&НаСервере
Процедура ОбработатьПараметры(Параметры)
	
	ПараметрыФормы = Параметры.ПараметрыФормы;
	ЗаполнитьЗначенияСвойств(ЭтотОбъект, Параметры, ПараметрыФормы);
	
	ЭтоОблако = Параметры.ЭтоОблако;
	
КонецПроцедуры

&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьДоступностьМобильногоТелефона(Форма)
	
	Элементы = Форма.Элементы;
	
	// доступность
	Элементы.ТелефонМобильный.Доступность = Форма.ПолучатьСМСУведомления;
	
	Если Форма.РежимРаботыСКлючами = 1 Тогда
		
		// Облако. Телефоны могут отличаться
		Элементы.ТелефонМобильный.Видимость = Истина;
		
		Если НЕ ЗначениеЗаполнено(Форма.ТелефонМобильный) И ЗначениеЗаполнено(Форма.ТелефонМобильныйДляПаролей) Тогда
			Форма.ТелефонМобильный = Форма.ТелефонМобильныйДляПаролей;
		КонецЕсли;
		
	Иначе
		// Коробка. Телефоны НЕ могут отличаться
		Элементы.ТелефонМобильный.Видимость = Ложь;
		Элементы.ПолучатьСМСУведомления.Заголовок 		= НСтр("ru = 'Хочу получать'");
		
	КонецЕсли;
	
КонецПроцедуры

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

КонецПроцедуры

&НаСервере
Процедура ИзменитьОформление1СЭДО()
	
	Элементы.ОткрытьПараметрыПодключения.Доступность = Истина;
	Если НЕ ПодключитьЭДО Тогда
		
		Элементы.ОткрытьПараметрыПодключения.Заголовок   = НСтр("ru = 'Настройки'");
		Элементы.ОткрытьПараметрыПодключения.ЦветТекста  = Новый Цвет(87, 87, 87); // серый
		Элементы.ОткрытьПараметрыПодключения.Доступность = Ложь;
		
	Иначе
		
		НастройкиКорректны = Неопределено;
		ЭлектронныйДокументооборотСКонтролирующимиОрганамиПереопределяемый.ПроверитьНастройкиРегистрацииЭДО(НастройкиДляЭДО, НастройкиКорректны);
		
		Если НастройкиКорректны = Ложь Тогда
			Элементы.ОткрытьПараметрыПодключения.Заголовок   = НСтр("ru = 'Уточнить настройки'");
			Элементы.ОткрытьПараметрыПодключения.ЦветТекста  = ЦветаСтиля.ЦветОшибкиПроверкиБРО; // Красный
		Иначе
			Элементы.ОткрытьПараметрыПодключения.Заголовок   = НСтр("ru = 'Настройки'");
			Элементы.ОткрытьПараметрыПодключения.ЦветТекста  = Новый Цвет();
		КонецЕсли;

	КонецЕсли;
	
	ВыбраноОблачноеЭП     = ЭтоОблако;
	ВыбраноОблачнаяПодпись= КриптографияЭДКОКлиентСервер.ЭтоОблачнаяПодпись(МестоХраненияКлюча);
	
	ОтображатьПодключение = 
		ПодключениеЭДОВозможно 
		И НЕ ВыбраноОблачноеЭП 
		И НЕ ВыбраноОблачнаяПодпись 
		И ЕстьПравоНастройкиЭДО 
		И НЕ ЭтоМультиРежим
		ИЛИ ЗапретитьИзменение И ПодключитьЭДО;
		
	ОтображатьПодсказку = 
		ПодключениеЭДОВозможно И 
		(ВыбраноОблачноеЭП И ДоступнаЭлектроннаяПодписьВМоделиСервиса 
		ИЛИ НЕ ЕстьПравоНастройкиЭДО 
		ИЛИ ВыбраноОблачнаяПодпись);
	
	Элементы.ЭДОНедоступно.Видимость                = ОтображатьПодсказку;
	Элементы.ОткрытьПараметрыПодключения.Видимость 	= ОтображатьПодключение;
	Элементы.ПодключитьЭДО.Видимость 				= ОтображатьПодключение;
	Элементы.Заголовок1СЭДО.Видимость               = ОтображатьПодключение ИЛИ ОтображатьПодсказку;

	Если ЗапретитьИзменение Тогда
		Элементы.ПодключитьЭДО.ТолькоПросмотр = Истина;
		Элементы.ЭДОНедоступно.ОтображениеПодсказки = ОтображениеПодсказки.Нет;
	КонецЕсли;
	
	Если Элементы.ЭДОНедоступно.Видимость Тогда
		Если ВыбраноОблачноеЭП Тогда
			Элементы.ЭДОНедоступно.Заголовок = НСтр("ru = 'Недоступно при хранении ключа в программе.'");
		ИначеЕсли НЕ ЕстьПравоНастройкиЭДО Тогда
			Элементы.ЭДОНедоступно.Заголовок = НСтр("ru = 'У пользователя недостаточно прав для подключения 1С-ЭДО'");
		КонецЕсли;
	КонецЕсли;
	
КонецПроцедуры

&НаСервере
Процедура ИзменитьОформлениеАдреса(ИмяРеквизита)
	
	РеквизитСАдресом = ЭтотОбъект[ИмяРеквизита];
	ЭлементСАдресом  = Элементы[ИмяРеквизита];
	
	Если ЗначениеЗаполнено(РеквизитСАдресом) И РеквизитСАдресом <> НСтр("ru = 'Заполнить'") Тогда
		ЭлементСАдресом.Заголовок  = РеквизитСАдресом;
		ЭлементСАдресом.ЦветТекста = Новый Цвет;
	Иначе
		ЭлементСАдресом.Заголовок  = НСтр("ru = 'Заполнить'");
		КрасныйЦвет = Новый Цвет(178,34, 34);
		ЭлементСАдресом.ЦветТекста = КрасныйЦвет;
	КонецЕсли;
	
КонецПроцедуры

&НаКлиентеНаСервереБезКонтекста
Процедура ИзменитьОформлениеВладельцаЭЦПДолжность(Форма)
	
	Элементы = Форма.Элементы;
	
	// Адрес
	Если Форма.ЭтоЮридическоеЛицо И Форма.Доступен1СКонтрагент 
		И Форма.ВладелецЭЦПТип = ПредопределенноеЗначение("Перечисление.ТипыВладельцевЭЦП.Руководитель") Тогда
		
		Элементы.ГруппаДолжность.Видимость = Истина;
		
	Иначе
		
		Элементы.ГруппаДолжность.Видимость = Ложь;
		
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ПередЗакрытием_Завершение(Результат, ВходящийКонтекст) Экспорт
	
	Сохранить();
	
КонецПроцедуры

&НаКлиенте
Процедура ЭлектроннаяПочтаОрганизацииПриИзменении(Элемент)
	
	Модифицированность = Истина;
	ЭлектроннаяПочтаОрганизации_ПриИзмененииТекстаРедактирования(ЭлектроннаяПочтаОрганизации, Истина);
	
КонецПроцедуры

&НаКлиенте
Процедура ЭлектроннаяПочтаОрганизацииИзменениеТекстаРедактирования(Элемент, Текст, СтандартнаяОбработка)
	
	Модифицированность = Истина;
	ЭлектроннаяПочтаОрганизации_ПриИзмененииТекстаРедактирования(Текст, Истина);
	
КонецПроцедуры

&НаКлиенте
Процедура ЭлектроннаяПочтаОрганизации_ПриИзмененииТекстаРедактирования(Текст, ИзмененоВручную = Ложь)
	
	Если ИзмененоВручную Тогда
		Пауза = 1.5;
	Иначе
		Пауза = 0.1;
	КонецЕсли;
	
	ЭлектроннаяПочтаОрганизации = Текст;
	
	ОтключитьОбработчикОжидания("Подключаемый_ОбновитьЭлектроннаяПочтаОрганизации");
	ПодключитьОбработчикОжидания("Подключаемый_ОбновитьЭлектроннаяПочтаОрганизации", Пауза, Истина);
		
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ОбновитьЭлектроннаяПочтаОрганизации()
	
	Если ЗначениеЗаполнено(ЭлектроннаяПочтаОрганизации) Тогда
		Элементы.ЭлектроннаяПочтаОрганизации.ОбновитьТекстРедактирования();
	КонецЕсли;
	ИзменитьОформлениеФормы();
	
КонецПроцедуры

#КонецОбласти

Связанные материалы