#Область ОписаниеПеременных
#КонецОбласти
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Инициализация(Параметры);
УправлениеФормойПриОткрытии();
УправлениеФормой();
УправлениеФормойПриЗапретеИзменения();
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура ТаблицаПользователейЭтоШифровальщикПриИзменении(Элемент)
ОбработкаЗаявленийАбонентаКлиентСервер.УстановитьМодифицированность(ЭтотОбъект);
УправлениеФормой();
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормы
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура Сохранить(Команда)
Результат = МультирежимКлиентСервер.ПроверитьШифровальщиковФНС(
ЭтотОбъект,
,
,
"ТаблицаПользователей",
"ТаблицаПользователей");
Если Результат.ЕстьОшибка Тогда
Возврат;
КонецЕсли;
ДополнительныеПараметры = Новый Структура();
ДополнительныеПараметры.Вставить("Модифицированность", Модифицированность);
ДополнительныеПараметры.Вставить("АдресТаблицы", АдресТаблицыПользователей());
Модифицированность = Ложь;
Закрыть(ДополнительныеПараметры);
КонецПроцедуры
&НаКлиенте
Процедура УдалитьВсех(Команда)
Для каждого Строка Из ТаблицаПользователей Цикл
Строка.ЭтоШифровальщик = Ложь;
КонецЦикла;
ОбработкаЗаявленийАбонентаКлиентСервер.УстановитьМодифицированность(ЭтотОбъект);
УправлениеФормой();
КонецПроцедуры
&НаКлиенте
Процедура ВыбратьВсех(Команда)
Для каждого Строка Из ТаблицаПользователей Цикл
Если Строка.Пометка Тогда
Строка.ЭтоШифровальщик = Истина;
КонецЕсли;
КонецЦикла;
ОбработкаЗаявленийАбонентаКлиентСервер.УстановитьМодифицированность(ЭтотОбъект);
УправлениеФормой();
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаСервере
Функция АдресТаблицыПользователей() Экспорт
Возврат Мультирежим.АдресТаблицы(ЭтотОбъект, "ТаблицаПользователей");
КонецФункции
&НаСервере
Процедура Инициализация(Параметры)
ПараметрыФормы = Параметры.ПараметрыФормы;
ЗаполнитьЗначенияСвойств(ЭтотОбъект, Параметры, ПараметрыФормы);
ЗапретитьИзменение =
ЗапретитьИзменение
ИЛИ НЕ ВладелецЭЦПЭтоАдмин
ИЛИ ВладелецЭЦПРасширилСебеПрава;
Источник = ПолучитьИзВременногоХранилища(Параметры.АдресТаблицы);
Мультирежим.СкопироватьТаблицуПользователей(ЭтотОбъект, Источник, ТаблицаПользователей);
КонецПроцедуры
&НаСервере
Процедура УправлениеФормойПриОткрытии()
Количество = МультирежимКлиентСервер.КоличествоШифровальщиков(ТаблицаПользователей);
ЕстьОшибка = Количество > 3 ИЛИ Количество = 0;
Если Количество > 3 Тогда
Элементы.Ошибка.Заголовок = НСтр("ru = 'Оставьте максимум 3 получателей ФНС.'");
ИначеЕсли Количество = 0 Тогда
Элементы.Ошибка.Заголовок = НСтр("ru = 'Добавьте получателей сообщений ФНС.'");
КонецЕсли;
Элементы.Ошибка.Видимость = ЕстьОшибка;
Элементы.Внимание.Видимость = ЕстьОшибка;
Элементы.ТаблицаПользователей.ОтборСтрок = Новый ФиксированнаяСтруктура("Пометка", Истина);
КонецПроцедуры
&НаСервере
Процедура УправлениеФормой()
ИзменитьОформлениеИтога();
КонецПроцедуры
&НаСервере
Процедура ИзменитьОформлениеИтога()
ШаблонВсего = ";%1 пользователя;;%1 пользователей;%1 пользователей;%1 пользователей";
ПредставлениеВсего = СтроковыеФункцииКлиентСервер.СтрокаСЧисломДляЛюбогоЯзыка(ШаблонВсего, ТаблицаПользователей.Количество());
Выбрано = МультирежимКлиентСервер.КоличествоШифровальщиков(ТаблицаПользователей);
Если Выбрано = 0 Тогда
Представление = НСтр("ru = 'Выбрано 0, выберите хотя бы одного'");
ИначеЕсли Выбрано > 3 Тогда
ШаблонОбщий = НСтр("ru = 'Выбрано %1, выбрано лишних %2'");
Представление = СтрШаблон(ШаблонОбщий, Выбрано, Выбрано - 3);
ИначеЕсли Выбрано = 3 Тогда
ШаблонОбщий = НСтр("ru = 'Выбрано %1 (это максимум)'");
Представление = СтрШаблон(ШаблонОбщий, Выбрано);
Иначе
ШаблонОбщий = НСтр("ru = 'Выбрано %1, можно еще выбрать %2'");
Представление = СтрШаблон(ШаблонОбщий, Выбрано, 3 - Выбрано);
КонецЕсли;
Элементы.ИтогПоТаблице.Заголовок = Представление;
КонецПроцедуры
&НаСервере
Процедура УправлениеФормойПриЗапретеИзменения()
Элементы.КнопкиТаблицы.Видимость = НЕ ЗапретитьИзменение;
Элементы.ТаблицаПользователейЭтоШифровальщик.ТолькоПросмотр = ЗапретитьИзменение;
КоманднаяПанель.Видимость = НЕ ЗапретитьИзменение;
КонецПроцедуры
#КонецОбласти