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