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