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