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