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