#Область ОписаниеПеременных
&НаКлиенте
Перем КонтекстЭДОКлиент Экспорт;
&НаКлиенте
Перем СтруктураВспомДанныхДлитОперацииАЛКО Экспорт;
&НаКлиенте
Перем ПараметрыОбработчикаОжидания Экспорт;
&НаКлиенте
Перем ОповещениеОЗавершенииДействия Экспорт;
&НаКлиенте
Перем РезультатыАвтонастройки Экспорт;
#КонецОбласти
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Параметры.Свойство("АвтоТест") Тогда
Возврат;
КонецЕсли;
УстановитьУсловноеОформление();
ИнициализацияПараметров(Параметры);
АктивизироватьСтраницу(Элементы.СтраницыШапки, Элементы.СтраницаСчетчик);
ИзменитьОформлениеФормы(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
ОписаниеОповещения = Новый ОписаниеОповещения("ПриОткрытииЗавершение", ЭтотОбъект);
ДокументооборотСКОКлиент.ПолучитьКонтекстЭДО(ОписаниеОповещения);
Активизировать();
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
ЭтоЗапись = Лев(ИмяСобытия, 7) = "Запись_" И НЕ ВыполняетсяОтправкаИлиПроверка;
ЭтоСобытиеОтправкиИлиПроверки = ЭтоСобытиеОтправкиИлиПроверки(ИмяСобытия);
Если ЭтоЗапись Тогда
ОбработатьОповещениеЗаписи(Источник);
ИначеЕсли ЭтоСобытиеОтправкиИлиПроверки Тогда
ПриЗавершенииГрупповогоДействия(ИмяСобытия, Параметр);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
#Область Отборы
&НаКлиенте
Процедура ОтборВидОтчетаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
МассивЗначений = ВидыОтчетовВОтборе();
ЭлектронныйДокументооборотСКонтролирующимиОрганамиКлиент.ОтборВидОтчетаНачалоВыбора(МассивЗначений);
Элемент.СписокВыбора.ЗагрузитьЗначения(МассивЗначений);
Элемент.СписокВыбора.СортироватьПоЗначению(НаправлениеСортировки.Возр);
КонецПроцедуры
&НаКлиенте
Функция ВидыОтчетовВОтборе()
МассивЗначений = Новый Массив;
ОтборСтрок = Новый Структура(Элементы.ОтчетыПредставление.ОтборСтрок);
Если ОтборСтрок.Свойство("НаименованиеОтчета") Тогда
ОтборСтрок.Удалить("НаименованиеОтчета");
КонецЕсли;
НайденныеСтроки = ВсеОтчеты.НайтиСтроки(ОтборСтрок);
Для каждого Строка Из НайденныеСтроки Цикл
МассивЗначений.Добавить(Строка.НаименованиеОтчета);
КонецЦикла;
МассивЗначений = ОбщегоНазначенияКлиентСервер.СвернутьМассив(МассивЗначений);
Если МассивЗначений.Количество() = 0 Тогда
МассивЗначений = АктуализироватьСписокЗначений("НаименованиеОтчета");
КонецЕсли;
Возврат МассивЗначений;
КонецФункции
&НаКлиенте
Процедура ОтборВидОтчетаПриИзменении(Элемент)
ПоказатьДлительноеДействие(ЭтотОбъект, Истина);
ПодключитьОбработчикОжидания("Подключаемый_ОтборВидОтчетаПриИзменении", 0.1, Истина);
КонецПроцедуры
&НаКлиенте
Процедура ОтборОрганизацияОтчетаПриИзменении(Элемент)
ПоказатьДлительноеДействие(ЭтотОбъект, Истина);
ПодключитьОбработчикОжидания("Подключаемый_ОтборОрганизацияОтчетаПриИзменении", 0.1, Истина);
КонецПроцедуры
&НаКлиенте
Процедура ОтборСтатусНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СформироватьСписокВыбораСтатусов(ЭтотОбъект);
ОписаниеОповещения = Новый ОписаниеОповещения(
"ОтборСтатусЗавершениеВыбора",
ЭтотОбъект);
Статусы.ПоказатьОтметкуЭлементов(ОписаниеОповещения, НСтр("ru = 'Статусы'"));
КонецПроцедуры
&НаКлиенте
Процедура ОтборСтатусЗавершениеВыбора(Результат, ВходящийКонтекст) Экспорт
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
ПоказатьДлительноеДействие(ЭтотОбъект, Истина);
ПодключитьОбработчикОжидания("Подключаемый_ОтборСтатусЗавершениеВыбора", 0.1, Истина);
КонецПроцедуры
&НаКлиенте
Процедура ОтборКонтролирующийОрганНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ДополнительныеПараметры = Новый Структура();
ДополнительныеПараметры.Вставить("Органы", ВсеОрганы());
ДополнительныеПараметры.Вставить("ТекущаяСтрока", ПредставлениеКонтролирующегоОргана);
ОписаниеОповещения = Новый ОписаниеОповещения(
"ОтборКонтролирующийОрганЗавершениеВыбора",
ЭтотОбъект);
ОткрытьФорму(
КонтекстЭДОКлиент.ПутьКОбъекту + ".Форма.ГрупповаяОтправка_ВыборГосОргана",
ДополнительныеПараметры,
,
,
,
,
ОписаниеОповещения);
КонецПроцедуры
&НаКлиенте
Процедура ОтборКонтролирующийОрганПриИзменении(Элемент)
ПоказатьДлительноеДействие(ЭтотОбъект, Истина);
ПодключитьОбработчикОжидания("Подключаемый_ОтборКонтролирующийОрганПриИзменении", 0.1, Истина);
КонецПроцедуры
&НаКлиенте
Процедура ОтборПериодОтчетаОчистка(Элемент, СтандартнаяОбработка)
НачалоПериода = Дата(1, 1, 1);
КонецПериода = Дата(1, 1, 1);
ПоказатьДлительноеДействие(ЭтотОбъект, Истина);
ПодключитьОбработчикОжидания("Подключаемый_ОтборПериодНачалоВыбора", 0.1, Истина);
КонецПроцедуры
&НаКлиенте
Процедура ОтборСтатусОчистка(Элемент, СтандартнаяОбработка)
Для каждого СтатусСтрока Из Статусы Цикл
СтатусСтрока.Пометка = Ложь;
КонецЦикла;
ОтборСтатусЗавершениеВыбора(Статусы, Неопределено);
КонецПроцедуры
#КонецОбласти
&НаКлиенте
Процедура ОтборПериодОтчетаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ОписаниеОповещения = Новый ОписаниеОповещения(
"ОтборПериодНачалоВыбора_Завершение",
ЭтотОбъект);
РегламентированнаяОтчетностьКлиент.ОтборПериодНачалоВыбора(ЭтотОбъект, ОписаниеОповещения, СтандартнаяОбработка, ТекущаяДатаНаСервере());
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыЖурнал
&НаКлиенте
Процедура ОтчетыПометкаПриИзменении(Элемент)
Если Элементы.ОтчетыПредставление.ТекущиеДанные <> Неопределено Тогда
ТекущиеДанные = Элементы.ОтчетыПредставление.ТекущиеДанные;
КоличествоОтмеченныхФлажком = КоличествоОтмеченныхФлажком + ?(ТекущиеДанные.Пометка, 1, -1);
ИзменитьОформлениеФормы(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЖурналВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Если ВыполняетсяОтправка Тогда
Возврат;
КонецЕсли;
Если Элемент.ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
ТекущиеДанные = Элемент.ТекущиеДанные;
Если Поле.Имя = "РезультатГипессылкой" Тогда
ПоказатьРезультатПоГиперссылке(ТекущиеДанные);
ИначеЕсли Поле.Имя = "РезультатСтрокой" Тогда
Возврат;
Иначе
Если ВыполняетсяОтправкаИлиПроверка Тогда
Возврат;
КонецЕсли;
РегламентированнаяОтчетностьКлиент.ОтчетыВыбор(
ЭтотОбъект,
Элемент,
Поле,
СтандартнаяОбработка);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПоказатьРезультатПоГиперссылке(ТекущиеДанные)
Если ТекущиеДанные.ЭтоОтправка Тогда
ПоказатьРезультатОтправкиПоГиперссылке(ТекущиеДанные);
Иначе
ПоказатьРезультатПроверкиПоГиперссылке(ТекущиеДанные);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПоказатьРезультатПроверкиПоГиперссылке(ТекущиеДанные)
Данные = ТекущиеДанные.РезультатДанные;
ЭтоГрупповойРезультат = ТипЗнч(Данные) = Тип("Структура") И Данные.Свойство("ЭтоГрупповойРезультат");
Если ЭтоГрупповойРезультат Тогда
КонтекстЭДОКлиент.ПоказатьРезультатыГрупповойОнлайнПроверкиПоПараметрам(Данные);
ИначеЕсли ТипЗнч(Данные) = Тип("Структура") Тогда
РезультатПризнак = ТекущиеДанные.РезультатПризнак;
Если РезультатПризнак = ПризнакУспеха() Тогда
КонтекстЭДОКлиент.ПоказатьРезультатУспешнойОнлайнПроверкиПоПараметрам(Данные);
Иначе
КонтекстЭДОКлиент.ПоказатьРезультатОнлайнПроверкиПоПараметрам(Данные);
КонецЕсли;
ИначеЕсли ТипЗнч(Данные) = Тип("Строка") И Данные <> "" Тогда
ПоказатьПредупреждение(, Данные);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПоказатьРезультатОтправкиПоГиперссылке(ТекущиеДанные)
Ошибка = ТекущиеДанные.РезультатГипессылкой;
Если Ошибка = РезультатОтправкиПриПустойОшибке() Тогда
Текст = РезультатОтправкиПриПустойОшибке() + "." + Символы.ПС + НСтр("ru = 'Подробности см. в окне сообщений.'");
ПоказатьПредупреждение(, Текст);
Иначе
ПоказатьПредупреждение(, Ошибка);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура ПроверитьВИнтернете(Команда)
НачатьВыполнение(Команда);
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьДанные(Команда)
СброситьФлагНачалаДействия(ЭтотОбъект);
ПрерватьГрупповоеДействие = Истина;
Элементы.ОтчетыПредставление.ОтборСтрок = Неопределено;
ЗаблокироватьЭлементы(Ложь);
УстановитьПометку(Ложь);
ВсеОтчеты.Очистить();
ДлительнаяОтправкаКлиент.ОчиститьПараметрыДлительнойОтправкиКлиентСервер();
НачатьПолучениеТаблицыПриОткрытии();
КонецПроцедуры
&НаКлиенте
Процедура ПрерватьДействие(Команда)
ПрерватьГрупповоеДействие = Истина;
ПоказатьРезультатГрупповогоДействия();
КонецПроцедуры
&НаКлиенте
Процедура УстановитьФлажки(Команда)
ПоказатьДлительноеДействие(ЭтотОбъект, Истина);
ПодключитьОбработчикОжидания("Подключаемый_УстановитьФлажки", 0.1, Истина);
КонецПроцедуры
&НаКлиенте
Процедура СнятьФлажки(Команда)
ПоказатьДлительноеДействие(ЭтотОбъект, Истина);
ПодключитьОбработчикОжидания("Подключаемый_СнятьФлажки", 0.1, Истина);
КонецПроцедуры
&НаКлиенте
Процедура НачатьВыполнение(Команда)
ОчиститьСообщения();
Если НЕ ВыбранХотяБыОдин() Тогда
ПоказатьПредупреждение(,НСтр("ru = 'Не выбран ни один отчет'"));
Возврат;
КонецЕсли;
ПараметрыГрупповойОтправки = Неопределено;
ДополнительныеПараметры = Новый Структура();
ДополнительныеПараметры.Вставить("Команда", Команда);
ОписаниеОповещения = Новый ОписаниеОповещения(
"ПродолжитьВыполнениеПослеОтветаНаВопрос",
ЭтотОбъект,
ДополнительныеПараметры);
ПодтвердитьВыполнениеДействия(Команда, ОписаниеОповещения);
КонецПроцедуры
&НаКлиенте
Процедура ПодтвердитьВыполнениеДействия(Команда, ОписаниеОповещения)
ЭтоКомандаОтправить = ЭтоКомандаОтправить(Команда);
Если ЭтоКомандаОтправить Тогда
Текст = ТекстПредупрежденияОбОтправке();
Иначе
Текст = ТекстПредупрежденияОПроверке();
КонецЕсли;
Кнопки = Новый СписокЗначений;
Если ЭтоКомандаОтправить Тогда
Кнопки.Добавить(НСтр("ru = 'Продолжить'"));
Иначе
Кнопки.Добавить(НСтр("ru = 'Продолжить'"), НСтр("ru = 'Начать проверку'"));
КонецЕсли;
Кнопки.Добавить(НСтр("ru = 'Отмена'"));
ПоказатьВопрос(ОписаниеОповещения, Текст, Кнопки);
КонецПроцедуры
&НаКлиенте
Функция ЭтоКомандаОтправить(Команда)
Возврат Команда = Неопределено ИЛИ Команда.Имя = НСтр("ru = 'Отправить'");
КонецФункции
&НаКлиенте
Процедура Отправить(Команда)
НачатьВыполнение(Команда);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаКлиенте
Функция ЭтоСобытиеОтправкиИлиПроверки(ИмяСобытия)
ЭтоСобытиеОтправкиИлиПроверки = (ВыполняетсяОтправка ИЛИ ВыполняетсяПроверка)
И (ИмяСобытия = "Успешная отправка"
ИЛИ ИмяСобытия = "Неудачная отправка"
ИЛИ ИмяСобытия = "Завершить отправку без дальнейших действий"
ИЛИ ИмяСобытия = ДлительнаяОтправкаКлиентСервер.ОповещениеНеуспешнаяПроверкаВИнтернете()
ИЛИ ИмяСобытия = ДлительнаяОтправкаКлиентСервер.ОповещениеУспешнаяПроверкаВИнтернете());
Возврат ЭтоСобытиеОтправкиИлиПроверки;
КонецФункции
&НаКлиенте
Процедура ОбработатьОповещениеЗаписи(Ссылка)
Отбор = Новый Структура();
Отбор.Вставить("РегламентированныйОтчет", Ссылка);
НайденныеСтроки = ВсеОтчеты.НайтиСтроки(Отбор);
Для каждого Строка Из НайденныеСтроки Цикл
ДанныеСтроки = ДанныеСтрокиИзБазы(Строка.РегламентированныйОтчет);
ЗаполнитьЗначенияСвойств(Строка, ДанныеСтроки);
КонецЦикла;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция ПризнакОшибки()
Возврат НСтр("ru = 'Ошибка'");
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ПризнакУспеха()
Возврат НСтр("ru = 'Успех'");
КонецФункции
&НаКлиенте
Процедура ОтборКонтролирующийОрганЗавершениеВыбора(Результат, ВходящийКонтекст) Экспорт
Если Результат <> Неопределено Тогда
ПредставлениеКонтролирующегоОргана = Результат;
ОтборКонтролирующийОрганПриИзменении(Элементы.ОтборКонтролирующийОрган);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОтборСтатусЗавершениеВыбора()
УстановитьОтборТаблицыПоСтатусу();
ПоказатьДлительноеДействие(ЭтотОбъект, Ложь);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ИзменитьПредставлениеСтатусов(Форма)
СтатусМассив = Новый Массив;
Для каждого СтатусСтрока Из Форма.Статусы Цикл
Если СтатусСтрока.Пометка Тогда
СтатусМассив.Добавить(СтатусСтрока.Значение);
КонецЕсли;
КонецЦикла;
Форма.Статус = СтрСоединить(СтатусМассив, "; ");
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПроверитьПередОтправкой()
НачатьВыполнениеПроверки();
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_СнятьФлажки()
УстановитьПометку(Ложь);
ПоказатьДлительноеДействие(ЭтотОбъект, Ложь);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_УстановитьФлажки()
УстановитьПометку(Истина);
ПоказатьДлительноеДействие(ЭтотОбъект, Ложь);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОтборКонтролирующийОрганПриИзменении()
УстановитьОтборТаблицы(ЭтотОбъект, Новый Структура("ПредставлениеГосОргана", ПредставлениеКонтролирующегоОргана));
ПоказатьДлительноеДействие(ЭтотОбъект, Ложь);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОтборПериодНачалоВыбора()
УстановитьОтборТаблицыПоПериоду(ЭтотОбъект);
ПоказатьДлительноеДействие(ЭтотОбъект, Ложь);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОтборВидОтчетаПриИзменении()
УстановитьОтборТаблицы(ЭтотОбъект, Новый Структура("НаименованиеОтчета", ВидОтчета));
ПоказатьДлительноеДействие(ЭтотОбъект, Ложь);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОтборОрганизацияОтчетаПриИзменении()
УстановитьОтборТаблицы(ЭтотОбъект, Новый Структура("Организация", Организация));
ПоказатьДлительноеДействие(ЭтотОбъект, Ложь);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура СформироватьСписокВыбораСтатусов(Форма)
Статусы = Форма.Статусы;
ПредыдущиеСтатусы = Статусы.Скопировать();
МассивЗначений = АктуализироватьСписокЗначений("СтатусДляОтбора");
МассивЗначений.Добавить(ИмяСостоянияНеОтправленных());
Статусы.ЗагрузитьЗначения(МассивЗначений);
Статусы.СортироватьПоЗначению();
Для каждого ПредыдущийСтатус Из ПредыдущиеСтатусы Цикл
Для каждого НовыйСтатус Из Статусы Цикл
Если ПредыдущийСтатус.Значение = НовыйСтатус.Значение Тогда
НовыйСтатус.Пометка = ПредыдущийСтатус.Пометка;
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Функция ВсеОрганы()
ВсеОрганы = АктуализироватьСписокЗначений("ПредставлениеГосОргана");
Возврат ВсеОрганы;
КонецФункции
&НаКлиенте
Процедура УстановитьОтборТаблицыПоСтатусу()
ЗаполнитьИсходныйСтатусНовымСтатусом();
ОтметитьСтрокиСПодходящимСтатусом(ЭтотОбъект);
УстановитьОтборТаблицы(ЭтотОбъект, Новый Структура("СтатусДляОтбораБулево", Истина));
ИзменитьПредставлениеСтатусов(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьИсходныйСтатусНовымСтатусом()
Для каждого Строка Из ВсеОтчеты Цикл
Строка.СтатусДляОтбораИсходный = Строка.СтатусДляОтбора;
Строка.СтатусДляОтбораИсходныйБулево = Строка.СтатусДляОтбораИсходныйБулево;
КонецЦикла;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция ДанныеФормыКоллекция(Форма)
Таблица = Форма.ВсеОтчеты;
Возврат Таблица;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Процедура ОтметитьСтрокиСПодходящимСтатусом(Форма)
НеОтправлено = ИмяСостоянияНеОтправленных();
БезОтбораПоСтатусам = ПоказыватьСтрокиСоВсемиСтатусами(Форма);
Если БезОтбораПоСтатусам Тогда
Для каждого Строка Из Форма.ВсеОтчеты Цикл
Строка.СтатусДляОтбораБулево = Истина;
Строка.СтатусДляОтбораИсходныйБулево = Истина;
КонецЦикла;
Иначе
ВыбранныеСтатусы = Новый Массив;
Для каждого СтрокаСтатуса Из Форма.Статусы Цикл
Если СтрокаСтатуса.Пометка Тогда
ВыбранныеСтатусы.Добавить(СтрокаСтатуса.Значение);
КонецЕсли;
КонецЦикла;
Для каждого Строка Из Форма.ВсеОтчеты Цикл
Строка.СтатусДляОтбораБулево = Ложь;
Строка.СтатусДляОтбораИсходныйБулево = Ложь;
КонецЦикла;
Для каждого ТекущийСтатус Из ВыбранныеСтатусы Цикл
Отбор = Новый Структура();
Если ТекущийСтатус = НеОтправлено Тогда
Отбор.Вставить("Пометка", Истина);
Иначе
Отбор.Вставить("СтатусДляОтбораИсходный", ТекущийСтатус);
КонецЕсли;
Отбор.Вставить("СтатусДляОтбораБулево", Ложь);
Отбор.Вставить("СтатусДляОтбораИсходныйБулево", Ложь);
НайденныеСтроки = Форма.ВсеОтчеты.НайтиСтроки(Отбор);
Если ТекущийСтатус = НеОтправлено Тогда
Для каждого НайденнаяСтрока Из НайденныеСтроки Цикл
НайденнаяСтрока.СтатусДляОтбораБулево = Истина;
НайденнаяСтрока.СтатусДляОтбораИсходныйБулево = Истина;
КонецЦикла;
Иначе
Для каждого НайденнаяСтрока Из НайденныеСтроки Цикл
НайденнаяСтрока.СтатусДляОтбораБулево = Истина;
НайденнаяСтрока.СтатусДляОтбораИсходныйБулево = Истина;
КонецЦикла;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция ПоказыватьСтрокиСоВсемиСтатусами(Форма)
ПоказыватьСтрокиСоВсемиСтатусами = Истина;
Для каждого СтрокаСтатуса Из Форма.Статусы Цикл
Если СтрокаСтатуса.Пометка Тогда
ПоказыватьСтрокиСоВсемиСтатусами = Ложь;
Прервать;
КонецЕсли;
КонецЦикла;
Возврат ПоказыватьСтрокиСоВсемиСтатусами;
КонецФункции
&НаКлиенте
Функция ТекстПредупрежденияОбОтправке()
Текст = НСтр("ru = 'Сейчас начнется отправка отчетов.
|В процессе отправки могут быть запрошены пароли от закрытых ключей.'");
Возврат Текст;
КонецФункции
&НаКлиенте
Функция ТекстПредупрежденияОПроверке()
Текст = НСтр("ru = 'Сейчас начнется проверка отчетов на специальном сервисе в Интернете.
|
|Если отчеты содержат персональные сведения физ. лиц, убедитесь, что получено согласие на передачу этих данных.'");
Возврат Текст;
КонецФункции
&НаКлиенте
Процедура НачатьВыполнениеОсновногоДействия(Команда = Неопределено) Экспорт
Если ЭтоКомандаОтправить(Команда) Тогда
ВыполняетсяОтправка = Истина;
ВыполняетсяПроверка = Ложь;
Иначе
ВыполняетсяОтправка = Ложь;
ВыполняетсяПроверка = Истина;
КонецЕсли;
ВыполняетсяОтправкаИлиПроверка = Истина;
ПрерватьГрупповоеДействие = Ложь;
ИзменитьОформлениеФормыПриСтарте();
ПодключитьОбработчикОжидания("Подключаемый_НачатьВыполнениеОсновногоДействия", 0.1, Истина);
КонецПроцедуры
&НаКлиенте
Процедура ЗаблокироватьЭлементы(Заблокировать)
Элементы.ГруппаОтборы.Доступность = НЕ Заблокировать;
Элементы.КнопкиОсновные.Доступность = НЕ Заблокировать;
Элементы.ЖурналГруппаФлажки.Доступность = НЕ Заблокировать;
Элементы.ЖурналГруппаПереместить.Доступность = НЕ Заблокировать;
Элементы.ЖурналГруппаСортировка.Доступность = НЕ Заблокировать;
КонецПроцедуры
&НаКлиенте
Процедура ПродолжитьВыполнениеПослеОтветаНаВопрос(Ответ, ВходящийКонтекст) Экспорт
Если Ответ <> НСтр("ru = 'Продолжить'") Тогда
Возврат;
КонецЕсли;
Команда = ВходящийКонтекст.Команда;
Если ЭтоКомандаОтправить(Команда) Тогда
Если ЕстьОтчетыСПАРК(ЭтотОбъект) Тогда
СпроситьПроСПАРК();
Иначе
ПоказатьДлительноеДействие(ЭтотОбъект, Истина);
ПодключитьОбработчикОжидания("Подключаемый_ПроверитьПередОтправкой", 0.1, Истина);
КонецЕсли;
Иначе
НачатьВыполнениеОсновногоДействия(Команда);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СпроситьПроСПАРК()
ОписаниеОповещения = Новый ОписаниеОповещения(
"ПродолжитьВыполнениеПослеОтветаНаВопросПроСПАРК",
ЭтотОбъект);
Текст = НСтр("ru = 'Среди выбранных отчетов есть бухгалтерская отчетность, копию которой можно опубликовать в крупнейшей информационной системе СПАРК.
|Опубликовать?'");
ПоказатьВопрос(ОписаниеОповещения, Текст, РежимДиалогаВопрос.ДаНетОтмена);
КонецПроцедуры
&НаКлиенте
Процедура ПродолжитьВыполнениеПослеОтветаНаВопросПроСПАРК(Ответ, ВходящийКонтекст) Экспорт
Если Ответ = КодВозвратаДиалога.Отмена Тогда
Возврат;
КонецЕсли;
ОтправлятьОтчетыВСПАРК = Ответ = КодВозвратаДиалога.Да;
ПоказатьДлительноеДействие(ЭтотОбъект, Истина);
ПодключитьОбработчикОжидания("Подключаемый_ПроверитьПередОтправкой", 0.1, Истина);
КонецПроцедуры
&НаКлиенте
Процедура ИзменитьОформлениеФормыПриСтарте()
ЗаблокироватьЭлементы(Истина);
АктивизироватьСтраницу(Элементы.СтраницыШапки, Элементы.СтраницаОсновногоДействия);
ИзменитьОформлениеФормы(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура НачатьВыполнениеПроверки()
РезультатПроверкиНаСервере = ВыполнитьПредварительнуюПроверку();
ВыполнитьОсновнуюПроверку(Неопределено, РезультатПроверкиНаСервере);
КонецПроцедуры
&НаКлиенте
Процедура ВыполнитьОсновнуюПроверку(Результат = Неопределено, ВходящийКонтекст = Неопределено) Экспорт
Если ВходящийКонтекст.ТекущийНомер = ВходящийКонтекст.Организации.Количество() Тогда
ПоказатьРезультатПроверки(ВходящийКонтекст);
Иначе
ВыполнитьПроверкуОднойОрганизации(ВходящийКонтекст);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПоказатьРезультатПроверки(ВходящийКонтекст) Экспорт
ПоказатьДлительноеДействие(ЭтотОбъект, Ложь);
Если ВходящийКонтекст.Ошибки.Количество() > 0 Тогда
ОткрытьФорму(
КонтекстЭДОКлиент.ПутьКОбъекту + ".Форма.ГрупповаяОтправка_ОшибкиПроверки",
ВходящийКонтекст);
Иначе
НачатьВыполнениеОсновногоДействия();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВыполнитьПроверкуОднойОрганизации(ВходящийКонтекст)
ОписаниеОповещения = Новый ОписаниеОповещения(
"ВыполнитьПроверкуОдного_Завершение",
ЭтотОбъект,
ВходящийКонтекст);
ТекущаяОрганизация = ВходящийКонтекст.Организации[ВходящийКонтекст.ТекущийНомер];
КонтекстЭДОКлиент.ПроверитьСертификатИЛицензию(
ОписаниеОповещения,
Неопределено,
ТекущаяОрганизация,
,
Истина);
КонецПроцедуры
&НаКлиенте
Процедура ВыполнитьПроверкуОдного_Завершение(Результат, ВходящийКонтекст) Экспорт
ТекущаяОрганизация = ВходящийКонтекст.Организации[ВходящийКонтекст.ТекущийНомер];
Ошибки = ВходящийКонтекст.Ошибки;
Если ТипЗнч(Результат) = Тип("Структура") Тогда
СертификатНедействителенНетПросроченности = Результат.СертификатНедействителен И НЕ Результат.СертификатПросрочен;
Если СертификатНедействителенНетПросроченности Тогда
ТекстОшибки = ДлительнаяОтправкаКлиентСервер.СообщениеСертификатНедействителен();
ДобавитьОшибку(Ошибки, ТекущаяОрганизация, ТекстОшибки);
ИначеЕсли Результат.ЛицензияПросрочена И Результат.СертификатПросрочен Тогда
ТекстОшибки = ДлительнаяОтправкаКлиентСервер.СообщениеИстекСертификатИЛицензия();
ДобавитьОшибку(Ошибки, ТекущаяОрганизация, ТекстОшибки);
ИначеЕсли Результат.ЛицензияПросрочена Тогда
ТекстОшибки = ДлительнаяОтправкаКлиентСервер.СообщениеИстеклаЛицензия();
ДобавитьОшибку(Ошибки, ТекущаяОрганизация, ТекстОшибки);
ИначеЕсли Результат.СертификатПросрочен Тогда
ТекстОшибки = ДлительнаяОтправкаКлиентСервер.СообщениеИстекСертификат();
ДобавитьОшибку(Ошибки, ТекущаяОрганизация, ТекстОшибки);
КонецЕсли;
КонецЕсли;
ВходящийКонтекст.ТекущийНомер = ВходящийКонтекст.ТекущийНомер + 1;
ВходящийКонтекст.Ошибки = Ошибки;
ВыполнитьОсновнуюПроверку(Неопределено, ВходящийКонтекст);
КонецПроцедуры
&НаКлиенте
Процедура ДобавитьОрганКОрганизации(ОрганизацииОрганы, Строка)
Если ОрганизацииОрганы.Получить(Строка.Организация) = Неопределено Тогда
ГосОрганы = Новый Массив;
Иначе
ГосОрганы = ОрганизацииОрганы[Строка.Организация];
КонецЕсли;
Если ГосОрганы.Найти(Строка.ВидКонтролирующегоОргана) = Неопределено Тогда
ГосОрганы.Добавить(Строка.ВидКонтролирующегоОргана);
КонецЕсли;
ОрганизацииОрганы[Строка.Организация] = ГосОрганы;
КонецПроцедуры
&НаКлиенте
Функция ВыполнитьПредварительнуюПроверку()
ОрганизацииОрганы = Новый Соответствие;
Организации = Новый Массив;
ВыбраныеСтроки = ВыбраныеСтроки(ЭтотОбъект);
Для каждого Строка Из ВыбраныеСтроки Цикл
Если Организации.Найти(Строка.Организация) = Неопределено Тогда
Организации.Добавить(Строка.Организация);
КонецЕсли;
ДобавитьОрганКОрганизации(ОрганизацииОрганы, Строка);
КонецЦикла;
ДополнительныеПараметры = Новый Структура();
ДополнительныеПараметры.Вставить("ОрганизацииОрганы", ОрганизацииОрганы);
ДополнительныеПараметры.Вставить("Организации", Организации);
ДополнительныеПараметры.Вставить("ТекущийНомер", 0);
ДополнительныеПараметры.Вставить("Ошибки", Новый Массив);
ВыполнитьПредварительнуюПроверкуНаСервере(ДополнительныеПараметры);
Возврат ДополнительныеПараметры;
КонецФункции
&НаСервереБезКонтекста
Процедура ВыполнитьПредварительнуюПроверкуНаСервере(ВходящийКонтекст)
КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
ОрганизацииОрганы = ВходящийКонтекст.ОрганизацииОрганы;
Ошибки = ВходящийКонтекст.Ошибки;
ПроверенныеОрганизации = Новый Массив;
Для каждого ОрганизацияОрганы Из ОрганизацииОрганы Цикл
Органы = ОрганизацияОрганы.Значение;
ТекущаяОрганизация = ОрганизацияОрганы.Ключ;
Для каждого ВидОргана Из Органы Цикл
ПроверитьЧтоЕстьУчетка(
КонтекстЭДОСервер,
ТекущаяОрганизация,
ВидОргана,
ПроверенныеОрганизации,
Ошибки);
КонецЦикла;
КонецЦикла;
ВходящийКонтекст.Ошибки = Ошибки;
ВходящийКонтекст.Удалить("ОрганизацииОрганы");
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПроверитьЧтоЕстьУчетка(КонтекстЭДОСервер, ТекущаяОрганизация, ВидОргана, ПроверенныеОрганизации, Ошибки)
Если (ВидОргана = Перечисления.ТипыКонтролирующихОрганов.ФНС
ИЛИ ВидОргана = Перечисления.ТипыКонтролирующихОрганов.ПФР
ИЛИ ВидОргана = Перечисления.ТипыКонтролирующихОрганов.ФСГС) Тогда
Если ПроверенныеОрганизации.Найти(ТекущаяОрганизация) = Неопределено Тогда
ПроверенныеОрганизации.Добавить(ТекущаяОрганизация);
УчетнаяЗапись = КонтекстЭДОСервер.УчетнаяЗаписьОрганизации(ТекущаяОрганизация);
Если НЕ ЗначениеЗаполнено(УчетнаяЗапись) Тогда
Ошибка = ДлительнаяОтправкаКлиентСервер.СообщениеНетУчетнойЗаписи();
ДобавитьОшибку(Ошибки, ТекущаяОрганизация, Ошибка);
КонецЕсли;
КонецЕсли;
Иначе
Подключен = ИнтерфейсыВзаимодействияБРО.ПодключенДокументооборотСКонтролирующимОрганом(ТекущаяОрганизация, ВидОргана, Истина);
Если НЕ Подключен Тогда
Ошибка = ДлительнаяОтправкаКлиентСервер.СообщениеНаправлениеНеПодключено() + " " + Строка(ВидОргана);
ДобавитьОшибку(Ошибки, ТекущаяОрганизация, Ошибка);
КонецЕсли;
КонецЕсли;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Процедура ДобавитьОшибку(Ошибки, ТекущаяОрганизация, Ошибка)
ДополнительныеПараметры = Новый Структура();
ДополнительныеПараметры.Вставить("ОписаниеОшибки", Ошибка);
ДополнительныеПараметры.Вставить("Организация", ТекущаяОрганизация);
Если Ошибки.Найти(ДополнительныеПараметры) = Неопределено Тогда
Ошибки.Добавить(ДополнительныеПараметры);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Функция ОшибкиДлительногоДействияСтрокой(Параметр)
Ошибки = ДлительнаяОтправкаКлиент.ОшибкиКлиентСервер();
ОшибкиСтрокой = "";
Если ТипЗнч(Ошибки) = Тип("ФиксированныйМассив") Тогда
Для каждого Ошибка Из Ошибки Цикл
ОшибкиСтрокой = ОшибкиСтрокой + Символы.ПС + Символы.ПС + Ошибка.ОписаниеОшибки;
КонецЦикла;
КонецЕсли;
ОшибкиСтрокой = СокрЛП(ОшибкиСтрокой);
Если ЗначениеЗаполнено(Параметр) и ТипЗнч(Параметр) = Тип("Строка") Тогда
ОшибкиСтрокой = СокрЛП(ОшибкиСтрокой + Символы.ПС + Параметр);
КонецЕсли;
Возврат ОшибкиСтрокой;
КонецФункции
&НаКлиенте
Процедура ОтборПериодНачалоВыбора_Завершение(РезультатВыбора, ДопПараметры) Экспорт
Если РезультатВыбора = Неопределено Тогда
Возврат;
КонецЕсли;
ЗаполнитьЗначенияСвойств(ЭтотОбъект, РезультатВыбора);
ПоказатьДлительноеДействие(ЭтотОбъект, Истина);
ПодключитьОбработчикОжидания("Подключаемый_ОтборПериодНачалоВыбора", 0.1, Истина);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ОтметитьСтрокиСПодходящимПериодом(Форма)
НачалоПериода = Форма.НачалоПериода;
КонецПериода = Форма.КонецПериода;
Для каждого Строка Из Форма.ВсеОтчеты Цикл
Если НЕ ЗначениеЗаполнено(НачалоПериода) И НЕ ЗначениеЗаполнено(КонецПериода) Тогда
Строка.ПериодДляОтбораБулево = Истина;
Иначе
ПопадаетВОтбор = НачалоПериода <= Строка.ДатаНачала И Строка.ДатаОкончания <= КонецПериода;
Если ПопадаетВОтбор Тогда
Строка.ПериодДляОтбораБулево = Истина;
Иначе
Строка.ПериодДляОтбораБулево = Ложь;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьОтборТаблицыПоПериоду(Форма)
ОтметитьСтрокиСПодходящимПериодом(Форма);
УстановитьОтборТаблицы(Форма, Новый Структура("ПериодДляОтбораБулево", Истина));
КонецПроцедуры
&НаКлиенте
Процедура ПерейтиКОтправкеСледующегоОтчета()
Если НомерТекущегоОтчета + 1 = ПараметрыГрупповойОтправки.НомерОтчета Тогда
Возврат;
ИначеЕсли ПараметрыГрупповойОтправки = Неопределено Тогда
СброситьФлагНачалаДействия(ЭтотОбъект);
Возврат;
Иначе
НомерОтчета = ПараметрыГрупповойОтправки.НомерОтчета;
НомерОтчета = НомерОтчета + 1;
ПараметрыГрупповойОтправки.НомерОтчета = НомерОтчета;
ОбработатьСледующийОтчет();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Функция РезультатОтправкиПриПустойОшибке()
Если ВыполняетсяОтправка Тогда
Возврат РезультатОтправкиПриПустойОтправке();
Иначе
Возврат РезультатОтправкиПриПустойПроверке();
КонецЕсли;
КонецФункции
&НаКлиенте
Функция РезультатОтправкиПриПустойОтправке()
Возврат НСтр("ru = 'Отчет не отправлен'");
КонецФункции
&НаКлиенте
Функция РезультатОтправкиПриПустойПроверке()
Возврат НСтр("ru = 'Отчет не проверен'");
КонецФункции
&НаКлиенте
Функция РезультатОтправкиПриУспехе()
Возврат НСтр("ru = 'Отправлено'");
КонецФункции
&НаКлиенте
Процедура ИнкрементироватьРезультат(Успех)
Если ПараметрыГрупповойОтправки = Неопределено Тогда
Возврат;
КонецЕсли;
Если Успех Тогда
УспешноОбработанныхОтчетов = ПараметрыГрупповойОтправки.УспешноОбработанныхОтчетов + 1;
ПараметрыГрупповойОтправки.Вставить("УспешноОбработанныхОтчетов", УспешноОбработанныхОтчетов);
Иначе
НеуспешноОбработанныхОтчетов = ПараметрыГрупповойОтправки.НеуспешноОбработанныхОтчетов + 1;
ПараметрыГрупповойОтправки.Вставить("НеуспешноОбработанныхОтчетов", НеуспешноОбработанныхОтчетов);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗаписатьРезультатДействияВТаблицу(ИмяСобытия, Параметр)
ИдентификаторТекущейСтроки = ПараметрыГрупповойОтправки.ОбрабатываемыеСтроки[НомерТекущегоОтчета];
ТекущиеДанные = ВсеОтчеты.НайтиПоИдентификатору(ИдентификаторТекущейСтроки);
Если ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
ОбновитьДанныеТекущейСтроки(ТекущиеДанные);
Если ТекущиеДанные.ЭтоОтправка Тогда
ЗаписатьРезультатОтправкиВТаблицу(ТекущиеДанные, ИмяСобытия, Параметр);
Иначе
ЗаписатьРезультатПроверкиВТаблицу(ТекущиеДанные, ИмяСобытия, Параметр);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗаписатьРезультатОтправкиВТаблицу(ТекущиеДанные, ИмяСобытия, Параметр)
Если ИмяСобытия = "Успешная отправка" Тогда
ИнкрементироватьРезультат(Истина);
ТекущиеДанные.РезультатСтрокой = РезультатОтправкиПриУспехе();
ТекущиеДанные.Пометка = Ложь;
ТекущиеДанные.РезультатПризнак = ПризнакУспеха();
ИначеЕсли ИмяСобытия = "Неудачная отправка" Тогда
ИнкрементироватьРезультат(Ложь);
ТекущиеДанные.РезультатСтрокой = "";
ТекущиеДанные.РезультатПризнак = ПризнакОшибки();
Если ЗначениеЗаполнено(Параметр) Тогда
ТекущиеДанные.РезультатГипессылкой = Параметр;
ИначеЕсли НЕ ЗначениеЗаполнено(ТекущиеДанные.РезультатГипессылкой) Тогда
ТекущиеДанные.РезультатГипессылкой = РезультатОтправкиПриПустойОшибке();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗаписатьРезультатПроверкиВТаблицу(ТекущиеДанные, ИмяСобытия, Параметр)
ЭтоОшибкаПроверки = ИмяСобытия = ДлительнаяОтправкаКлиентСервер.ОповещениеНеуспешнаяПроверкаВИнтернете();
Если ЭтоОшибкаПроверки Тогда
ИнкрементироватьРезультат(Ложь);
ТекущиеДанные.РезультатСтрокой = "";
ОбнаруженыОшибки = ДлительнаяОтправкаКлиентСервер.СообщениеОбнаруженыОшибки();
ЭтоСтрока = ЗначениеЗаполнено(Параметр) И ТипЗнч(Параметр) = Тип("Строка");
ЭтоСтруктура = ЗначениеЗаполнено(Параметр) И ТипЗнч(Параметр) = Тип("Структура");
Если ЭтоСтрока Тогда
ТекущиеДанные.РезультатСтрокой = Параметр;
ИначеЕсли ЭтоСтруктура Тогда
ТекущиеДанные.РезультатГипессылкой = ОбнаруженыОшибки;
ТекущиеДанные.РезультатДанные = Параметр;
Иначе
ТекущиеДанные.РезультатСтрокой = РезультатОтправкиПриПустойОшибке();
КонецЕсли;
ТекущиеДанные.РезультатПризнак = ПризнакОшибки();
ИначеЕсли ИмяСобытия = ДлительнаяОтправкаКлиентСервер.ОповещениеУспешнаяПроверкаВИнтернете() Тогда
ИнкрементироватьРезультат(Истина);
ОшибокНеОбнаружено = ДлительнаяОтправкаКлиентСервер.СообщениеОшибокНеОбнаружено();
ТекущиеДанные.РезультатСтрокой = "";
ТекущиеДанные.Пометка = Ложь;
Если ЗначениеЗаполнено(Параметр) Тогда
ТекущиеДанные.РезультатГипессылкой = ОшибокНеОбнаружено;
Иначе
ТекущиеДанные.РезультатСтрокой = ОшибокНеОбнаружено;
КонецЕсли;
ТекущиеДанные.РезультатПризнак = ПризнакУспеха();
ТекущиеДанные.РезультатДанные = Параметр;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьДанныеТекущейСтроки(ТекущиеДанные)
ДанныеСтроки = ДанныеСтрокиИзБазы(ДанныеТекущегоОтчета.РегламентированныйОтчет);
Если ДанныеСтроки <> Неопределено Тогда
Элементы.ОтчетыПредставление.ТекущаяСтрока = ДанныеТекущегоОтчета.Идентификатор;
Если ТекущиеДанные <> Неопределено Тогда
ЗаполнитьЗначенияСвойств(ТекущиеДанные, ДанныеСтроки);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ИзменитьОформлениеСтраницыОтправка(Форма)
ИзменитьОформлениеБубликаОтправки(Форма);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ИзменитьОформлениеБубликаОтправки(Форма)
Элементы = Форма.Элементы;
ПараметрыГрупповойОтправки = Форма.ПараметрыГрупповойОтправки;
Если ПараметрыГрупповойОтправки = Неопределено Тогда
Если Форма.ВыполняетсяОтправка Тогда
Элементы.Состояние.Заголовок = НСтр("ru = 'Выполняется подготовка к отправке отчетов.'");
Иначе
Элементы.Состояние.Заголовок = НСтр("ru = 'Выполняется подготовка к проверке отчетов.'");
КонецЕсли;
Иначе
Подстрока1 = ПодстрокаВремяСтарта(Форма);
Подстрока2 = ПодстрокаСостояниеДействия(Форма);
Подстрока3 = ПодстрокаСколькоНеВыполнено(Форма);
Элементы.Состояние.Заголовок = Новый ФорматированнаяСтрока(
Подстрока1,
Символы.ПС,
Подстрока2,
Символы.ПС,
Подстрока3);
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция ПодстрокаВремяСтарта(Форма)
ПараметрыГрупповойОтправки = Форма.ПараметрыГрупповойОтправки;
ВремяНачалаОтправки = ПараметрыГрупповойОтправки.ВремяНачалаОтправки;
Если Форма.ВыполняетсяОтправка Тогда
Текст = СтрШаблон(НСтр("ru = 'Отправка отчетов запущена в %1.'"), Формат(ВремяНачалаОтправки, "ДФ=HH:mm"));
Иначе
Текст = СтрШаблон(НСтр("ru = 'Проверка отчетов запущена в %1.'"), Формат(ВремяНачалаОтправки, "ДФ=HH:mm"));
КонецЕсли;
Возврат Текст;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ПодстрокаСостояниеДействия(Форма)
ПараметрыГрупповойОтправки = Форма.ПараметрыГрупповойОтправки;
НомерОтчета = Строка(ПараметрыГрупповойОтправки.НомерОтчета + 1);
Всего = Строка(ПараметрыГрупповойОтправки.Всего);
Если Форма.ВыполняетсяОтправка Тогда
Подстрока1 = НСтр("ru = 'Отправляется отчет '");
Иначе
Подстрока1 = НСтр("ru = 'Проверяется отчет '");
КонецЕсли;
Подстрока2 = Новый ФорматированнаяСтрока(НомерОтчета, Новый Шрифт( , , Истина));
Подстрока3 = НСтр("ru = ' из '");
Подстрока4 = Новый ФорматированнаяСтрока(Всего, Новый Шрифт( , , Истина));
ИтоговаяПодстрока = Новый ФорматированнаяСтрока(Подстрока1, Подстрока2, Подстрока3, Подстрока4, ".");
Возврат ИтоговаяПодстрока;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ПодстрокаСколькоНеВыполнено(Форма)
ПараметрыГрупповойОтправки = Форма.ПараметрыГрупповойОтправки;
НеуспешноОбработанныхОтчетов = ПараметрыГрупповойОтправки.НеуспешноОбработанныхОтчетов;
Если НеуспешноОбработанныхОтчетов = 0 ИЛИ Форма.ВыполняетсяПроверка Тогда
ИтоговаяПодстрока = "";
Иначе
НеуспешноОбработанныхОтчетов = Строка(НеуспешноОбработанныхОтчетов);
Подстрока1 = Новый ФорматированнаяСтрока(НеуспешноОбработанныхОтчетов, Новый Шрифт( , , Истина));
Подстрока2 = ДлительнаяОтправкаКлиентСервер.ПредметИсчисленияБезЧисла(
НеуспешноОбработанныхОтчетов,
НСтр("ru = 'отчет'"),
НСтр("ru = 'отчета'"),
НСтр("ru = 'отчетов'"),
"м");
Подстрока3 = НСтр("ru = 'отправить не удалось.'");
ИтоговаяПодстрока = Новый ФорматированнаяСтрока(Подстрока1, " ", Подстрока2, " ", Подстрока3);
КонецЕсли;
Возврат ИтоговаяПодстрока;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Процедура ИзменитьОформлениеСтраницыОтборы(Форма)
ИзменитьОформлениеСчетчика(Форма);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ИзменитьОформлениеФормы(Форма)
ИзменитьОформлениеСтраницыОтборы(Форма);
ИзменитьОформлениеСтраницыОтправка(Форма);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ИзменитьОформлениеСчетчика(Форма)
Подстрока1 = НСтр("ru = 'Выберите отчеты к отправке, используя отборы и флажки.'");
Подстрока1_1 = Новый ФорматированнаяСтрока(Символы.ПС, Новый Шрифт( , 4));
Подстрока2 = НСтр("ru = 'Выбрано: '");
Подстрока3 = Новый ФорматированнаяСтрока(Формат(Форма.КоличествоОтмеченныхФлажком, "ЧН=0; ЧГ=3,0"), Новый Шрифт( , , Истина));
Подстрока4 = НСтр("ru = ' из '");
Подстрока5 = Новый ФорматированнаяСтрока(Формат(Форма.ВсеОтчеты.Количество(), "ЧН=0; ЧГ=3,0"), Новый Шрифт( , , Истина));
Форма.Счетчик = Новый ФорматированнаяСтрока(
Подстрока1,
Символы.ПС,
Подстрока1_1,
Подстрока2,
Подстрока3,
Подстрока4,
Подстрока5);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_НачатьВыполнениеОсновногоДействия()
ВыполнитьПодготовкуКНачалуГрупповогоДействия();
ИзменитьОформлениеФормы(ЭтотОбъект);
ОбработатьСледующийОтчет();
КонецПроцедуры
&НаКлиенте
Процедура ВыполнитьПодготовкуКНачалуГрупповогоДействия()
ОповещениеОЗавершенииДействия = Новый ОписаниеОповещения(
"ПриЗавершенииГрупповогоДействия",
ЭтотОбъект);
Если ВыполняетсяОтправка Тогда
ЗаполнитьИсходныйСтатусНовымСтатусом();
КонецЕсли;
ИнициализироватьПараметрыГрупповойОтправки();
ЗалогироватьДлительнуюОперацию(ПараметрыГрупповойОтправки, Истина, ВыполняетсяОтправка, ВыполняетсяПроверка);
КонецПроцедуры
&НаКлиенте
Функция ПодготовитьОбрабатываемыеДанные()
РезультатыАвтонастройкиВременное = Новый Соответствие;
Идентификаторы = Новый Массив;
ВыбранныеОтчеты = ВыбраныеСтроки(ЭтотОбъект);
Для каждого ВыбранныйОтчет Из ВыбранныеОтчеты Цикл
ВыбранныйОтчет.РезультатСтрокой = "";
ВыбранныйОтчет.РезультатГипессылкой = "";
ВыбранныйОтчет.РезультатПризнак = "";
ВыбранныйОтчет.РезультатДанные = "";
ВыбранныйОтчет.ЭтоОтправка = ВыполняетсяОтправка;
ВыбранныйОтчет.ЭтоПроверка = ВыполняетсяПроверка;
Идентификаторы.Добавить(ВыбранныйОтчет.ПолучитьИдентификатор());
Если ВыбранныйОтчет.ВидОбменаСКонтролирующимиОрганами = ВУниверсальномФормате
И ЗначениеЗаполнено(ВыбранныйОтчет.УчетнаяЗаписьОбмена) Тогда
РезультатыАвтонастройкиВременное.Вставить(ВыбранныйОтчет.Организация, ВыбранныйОтчет.УчетнаяЗаписьОбмена);
КонецЕсли;
КонецЦикла;
Если РезультатыАвтонастройки = Неопределено Тогда
РезультатыАвтонастройки = Новый Соответствие;
КонецЕсли;
РезультатыАвтонастройки = ШаблонРезультатовАвтонастройки(РезультатыАвтонастройкиВременное, РезультатыАвтонастройки);
Возврат Идентификаторы;
КонецФункции
&НаСервереБезКонтекста
Функция ШаблонРезультатовАвтонастройки(РезультатыАвтонастройкиВременное, РезультатыАвтонастройки)
Для каждого Строка Из РезультатыАвтонастройкиВременное Цикл
УчетнаяЗаписьОбмена = Строка.Значение;
ВУниверсальномФормате = ЭлектронныйДокументооборотСКонтролирующимиОрганамиВызовСервера.ПолучитьПараметрСпецоператора(
УчетнаяЗаписьОбмена.СпецоператорСвязи,
"ОнлайнПроверкаПризнак");
Если ЗначениеЗаполнено(ВУниверсальномФормате) Тогда
ВУниверсальномФормате = Булево(ВУниверсальномФормате);
Иначе
ВУниверсальномФормате = Ложь;
КонецЕсли;
ЕстьРезультатДляОрганизации = РезультатыАвтонастройки.Получить(Строка.Ключ) <> Неопределено;
Если ВУниверсальномФормате И НЕ ЕстьРезультатДляОрганизации Тогда
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("УчетнаяЗаписьОбмена", УчетнаяЗаписьОбмена);
ДополнительныеПараметры.Вставить("РезультатАвтонастройки", Неопределено);
РезультатыАвтонастройки.Вставить(Строка.Ключ, ДополнительныеПараметры);
КонецЕсли;
КонецЦикла;
Возврат РезультатыАвтонастройки;
КонецФункции
&НаКлиенте
Процедура ИнициализироватьПараметрыГрупповойОтправки()
Если ВыполняетсяОтправка Тогда
Элементы.ПрерватьДействие.Заголовок = НСтр("ru = 'Прервать отправку'");
Иначе
Элементы.ПрерватьДействие.Заголовок = НСтр("ru = 'Прервать проверку'");
КонецЕсли;
Идентификаторы = ПодготовитьОбрабатываемыеДанные();
ПараметрыГрупповойОтправки = Новый Структура;
ПараметрыГрупповойОтправки.Вставить("ИД", Новый УникальныйИдентификатор);
ПараметрыГрупповойОтправки.Вставить("НомерОтчета", 0);
ПараметрыГрупповойОтправки.Вставить("ОбрабатываемыеСтроки", Идентификаторы);
ПараметрыГрупповойОтправки.Вставить("Всего", Идентификаторы.Количество());
ПараметрыГрупповойОтправки.Вставить("УспешноОбработанныхОтчетов", 0);
ПараметрыГрупповойОтправки.Вставить("НеуспешноОбработанныхОтчетов", 0);
ПараметрыГрупповойОтправки.Вставить("ВремяНачалаОтправки", ТекущаяДата());
ПараметрыГрупповойОтправки.Вставить("ВремяНачалаОтправкиВМиллисекундах", ТекущаяУниверсальнаяДатаВМиллисекундах());
ПараметрыГрупповойОтправки.Вставить("ВремяЗавершенияОтправки", ТекущаяДата());
ПараметрыГрупповойОтправки.Вставить("ВремяЗавершенияОтправкиВМиллисекундах", ТекущаяУниверсальнаяДатаВМиллисекундах());
ПараметрыГрупповойОтправки.Вставить("Длительность", 0);
КонецПроцедуры
&НаКлиенте
Процедура ПриЗавершенииГрупповогоДействия(Результат, ВходящийКонтекст) Экспорт
Если ТипЗнч(Результат) <> Тип("Структура")
И ТипЗнч(Результат) <> Тип("Строка") Тогда
Возврат;
КонецЕсли;
Если ПараметрыГрупповойОтправки = Неопределено Тогда
СброситьФлагНачалаДействия(ЭтотОбъект);
Возврат;
КонецЕсли;
ЭтоПроверка =
Результат = ДлительнаяОтправкаКлиентСервер.ОповещениеНеуспешнаяПроверкаВИнтернете()
ИЛИ Результат = ДлительнаяОтправкаКлиентСервер.ОповещениеУспешнаяПроверкаВИнтернете();
Если ЭтоПроверка Тогда
ИмяСобытия = Результат;
Параметр = ВходящийКонтекст;
ИначеЕсли ТипЗнч(Результат) = Тип("Структура") Тогда
ИмяСобытия = "Неудачная отправка";
Параметр = Результат.ТекстОшибки;
Иначе
ИмяСобытия = Результат;
Параметр = ОшибкиДлительногоДействияСтрокой(ВходящийКонтекст);
КонецЕсли;
ДлительнаяОтправкаКлиент.ОчиститьПараметрыДлительнойОтправкиКлиентСервер();
ЗалогироватьОтправкуОтчета(
ДанныеТекущегоОтчета,
ИмяСобытия,
Параметр,
ТекущаяДата());
ЗаписатьРезультатДействияВТаблицу(ИмяСобытия, Параметр);
ПерейтиКОтправкеСледующегоОтчета();
КонецПроцедуры
&НаКлиенте
Функция ДанныеСтрокиСтруктурой(ДанныеСтроки)
НоваяСтруктура = Новый Структура;
Для каждого КлючЗначение Из ШаблонСтруктуры Цикл
НоваяСтруктура.Вставить(КлючЗначение.Ключ, Неопределено);
КонецЦикла;
ЗаполнитьЗначенияСвойств(НоваяСтруктура, ДанныеСтроки);
НоваяСтруктура.Вставить("Идентификатор", ДанныеСтроки.ПолучитьИдентификатор());
Возврат НоваяСтруктура;
КонецФункции
&НаКлиенте
Процедура ОбработатьСледующийОтчет(Результат = Неопределено, ВходящийКонтекст = Неопределено) Экспорт
Активизировать();
ОбработаныВсе = ПараметрыГрупповойОтправки.НомерОтчета = ПараметрыГрупповойОтправки.Всего;
Если ОбработаныВсе ИЛИ ПрерватьГрупповоеДействие Тогда
ПоказатьРезультатГрупповогоДействия();
Иначе
ПодключитьОбработчикОжидания("Подключаемый_ВыполнитьДействиеСОднимОтчетом", 0.1, Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура СброситьФлагНачалаДействия(Форма)
Форма.ВыполняетсяОтправка = Ложь;
Форма.ВыполняетсяПроверка = Ложь;
Форма.ВыполняетсяОтправкаИлиПроверка = Ложь;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьДействиеСОднимОтчетом()
ИзменитьОформлениеФормы(ЭтотОбъект);
НомерОтчета = ПараметрыГрупповойОтправки.НомерОтчета;
НомерТекущегоОтчета = НомерОтчета;
ИдентификаторТекущейСтроки = ПараметрыГрупповойОтправки.ОбрабатываемыеСтроки[НомерТекущегоОтчета];
Элементы.ОтчетыПредставление.ТекущаяСтрока = ИдентификаторТекущейСтроки;
ТекущиеДанные = ВсеОтчеты.НайтиПоИдентификатору(ИдентификаторТекущейСтроки);
ДанныеТекущегоОтчета = ДанныеСтрокиСтруктурой(ТекущиеДанные);
Если ВыполняетсяОтправка Тогда
ТекущиеДанные.РезультатСтрокой = НСтр("ru = 'Отправляется...'");
Иначе
ТекущиеДанные.РезультатСтрокой = НСтр("ru = 'Проверяется...'");
КонецЕсли;
ПодключитьОбработчикОжидания("Подключаемый_ВыполнитьОсновноеДействиеСОднимОтчетом", 0.1, Истина);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьОсновноеДействиеСОднимОтчетом()
Если ВыполняетсяОтправка Тогда
ВыполнитьОсновноеДействиеСОднимОтчетомПослеАвтонастройки();
Иначе
РезультатыАвтонастройкиОрганизации = РезультатыАвтонастройки.Получить(ДанныеТекущегоОтчета.Организация);
Если РезультатыАвтонастройкиОрганизации = Неопределено Тогда
ВыполнитьОсновноеДействиеСОднимОтчетомПослеАвтонастройки();
Иначе
РезультатАвтонастройки = РезультатыАвтонастройкиОрганизации.РезультатАвтонастройки;
Если РезультатАвтонастройки = Неопределено Тогда
ИнформацияОСервереОнлайнПроверки = КонтекстЭДОКлиент.ШаблонИнформацииОСервереОнлайнПроверки();
ОписаниеОповещения = Новый ОписаниеОповещения(
"ВыполнитьОсновноеДействиеСОднимОтчетом_ПослеАвтонастройки",
ЭтотОбъект);
КонтекстЭДОКлиент.ВыполнитьАвтонастройкуУчетнойЗаписиПередОтправкойОбъекта(
ДанныеТекущегоОтчета.РегламентированныйОтчет,
ОписаниеОповещения,
ИнформацияОСервереОнлайнПроверки);
Иначе
ВыполнитьОсновноеДействиеСОднимОтчетомПослеАвтонастройки();
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВыполнитьОсновноеДействиеСОднимОтчетом_ПослеАвтонастройки(Результат, ВходящийКонтекст) Экспорт
Если ЗначениеЗаполнено(Результат)
И Результат.Свойство("СтруктураДляИнформацииОСервереОнлайнПроверки") Тогда
РезультатыАвтонастройкиОрганизации = РезультатыАвтонастройки.Получить(ДанныеТекущегоОтчета.Организация);
РезультатыАвтонастройкиОрганизации.РезультатАвтонастройки = Результат;
КонецЕсли;
ВыполнитьОсновноеДействиеСОднимОтчетомПослеАвтонастройки();
КонецПроцедуры
&НаКлиенте
Процедура ВыполнитьОсновноеДействиеСОднимОтчетомПослеАвтонастройки()
Если ВыполняетсяОтправка Тогда
РегламентированнаяОтчетностьКлиент.ОтправитьОтчетИзФормыСписка(
ЭтотОбъект,
"ОтправитьОтчет",
КонтекстЭДОКлиент,
ДанныеТекущегоОтчета);
Иначе
РегламентированнаяОтчетностьКлиент.ОнлайнПроверка(ЭтотОбъект, КонтекстЭДОКлиент, ДанныеТекущегоОтчета, Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ИзменитьОформлениеФормыПриЗавершенииГрупповогоДействия()
ЗаблокироватьЭлементы(Ложь);
АктивизироватьСтраницу(Элементы.СтраницыШапки, Элементы.СтраницаСчетчик);
ИзменитьОформлениеФормы(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ПоказатьРезультатГрупповогоДействия()
Если ПараметрыГрупповойОтправки = Неопределено Тогда
ИзменитьОформлениеФормыПриЗавершенииГрупповогоДействия();
Если ВыполняетсяОтправка Тогда
Оповестить("Завершение групповой отправки");
КонецЕсли;
ПересчитатьКоличествоОтмеченныхФлажком(ЭтотОбъект);
Возврат;
КонецЕсли;
ПараметрыГрупповойОтправки.Вставить("ВремяЗавершенияОтправки", ТекущаяДата());
Длительность = ДлительнаяОтправкаКлиентСервер.РазностьВремениВЧасахИМинутах(
ПараметрыГрупповойОтправки.ВремяЗавершенияОтправки,
ПараметрыГрупповойОтправки.ВремяНачалаОтправки);
ПараметрыГрупповойОтправки.Вставить("ВремяЗавершенияОтправкиВМиллисекундах", ТекущаяУниверсальнаяДатаВМиллисекундах());
ДлительностьВМиллисекундах = ПараметрыГрупповойОтправки.ВремяЗавершенияОтправкиВМиллисекундах
- ПараметрыГрупповойОтправки.ВремяНачалаОтправкиВМиллисекундах;
ПараметрыГрупповойОтправки.Вставить("Длительность", Длительность);
ПараметрыГрупповойОтправки.Вставить("ДлительностьВМиллисекундах", ДлительностьВМиллисекундах);
ЗалогироватьДлительнуюОперацию(ПараметрыГрупповойОтправки, Ложь, ВыполняетсяОтправка, ВыполняетсяПроверка);
ИзменитьОформлениеФормыПриЗавершенииГрупповогоДействия();
Если ВыполняетсяОтправка Тогда
Оповестить("Завершение групповой отправки");
КонецЕсли;
ПодключитьОбработчикОжидания("Подключаемый_ПоказатьФормуРезультатаГрупповойОтправки", 0.1, Истина);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПоказатьФормуРезультатаГрупповойОтправки()
ПоказатьФормуРезультатаГрупповойОтправки();
КонецПроцедуры
&НаКлиенте
Процедура ПоказатьФормуРезультатаГрупповойОтправки()
РезультатУжеПоказывается = ДлительнаяОтправкаКлиент.ФормаЕстьСредиОткрытых("ГрупповаяОтправка_Результат");
Если РезультатУжеПоказывается Тогда
Возврат;
КонецЕсли;
ДополнительныеПараметры = Новый Структура();
ДополнительныеПараметры.Вставить("ПараметрыГрупповойОтправки", ПараметрыГрупповойОтправки);
ДополнительныеПараметры.Вставить("ВыполняетсяОтправка", ВыполняетсяОтправка);
ДополнительныеПараметры.Вставить("ВыполняетсяПроверка", ВыполняетсяПроверка);
ОписаниеОповещения = Новый ОписаниеОповещения(
"ПоказатьФормуРезультатаГрупповойОтправки_Завершение",
ЭтотОбъект);
ОткрытьФорму(
КонтекстЭДОКлиент.ПутьКОбъекту + ".Форма.ГрупповаяОтправка_Результат",
ДополнительныеПараметры,
,
,
,
,
ОписаниеОповещения);
КонецПроцедуры
&НаКлиенте
Процедура ПоказатьФормуРезультатаГрупповойОтправки_Завершение(Результат, ВходящийКонтекст) Экспорт
СброситьФлагНачалаДействия(ЭтотОбъект);
Если Результат = НСтр("ru = 'Показать неотправленные'") Тогда
ПоказатьНеотправленные();
Иначе
ПересчитатьКоличествоОтмеченныхФлажком(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПоказатьНеотправленные()
ПоказатьДлительноеДействие(ЭтотОбъект, Истина);
ПодключитьОбработчикОжидания("Подключаемый_ПоказатьНеотправленные", 0.1, Истина);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПоказатьНеотправленные()
Организация = Неопределено;
ВидОтчета = Неопределено;
ПредставлениеКонтролирующегоОргана = Неопределено;
НачалоПериода = Неопределено;
КонецПериода = Неопределено;
ПериодОтчета = "";
ОтметитьСтрокиСПодходящимПериодом(ЭтотОбъект);
Отбор = Новый Структура();
Отбор.Вставить("Организация", Организация);
Отбор.Вставить("НаименованиеОтчета", ВидОтчета);
Отбор.Вставить("ПредставлениеГосОргана", ПредставлениеКонтролирующегоОргана);
Отбор.Вставить("ПериодДляОтбораБулево", Истина);
Для каждого СтатусСтрока Из Статусы Цикл
СтатусСтрока.Пометка = СтатусСтрока.Значение = ИмяСостоянияНеОтправленных();
КонецЦикла;
УстановитьОтборТаблицы(ЭтотОбъект, Отбор);
УстановитьОтборТаблицыПоПериоду(ЭтотОбъект);
УстановитьОтборТаблицыПоСтатусу();
ПересчитатьКоличествоОтмеченныхФлажком(ЭтотОбъект);
ПоказатьДлительноеДействие(ЭтотОбъект, Ложь);
КонецПроцедуры
&НаКлиенте
Процедура ПриНачалеДлительнойОперации() Экспорт
ДлительнаяОтправкаКлиент.ИзменитьПараметрыДлительнойОтправкиКлиентСервер("ИдентификаторПолучателя", ЭтотОбъект.УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Функция ВыбранХотяБыОдин()
Возврат ВыбраныеСтроки(ЭтотОбъект).Количество() > 0;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ВыбраныеСтроки(Форма)
Отбор = Новый Структура();
Отбор.Вставить("Пометка", Истина);
НайденныеСтроки = ДанныеФормыКоллекция(Форма).НайтиСтроки(Отбор);
Возврат НайденныеСтроки;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ЕстьОтчетыСПАРК(Форма)
Для каждого Наименование Из Форма.НаименованияОтчетовСПАРК Цикл
Отбор = Новый Структура();
Отбор.Вставить("Пометка", Истина);
Отбор.Вставить("НаименованиеОтчета", Наименование);
НайденныеСтроки = ДанныеФормыКоллекция(Форма).НайтиСтроки(Отбор);
Если НайденныеСтроки.Количество() > 0 Тогда
Возврат Истина;
КонецЕсли;
КонецЦикла;
Возврат Ложь;
КонецФункции
&НаКлиенте
Процедура ПриОткрытииЗавершение(Результат, ДополнительныеПараметры) Экспорт
КонтекстЭДОКлиент = Результат.КонтекстЭДО;
НачатьПолучениеТаблицыПриОткрытии();
КонецПроцедуры
&НаКлиенте
Процедура НачатьПолучениеТаблицыПриОткрытии()
ПоказатьДлительноеДействие(ЭтотОбъект, Истина);
Активизировать();
ПодключитьОбработчикОжидания("Подключаемый_ЗаполнитьТаблицуПриОткрытии", 2, Истина);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ЗаполнитьТаблицуПриОткрытии()
ЗаполнитьТаблицуНаСервере();
Если ЗначениеЗаполнено(ОтчетыДляОтбора) Тогда
ВключитьОтборПоОтчетам();
КонецЕсли;
ИзменитьОформлениеФормы(ЭтотОбъект);
ПоказатьДлительноеДействие(ЭтотОбъект, Ложь);
КонецПроцедуры
&НаКлиенте
Процедура УстановитьПометку(Пометка)
ОтборСтрок = Новый Структура(Элементы.ОтчетыПредставление.ОтборСтрок);
Для каждого Строка Из ВсеОтчеты Цикл
СоотвествуетОтбору = Истина;
Для каждого Условие Из ОтборСтрок Цикл
ЗначениеВУсловии = Условие.Значение;
ЗначениеВСтроке = Строка[Условие.Ключ];
Если ТипЗнч(ЗначениеВУсловии) = Тип("Строка")
И ТипЗнч(ЗначениеВСтроке) = Тип("Строка") Тогда
СоотвествуетОтбору = СтрНайти(ЗначениеВСтроке, ЗначениеВУсловии) > 0;
Иначе
СоотвествуетОтбору = ЗначениеВУсловии = ЗначениеВСтроке;
КонецЕсли;
Если НЕ СоотвествуетОтбору Тогда
Прервать;
КонецЕсли;
КонецЦикла;
Если СоотвествуетОтбору Тогда
Строка.Пометка = Пометка;
КонецЕсли;
КонецЦикла;
ПересчитатьКоличествоОтмеченныхФлажком(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ПодменитьСсылку(Ссылка) Экспорт
Попытка
Если ОбщегоНазначения.ПодсистемаСуществует("РегламентированнаяОтчетность.СообщенияВКонтролирующиеОрганы.КонвертацияОтчетовПриПереходеС82") Тогда
ОМ_УведомлениеОСпецрежимахНалогообложенияПовтИсп = ОбщегоНазначения.ОбщийМодуль("УведомлениеОСпецрежимахНалогообложенияПовтИсп");
Ссылка = ОМ_УведомлениеОСпецрежимахНалогообложенияПовтИсп.ПодменитьСсылкуНаОтчет(Ссылка);
КонецЕсли;
Исключение
КонецПопытки;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ЗаполнитьСписокВидовОтчетаПриОткрытии(Форма)
МассивВидовОтчетов = АктуализироватьСписокЗначений("НаименованиеОтчета");
Форма.Элементы.ОтборВидОтчета.СписокВыбора.ЗагрузитьЗначения(МассивВидовОтчетов);
КонецПроцедуры
&НаСервереБезКонтекста
Функция АктуализироватьСписокЗначений(ИмяРеквизита)
Запрос = ЗапросДляВыбораПолныхДанных();
СхемаЗапроса = Новый СхемаЗапроса;
СхемаЗапроса.УстановитьТекстЗапроса(Запрос.Текст);
ТекущийЗапрос = СхемаЗапроса.ПакетЗапросов[0];
Оператор = ТекущийЗапрос.Операторы[0];
ТекущийЗапрос.Индекс.Добавить(ИмяРеквизита);
Оператор.ВыбиратьРазличные = Истина;
Колонки = ТекущийЗапрос.Колонки;
ВыбираемыеПоля = Оператор.ВыбираемыеПоля;
Сч = 0;
Пока Сч < Колонки.Количество() Цикл
Колонка = Колонки[Сч];
Если Колонка.Псевдоним <> ИмяРеквизита Тогда
Колонки.Удалить(Сч);
Иначе
Сч = Сч + 1;
КонецЕсли;
КонецЦикла;
ТекущийЗапрос.Порядок.Добавить(ИмяРеквизита);
Запрос.Текст = СхемаЗапроса.ПолучитьТекстЗапроса();
РезультатЗапроса = Запрос.Выполнить().Выгрузить();
Возврат РезультатЗапроса.ВыгрузитьКолонку(ИмяРеквизита);
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьОтборТаблицы(Форма, НовыеУсловия)
Элементы = Форма.Элементы;
Если Элементы.ОтчетыПредставление.ОтборСтрок = Неопределено
ИЛИ Элементы.ОтчетыПредставление.ОтборСтрок.Количество() = 0 Тогда
Отбор = Новый Структура;
Иначе
Отбор = Новый Структура(Элементы.ОтчетыПредставление.ОтборСтрок);
КонецЕсли;
Для Каждого НовоеУсловие Из НовыеУсловия Цикл
Если ЗначениеЗаполнено(НовоеУсловие.Значение) Тогда
Отбор.Вставить(НовоеУсловие.Ключ, НовоеУсловие.Значение);
Иначе
Если Отбор.Свойство(НовоеУсловие.Ключ) Тогда
Отбор.Удалить(НовоеУсловие.Ключ);
КонецЕсли;
КонецЕсли;
КонецЦикла;
Элементы.ОтчетыПредставление.ОтборСтрок = Новый ФиксированнаяСтруктура(Отбор);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ПересчитатьКоличествоОтмеченныхФлажком(Форма)
Отбор = Новый Структура();
Отбор.Вставить("Пометка", Истина);
НайденныеСтроки = ДанныеФормыКоллекция(Форма).НайтиСтроки(Отбор);
Форма.КоличествоОтмеченныхФлажком = НайденныеСтроки.Количество();
ИзменитьОформлениеФормы(Форма);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция ИмяСостоянияНеОтправленных()
Возврат НСтр("ru = 'Отчеты с отметкой'");
КонецФункции
&НаСервереБезКонтекста
Функция ТекущаяДатаНаСервере()
Возврат ТекущаяДатаСеанса();
КонецФункции
&НаСервере
Процедура ИнициализацияПараметров(Параметры)
ВУниверсальномФормате = Перечисления.ВидыОбменаСКонтролирующимиОрганами.ОбменВУниверсальномФормате;
ФНС = Перечисления.ТипыКонтролирующихОрганов.ФНС;
ПФР = Перечисления.ТипыКонтролирующихОрганов.ПФР;
Росстат = Перечисления.ТипыКонтролирующихОрганов.ФСГС;
СброситьФлагНачалаДействия(ЭтотОбъект);
ШаблонСтруктуры = ШаблонСтруктуры();
ИмяТипаДокументаРеестрДанныхЭЛН = "РеестрДанныхЭЛНЗаполняемыхРаботодателем";
Если Метаданные.Документы.Найти(ИмяТипаДокументаРеестрДанныхЭЛН) = Неопределено Тогда
ИмяТипаДокументаРеестрДанныхЭЛН = "";
КонецЕсли;
Используется1СОтчетность = РегламентированнаяОтчетность.Используется1СОтчетность();
ПерсонифицированныйУчетВедетсяВоВнешнейПрограмме = РегламентированнаяОтчетность.ПерсонифицированныйУчетВедетсяВоВнешнейПрограмме();
ТекстОшибкиИнициализацииКонтекстаЭДО = НСтр("ru = 'Подождите, пожалуйста. Выполняется обновление модуля 1С-Отчетности...'");
ОбработатьПараметрыОтбораПриСозданииНаСервере(Параметры);
ПолучитьНаименованияОтчетовСПАРК();
КонецПроцедуры
&НаСервере
Процедура ПолучитьНаименованияОтчетовСПАРК()
ОтправкаОтчетностиВИнтерфакс = "РегламентированнаяОтчетность.ЭлектронныйДокументооборотСКонтролирующимиОрганами.ОтправкаОтчетностиВИнтерфакс";
Если ОбщегоНазначения.ПодсистемаСуществует(ОтправкаОтчетностиВИнтерфакс) Тогда
МодульОтправкаРегОтчетовВСПАРК = ОбщегоНазначения.ОбщийМодуль("ОтправкаРегОтчетовВСПАРК");
НаименованияОтчетовСПАРК = Новый ФиксированныйМассив(МодульОтправкаРегОтчетовВСПАРК.НаименованияНужныхОтчетовСПАРК());
Иначе
НаименованияОтчетовСПАРК = Новый ФиксированныйМассив(Новый Массив);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьТаблицуНаСервере()
ЗаполнитьПолнуюТаблицуНаСервере();
ЗаполнитьСписокВидовОтчетаПриОткрытии(ЭтотОбъект);
СформироватьСписокВыбораСтатусов(ЭтотОбъект);
ПрименитьПараметрыОтбораПриОткрытии(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ОбработатьПараметрыОтбораПриСозданииНаСервере(Параметры)
ПрименитьОтборПоСсылкам = Параметры.Свойство("Ссылки");
Если ПрименитьОтборПоСсылкам Тогда
ОтчетыДляОтбора = Новый ФиксированныйМассив(Параметры.Ссылки);
Иначе
Свойства = "НачалоПериода, КонецПериода, Организация, ПериодОтчета";
ЗаполнитьЗначенияСвойств(ЭтотОбъект, Параметры, Свойства);
ПолучитьВидОтчетаИзПараметра(Параметры);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВключитьОтборПоОтчетам()
Для каждого Отчет Из ОтчетыДляОтбора Цикл
Отбор = Новый Структура();
Отбор.Вставить("РегламентированныйОтчет", Отчет);
НайденныеСтроки = ВсеОтчеты.НайтиСтроки(Отбор);
Для каждого НайденныйОбъект Из НайденныеСтроки Цикл
НайденныйОбъект.Пометка = Истина;
КонецЦикла;
КонецЦикла;
ОтборСтатус = ИмяСостоянияНеОтправленных();
Для каждого Строка Из Статусы Цикл
Строка.Пометка = Строка.Значение = ИмяСостоянияНеОтправленных();
КонецЦикла;
УстановитьОтборТаблицыПоСтатусу();
КоличествоОтмеченныхФлажком = ОтчетыДляОтбора.Количество();
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ПрименитьПараметрыОтбораСтатусаПриОткрытии(Форма)
ВРаботе = ИнтерфейсыВзаимодействияБРОКлиентСервер.ПредставлениеСтатусаВРаботе();
Подготовлено = ИнтерфейсыВзаимодействияБРОКлиентСервер.ПредставлениеСтатусаПодготовлено();
Для каждого СтатусСтрока Из Форма.Статусы Цикл
Если СтатусСтрока.Значение = ВРаботе
ИЛИ СтатусСтрока.Значение = Подготовлено Тогда
СтатусСтрока.Пометка = Истина;
Иначе
СтатусСтрока.Пометка = Ложь;
КонецЕсли;
КонецЦикла;
ИзменитьПредставлениеСтатусов(Форма);
ОтметитьСтрокиСПодходящимСтатусом(Форма);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ПрименитьПараметрыОтбораПриОткрытии(Форма)
ПрименитьПараметрыОтбораСтатусаПриОткрытии(Форма);
Отбор = Новый Структура();
Если ЗначениеЗаполнено(Форма.НачалоПериода)
ИЛИ ЗначениеЗаполнено(Форма.КонецПериода)
ИЛИ ЗначениеЗаполнено(Форма.Организация)
ИЛИ ЗначениеЗаполнено(Форма.ПериодОтчета)
ИЛИ ЗначениеЗаполнено(Форма.ВидОтчета) Тогда
Если ЗначениеЗаполнено(Форма.НачалоПериода) И ЗначениеЗаполнено(Форма.КонецПериода) Тогда
ОтметитьСтрокиСПодходящимПериодом(Форма);
КонецЕсли;
Если ЗначениеЗаполнено(Форма.НачалоПериода) И ЗначениеЗаполнено(Форма.КонецПериода) Тогда
Отбор.Вставить("ПериодДляОтбораБулево", Истина);
КонецЕсли;
Отбор.Вставить("Организация", Форма.Организация);
Отбор.Вставить("НаименованиеОтчета", Форма.ВидОтчета);
КонецЕсли;
Отбор.Вставить("СтатусДляОтбораИсходныйБулево", Истина);
УстановитьОтборТаблицы(Форма, Отбор);
КонецПроцедуры
&НаСервере
Процедура ПолучитьВидОтчетаИзПараметра(Параметры)
Если ЗначениеЗаполнено(Параметры.ВидОтчета) Тогда
МассивЗначений = Новый Массив;
МассивЗначений.Добавить(Параметры.ВидОтчета);
Элементы.ОтборВидОтчета.СписокВыбора.ЗагрузитьЗначения(МассивЗначений);
НайденноеЗначение = Элементы.ОтборВидОтчета.СписокВыбора.НайтиПоЗначению(Параметры.ВидОтчета);
ВидОтчета = НайденноеЗначение.Значение;
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ШаблонСтруктуры()
Колонки = ДанныеФормыКоллекция(ЭтотОбъект).Выгрузить().Колонки;
ДополнительныеПараметры = Новый Структура();
Для Каждого Колонка ИЗ Колонки Цикл
ДополнительныеПараметры.Вставить(Колонка.Имя, );
КонецЦикла;
Возврат ДополнительныеПараметры;
КонецФункции
&НаКлиенте
Процедура ПоказатьКритическиеОшибкиПоСсылке(Ссылка) Экспорт
КонтекстЭДОКлиент.ПоказатьКритическиеОшибкиПоСсылке(Ссылка);
КонецПроцедуры
&НаКлиенте
Процедура ПоказатьФормуСтатусовОтправкиИзСписка(Элемент) Экспорт
КонтекстЭДОКлиент.ПоказатьФормуСтатусовОтправкиИзСписка(Элемент);
КонецПроцедуры
#Область УсловноеОформление
&НаСервере
Процедура УстановитьУсловноеОформление()
УстановитьЦветТекстаСтатуса(
Перечисления.СостояниеСдачиОтчетности.ДокументооборотНачат,
ЦветаСтиля.ЦветНезавершившейсяОтправкиБРО);
УстановитьЦветТекстаСтатуса(
Перечисления.СостояниеСдачиОтчетности.ОтрицательныйРезультатДокументооборота,
ЦветаСтиля.ЦветОшибкиОтправкиБРО);
УстановитьЦветТекстаСтатуса(
Перечисления.СостояниеСдачиОтчетности.ПоложительныйРезультатДокументооборота,
ЦветаСтиля.ЦветУспешнойОтправкиБРО);
УстановитьОформлениеДат();
УстановитьОформлениеРезультатаОтправки();
УстановитьОформлениеФинансовогоПериода();
УстановитьОформлениеВида();
КонецПроцедуры
&НаСервере
Процедура УстановитьОформлениеЦветаРезультата(Поле, Успех)
Если Успех Тогда
ПравоеВыражение = ПризнакУспеха();
Цвет = ЦветаСтиля.ЦветУспешнойОтправкиБРО;
Иначе
ПравоеВыражение = ПризнакОшибки();
Цвет = ЦветаСтиля.ЦветОшибкиОтправкиБРО;
КонецЕсли;
УстановитьУсловноеОформлениеНаОдноПоле(
Поле,
"ВсеОтчеты.РезультатПризнак",
ВидСравненияКомпоновкиДанных.Равно,
ПравоеВыражение,
"ЦветТекста",
Цвет);
КонецПроцедуры
&НаСервере
Процедура УстановитьОформлениеРезультатаОтправки()
УстановитьУсловноеОформлениеНаОдноПоле(
"РезультатСтрокой",
"ВсеОтчеты.РезультатСтрокой",
ВидСравненияКомпоновкиДанных.НеЗаполнено,
Неопределено,
"Видимость",
Ложь);
УстановитьУсловноеОформлениеНаОдноПоле(
"РезультатГипессылкой",
"ВсеОтчеты.РезультатСтрокой",
ВидСравненияКомпоновкиДанных.Заполнено,
Неопределено,
"Видимость",
Ложь);
УстановитьОформлениеЦветаРезультата("РезультатСтрокой", Истина);
УстановитьОформлениеЦветаРезультата("РезультатСтрокой", Ложь);
УстановитьОформлениеЦветаРезультата("РезультатГипессылкой", Истина);
УстановитьОформлениеЦветаРезультата("РезультатГипессылкой", Ложь);
КонецПроцедуры
&НаСервере
Процедура УстановитьОформлениеФинансовогоПериода()
УстановитьУсловноеОформлениеНаОдноПоле(
"ОтчетыПорядок",
"ВсеОтчеты.ФинансовыйПериодПорядок",
ВидСравненияКомпоновкиДанных.Заполнено,
Неопределено,
"Текст",
Новый ПолеКомпоновкиДанных("ВсеОтчеты.ФинансовыйПериод"));
КонецПроцедуры
&НаСервере
Процедура УстановитьОформлениеВида()
УстановитьУсловноеОформлениеНаОдноПоле(
"ОтчетыВид",
"ВсеОтчеты.ВариантОтчета",
ВидСравненияКомпоновкиДанных.НеЗаполнено,
Неопределено,
"Текст",
"П");
УстановитьУсловноеОформлениеНаОдноПоле(
"ОтчетыВид",
"ВсеОтчеты.ВариантОтчета",
ВидСравненияКомпоновкиДанных.Равно,
"-",
"Текст",
"П");
КонецПроцедуры
&НаСервере
Процедура УстановитьОформлениеДат()
ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить();
ГруппаОтбора = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
ЭлементОтбора = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
ЭлементОтбора.Использование = Истина;
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ВсеОтчеты.ДатаНачала");
ЭлементОтбора = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
ЭлементОтбора.Использование = Истина;
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ВсеОтчеты.ДатаОкончания");
ОформляемоеПоле = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных("ОтчетыПериод");
ОформляемоеПоле.Использование = Истина;
ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("Текст", "");
КонецПроцедуры
&НаСервере
Процедура УстановитьУсловноеОформлениеНаОдноПоле(
Поле,
Данные,
ВидСравнения,
ПравоеЗначение = Неопределено,
ПолеОформления,
ЗначениеОформления);
ЭлементУО = УсловноеОформление.Элементы.Добавить();
ДобавитьОформляемоеПоле(ЭлементУО.Поля, Поле);
ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(
ЭлементУО.Отбор,
Данные,
ВидСравнения,
ПравоеЗначение);
ЭлементУО.Оформление.УстановитьЗначениеПараметра(ПолеОформления, ЗначениеОформления);
КонецПроцедуры
&НаСервере
Процедура УстановитьЦветТекстаСтатуса(Значение, Цвет)
УстановитьУсловноеОформлениеНаОдноПоле(
"ОтчетыСтатус",
"ВсеОтчеты.СостояниеСдачиОтчетности",
ВидСравненияКомпоновкиДанных.Равно,
Значение,
"ЦветТекста",
Цвет);
КонецПроцедуры
&НаСервере
Функция ДобавитьОформляемоеПоле(КоллекцияОформляемыхПолей, ИмяПоля) Экспорт
ПолеЭлемента = КоллекцияОформляемыхПолей.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(ИмяПоля);
Возврат ПолеЭлемента;
КонецФункции
#КонецОбласти
#Область Запросы
&НаСервереБезКонтекста
Функция ДанныеСтрокиИзБазы(Ссылка)
Запрос = ЗапросДляВыбораПолныхДанных();
ДобавитьУсловиеВКонструкторЗапроса(Запрос, "Ссылка", Ссылка);
РезультатЗапроса = Запрос.Выполнить().Выгрузить();
Если РезультатЗапроса.Количество() > 0 Тогда
РезультатЗапроса.Колонки.Удалить("Пометка");
РезультатЗапроса.Колонки.Удалить("РезультатСтрокой");
РезультатЗапроса.Колонки.Удалить("РезультатГипессылкой");
РезультатЗапроса.Колонки.Удалить("РезультатДанные");
РезультатЗапроса.Колонки.Удалить("РезультатПризнак");
РезультатЗапроса.Колонки.Удалить("СтатусДляОтбораИсходный");
РезультатЗапроса.Колонки.Удалить("СтатусДляОтбораИсходныйБулево");
РезультатЗапроса.Колонки.Удалить("ПериодДляОтбораБулево");
РезультатЗапроса.Колонки.Удалить("ЭтоОтправка");
РезультатЗапроса.Колонки.Удалить("ЭтоПроверка");
Возврат ОбщегоНазначения.СтрокаТаблицыЗначенийВСтруктуру(РезультатЗапроса[0]);
Иначе
Возврат Неопределено;
КонецЕсли;
КонецФункции
&НаСервереБезКонтекста
Функция ДобавитьУсловиеЗапроса(ТекстЗапроса, Условие)
СхемаЗапроса = Новый СхемаЗапроса;
СхемаЗапроса.УстановитьТекстЗапроса(ТекстЗапроса);
ТекущийЗапрос = СхемаЗапроса.ПакетЗапросов[0];
Оператор = ТекущийЗапрос.Операторы[0];
Отбор = Оператор.Отбор;
Отбор.Добавить(Условие);
Возврат СхемаЗапроса.ПолучитьТекстЗапроса();
КонецФункции
&НаСервереБезКонтекста
Функция ДобавитьУсловиеВКонструкторЗапроса(Запрос, ИмяРеквизита, ЗначениеРеквизита, ДобавлятьИмяТаблицы = Истина)
Если ДобавлятьИмяТаблицы Тогда
Условие = СтрШаблон("РегистрСведенийЖурналОтчетовСтатусы.%1 = &%1", ИмяРеквизита);
Иначе
Условие = СтрШаблон("%1 = &%1", ИмяРеквизита);
КонецЕсли;
Запрос.Текст = ДобавитьУсловиеЗапроса(Запрос.Текст, Условие);
Запрос.УстановитьПараметр(ИмяРеквизита, ЗначениеРеквизита);
КонецФункции
&НаСервере
Процедура ЗаполнитьПолнуюТаблицуНаСервере()
Таблица = ЗаполнитьПолнуюТаблицу();
ЗначениеВРеквизитФормы(Таблица, "ВсеОтчеты");
КонецПроцедуры
&НаСервереБезКонтекста
Функция ЗаполнитьПолнуюТаблицу()
Запрос = ЗапросДляВыбораПолныхДанных();
РезультатЗапроса = Запрос.Выполнить().Выгрузить();
Возврат РезультатЗапроса;
КонецФункции
&НаСервереБезКонтекста
Процедура ДобавитьПодзапросДляСтатуса(ТекстЗапроса)
ПодзапросДляСтатуса = "ВЫБОР
| КОГДА РегистрСведенийЖурналОтчетовСтатусы.Статус = &ТребуетУточнений
| ТОГДА &ТребуетУточнений
| КОГДА РегистрСведенийЖурналОтчетовСтатусы.Статус В (&Подготовлено)
| ТОГДА &Подготовлено
| КОГДА РегистрСведенийЖурналОтчетовСтатусы.Статус В (&Сдано)
| ИЛИ РегистрСведенийЖурналОтчетовСтатусы.СостояниеСдачиОтчетности В (&СостояниеСдано)
| ТОГДА &Сдано
| КОГДА РегистрСведенийЖурналОтчетовСтатусы.Статус В (&СтатусыВРаботе)
| ИЛИ РегистрСведенийЖурналОтчетовСтатусы.СостояниеСдачиОтчетности В (&СостояниеВРаботе)
| ТОГДА &ВРаботе
| КОГДА РегистрСведенийЖурналОтчетовСтатусы.СостояниеСдачиОтчетности В (&Отправлено)
| ТОГДА ""Отправлено""
| КОГДА РегистрСведенийЖурналОтчетовСтатусы.СостояниеСдачиОтчетности В (&НеСдано)
| ТОГДА ""Не сдано""
| ИНАЧЕ РегистрСведенийЖурналОтчетовСтатусы.Статус
| КОНЕЦ";
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&НовыйСтатус", ПодзапросДляСтатуса);
КонецПроцедуры
&НаСервереБезКонтекста
Функция ЗапросДляВыбораПолныхДанных()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| РегистрСведенийЖурналОтчетовСтатусы.Ссылка КАК РегламентированныйОтчет,
| РегистрСведенийЖурналОтчетовСтатусы.ДатаНачала КАК ДатаНачала,
| РегистрСведенийЖурналОтчетовСтатусы.ДатаОкончания КАК ДатаОкончания,
| РегистрСведенийЖурналОтчетовСтатусы.ФинансовыйПериод КАК ФинансовыйПериод,
| (10000000 + РАЗНОСТЬДАТ(ДАТАВРЕМЯ(1, 1, 1), РегистрСведенийЖурналОтчетовСтатусы.ДатаОкончания, ДЕНЬ)) * 10000000 + РАЗНОСТЬДАТ(РегистрСведенийЖурналОтчетовСтатусы.ДатаНачала, ДАТАВРЕМЯ(3999, 12, 31, 23, 59, 59), ДЕНЬ) КАК ФинансовыйПериодПорядок,
| РегистрСведенийЖурналОтчетовСтатусы.ВариантОтчета КАК ВариантОтчета,
| РегистрСведенийЖурналОтчетовСтатусы.Организация КАК Организация,
| РегистрСведенийЖурналОтчетовСтатусы.КодКонтролирующегоОргана КАК КодКонтролирующегоОргана,
| РегистрСведенийЖурналОтчетовСтатусы.Статус КАК Статус,
| РегистрСведенийЖурналОтчетовСтатусы.ПредставлениеКонтролирующегоОргана КАК ПредставлениеГосОргана,
| РегистрСведенийЖурналОтчетовСтатусы.НаименованиеОтчета КАК НаименованиеОтчета,
| ПОДСТРОКА(РегистрСведенийЖурналОтчетовСтатусы.Комментарий, 1, 100) КАК Комментарий,
| РегистрСведенийЖурналОтчетовСтатусы.ИндексКартинки КАК ИндексКартинки,
| РегистрСведенийЖурналОтчетовСтатусы.СостояниеСдачиОтчетности КАК СостояниеСдачиОтчетности,
| РегистрСведенийЖурналОтчетовСтатусы.НеОтправляетсяВКонтролирующийОрган КАК НеОтправляетсяВКонтролирующийОрган,
| РегистрСведенийЖурналОтчетовСтатусы.ЕстьКритическиеОшибкиОтправки КАК ЕстьКритическиеОшибкиОтправки,
| РегистрСведенийЖурналОтчетовСтатусы.Непрочтенное КАК Непрочтенное,
| ВЫБОР
| КОГДА РегистрСведенийЖурналОтчетовСтатусы.СостояниеСдачиОтчетности = ЗНАЧЕНИЕ(Перечисление.СостояниеСдачиОтчетности.ДокументооборотНеНачат)
| ИЛИ РегистрСведенийЖурналОтчетовСтатусы.СостояниеСдачиОтчетности = ЗНАЧЕНИЕ(Перечисление.СостояниеСдачиОтчетности.ПустаяСсылка)
| ТОГДА ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
| ИНАЧЕ РегистрСведенийЖурналОтчетовСтатусы.ДатаОтправки
| КОНЕЦ КАК ДатаОтправки,
| ЛОЖЬ КАК Пометка,
| """" КАК РезультатГипессылкой,
| """" КАК РезультатСтрокой,
| """" КАК РезультатДанные,
| """" КАК РезультатПризнак,
| РегистрСведенийЖурналОтчетовСтатусы.ВидКонтролирующегоОргана КАК ВидКонтролирующегоОргана,
| &НовыйСтатус КАК СтатусДляОтбора,
| &НовыйСтатус КАК СтатусДляОтбораИсходный,
| ИСТИНА КАК СтатусДляОтбораБулево,
| ИСТИНА КАК СтатусДляОтбораИсходныйБулево,
| ИСТИНА КАК ПериодДляОтбораБулево,
| ЛОЖЬ КАК ЭтоОтправка,
| ЛОЖЬ КАК ЭтоПроверка,
| УчетныеЗаписиДокументооборота.СпецоператорСвязи КАК СпецоператорСвязи,
| Организации.УчетнаяЗаписьОбмена КАК УчетнаяЗаписьОбмена,
| Организации.ВидОбменаСКонтролирующимиОрганами КАК ВидОбменаСКонтролирующимиОрганами
|ИЗ
| РегистрСведений.ЖурналОтчетовСтатусы КАК РегистрСведенийЖурналОтчетовСтатусы
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Организации КАК Организации
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.УчетныеЗаписиДокументооборота КАК УчетныеЗаписиДокументооборота
| ПО Организации.УчетнаяЗаписьОбмена = УчетныеЗаписиДокументооборота.Ссылка
| ПО РегистрСведенийЖурналОтчетовСтатусы.Организация = Организации.Ссылка
|ГДЕ
| НЕ РегистрСведенийЖурналОтчетовСтатусы.Скрыт
| И РегистрСведенийЖурналОтчетовСтатусы.ВидКонтролирующегоОргана В(&ВидКонтролирующегоОргана)
| И &ДопУсловие1
| И &ДопУсловие2";
ИсключитьБухОтчетыБГУ(Запрос.Текст);
ДобавитьПодзапросДляСтатуса(Запрос.Текст);
УстановитьПараметрыЗапроса(Запрос);
Возврат Запрос;
КонецФункции
&НаСервереБезКонтекста
Процедура ИсключитьБухОтчетыБГУ(Текст)
ИсключитьБухОтчетБГУ(Текст, "Документ.УниверсальныйРегламентированныйОтчет", "&ДопУсловие1");
ИсключитьБухОтчетБГУ(Текст, "Документ.ЭлектронныйДокументБухгалтерскийОтчет", "&ДопУсловие2");
КонецПроцедуры
&НаСервереБезКонтекста
Процедура ИсключитьБухОтчетБГУ(Текст, Тип, ИмяУсловия)
Если Метаданные.НайтиПоПолномуИмени(Тип) = Неопределено Тогда
ДопУсловие = "ИСТИНА";
Иначе
ДопУсловие = "НЕ РегистрСведенийЖурналОтчетовСтатусы.Ссылка ССЫЛКА %1";
ДопУсловие = СтрШаблон(ДопУсловие, Тип);
КОнецЕсли;
Текст = СтрЗаменить(Текст, ИмяУсловия, ДопУсловие);
КонецПроцедуры
&НаСервереБезКонтекста
Процедура УстановитьПараметрыЗапроса(Запрос)
Запрос.УстановитьПараметр("ВидКонтролирующегоОргана", ПараметрВидКонтролирующегоОргана());
Запрос.УстановитьПараметр("СтатусыВРаботе", ПараметрСтатусыВРаботе());
Запрос.УстановитьПараметр("Отправлено", Перечисления.СостояниеСдачиОтчетности.ДокументооборотНачат);
Запрос.УстановитьПараметр("НеСдано", Перечисления.СостояниеСдачиОтчетности.ОтрицательныйРезультатДокументооборота);
Запрос.УстановитьПараметр("СостояниеВРаботе", Перечисления.СостояниеСдачиОтчетности.ДокументооборотНеНачат);
Запрос.УстановитьПараметр("ТребуетУточнений", ДокументооборотСКОКлиентСервер.СтатусСданоТребуетУточнения());
Запрос.УстановитьПараметр("СостояниеСдано", Перечисления.СостояниеСдачиОтчетности.ПоложительныйРезультатДокументооборота);
Запрос.УстановитьПараметр("ВРаботе", ИнтерфейсыВзаимодействияБРОКлиентСервер.ПредставлениеСтатусаВРаботе());
Запрос.УстановитьПараметр("Сдано", ИнтерфейсыВзаимодействияБРОКлиентСервер.ПредставлениеСтатусаСдано());
Запрос.УстановитьПараметр("Подготовлено", ИнтерфейсыВзаимодействияБРОКлиентСервер.ПредставлениеСтатусаПодготовлено());
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПараметрВидКонтролирующегоОргана()
ВидКонтролирующегоОргана = Новый Массив;
ВидКонтролирующегоОргана.Добавить(Перечисления.ТипыКонтролирующихОрганов.ФНС);
ВидКонтролирующегоОргана.Добавить(Перечисления.ТипыКонтролирующихОрганов.ПФР);
ВидКонтролирующегоОргана.Добавить(Перечисления.ТипыКонтролирующихОрганов.ФСГС);
ВидКонтролирующегоОргана.Добавить(Перечисления.ТипыКонтролирующихОрганов.ФСС);
ВидКонтролирующегоОргана.Добавить(Перечисления.ТипыКонтролирующихОрганов.ФСРАР);
ВидКонтролирующегоОргана.Добавить(Перечисления.ТипыКонтролирующихОрганов.РПН);
ВидКонтролирующегоОргана.Добавить(Перечисления.ТипыКонтролирующихОрганов.ФТС);
ВидКонтролирующегоОргана.Добавить(Перечисления.ТипыКонтролирующихОрганов.ЦБ);
Возврат ВидКонтролирующегоОргана;
КонецФункции
&НаСервереБезКонтекста
Функция ПараметрСтатусыВРаботе()
СтатусыВРаботе = Новый Массив;
СтатусыВРаботе.Добавить(ИнтерфейсыВзаимодействияБРОКлиентСервер.ПредставлениеСтатусаВРаботе());
СтатусыВРаботе.Добавить(ИнтерфейсыВзаимодействияБРОКлиентСервер.ПредставлениеСтатусаНеОтправлено());
Возврат СтатусыВРаботе;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Процедура ПоказатьДлительноеДействие(Форма, ЭтоНачало = Истина)
Элементы = Форма.Элементы;
Если ЭтоНачало Тогда
ПредыдущаяСтраница = Элементы.СтраницыШапки.ТекущаяСтраница;
АктивизироватьСтраницу(Элементы.СтраницыШапки, Элементы.СтраницаОжидание);
Элементы.ОтчетыПредставление.Видимость = Ложь;
Иначе
Если ПредыдущаяСтраница = Неопределено Тогда
ПредыдущаяСтраница = Элементы.СтраницаСчетчик;
КонецЕсли;
АктивизироватьСтраницу(Элементы.СтраницыШапки, ПредыдущаяСтраница);
ПредыдущаяСтраница = Неопределено;
Элементы.ОтчетыПредставление.Видимость = Истина;
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура АктивизироватьСтраницу(МногостраничныйЭлемент, ТекущаяСтраница) Экспорт
МногостраничныйЭлемент.ТекущаяСтраница = ТекущаяСтраница;
КонецПроцедуры
#КонецОбласти
#Область Логирование
&НаСервереБезКонтекста
Процедура ЗалогироватьДлительнуюОперацию(ПараметрыГрупповойОтправки, ЭтоСтарт, ВыполняетсяОтправка, ВыполняетсяПроверка)
Комментарий = "";
Для каждого Параметр Из ПараметрыГрупповойОтправки Цикл
Если Параметр.Ключ <> "ОтправляемыеОтчеты" Тогда
Комментарий = Комментарий + Параметр.Ключ + " = " + Параметр.Значение + Символы.ПС;
КонецЕсли;
КонецЦикла;
Если ВыполняетсяОтправка Тогда
Действие = НСтр("ru = 'групповой отправки'");
Иначе
Действие = НСтр("ru = 'групповой проверки'");
КонецЕсли;
Если ЭтоСтарт Тогда
ТекстСообщения = НСтр("ru='Электронный документооборот с контролирующими органами. Старт '") + Действие;
ЗаписьЖурналаРегистрации(ТекстСообщения, УровеньЖурналаРегистрации.Информация, ПараметрыГрупповойОтправки.ВремяНачалаОтправки, ,Комментарий);
Иначе
ТекстСообщения = НСтр("ru='Электронный документооборот с контролирующими органами. Окончание '") + Действие;
ЗаписьЖурналаРегистрации(ТекстСообщения, УровеньЖурналаРегистрации.Информация, ПараметрыГрупповойОтправки.ВремяЗавершенияОтправки, ,Комментарий);
КонецЕсли;
КонецПроцедуры
&НаСервереБезКонтекста
Процедура ЗалогироватьОтправкуОтчета(ДанныеТекущегоОтчета, Результат, Ошибки, Время)
Если ДанныеТекущегоОтчета = Неопределено Тогда
Возврат;
КонецЕсли;
Комментарий = "";
Для каждого Параметр Из ДанныеТекущегоОтчета Цикл
Комментарий = Комментарий + Параметр.Ключ + " = " + Параметр.Значение + Символы.ПС;
КонецЦикла;
Если ДанныеТекущегоОтчета.ЭтоОтправка Тогда
Действие = НСтр("ru = 'Отправка отчета'");
Иначе
Действие = НСтр("ru = 'Проверка отчета'");
КонецЕсли;
Комментарий = Комментарий + Символы.ПС + "Результат = " + Результат;
Комментарий = Комментарий + Символы.ПС + "Ошибки = " + Ошибки;
Комментарий = Комментарий + Символы.ПС + "Сейчас = " + Время;
ТекстСообщения = НСтр("ru='Электронный документооборот с контролирующими органами. '") + Действие;
ЗаписьЖурналаРегистрации(ТекстСообщения, УровеньЖурналаРегистрации.Информация, , ,Комментарий);
КонецПроцедуры
#КонецОбласти
&НаКлиенте
Процедура Подключаемый_ПроверитьВыполнениеДлительнойОперацииНаКлиенте() Экспорт
РегламентированнаяОтчетностьКлиент.Подключаемый_ПроверитьВыполнениеДлительнойАлкоОперацииНаКлиенте(ЭтотОбъект);
КонецПроцедуры
#КонецОбласти