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