1С-Отчетность / Модуль

файл
&НаКлиенте
Перем ВыбранноеЗначениеЗакрытия;

&НаКлиенте
Перем ФормаДлительнойОперации;

&НаКлиенте
// Переменная инициализируется в ОМ "ОнлайнСервисыРегламентированнойОтчетностиКлиент".
Перем ОписаниеОповещенияПослеПроверкиПодключенияКИПП Экспорт;

&НаКлиенте
// Переменная используется извне формы механизмом длительных операций алкоотчетности.
Перем ПараметрыОбработчикаОжидания Экспорт;

&НаКлиенте
// Переменная инициализируется по первому запросу
Перем КонтекстЭДОКлиент Экспорт; 

&НаКлиенте
Перем КонтекстУжеПодключался;

&НаКлиенте
Перем ФормаОтчета; // Обход ошибки в платформе.

&НаКлиенте
Перем ВыбранныеОрганизации; // для обмена.

&НаКлиенте
Перем НомерОбъекта; // для обмена.

&НаКлиенте
Перем ВыполняетсяЗакрытиеФормы; // флаг для отключения обработки оповещения при закрытии формы.

&НаКлиенте
// Переменная используется механизмом длительных операций алкоотчетности.
Перем СтруктураВспомДанныхДлитОперацииАЛКО Экспорт;

&НаКлиенте
Перем ПараметрыЦиклаРазделения Экспорт; // Для разбивки писем ФНС

#Область ОбработчикиСобытийФормы

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	// СтандартныеПодсистемы.ПодключаемыеКоманды
	Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда
		
		МодульПодключаемыеКоманды = ОбщегоНазначения.ОбщийМодуль("ПодключаемыеКоманды");
		
		ПараметрыРазмещения = МодульПодключаемыеКоманды.ПараметрыРазмещения();
		
		ПараметрыРазмещения.КоманднаяПанель = ЭтаФорма.Элементы.ОтчетыГруппа3;
		ПараметрыРазмещения.Источники       = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(
			Метаданные.Документы.РегламентированныйОтчет);
		
		МодульПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект, ПараметрыРазмещения);
		
	КонецЕсли;
	// Конец СтандартныеПодсистемы.ПодключаемыеКоманды
		
	Если Параметры.Свойство("АвтоТест") Тогда
		Возврат;
	КонецЕсли;
	
	Параметры.Свойство("ЭтоРежимВыбора", ЭтоРежимВыбора);
	Параметры.Свойство("ОтборОрган", ОтборОрган);
	Параметры.Свойство("ТолькоОтправленные", ТолькоОтправленные);
	Параметры.Свойство("ВидУведомления", ВидУведомления);
	
	ЭтоРежимОблачной1СО = ДокументооборотСКОПовтИсп.ЭтоРежимОблачной1СО();
	
	КалендарьОтчетностиБРОВызовСервераПереопределяемый.ПриСозданииФормыРегламентированнойОтчетности(ЭтотОбъект);

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

&НаСервере
Процедура ОбновитьТаблицуУведомленийСХешем()
	ТаблицаУведомленийСХешем.Очистить();
	ЗначениеВРеквизитФормы(УведомлениеОСпецрежимахНалогообложения.ТаблицаУведомленийСХешем(), "ТаблицаУведомленийСХешем");
КонецПроцедуры

&НаКлиенте
Процедура ПриОткрытии()
	
	Подключаемый_АктуализироватьТекущееВремя();
	
	КонтекстУжеПодключался = Ложь;
	
	Если Элементы.Разделы.ТекущаяСтраница = Элементы.СтраницаНастройки Тогда
		УправлениеЭУГруппаНастройки();
	КонецЕсли;
	
	#Если ВебКлиент Тогда 
		ЭтоВебКлиент = Истина;
	#КонецЕсли
	
	УправлениеЭУРазделаЕГРЮЛ();
	
	ПараметрыОбработчикаОжидания = Новый Структура;
	ПараметрыОбработчикаОжидания.Вставить("МинимальныйИнтервал", 1);
	ПараметрыОбработчикаОжидания.Вставить("МаксимальныйИнтервал", 15);
	ПараметрыОбработчикаОжидания.Вставить("ТекущийИнтервал", 1);
	ПараметрыОбработчикаОжидания.Вставить("КоэффициентУвеличенияИнтервала", 1.4);
	
	Если РезультатПроверкиКоличестваНезаписанныхОбъектов <> Неопределено Тогда
		ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект);
		ПараметрыОжидания.ВыводитьСообщения = Истина;
		ПараметрыОжидания.ВыводитьОкноОжидания = Ложь;
		ОповещениеПроверитьВыполнение = Новый ОписаниеОповещения(
			"ПроверитьВыполнениеПодсчетаКоличестваНезаписанныхОбъектов", ЭтотОбъект);
		ДлительныеОперацииКлиент.ОжидатьЗавершение(
			РезультатПроверкиКоличестваНезаписанныхОбъектов, ОповещениеПроверитьВыполнение, ПараметрыОжидания);
	КонецЕсли;
	
	// ИнтернетПоддержкаПользователей.Новости.ПриОткрытии
	Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ИнтернетПоддержкаПользователей.Новости") Тогда
		МодульОбработкаНовостейКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ОбработкаНовостейКлиент");
		МодульОбработкаНовостейКлиент.КонтекстныеНовости_ПриОткрытии(ЭтотОбъект);
	КонецЕсли;
	// Конец ИнтернетПоддержкаПользователей.Новости.ПриОткрытии
	
	ПодключитьОбработчикОжидания("Подключаемый_ОбновитьНадписьВремяОбновления", 500);
	ПодключитьОбработчикОжидания("Подключаемый_ПроизвестиДействияПослеПоказаФормы", 1, Истина);
	ПрорисоватьПанельТребований(ЭтотОбъект);
	
	Если ЗначениеЗаполнено(СсылкаВКлюче) и ЗначениеЗаполнено(ОрганизацияВКлюче) Тогда
		СпозиционироватьсяНаСсылка(СсылкаВКлюче, ОрганизацияВКлюче, "Позиционирование");
	КонецЕсли;
	
	ДобавитьОтдельнуюКнопкуОбменаДляСЭДО = ПолучитьЗначениеДобавитьОтдельнуюКнопкуОбменаДляСЭДО();
	Элементы.ОбновитьДанныеСЭДО.Видимость = ДобавитьОтдельнуюКнопкуОбменаДляСЭДО;
	
	КалендарьОтчетностиБРОКлиентПереопределяемый.ПриОткрытииФормыРегламентированнойОтчетности(ЭтотОбъект);
	
КонецПроцедуры

&НаКлиенте
Процедура ИнициализироватьКонтекстЭДО(ОповещениеЗавершения = Неопределено) Экспорт
	Перем ДополнительныеПараметры;
	
	Если ОповещениеЗавершения <> Неопределено Тогда 
		ДополнительныеПараметры = Новый Структура;
		ДополнительныеПараметры.Вставить("ОповещениеЗавершения", ОповещениеЗавершения);
	КонецЕсли;
	
	ОписаниеОповещения = Новый ОписаниеОповещения("ИнициализироватьКонтекстЭДОЗавершение", ЭтотОбъект, ДополнительныеПараметры);
	ДокументооборотСКОКлиент.ПолучитьКонтекстЭДО(ОписаниеОповещения);
	
КонецПроцедуры

&НаКлиенте
Процедура ИнициализироватьКонтекстЭДОЗавершение(Результат, ДополнительныеПараметры) Экспорт
	
	КонтекстЭДОКлиент = Результат.КонтекстЭДО;
	ТекстОшибкиИнициализацииКонтекстаЭДО = Результат.ТекстОшибки;
	КонтекстУжеПодключался = Истина;
	Если ДополнительныеПараметры <> Неопределено Тогда 
		Если ДополнительныеПараметры.Свойство("ОповещениеЗавершения") Тогда 
			ВыполнитьОбработкуОповещения(ДополнительныеПараметры.ОповещениеЗавершения);
		КонецЕсли;
	КонецЕсли;

КонецПроцедуры

&НаКлиенте
Процедура ОбработкаОповещенияПредварительная(Результат, ПараметрыОповещения) Экспорт
	
	ОбработкаОповещения(
		ПараметрыОповещения.ИмяСобытия, 
		ПараметрыОповещения.Параметр, 
		ПараметрыОповещения.Источник);
	
КонецПроцедуры

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

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

&НаСервере
Процедура ДобавитьВидОтчетаВИзбранные(Отбор)
	
	МассивВидовОтчетов = ПолучитьСписокОтчетовИзРегистраСведений();
	Элементы.ОтборВидОтчета.СписокВыбора.ЗагрузитьЗначения(МассивВидовОтчетов);
	
	МенеджерЗаписиОтчета = РегистрыСведений.ЖурналОтчетовСтатусы.СоздатьМенеджерЗаписи();
	МенеджерЗаписиОтчета.Организация = Отбор.Организация;
	МенеджерЗаписиОтчета.Ссылка      = Отбор.Ссылка;
	МенеджерЗаписиОтчета.Прочитать();
	
	ДанныеНайденногоВидаОтчета = Неопределено;
	
	Если МенеджерЗаписиОтчета.Выбран() Тогда
		Если ЗначениеЗаполнено(МенеджерЗаписиОтчета.НаименованиеОтчета) Тогда
			НайденныеОтчеты = РанееОткрытыеВидыОтчетов.НайтиСтроки(Новый Структура("Наименование", МенеджерЗаписиОтчета.НаименованиеОтчета));
			Для каждого НайденныйОтчет Из НайденныеОтчеты Цикл
				Если НайденныйОтчет.ЭтоГруппа <> Истина Тогда
					ДанныеНайденногоВидаОтчета = Новый Структура("Наименование,ПолноеИмя,Ссылка");
					ЗаполнитьЗначенияСвойств(ДанныеНайденногоВидаОтчета, НайденныйОтчет);
					Прервать;
				КонецЕсли;
			КонецЦикла;
		КонецЕсли;
	КонецЕсли;
	
	Если ДанныеНайденногоВидаОтчета <> Неопределено Тогда
		
		ТаблицаРанееСозданныхОтчетов = ХранилищеНастроекДанныхФорм.Загрузить(
			"Обработка.ОбщиеОбъектыРеглОтчетности.Форма.ФормаСозданияОтчета",
			"ФормаОтчетность_ФормаСозданияОтчета_РанееСозданныеОтчеты");
		
		Если ТипЗнч(ТаблицаРанееСозданныхОтчетов) = Тип("ТаблицаЗначений") Тогда
			НайденныеОтчеты = ТаблицаРанееСозданныхОтчетов.НайтиСтроки(
				Новый Структура("ПолноеИмя,Ссылка", ДанныеНайденногоВидаОтчета.ПолноеИмя, ДанныеНайденногоВидаОтчета.Ссылка));
			Если НайденныеОтчеты.Количество() = 0 Тогда
				НоваяСтрока = ТаблицаРанееСозданныхОтчетов.Добавить();
				ЗаполнитьЗначенияСвойств(НоваяСтрока, ДанныеНайденногоВидаОтчета);
				
				ХранилищеНастроекДанныхФорм.Сохранить(
					"Обработка.ОбщиеОбъектыРеглОтчетности.Форма.ФормаСозданияОтчета",
					"ФормаОтчетность_ФормаСозданияОтчета_РанееСозданныеОтчеты", ТаблицаРанееСозданныхОтчетов);
			КонецЕсли;
		КонецЕсли;
		
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка)
	
	// Устанавливаем признак для отключения обработки оповещения при закрытии формы.
	ВыполняетсяЗакрытиеФормы = Истина;
	
КонецПроцедуры

&НаКлиенте
Процедура ПриЗакрытии(ЗавершениеРаботы)
	Если Не ЗавершениеРаботы И ТипЗнч(ОписаниеОповещенияОЗакрытии) = Тип("ОписаниеОповещения") Тогда
		// По какой-то причине не снимается блокировка с формы после ее закрытия 
		// Требуется принудительная очистка оповещения о закрытии
		Если ВыбранноеЗначениеЗакрытия <> Неопределено Тогда 
			ВыполнитьОбработкуОповещения(ОписаниеОповещенияОЗакрытии, ВыбранноеЗначениеЗакрытия);
		КонецЕсли;
		ОписаниеОповещенияОЗакрытии = Неопределено;
	КонецЕсли;
КонецПроцедуры

#КонецОбласти

#Область ОбработчикиСобытийЭлементовШапкиФормы

&НаКлиенте
Процедура ПредупреждениеОбОтправкеЕГРЮЛОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	
	Если ЗначениеЗаполнено(Организация) Тогда
		ВыбраннаяОрганизация = Организация;
	Иначе
		ВыбраннаяОрганизация = ПредопределенноеЗначение("Справочник.Организации.ПустаяСсылка");
	КонецЕсли;
	
	СоздатьУведомлениеЕГРЮЛ(
		ПредопределенноеЗначение("Перечисление.ВидыУведомленийОСпецрежимахНалогообложения.ФормаР13014"),
		ВыбраннаяОрганизация,
		Ложь);
	
КонецПроцедуры
	
&НаКлиенте
Процедура ЗакрытьПанельОтправкиЕГРЮЛНажатие(Элемент)
	
	ДокументооборотСКОВызовСервера.СохранитьНастройку(
		"ДокументооборотСКонтролирующимиОрганами_1СОтчетность_СкрытьПанельВЕГРЮЛ", 
		Истина);
		
	УстановитьВидимостьПанелиОтправкиВЕГРЮЛ();
	
КонецПроцедуры

&НаКлиенте
Процедура ВидЕГРЮЛПриИзменении(Элемент)
	
	ПриИзмененииВидаЕГРЮЛ();
	
КонецПроцедуры

&НаКлиенте
Процедура ВидЕГРЮЛНачалоВыбора(Элемент, ДанныеВыбора, ВыборДобавлением, СтандартнаяОбработка)
	ОтключитьОбработчикОжидания("ВидЕГРЮЛНачалоВыбораЗавершение");
	ПодключитьОбработчикОжидания("ВидЕГРЮЛНачалоВыбораЗавершение", 0.1, Истина);
КонецПроцедуры

&НаКлиенте
Процедура ВидЕГРЮЛНачалоВыбораЗавершение() Экспорт 
	МассивОбъектов = ПолучитьСписокЕГРЮЛИзРегистраСведений();
	Элементы.ВидЕГРЮЛ.СписокВыбора.ЗагрузитьЗначения(МассивОбъектов);
	Элементы.ВидЕГРЮЛ.СписокВыбора.СортироватьПоЗначению();
КонецПроцедуры

&НаКлиенте
Процедура ВидЕГРЮЛОчистка(Элемент, СтандартнаяОбработка)
	
	ПриИзмененииВидаЕГРЮЛ();
	
КонецПроцедуры

&НаКлиенте
Процедура ОтборПоПериодуТребованияПриИзменении(Элемент)
	
	ДобавитьОтборПоПериодуТребования(ЭтотОбъект);
	
КонецПроцедуры

&НаКлиенте
Процедура ОтборПоПериодуТребованияОчистка(Элемент, СтандартнаяОбработка)

	ПериодТребования.ДатаНачала = Дата(1, 1, 1);
	ПериодТребования.ДатаОкончания = Дата(1, 1, 1);
	
	ДобавитьОтборПоПериодуТребования(ЭтотОбъект);
	
КонецПроцедуры

&НаКлиенте
Процедура ОтборОрганизацияВходящиеОчистка(Элемент, СтандартнаяОбработка)
	
	ДействияПриИзмененииОтборовИОбновлениеВходящих(ЭтотОбъект);
	
КонецПроцедуры

&НаКлиенте
Процедура СсылкаЗаявленияНаПодключениеИзменениеНажатие(Элемент)
	
	ЭлектронныйДокументооборотСКонтролирующимиОрганамиКлиент.ОткрытьФормуСпискаЗаявленийНаПодключение(Организация);
	
КонецПроцедуры

&НаКлиенте
Процедура СостояниеТребованияПриИзменении(Элемент)
	
	ДобавитьОтборПоСостояниюТребования(ЭтотОбъект);
	
КонецПроцедуры

&НаКлиентеНаСервереБезКонтекста
Процедура ДобавитьОтборПоСостояниюТребования(Форма)
	
	Группа = Форма.Входящие.Отбор;
	
	Использование = 
		Форма.СостоянияТребований = НСтр("ru = 'Требует подтверждения или ответа'")
		И ОткрытаСтраницаТребований(Форма);
		
	ДобавитьОтборПоТребованиямНеотработанные(
		Группа, 
		Использование);
		
	Использование = 
		Форма.СостоянияТребований = НСтр("ru = 'Требует подтверждения'")
		И ОткрытаСтраницаТребований(Форма);
		
	ДобавитьОтборПоТребованиямБезПодтверждения(
		Группа, 
		Использование);
		
	Использование = 
		Форма.СостоянияТребований = НСтр("ru = 'Просрочен ответ'")
		И ОткрытаСтраницаТребований(Форма);
		
	ДобавитьОтборПоТребованиямПросроченные(
		Группа, 
		Использование);
		
	Использование = 
		(Форма.СостоянияТребований = НСтр("ru = 'Ответ дан'") ИЛИ Форма.СостоянияТребований = НСтр("ru = 'Требует ответа'"))
		И ОткрытаСтраницаТребований(Форма);
		
	ПравоеЗначение = Форма.СостоянияТребований = НСтр("ru = 'Ответ дан'");
		
	ДобавитьОтборПоНаличиюОтвета(
		Группа,
		Использование,
		ПравоеЗначение);
	
КонецПроцедуры

&НаКлиенте
Процедура ОтборПоВидуТребованияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
		
	ПараметрыФормы = Новый Структура;
	ПараметрыФормы.Вставить("Организация", Организация);
	ПараметрыФормы.Вставить("ИмяФормы","");
	
	Если ПараметрыФормы.ИмяФормы <> "" Тогда
		
		// Сначала попробуем найти его среди открытых стартовых форм.
		// Необходимо для предотвращения
		// открытия нескольких стартовых форм одного отчета.
		НайденоОкно = Ложь;
		РегламентированнаяОтчетностьКлиент.ВебКлиентНайтиАктивизироватьОкно(ПараметрыФормы.ИмяФормы, ЭтотОбъект, НайденоОкно);
		
		Если НайденоОкно <> Неопределено Тогда
			Если НайденоОкно Тогда
				Возврат;
			КонецЕсли;
		КонецЕсли;
	КонецЕсли;
	
	ЭтотОбъект.ПараметрыВыбораФормыСоздания = Неопределено;
	ОписаниеОповещенияОЗакрытииФормыСозданияОтчета = 
		Новый ОписаниеОповещения("ВыполнитьПослеЗакрытияОтбораПоВидуТребования", ЭтотОбъект);
	ОткрытьФорму("Обработка.ОбщиеОбъектыРеглОтчетности.Форма.ФормаВыбораВидаТребования", ПараметрыФормы, ЭтотОбъект,,,,
		ОписаниеОповещенияОЗакрытииФормыСозданияОтчета, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
	
КонецПроцедуры

&НаКлиенте
Процедура ОтборПоВидуТребованияОчистка(Элемент, СтандартнаяОбработка)
	
	Элемент.СписокВыбора.Очистить();
	ДобавитьОтборПоВидуТребования(ЭтотОбъект);
	
КонецПроцедуры

&НаКлиентеНаСервереБезКонтекста
Процедура ДобавитьОтборПоВидуТребования(Форма, Параметры = Неопределено)
	
	Если ТипЗнч(Параметры) = Тип("СписокЗначений") ИЛИ ТипЗнч(Параметры) = Тип("Структура") Тогда
		Если ТипЗнч(Параметры) = Тип("Структура") И Параметры.Свойство("Корень") Тогда
			Параметр = Параметры.ВидыТребований;
		Иначе
			Параметр = Параметры;
		КонецЕсли;
	КонецЕсли;
	
	Использование = ЗначениеЗаполнено(Параметр)
		И ЗначениеЗаполнено(Параметр.Количество() > 0)
		И ОткрытаСтраницаТребований(Форма);
	
	СписокВидовТребований = Новый СписокЗначений;
	К = 0;
	
	Если Использование Тогда
		Для Каждого Эл из Параметр Цикл
			СписокВидовТребований.Вставить(К, Эл.Значение, Эл.Представление);
			К = К + 1;
		КонецЦикла;
	КонецЕсли;
	
	ТребованияФНСКлиентСервер.ДобавитьЭлементКомпоновкиСУдалением(
		Форма.Входящие.Отбор,
		"ВидТребования",
		ВидСравненияКомпоновкиДанных.ВСписке,
		СписокВидовТребований,
		Использование);
	
КонецПроцедуры

&НаКлиентеНаСервереБезКонтекста
Функция ОткрытаСтраницаТребований(Форма)
	
	Элементы = Форма.Элементы;
	Возврат Элементы.ГруппаКатегориииВх.ТекущаяСтраница = Элементы.СтраницаТребования;
	
КонецФункции

&НаКлиентеНаСервереБезКонтекста
Процедура ДобавитьОтборПоПериодуТребования(Форма)
	
	Использование = 
		ЗначениеЗаполнено(Форма.ПериодТребования.ДатаНачала) 
		И ЗначениеЗаполнено(Форма.ПериодТребования.ДатаОкончания)
		И ОткрытаСтраницаТребований(Форма);
	
	ПредставлениеГруппы = НСтр("ru = 'Отбор на период требования'");
	ГруппаОтбора = ТребованияФНСКлиентСервер.СоздатьГруппуОтбораСУдалением(
		Форма.Входящие.Отбор, 
		ПредставлениеГруппы, 
		Использование, 
		ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ);

	ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(
		ГруппаОтбора,
		"Дата",
		ВидСравненияКомпоновкиДанных.БольшеИлиРавно,
		Форма.ПериодТребования.ДатаНачала,
		,
		Использование);
		
	ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(
		ГруппаОтбора,
		"Дата",
		ВидСравненияКомпоновкиДанных.МеньшеИлиРавно,
		Форма.ПериодТребования.ДатаОкончания,
		,
		Использование);
	
КонецПроцедуры

&НаКлиенте
Процедура ПанельТребованийОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	ПереключитьсяНаПроблемныеТребования();
	
	ПрорисоватьПанельТребований(ЭтотОбъект);

КонецПроцедуры

&НаКлиенте
Процедура ПриПереключенииРаздела(Элемент)
	
	ПредыдущаяГиперссылка 	= ТекущийРазделФормы(ЭтотОбъект);
	ТекущаяГиперссылка 		= Элемент;
	
	ПриПереключенииРазделаСервер(ПредыдущаяГиперссылка.Имя, ТекущаяГиперссылка.Имя);
	
	ВывестиТаблицуРаздела(ЭтотОбъект, Элемент.Имя);
	
	Если Элемент.Имя = "ГиперссылкаНастройки" Тогда
		УправлениеЭУГруппаНастройки();
	ИначеЕсли Элемент.Имя = "ГиперссылкаНовое" Тогда
		ОтметитьДеревоПросмотренным(Истина);
	ИначеЕсли Элемент.Имя = "ГиперссылкаЕГРЮЛ" Тогда
		УстановитьВидимостьПанелиОтправкиВЕГРЮЛ();
	КонецЕсли;
	
КонецПроцедуры

&НаСервере
Процедура ПриПереключенииРазделаСервер(ПредыдущаяГиперссылкаИмя, ТекущаяГиперссылкаИмя)
	
	ПредыдущаяГиперссылка 	= Элементы[ПредыдущаяГиперссылкаИмя];
	ТекущаяГиперссылка 		= Элементы[ТекущаяГиперссылкаИмя];
	
	// Делаем серой предыдущую гиперссылку.
	ПредыдущаяГиперссылка.ЦветФона		= Серый;
	ПредыдущаяГиперссылка.Гиперссылка	= Истина;

	// Делаем желтой текущую гиперссылку.
	ТекущаяГиперссылка.ЦветФона		= Желтый;
	ТекущаяГиперссылка.Гиперссылка	= Ложь;
	
КонецПроцедуры

&НаКлиенте
Процедура ГиперссылкаНажатие(Элемент, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	ПриПереключенииРаздела(Элемент);
	СохранитьНастройки();
	
КонецПроцедуры

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

&НаКлиентеНаСервереБезКонтекста
Процедура ОформитьКнопку(Форма, Гиперссылка, ТекущаяГиперссылка)
	
	АктивнаКнопка = (Гиперссылка = ТекущаяГиперссылка);
	
	Гиперссылка.ЦветФона	= ?(АктивнаКнопка, Форма.Желтый, Форма.Серый);
	Гиперссылка.Гиперссылка	= НЕ АктивнаКнопка;
	Гиперссылка.ЦветТекста	= Форма.Черный;
	
КонецПроцедуры

&НаКлиенте
Процедура ОрганизацияПриИзменении(Элемент)
	
	ДействияПриИзмененииОтборов(ЭтотОбъект);
	
КонецПроцедуры

&НаКлиенте
Процедура ОтборОрганизацияНастройкиПриИзменении(Элемент)
	
	ДействияПриИзмененииОтборов(ЭтотОбъект);
	УправлениеЭУГруппаНастройки();
	
КонецПроцедуры

&НаКлиенте
Процедура ОтборВидОтчетаПриИзменении(Элемент)
	
	УстановитьОтборыПоОтчетам(ЭтотОбъект);
	
КонецПроцедуры

&НаКлиенте
Процедура ОтборВидОтчетаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	
	МассивВидовОтчетов = ПолучитьСписокОтчетовИзРегистраСведений();
	
	ЭлектронныйДокументооборотСКонтролирующимиОрганамиКлиент.ОтборВидОтчетаНачалоВыбора(МассивВидовОтчетов);
	
	Элемент.СписокВыбора.ЗагрузитьЗначения(МассивВидовОтчетов);
	Элемент.СписокВыбора.СортироватьПоЗначению();
	
	ПараметрыФормыВыбораВидаОтчета = Новый Структура;
	ПараметрыФормыВыбораВидаОтчета.Вставить("Заголовок", "Выберите виды отчетов");
	ПараметрыФормыВыбораВидаОтчета.Вставить("ИсходныйСписок", ВидОтчета);
	ПараметрыФормыВыбораВидаОтчета.Вставить("ТипИсточника", "Список");
	ПараметрыФормыВыбораВидаОтчета.Вставить("СписокЗначенийДляВыбора", Элемент.СписокВыбора.Скопировать());
	
	ПолноеИмяФормыВыбораВидаОтчета = "";
	
	РегламентированнаяОтчетностьКлиентПереопределяемый.ФормаРегламентированнойОтчетности_ОпределениеФормыВыбораВидаОтчета(
		ПолноеИмяФормыВыбораВидаОтчета, ПараметрыФормыВыбораВидаОтчета);
	
	Если ЗначениеЗаполнено(ПолноеИмяФормыВыбораВидаОтчета) Тогда
		СтандартнаяОбработка = Ложь;
		ОткрытьФорму(ПолноеИмяФормыВыбораВидаОтчета, ПараметрыФормыВыбораВидаОтчета, Элемент);
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ОтборВидОтчетаОчистка(Элемент, СтандартнаяОбработка)
	
	Элемент.СписокВыбора.Очистить();
	
КонецПроцедуры

&НаКлиенте
Процедура ОтборПериодОтчетаПриИзменении(Элемент)
	
	СохранитьНастройки();
	
КонецПроцедуры

&НаКлиенте
Процедура ОтборПериодНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)

	ОписаниеОповещения = Новый ОписаниеОповещения(
		"ОтборПериодНачалоВыбора_Завершение", 
		ЭтотОбъект);
	
	РегламентированнаяОтчетностьКлиент.ОтборПериодНачалоВыбора(ЭтотОбъект, ОписаниеОповещения, СтандартнаяОбработка, ТекущаяДатаНаСервере());
	
КонецПроцедуры

&НаКлиенте
Процедура ОтборПериодНачалоВыбора_Завершение(РезультатВыбора, ДопПараметры) Экспорт
	
	Если РезультатВыбора = Неопределено Тогда
		Возврат;
	КонецЕсли;
	
	ЗаполнитьЗначенияСвойств(ЭтотОбъект, РезультатВыбора);
	
	УстановитьОтборыПоОтчетам(ЭтотОбъект);
	
	СохранитьНастройки();
	
КонецПроцедуры

&НаКлиенте
Процедура ОтборПериодОтчетаОчистка(Элемент, СтандартнаяОбработка)
	
	НачалоПериода = Дата(1, 1, 1);
	КонецПериода  = Дата(1, 1, 1);
	
	УстановитьОтборыПоОтчетам(ЭтотОбъект);
	
	СохранитьНастройки();
	
КонецПроцедуры

&НаКлиенте
Процедура СортироватьОтчетыПоПериоду(Команда)
	
	УстановитьСортировкуПоУмолчанию(ЭтотОбъект);
	
КонецПроцедуры

&НаКлиенте
Процедура СохранитьОтборыИСортировку(Команда)
	
	СохранитьНастройкиОтбораИСортировки();
	
КонецПроцедуры

&НаКлиенте
Процедура ЗаявлениеНаПодключениеК1СОтчетностиНажатие(Элемент)
	
	ЭлектронныйДокументооборотСКонтролирующимиОрганамиКлиент.ОткрытьФормуМастераЗаявленияНаПодключение(Организация, ЭтотОбъект);
	
КонецПроцедуры

&НаКлиенте
Процедура НастройкиОбменаНажатие(Элемент)
	
	ЭлектронныйДокументооборотСКонтролирующимиОрганамиКлиент.ОткрытьФормуНастроекОбмена(Организация);
	
КонецПроцедуры

&НаКлиенте
Процедура СписокЗаявленийОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	ЭлектронныйДокументооборотСКонтролирующимиОрганамиКлиент.ОткрытьФормуСпискаЗаявленийНаПодключение(Организация);
	
КонецПроцедуры

&НаКлиенте
Процедура НастройкиДокументооборотаСГосОрганамиНажатиеПредварительное(Результат, ПараметрыОповещения) Экспорт
	
	НастройкиДокументооборотаСГосОрганамиНажатие(ПараметрыОповещения.Элемент);
	
КонецПроцедуры
	
&НаКлиенте
Процедура НастройкиДокументооборотаСГосОрганамиНажатие(Элемент)
	
	Если КонтекстЭДОКлиент = Неопределено И КонтекстУжеПодключался <> Истина Тогда
		ПараметрыОповещения = Новый Структура;
		ПараметрыОповещения.Вставить("Элемент", Элемент);
		Оповещение = Новый ОписаниеОповещения("НастройкиДокументооборотаСГосОрганамиНажатиеПредварительное", ЭтотОбъект, ПараметрыОповещения);
		ИнициализироватьКонтекстЭДО(Оповещение);
		Возврат;
	КонецЕсли;
	
	Если КонтекстЭДОКлиент = Неопределено Тогда
		ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстОшибкиИнициализацииКонтекстаЭДО);
		Возврат;
	КонецЕсли;
	
	КонтекстЭДОКлиент.ОткрытьФормуОбщихНастроекЭДО();
	
КонецПроцедуры

&НаКлиенте
Процедура ОтборОрганизацияСверкиПриИзменении(Элемент)
	 ДействияПриИзмененииОтборов(ЭтотОбъект);
КонецПроцедуры

&НаКлиенте
Процедура ОтборВидСверкиПриИзменении(Элемент)
	ДействияПриИзмененииОтборов(ЭтотОбъект);
КонецПроцедуры

&НаКлиенте
Процедура ОтборОрганизацияЕГРЮЛПриИзменении(Элемент)
	ДействияПриИзмененииОтборов(ЭтотОбъект);
КонецПроцедуры

&НаКлиенте
Процедура ОтборОрганизацияПисьмаПриИзменении(Элемент)
	ДействияПриИзмененииОтборов(ЭтотОбъект);
КонецПроцедуры

&НаКлиенте
Процедура ОтборОрганизацияУведомленияПриИзменении(Элемент)
	ДействияПриИзмененииОтборов(ЭтотОбъект);
КонецПроцедуры

&НаКлиенте
Процедура ОтборОрганизацияВходящиеПриИзменении(Элемент)
	
	ДействияПриИзмененииОтборовИОбновлениеВходящих(ЭтотОбъект);
	
КонецПроцедуры

&НаКлиенте
Процедура ОтборВидУведомленияПриИзменении(Элемент)
	СписокНаименованийУведомлений.Очистить();
	Элемент.СписокВыбора.Очистить();
	Элемент.РежимВыбораИзСписка = Ложь;
	Элемент.ОбновлениеТекстаРедактирования = ОбновлениеТекстаРедактирования.Авто;
	ВидУведомления = ПредставлениеВидаУведомления;
	Если Не ЗначениеЗаполнено(ВидУведомления) И ТаблицаУведомленийСХешем.Количество() > 0 Тогда 
		ОтбСтроки = ТаблицаУведомленийСХешем.НайтиСтроки(Новый Структура("Синоним", ПредставлениеВидаУведомления));
		Если ОтбСтроки.Количество() > 0 Тогда 
			ВидУведомления = ОтбСтроки[0].ВидУведомления;
		КонецЕсли;
	КонецЕсли;
	ДействияПриИзмененииОтборов(ЭтотОбъект);
КонецПроцедуры

&НаКлиенте
Процедура ОтборВидУведомленияИзменениеТекстаРедактирования(Элемент, Текст, СтандартнаяОбработка)
	Если ТаблицаУведомленийСХешем.Количество() = 0 Или Не ЗначениеЗаполнено(Текст) Тогда 
		Возврат;
	КонецЕсли;
	
	СписокНаименованийУведомлений.Очистить();
	
	СтандартнаяОбработка = Ложь;
	Элемент.ОбновлениеТекстаРедактирования = ОбновлениеТекстаРедактирования.НеИспользовать;
	Элемент.СписокВыбора.Очистить();
	ТермыПоиска = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(Текст, " ", Истина, Истина);
	Для Каждого Стр Из ТаблицаУведомленийСХешем Цикл 
		ВключатьВСписок = Истина;
		Для Каждого Терм Из ТермыПоиска Цикл 
			Если СтрНайти(Стр.Хеш, ПолучитьХеш(Терм)) = 0 Тогда 
				ВключатьВСписок = Ложь;
				Прервать;
			КонецЕсли;
		КонецЦикла;
		Если ВключатьВСписок Тогда 
			Элемент.СписокВыбора.Добавить(Стр.Синоним);
		КонецЕсли;
	КонецЦикла;
	Элемент.РежимВыбораИзСписка = (Элемент.СписокВыбора.Количество() > 0);
КонецПроцедуры

&НаКлиенте
Процедура ОтборВидУведомленияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	
	ОписаниеОповещения = Новый ОписаниеОповещения("ОбработкаВыбораВидаУведомления", ЭтотОбъект);
	
	ПараметрыФормы 	= Новый Структура;
	ПараметрыФормы.Вставить("Организация", Организация);
  	ПараметрыФормы.Вставить("УчитыватьУведомленияНеВходящиеВБРО", Истина);
	
	Если ЗначениеЗаполнено(ПредставлениеВидаУведомления) И ЗначениеЗаполнено(ВидУведомления) Тогда
		ПараметрыФормы.Вставить("ВидУведомления", ВидУведомления);
	КонецЕсли;
	
	ОткрытьФорму("Документ.УведомлениеОСпецрежимахНалогообложения.Форма.ФормаВыбораВидаСообщения", ПараметрыФормы,,,,, 
		ОписаниеОповещения, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);

КонецПроцедуры

&НаКлиенте
Процедура ПодсказкиПроПроверкуПодписиОбработкаНавигационнойСсылкиПредварительное(Результат, ПараметрыОповещения) Экспорт
	
	ПодсказкиПроПроверкуПодписиОбработкаНавигационнойСсылки(
		ПараметрыОповещения.Элемент,
		ПараметрыОповещения.НавигационнаяСсылкаФорматированнойСтроки,
		ПараметрыОповещения.СтандартнаяОбработка);
	
КонецПроцедуры

&НаКлиенте
Процедура ПодсказкиПроПроверкуПодписиОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	
	Если КонтекстЭДОКлиент = Неопределено И КонтекстУжеПодключался <> Истина Тогда
		ПараметрыОповещения = Новый Структура;
		ПараметрыОповещения.Вставить("Элемент", Элемент);
		ПараметрыОповещения.Вставить("НавигационнаяСсылкаФорматированнойСтроки", НавигационнаяСсылкаФорматированнойСтроки);
		ПараметрыОповещения.Вставить("СтандартнаяОбработка", СтандартнаяОбработка);
		Оповещение = Новый ОписаниеОповещения(
			"ПодсказкиПроПроверкуПодписиОбработкаНавигационнойСсылкиПредварительное", 
			ЭтотОбъект, 
			ПараметрыОповещения
		);
		ИнициализироватьКонтекстЭДО(Оповещение);
		Возврат;
	КонецЕсли;
	
	Если КонтекстЭДОКлиент = Неопределено Тогда
		ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстОшибкиИнициализацииКонтекстаЭДО);
		Возврат;
	КонецЕсли;
	
	ОткрытьФорму(КонтекстЭДОКлиент.ПутьКОбъекту + ".Форма.ЧтоОзначаетПодписьНедействительна");
	
КонецПроцедуры

&НаКлиенте
Процедура СообщениеПроОшибкиОбменаОбработкаНавигационнойСсылкиПредварительное(Результат, ПараметрыОповещения) Экспорт
	
	СообщениеПроОшибкиОбменаОбработкаНавигационнойСсылки(
		ПараметрыОповещения.Элемент,
		ПараметрыОповещения.НавигационнаяСсылкаФорматированнойСтроки,
		ПараметрыОповещения.СтандартнаяОбработка);
	
КонецПроцедуры
	
&НаКлиенте
Процедура СообщениеПроОшибкиОбменаОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	
	Если КонтекстЭДОКлиент = Неопределено И КонтекстУжеПодключался <> Истина Тогда
		ПараметрыОповещения = Новый Структура;
		ПараметрыОповещения.Вставить("Элемент", Элемент);
		ПараметрыОповещения.Вставить("НавигационнаяСсылкаФорматированнойСтроки", НавигационнаяСсылкаФорматированнойСтроки);
		ПараметрыОповещения.Вставить("СтандартнаяОбработка", СтандартнаяОбработка);
		Оповещение = Новый ОписаниеОповещения(
			"СообщениеПроОшибкиОбменаОбработкаНавигационнойСсылкиПредварительное", 
			ЭтотОбъект, 
			ПараметрыОповещения
		);
		ИнициализироватьКонтекстЭДО(Оповещение);
		Возврат;
	КонецЕсли;
	
	Если КонтекстЭДОКлиент <> Неопределено Тогда 		
		ВходящийКонтекст = ПолучитьИзВременногоХранилища(АдресСведенийПоОшибкам);	
		ДлительнаяОтправкаКлиент.ПоказатьОшибки(КонтекстЭДОКлиент.ПутьКОбъекту, ВходящийКонтекст);		
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ВыполнитьПослеЗакрытияОтбораПоВидуТребования(Параметр = Неопределено, ДопПараметр = Неопределено) Экспорт
	
	Если Параметр = Неопределено Тогда
		Возврат;
	КонецЕсли;
	
	Если ТипЗнч(Параметр) = Тип("СписокЗначений") Тогда
		Если Параметр.Количество() = 1 Тогда
			ВидТребования = Строка(Параметр[0].Значение);
			Элементы.ОтборПоВидуТребования.СписокВыбора.Добавить(Строка(Параметр[0].Значение), Параметр[0].Представление);
		КонецЕсли;
	Иначе
		ВидТребования = "По всем видам требований " + Параметр["Корень"];
		Элементы.ОтборПоВидуТребования.СписокВыбора.Добавить(
			"По всем видам требований " + Параметр["Корень"], "По всем видам требований " + Параметр["Корень"]);
	КонецЕсли;
	
	ДобавитьОтборПоВидуТребования(ЭтаФорма, Параметр);
	
КонецПроцедуры

&НаКлиенте
Процедура ОтборСтатусОтчетаПриИзменении(Элемент)
	
	ДобавитьОтборПоСостояниюОтчетов(ЭтотОбъект);
	
КонецПроцедуры

&НаКлиенте
Процедура ОтборСтатусУведомленияПриИзменении(Элемент)
	
	ДобавитьОтборПоСостояниюУведомлений(ЭтотОбъект);
	
КонецПроцедуры

#КонецОбласти

#Область ОбработчикиСобытийЭлементовТаблицыФормы

#Область ОбработчикиСобытийЭлементовТаблицыНовое

&НаКлиенте
Процедура ТаблицаНовоеВыборПредварительное(Результат, ПараметрыОповещения) Экспорт
	
	ТаблицаНовоеВыбор(
		ПараметрыОповещения.Элемент,
		ПараметрыОповещения.ВыбраннаяСтрока,
		ПараметрыОповещения.Поле,
		ПараметрыОповещения.СтандартнаяОбработка);
	
КонецПроцедуры
	
&НаКлиенте
Процедура ТаблицаНовоеВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	Ссылка = Элемент.ТекущиеДанные.Ссылка;
	Если Поле.Имя = "ТаблицаНовоеОбъектНаименованиеСсылка" Тогда
		Если Элемент.ТекущиеДанные.ЕстьОтвет Тогда // есть ответ
			
			Если КонтекстЭДОКлиент = Неопределено И КонтекстУжеПодключался <> Истина Тогда
				ПараметрыОповещения = Новый Структура;
				ПараметрыОповещения.Вставить("Элемент", Элемент);
				ПараметрыОповещения.Вставить("ВыбраннаяСтрока", ВыбраннаяСтрока);
				ПараметрыОповещения.Вставить("Поле", Поле);
				ПараметрыОповещения.Вставить("СтандартнаяОбработка", СтандартнаяОбработка);
				Оповещение = Новый ОписаниеОповещения("ТаблицаНовоеВыборПредварительное", ЭтотОбъект, ПараметрыОповещения);
				ИнициализироватьКонтекстЭДО(Оповещение);
				Возврат;
			КонецЕсли;
	
			Если КонтекстЭДОКлиент <> Неопределено И НЕ ПереопределитьОткрытие(Элемент) Тогда
				Если ТипЗнч(Ссылка) = Тип("ДокументСсылка.ЗапросНаИнформационноеОбслуживаниеНалогоплательщика") Тогда
					КонтекстЭДОКлиент.ПоказатьОтветНаЗапросИОН(Ссылка);
				ИначеЕсли ТипЗнч(Ссылка) = Тип("ДокументСсылка.ЗапросНаИнформационноеОбслуживаниеСтрахователя") Тогда
					КонтекстЭДОКлиент.ПоказатьОтветНаЗапросИОС(Ссылка);
				ИначеЕсли ТипЗнч(Ссылка) = Тип("ДокументСсылка.ЗапросНаВыпискуИзЕГРЮЛ_ЕГРИП") Тогда
					КонтекстЭДОКлиент.ПоказатьОтветНаЗапросВыпискиЕГРЮЛ_ЕГРИП(Ссылка);
				ИначеЕсли ТипЗнч(Ссылка) = Тип("ДокументСсылка.ЗаявлениеНаФормированиеСправкиОРасчетах") Тогда
					КонтекстЭДОКлиент.ПоказатьОтветНаЗапросИОС(Ссылка);
				КонецЕсли;
			КонецЕсли;
			ПометитьПрочтенными();
		ИначеЕсли НЕ ПереопределитьОткрытие(Элемент) Тогда
			РедактироватьОбъект(Элемент);
		КонецЕсли;
	ИначеЕсли Поле.Имя = "ТаблицаНовоеСтатус" Тогда
		ПоказатьФормуСтатусовОтправкиИзСписка(Элемент);
	ИначеЕсли Поле.Имя = "ТаблицаНовоеЕстьКритическиеОшибкиОтправки" И Элемент.ТекущиеДанные.ЕстьКритическиеОшибкиОтправки Тогда
		ПоказатьКритическиеОшибкиПоСсылке(Ссылка);
	ИначеЕсли НЕ ПереопределитьОткрытие(Элемент) Тогда
		РедактироватьОбъект(Элемент);
	КонецЕсли;
	
КонецПроцедуры

#КонецОбласти

#Область ОбработчикиСобытийЭлементовТаблицыОтчеты

&НаКлиенте
Процедура ОтчетыВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
	
	Если Элемент.ТекущиеДанные <> Неопределено Тогда
		
		РегламентированнаяОтчетностьКлиент.ОтчетыВыбор(ЭтотОбъект, Элемент, Поле, СтандартнаяОбработка);
		
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ОтчетыПроверкаПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, Строка, Поле)
	
	СтандартнаяОбработка = Ложь;
		
КонецПроцедуры

&НаКлиенте
Процедура ОтчетыПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, Строка, Поле)
	
	СтандартнаяОбработка = Ложь;
	
	ДокументооборотСКОКлиент.СоздатьЭлектронноеПредставлениеРегламентированныхОтчетовИзФайлов(ПараметрыПеретаскивания.Значение, УникальныйИдентификатор);

КонецПроцедуры

&НаКлиенте
Процедура ОтчетыПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр)
	
	Отказ = Истина;
	
	Если Копирование Тогда
		
		ТекущиеДанные = Элементы.Отчеты.ТекущиеДанные;
		
		Если ТекущиеДанные <> Неопределено Тогда
			
			Ссылка = ТекущиеДанные.РегламентированныйОтчет;
			ПараметрыФормы = Новый Структура("ЗначениеКопирования", Ссылка); 
			
			Если ТипЗнч(Ссылка) = Тип("СправочникСсылка.ЭлектронныеПредставленияРегламентированныхОтчетов") Тогда
				
				ОткрытьФорму("Справочник.ЭлектронныеПредставленияРегламентированныхОтчетов.ФормаОбъекта", ПараметрыФормы);
				
			ИначеЕсли ТипЗнч(Ссылка) = Тип("ДокументСсылка.РегламентированныйОтчет") Тогда
				
				ОткрытьФорму("Документ.РегламентированныйОтчет.ФормаОбъекта", ПараметрыФормы, ЭтотОбъект);
				
			Иначе
				
				ИмяФормыОбъекта = ИмяФормыОбъектаПоУмолчанию(Ссылка);
				ОткрытьФорму(ИмяФормыОбъекта, ПараметрыФормы);
				
			КонецЕсли;
			
		КонецЕсли;
		
	Иначе
		
		СоздатьОтчет();
		
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ОтчетыПередНачаломИзменения(Элемент, Отказ)
	
	Отказ = Истина;
	
	ТекущиеДанные = Элементы.Отчеты.ТекущиеДанные;
	Если ТекущиеДанные <> Неопределено Тогда
		
		Ссылка = ТекущиеДанные.РегламентированныйОтчет;
		ПоказатьЗначение(,Ссылка);
		
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ОтчетыПередУдалением(Элемент, Отказ)
	Отказ = Истина;
	ОтключитьОбработчикОжидания("ОтчетыПередУдалениемЗавершение");
	ПодключитьОбработчикОжидания("ОтчетыПередУдалениемЗавершение", 0.1, Истина);
КонецПроцедуры

&НаКлиенте
Процедура ОтчетыПередУдалениемЗавершение() Экспорт 
	ПометитьНаУдалениеОбъект(Элементы.Отчеты);
КонецПроцедуры

&НаСервере
Процедура ОтчетыПриОбновленииСоставаПользовательскихНастроекНаСервере(СтандартнаяОбработка)
	
	ПользовательскиеНастройкиДинамическогоСписка = ЭтотОбъект.Отчеты.КомпоновщикНастроек.ПользовательскиеНастройки;
	
	ЭтоТипСтрока = Элементы.ОтборВидОтчета.РежимВыбораИзСписка;
	
	ЗначениеВидОтчета     = Новый СписокЗначений;
	ЗначениеВидОтчетаСтр  = "";
	ЗначениеОрганизация   = Справочники.Организации.ПустаяСсылка();
	ЗначениеНачалоПериода = Дата(1, 1, 1);
	ЗначениеКонецПериода  = Дата(1, 1, 1);
	
	МассивЗначенийКонецПериода = Новый Массив;
	
	ПолеКомпоновкиНаименованиеОтчета = Новый ПолеКомпоновкиДанных("НаименованиеОтчета");
	ПолеКомпоновкиОрганизация        = Новый ПолеКомпоновкиДанных("Организация");
	ПолеКомпоновкиДатаНачала         = Новый ПолеКомпоновкиДанных("ДатаНачала");
	ПолеКомпоновкиДатаОкончания      = Новый ПолеКомпоновкиДанных("ДатаОкончания");
	
	Для Каждого ЭлементПользовательскойНастройки Из ПользовательскиеНастройкиДинамическогоСписка.Элементы Цикл
		Если ТипЗнч(ЭлементПользовательскойНастройки) = Тип("ОтборКомпоновкиДанных")
			И ЭлементПользовательскойНастройки.ИдентификаторПользовательскойНастройки =
				ЭтотОбъект.Отчеты.КомпоновщикНастроек.Настройки.Отбор.ИдентификаторПользовательскойНастройки Тогда
			Для Каждого ЭлементОтбора Из ЭлементПользовательскойНастройки.Элементы Цикл
				Если ТипЗнч(ЭлементОтбора) = Тип("ЭлементОтбораКомпоновкиДанных") Тогда
					Если ЭлементОтбора.ЛевоеЗначение = ПолеКомпоновкиНаименованиеОтчета Тогда
						Если ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке Тогда
							ЗначениеВидОтчета = ЭлементОтбора.ПравоеЗначение;
						ИначеЕсли ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно Тогда
							ЗначениеВидОтчетаСтр = ЭлементОтбора.ПравоеЗначение;
						ИначеЕсли СокрЛП(ЭлементОтбора.ПравоеЗначение) = "Макет пенсионного дела"
							ИЛИ СокрЛП(ЭлементОтбора.ПравоеЗначение) = "Заявление о назначении пенсии" Тогда
							ЗначениеВидОтчетаСтр = ЭлементОтбора.ПравоеЗначение;
						КонецЕсли;
					ИначеЕсли ЭлементОтбора.ЛевоеЗначение = ПолеКомпоновкиОрганизация Тогда
						ЗначениеОрганизация = ЭлементОтбора.ПравоеЗначение;
					ИначеЕсли ЭлементОтбора.ЛевоеЗначение = ПолеКомпоновкиДатаНачала Тогда
						ЗначениеНачалоПериода = ЭлементОтбора.ПравоеЗначение;
					ИначеЕсли ЭлементОтбора.ЛевоеЗначение = ПолеКомпоновкиДатаОкончания Тогда
						МассивЗначенийКонецПериода.Добавить(ЭлементОтбора.ПравоеЗначение);
					КонецЕсли;
				ИначеЕсли ТипЗнч(ЭлементОтбора) = Тип("ГруппаЭлементовОтбораКомпоновкиДанных") Тогда
					Для Каждого ЭлементОтбораВГруппе Из ЭлементОтбора.Элементы Цикл
						Если ТипЗнч(ЭлементОтбораВГруппе.ПравоеЗначение) = Тип("СписокЗначений") Тогда
							ЗначениеВидОтчета = ЭлементОтбораВГруппе.ПравоеЗначение;
						Иначе
							ЗначениеВидОтчетаСтр = ЭлементОтбораВГруппе.ПравоеЗначение;
						КонецЕсли;
					КонецЦикла;
				КонецЕсли;
			КонецЦикла;
		КонецЕсли;
	КонецЦикла;
	
	Если ЗначениеЗаполнено(ЗначениеВидОтчетаСтр) Тогда
		Если ЗначениеВидОтчета.НайтиПоЗначению(ЗначениеВидОтчетаСтр) = Неопределено Тогда
			ЗначениеВидОтчета.Добавить(ЗначениеВидОтчетаСтр);
		КонецЕсли;
	КонецЕсли;
	
	Если ЭтоТипСтрока Тогда
		ВидОтчета = ?(ЗначениеЗаполнено(ЗначениеВидОтчета), ЗначениеВидОтчета[0].Значение, "");
	Иначе
		ВидОтчета = ЗначениеВидОтчета;
	КонецЕсли;
	
	Организация = ЗначениеОрганизация;
	
	Если МассивЗначенийКонецПериода.Количество() > 0 Тогда
		ЗначениеКонецПериода = МассивЗначенийКонецПериода[МассивЗначенийКонецПериода.ВГраница()];
		Если МассивЗначенийКонецПериода.Количество() > 1 И НЕ ТолькоУказанныйПериод Тогда
			ЗначениеНачалоПериода = МассивЗначенийКонецПериода[0];
		КонецЕсли;
	КонецЕсли;
	
	ОбновлНачалоПериода = ?(ЗначениеЗаполнено(ЗначениеНачалоПериода), НачалоДня(ЗначениеНачалоПериода), ЗначениеНачалоПериода);
	ОбновлКонецПериода  = ?(ЗначениеЗаполнено(ЗначениеКонецПериода),  КонецДня(ЗначениеКонецПериода),   ЗначениеКонецПериода);
	
	Если ОбновлНачалоПериода <> НачалоПериода ИЛИ ОбновлКонецПериода <> КонецПериода Тогда
		НачалоПериода = ОбновлНачалоПериода;
		КонецПериода  = ОбновлКонецПериода;
		ПериодОтчета  = ПредставлениеПериода(НачалоПериода, КонецПериода, "ФП=Истина");
	КонецЕсли;
	
	Если НачалоПериода = Дата(1, 1, 1) Тогда
		ПериодОтчета = "";
	КонецЕсли;
	
КонецПроцедуры

&НаСервере
Процедура ПодменитьСсылку(Ссылка) Экспорт
	Попытка
		Если ОбщегоНазначения.ПодсистемаСуществует("РегламентированнаяОтчетность.СообщенияВКонтролирующиеОрганы.КонвертацияОтчетовПриПереходеС82") Тогда 
			ОМ_УведомлениеОСпецрежимахНалогообложенияПовтИсп = ОбщегоНазначения.ОбщийМодуль("УведомлениеОСпецрежимахНалогообложенияПовтИсп");
			Ссылка = ОМ_УведомлениеОСпецрежимахНалогообложенияПовтИсп.ПодменитьСсылкуНаОтчет(Ссылка);
		КонецЕсли;
	Исключение
	КонецПопытки;
КонецПроцедуры

#КонецОбласти

#Область ОбработчикиСобытийЭлементовТаблицыУведомления

&НаКлиенте
Процедура УведомленияПередУдалением(Элемент, Отказ)
	Отказ = Истина;
	ПометитьНаУдалениеОбъект(Элемент);
КонецПроцедуры

&НаКлиенте
Процедура УведомленияПередНачаломИзменения(Элемент, Отказ)
	Отказ = Истина;
	РедактироватьОбъект(Элемент);
КонецПроцедуры

&НаКлиенте
Процедура УведомленияВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
	СтандартнаяОбработка = Ложь;
	ТекущиеДанные = Элемент.ТекущиеДанные;
	Если ТекущиеДанные <> Неопределено Тогда
		Ссылка = ТекущиеДанные.Ссылка;
		
		Если Поле.Имя = "УведомленияСтатусОтправки" Тогда
			Если РегламентированнаяОтчетностьКлиентСервер.ОбъектНеОтправлялсяЧерез1СОтчетность(
				ТекущиеДанные.СостояниеСдачиОтчетности) Тогда
				ВыбратьСтатусОтправкиИзСписка(Элемент);
			Иначе
				ПоказатьФормуСтатусовОтправкиИзСписка(Элемент);
			КонецЕсли;
		ИначеЕсли Поле.Имя = "УведомленияЕстьКритическиеОшибкиОтправки" И ТекущиеДанные.ЕстьКритическиеОшибкиОтправки Тогда
			ПоказатьКритическиеОшибкиПоСсылке(Ссылка);
		ИначеЕсли ЭтоРежимВыбора Тогда
			ВыбранноеЗначениеЗакрытия = Ссылка;
			Закрыть(Ссылка);
		Иначе
			РедактироватьОбъект(Элемент);
		КонецЕсли;
	КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура УведомленияПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр)
	Отказ = Истина;
	Если Копирование Тогда
		
		ТекущиеДанные = Элементы.Уведомления.ТекущиеДанные;
		Если ТекущиеДанные <> Неопределено Тогда
			
			Ссылка 			= ТекущиеДанные.Ссылка;
			ТипыСсылки 		= ТипЗнч(Ссылка);
			
			ПараметрыФормы 	= Новый Структура;
			ПараметрыФормы.Вставить("ЗначениеКопирования", Ссылка);
			
			Если ТипыСсылки = Тип("ДокументСсылка.УведомлениеОСпецрежимахНалогообложения") Тогда
				// Это уведомления из БРО
				ПараметрыФормы.Вставить("Организация", 		ТекущиеДанные.Организация);
				ПараметрыФормы.Вставить("ВидУведомления", 	ВидУведомленияОСпецрежимахНалогообложения(ТекущиеДанные.Ссылка));
				ОткрытьФорму("Документ.УведомлениеОСпецрежимахНалогообложения.ФормаОбъекта", ПараметрыФормы);
			ИначеЕсли ТипЗнч(Ссылка) = Тип("СправочникСсылка.ЭлектронныеПредставленияРегламентированныхОтчетов") Тогда
				// Это электронные представления
				ОткрытьФорму("Справочник.ЭлектронныеПредставленияРегламентированныхОтчетов.ФормаОбъекта", ПараметрыФормы);
			Иначе
				// Это объекты из ЗУПа
				ИмяТипа = ЭлектронныйДокументооборотСКонтролирующимиОрганамиВызовСервера.ПолноеИмяТипа(ТипыСсылки);
				ОткрытьФорму(ИмяТипа + ".ФормаОбъекта", ПараметрыФормы);
			КонецЕсли;
			
		КонецЕсли;
		
	Иначе
		СоздатьНовоеУведомление();
	КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура УведомленияПроверкаПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, Строка, Поле)
	
	СтандартнаяОбработка = Ложь;
	
КонецПроцедуры

&НаКлиенте
Процедура УведомленияПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, Строка, Поле)
	
	СтандартнаяОбработка = Ложь;
	
	ДокументооборотСКОКлиент.СоздатьЭлектронноеПредставлениеРегламентированныхОтчетовИзФайлов(ПараметрыПеретаскивания.Значение, УникальныйИдентификатор);
	
КонецПроцедуры

#КонецОбласти

#Область ОбработчикиСобытийЭлементовТаблицыПисьма

&НаКлиенте
Процедура ПисьмаПередУдалением(Элемент, Отказ)
	Отказ = Истина;
	ПометитьНаУдалениеОбъект(Элемент);
КонецПроцедуры

&НаКлиенте
Процедура ПисьмаПередНачаломИзменения(Элемент, Отказ)
	Отказ = Истина;
	РедактироватьОбъект(Элемент);
КонецПроцедуры

&НаКлиенте
Процедура ПисьмаВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	
	ТекущиеДанные = Элемент.ТекущиеДанные;
	Если ТекущиеДанные <> Неопределено Тогда
		
		Ссылка = ТекущиеДанные.Ссылка;
		
		Если Поле.Имя = "ПисьмаСтатусОтправки" Тогда
			ПоказатьФормуСтатусовОтправкиИзСписка(Элемент);
		ИначеЕсли Поле.Имя = "ПисьмаЕстьКритическиеОшибкиОтправки" И ТекущиеДанные.ЕстьКритическиеОшибкиОтправки Тогда
			ПоказатьКритическиеОшибкиПоСсылке(Ссылка);
		Иначе
			РедактироватьОбъект(Элемент);
		КонецЕсли;
		
	КонецЕсли;

КонецПроцедуры

&НаКлиенте
Процедура ПисьмаПередНачаломДобавленияПредварительное(Результат, ПараметрыОповещения) Экспорт
	
	ПисьмаПередНачаломДобавления(
		ПараметрыОповещения.Элемент,
		ПараметрыОповещения.Отказ,
		ПараметрыОповещения.Копирование,
		ПараметрыОповещения.Родитель,
		ПараметрыОповещения.Группа,
		ПараметрыОповещения.Параметр
	);
	
КонецПроцедуры
	
&НаКлиенте
Процедура ПисьмаПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр)
	Отказ = Истина;
	Если Копирование Тогда
		
		ТекущиеДанные = Элементы.Письма.ТекущиеДанные;
		Если ТекущиеДанные <> Неопределено Тогда
			
			Ссылка = ТекущиеДанные.Ссылка;
			ПараметрыФормы = Новый Структура("ЗначениеКопирования", Ссылка);
			Если ТипЗнч(Ссылка) = Тип("СправочникСсылка.ПерепискаСКонтролирующимиОрганами") Тогда
				ОткрытьФорму("Справочник.ПерепискаСКонтролирующимиОрганами.ФормаОбъекта", ПараметрыФормы);
			ИначеЕсли ТипЗнч(Ссылка) = Тип("СправочникСсылка.ОписиИсходящихДокументовВНалоговыеОрганы") Тогда
				ОткрытьФорму("Справочник.ОписиИсходящихДокументовВНалоговыеОрганы.ФормаОбъекта", ПараметрыФормы);
			ИначеЕсли ТипЗнч(Ссылка) = Тип("ДокументСсылка.ПоясненияКДекларацииПоНДС") Тогда
				
				Если КонтекстЭДОКлиент = Неопределено И КонтекстУжеПодключался <> Истина Тогда
					ПараметрыОповещения = Новый Структура;
					ПараметрыОповещения.Вставить("Элемент", Элемент);
					ПараметрыОповещения.Вставить("Отказ", Отказ);
					ПараметрыОповещения.Вставить("Копирование", Копирование);
					ПараметрыОповещения.Вставить("Родитель", Родитель);
					ПараметрыОповещения.Вставить("Группа", Группа);
					ПараметрыОповещения.Вставить("Параметр", Параметр);
					Оповещение = Новый ОписаниеОповещения("ПисьмаПередНачаломДобавленияПредварительное", ЭтотОбъект, ПараметрыОповещения);
					ИнициализироватьКонтекстЭДО(Оповещение);
					Возврат;
				КонецЕсли;
				
				Если КонтекстЭДОКлиент <> Неопределено Тогда 
					КонтекстЭДОКлиент.СоздатьПоясненияКДекларацииПоНДС(Ссылка);
				КонецЕсли;				
			ИначеЕсли ТипЗнч(Ссылка) = Тип("ДокументСсылка.ОтветСтрахователяНаТребованиеПроверкиФСС") Тогда
				ОткрытьФорму("Документ.ОтветСтрахователяНаТребованиеПроверкиФСС.ФормаОбъекта", ПараметрыФормы);
			КонецЕсли;
				
		КонецЕсли;
		
	Иначе
		
		СоздатьНовоеПисьмо();

	КонецЕсли;
КонецПроцедуры

#КонецОбласти

#Область ОбработчикиСобытийЭлементовТаблицыСверки

&НаКлиенте
Процедура СверкиПередУдалением(Элемент, Отказ)
	Отказ = Истина;
	ПометитьНаУдалениеОбъект(Элемент);
КонецПроцедуры

&НаКлиенте
Процедура СверкиПередНачаломИзменения(Элемент, Отказ)
	Отказ = Истина;
	РедактироватьОбъект(Элемент);
КонецПроцедуры

&НаКлиенте
Процедура СверкиВыборПредварительное(Результат, ПараметрыОповещения) Экспорт
	
	СверкиВыбор(
		ПараметрыОповещения.Элемент,
		ПараметрыОповещения.ВыбраннаяСтрока,
		ПараметрыОповещения.Поле,
		ПараметрыОповещения.СтандартнаяОбработка
	);
	
КонецПроцедуры

&НаКлиенте
Процедура СверкиВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	
	ТекущиеДанные = Элемент.ТекущиеДанные;
	
	Если ТекущиеДанные <> Неопределено Тогда
		Ссылка = Элемент.ТекущиеДанные.Ссылка;

		Если Поле.Имя = "СверкиЕстьОтвет" Тогда
			Если Элемент.ТекущиеДанные.ЕстьОтвет Тогда // есть ответ
				
				Если КонтекстЭДОКлиент = Неопределено И КонтекстУжеПодключался <> Истина Тогда
					ПараметрыОповещения = Новый Структура;
					ПараметрыОповещения.Вставить("Элемент", Элемент);
					ПараметрыОповещения.Вставить("ВыбраннаяСтрока", ВыбраннаяСтрока);
					ПараметрыОповещения.Вставить("Поле", Поле);
					ПараметрыОповещения.Вставить("СтандартнаяОбработка", СтандартнаяОбработка);
					Оповещение = Новый ОписаниеОповещения("СверкиВыборПредварительное", ЭтотОбъект, ПараметрыОповещения);
					ИнициализироватьКонтекстЭДО(Оповещение);
					Возврат;
				КонецЕсли;
				
				Если КонтекстЭДОКлиент <> Неопределено Тогда
					
					Ссылка = Элемент.ТекущиеДанные.Ссылка;
					Если ТипЗнч(Ссылка) = Тип("ДокументСсылка.ЗапросНаИнформационноеОбслуживаниеНалогоплательщика") Тогда
						КонтекстЭДОКлиент.ПоказатьОтветНаЗапросИОН(Ссылка);
					ИначеЕсли ТипЗнч(Ссылка) = Тип("ДокументСсылка.ЗапросНаИнформационноеОбслуживаниеСтрахователя") Тогда
						КонтекстЭДОКлиент.ПоказатьОтветНаЗапросИОС(Ссылка);
					ИначеЕсли ТипЗнч(Ссылка) = Тип("ДокументСсылка.ЗаявлениеНаФормированиеСправкиОРасчетах") Тогда
						КонтекстЭДОКлиент.ПоказатьОтветНаЗапросСправкиОРасчетах(Ссылка);
					КонецЕсли;
					
				КонецЕсли;
			Иначе
				РедактироватьОбъект(Элемент);
			КонецЕсли;
		ИначеЕсли Поле.Имя = "СверкиСтатусОтправки" Тогда
			ПоказатьФормуСтатусовОтправкиИзСписка(Элемент);
		ИначеЕсли Поле.Имя = "СверкиЕстьКритическиеОшибкиОтправки" И ТекущиеДанные.ЕстьКритическиеОшибкиОтправки Тогда
			ПоказатьКритическиеОшибкиПоСсылке(Ссылка);
		Иначе
			РедактироватьОбъект(Элемент);
		КонецЕсли;
		
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура СверкиПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр)
	
	Отказ = Истина;
	
	Если Копирование Тогда
		
		ТекущиеДанные = Элементы.Сверки.ТекущиеДанные;
		Если ТекущиеДанные <> Неопределено Тогда
			Ссылка = ТекущиеДанные.Ссылка;
			ПараметрыФормы = Новый Структура("ЗначениеКопирования", Ссылка); 
			Если ТипЗнч(Ссылка) = Тип("ДокументСсылка.ЗапросНаИнформационноеОбслуживаниеНалогоплательщика") Тогда
				ОткрытьФорму("Документ.ЗапросНаИнформационноеОбслуживаниеНалогоплательщика.Форма.ФормаДокумента", ПараметрыФормы);
			ИначеЕсли ТипЗнч(Ссылка) = Тип("ДокументСсылка.ЗапросНаИнформационноеОбслуживаниеСтрахователя") Тогда
				ОткрытьФорму("Документ.ЗапросНаИнформационноеОбслуживаниеСтрахователя.Форма.ФормаДокумента", ПараметрыФормы);
			ИначеЕсли ТипЗнч(Ссылка) = Тип("ДокументСсылка.ЗаявлениеНаФормированиеСправкиОРасчетах") Тогда
				ОткрытьФорму("Документ.ЗаявлениеНаФормированиеСправкиОРасчетах.Форма.ФормаДокумента", ПараметрыФормы);
			КонецЕсли;
		КонецЕсли;
		
	Иначе
		
		СоздатьНовуюСверку();

	КонецЕсли;
КонецПроцедуры

#КонецОбласти

#Область ОбработчикиСобытийЭлементовТаблицыЕГРЮЛ

&НаКлиенте
Процедура ЕГРЮЛПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр)
	
	Отказ = Истина;
	Если Копирование Тогда
		
		ТекущиеДанные = Элементы.ЕГРЮЛ.ТекущиеДанные;
		Если ТекущиеДанные = Неопределено Тогда
			Возврат;
		КонецЕсли;
		
		Ссылка 		= ТекущиеДанные.Ссылка;
		ТипыСсылки 	= ТипЗнч(Ссылка);
		
		ПараметрыФормы 	= Новый Структура;
		ПараметрыФормы.Вставить("ЗначениеКопирования", Ссылка);
			
		Если ТипыСсылки = Тип("ДокументСсылка.ЗапросНаВыпискуИзЕГРЮЛ_ЕГРИП") Тогда
			ОткрытьФорму("Документ.ЗапросНаВыпискуИзЕГРЮЛ_ЕГРИП.Форма.ФормаДокумента", ПараметрыФормы);
		Иначе
			ПараметрыФормы.Вставить("Организация", 		ТекущиеДанные.Организация);
			ПараметрыФормы.Вставить("ВидУведомления", 	ВидУведомленияОСпецрежимахНалогообложения(ТекущиеДанные.Ссылка));
			ОткрытьФорму("Документ.УведомлениеОСпецрежимахНалогообложения.ФормаОбъекта", ПараметрыФормы);
		КонецЕсли;
		
	Иначе
		
		СоздатьНовыйЗапросНаВыпискуИзЕГРЮЛ_ЕГРИП();

	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ЕГРЮЛПередНачаломИзменения(Элемент, Отказ)
	Отказ = Истина;
	РедактироватьОбъект(Элемент);
КонецПроцедуры

&НаКлиенте
Процедура ЕГРЮЛПередУдалением(Элемент, Отказ)
	Отказ = Истина;
	ПометитьНаУдалениеОбъект(Элемент);
КонецПроцедуры

&НаКлиенте
Процедура ЕГРЮЛВыборПредварительное(Результат, ПараметрыОповещения) Экспорт
	
	ЕГРЮЛВыбор(
		ПараметрыОповещения.Элемент,
		ПараметрыОповещения.ВыбраннаяСтрока,
		ПараметрыОповещения.Поле,
		ПараметрыОповещения.СтандартнаяОбработка
	);
	
КонецПроцедуры

&НаКлиенте
Процедура ЕГРЮЛВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	
	ТекущиеДанные = Элемент.ТекущиеДанные;
	Если ТекущиеДанные <> Неопределено Тогда
		
		Ссылка = Элемент.ТекущиеДанные.Ссылка;
		
		СтандартнаяОбработка = Ложь;
		Если Поле.Имя = "ЕГРЮЛЕстьОтвет" Тогда
			Если Элемент.ТекущиеДанные.ЕстьОтвет Тогда // есть ответ
				
				Если КонтекстЭДОКлиент = Неопределено И КонтекстУжеПодключался <> Истина Тогда
					ПараметрыОповещения = Новый Структура;
					ПараметрыОповещения.Вставить("Элемент", Элемент);
					ПараметрыОповещения.Вставить("ВыбраннаяСтрока", ВыбраннаяСтрока);
					ПараметрыОповещения.Вставить("Поле", Поле);
					ПараметрыОповещения.Вставить("СтандартнаяОбработка", СтандартнаяОбработка);
					Оповещение = Новый ОписаниеОповещения("ЕГРЮЛВыборПредварительное", ЭтотОбъект, ПараметрыОповещения);
					ИнициализироватьКонтекстЭДО(Оповещение);
					Возврат;
				КонецЕсли;
				
				Если КонтекстЭДОКлиент <> Неопределено Тогда
					КонтекстЭДОКлиент.ПоказатьОтветНаЗапросВыпискиЕГРЮЛ_ЕГРИП(Ссылка);
				КонецЕсли;
			Иначе
				РедактироватьОбъект(Элемент);
			КонецЕсли;
		ИначеЕсли Поле.Имя = "ЕГРЮЛСтатусОтправки" Тогда
			
			ЭтоРучнойСтатус = 
				ТипЗнч(Ссылка) = Тип("ДокументСсылка.УведомлениеОСпецрежимахНалогообложения")
				И РегламентированнаяОтчетностьКлиентСервер.ОбъектНеОтправлялсяЧерез1СОтчетность(ТекущиеДанные.СостояниеСдачиОтчетности);
				
			Если ЭтоРучнойСтатус Тогда
				ВыбратьСтатусОтправкиИзСписка(Элемент);
			Иначе
				ПоказатьФормуСтатусовОтправкиИзСписка(Элемент);
			КонецЕсли;
			
		ИначеЕсли Поле.Имя = "ЕГРЮЛЕстьКритическиеОшибкиОтправки" И ТекущиеДанные.ЕстьКритическиеОшибкиОтправки Тогда
			ПоказатьКритическиеОшибкиПоСсылке(Ссылка);
		Иначе
			РедактироватьОбъект(Элемент);
		КонецЕсли;
		
	КонецЕсли;
	
КонецПроцедуры

#КонецОбласти

#Область ОбработчикиСобытийЭлементовТаблицыВходящие

&НаКлиенте
Процедура ВходящиеПередУдалением(Элемент, Отказ)
	Отказ = Истина;
КонецПроцедуры

&НаКлиенте
Процедура ВходящиеПередНачаломИзменения(Элемент, Отказ)
	Отказ = Истина;
	РедактироватьОбъект(Элемент);
КонецПроцедуры

&НаКлиенте
Процедура ВходящиеВыборПредварительное(Результат, ПараметрыОповещения) Экспорт
	
	ВходящиеВыбор(
		ПараметрыОповещения.Элемент,
		ПараметрыОповещения.ВыбраннаяСтрока,
		ПараметрыОповещения.Поле,
		ПараметрыОповещения.СтандартнаяОбработка
	);
	
КонецПроцедуры

&НаКлиенте
Процедура ВходящиеВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	ТекущиеДанные = Элемент.ТекущиеДанные;
	Если ТекущиеДанные <> Неопределено Тогда
		Ссылка = Элемент.ТекущиеДанные.Ссылка;
		
		Если ТипЗнч(Ссылка) = Тип("ДокументСсылка.ОбращениеСФРКСтрахователю") Тогда
			РедактироватьОбъект(Элемент);
			Возврат;
		КонецЕсли;
		
		Если СтрЗаканчиваетсяНа(Поле.Имя, "СтатусОтправки") Тогда
			ПоказатьФормуСтатусовОтправкиИзСписка(Элемент);
		ИначеЕсли СтрНайти(Поле.Имя, "Ответ")
			И Элемент.ТекущиеДанные.ЕстьОтвет Тогда
			
				Если КонтекстЭДОКлиент = Неопределено И КонтекстУжеПодключался <> Истина Тогда
					ПараметрыОповещения = Новый Структура;
					ПараметрыОповещения.Вставить("Элемент", Элемент);
					ПараметрыОповещения.Вставить("ВыбраннаяСтрока", ВыбраннаяСтрока);
					ПараметрыОповещения.Вставить("Поле", Поле);
					ПараметрыОповещения.Вставить("СтандартнаяОбработка", СтандартнаяОбработка);
					Оповещение = Новый ОписаниеОповещения("ВходящиеВыборПредварительное", ЭтотОбъект, ПараметрыОповещения);
					ИнициализироватьКонтекстЭДО(Оповещение);
					Возврат;
				КонецЕсли;
				
				Если КонтекстЭДОКлиент <> Неопределено Тогда
					КонтекстЭДОКлиент.НажатиеНаКнопкуПоказатьОтветыПоТребованию(Ссылка, Ложь);
				КонецЕсли;
		ИначеЕсли СтрЗаканчиваетсяНа(Поле.Имя, "ЕстьКритическиеОшибкиОтправки") И ТекущиеДанные.ЕстьКритическиеОшибкиОтправки Тогда
			
			ПоказатьКритическиеОшибкиПоСсылке(Ссылка);
			
		ИначеЕсли Поле.Имя = "ТребованияДатаОтвета"
			И НЕ ТекущиеДанные.ЕстьОтвет 
			И ТекущиеДанные.ЕстьИзвлеченныеДанные 
			И ТекущиеДанные.ТребуетОтвета Тогда
			
			ОповещениеЗавершения = Новый ОписаниеОповещения("ИзменитьДатуОтветаЗавершение", ЭтотОбъект, Ссылка);
			ТребованияФНСКлиент.ИзменитьСрокТребования(Ссылка, ОповещениеЗавершения);
			
		ИначеЕсли ЭтоРежимВыбора Тогда 
			ВыбранноеЗначениеЗакрытия = Ссылка;
			Закрыть(Ссылка);
		Иначе
			
			РедактироватьОбъект(Элемент);
			Если ТипЗнч(Ссылка) = Тип("ДокументСсылка.ВходящийДокументСЭДОФСС") Тогда
				Элементы.Требования.Обновить();
			КонецЕсли;
			
		КонецЕсли;
		
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ИзменитьДатуОтветаЗавершение(Результат, Ссылка) Экспорт
	
	ОповеститьОбИзменении(Ссылка);
	
КонецПроцедуры

&НаКлиенте
Процедура ВходящиеПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр)
	
	Отказ = Истина;

КонецПроцедуры

#КонецОбласти

#КонецОбласти

#Область ОбработчикиКомандФормы

&НаКлиенте
Процедура ОткрытьНастрокуРабочегоМеста(Команда)
	
	ДополнительныеПараметры = Новый Структура();
	ДополнительныеПараметры.Вставить("ЭтоТолькоНастройка", Истина);
	
	ОткрытьФорму("Обработка.НачалоРаботыОблачной1СО.Форма.БыстрыйСтарт", ДополнительныеПараметры);
	
КонецПроцедуры

&НаКлиенте
Процедура СоздатьСверкуПредварительное(Результат, ВидУслуги) Экспорт
	
	СоздатьСверку(ВидУслуги);
	
КонецПроцедуры

&НаКлиенте
Процедура СоздатьСправкаОНаличииСальдо(Команда)
	СоздатьСверку(ПредопределенноеЗначение("Перечисление.ВидыУслугПриИОН.СправкаОНаличииСальдо"));
КонецПроцедуры

&НаКлиенте
Процедура СоздатьСправкаОПринадлежностиСумм(Команда)
	СоздатьСверку(ПредопределенноеЗначение("Перечисление.ВидыУслугПриИОН.СправкаОПринадлежностиСумм"));
КонецПроцедуры

&НаКлиенте
Процедура СоздатьСведенияОбОтрицательномСальдоЕНС(Команда)
	СоздатьСверку(ПредопределенноеЗначение("Перечисление.ВидыУслугПриИОН.СведенияОбОтрицательномСальдоЕНС"));
КонецПроцедуры

&НаКлиенте
Процедура СоздатьСправкаОПринадлежностиСуммАгрегированныеДанные(Команда)
	СоздатьСверку(ПредопределенноеЗначение("Перечисление.ВидыУслугПриИОН.СправкаОПринадлежностиСуммАгрегированныеДанные"));
КонецПроцедуры

&НаКлиенте
Процедура ПодтвердитьПриемПредварительное(Результат, ПараметрыОповещения) Экспорт
	
	ПодтвердитьПрием(Неопределено);
	
КонецПроцедуры

&НаКлиенте
Процедура ПодтвердитьПрием(Команда)
	
	Если КонтекстЭДОКлиент = Неопределено И КонтекстУжеПодключался <> Истина Тогда
		ПараметрыОповещения = Новый Структура;
		ПараметрыОповещения.Вставить("Команда", Команда);
		Оповещение = Новый ОписаниеОповещения("ПодтвердитьПриемПредварительное", ЭтотОбъект, ПараметрыОповещения);
		ИнициализироватьКонтекстЭДО(Оповещение);
		Возврат;
	КонецЕсли;
				
	Если КонтекстЭДОКлиент = Неопределено Тогда
		ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстОшибкиИнициализацииКонтекстаЭДО);
		Возврат;
	КонецЕсли;
	
	Сейчас = ТекущаяДата();
	ТребованияФНСКлиент.ПодтвердитьПриемНескольких(Сейчас, КонтекстЭДОКлиент, Организация);
	
КонецПроцедуры

&НаКлиенте
Процедура ПеренестиРассылки(Команда)
	
	ПеренестиВДругойВидДокумента(ПредопределенноеЗначение("Перечисление.ВидыДокументовВЖурнале.Рассылка"));
	
КонецПроцедуры

&НаКлиенте
Процедура ПеренестиВПисьма(Команда)
	
	ПеренестиВДругойВидДокумента(ПредопределенноеЗначение("Перечисление.ВидыДокументовВЖурнале.ВходящееПисьмо"));
	
КонецПроцедуры

&НаКлиенте
Процедура ПеренестиВТребования(Команда)
	
	ПеренестиВДругойВидДокумента(ПредопределенноеЗначение("Перечисление.ВидыДокументовВЖурнале.ТребованиеИлиУведомление"));
	
КонецПроцедуры

&НаКлиенте
Процедура ВыбратьДокумент(Команда)
	
	ТекущаяТаблица = ТекущаяТаблица(ЭтотОбъект);
	ТекущиеДанные = ТекущаяТаблица.ТекущиеДанные;
	
	Если ТекущиеДанные = Неопределено Тогда
		
		ПоказатьПредупреждение(,НСтр("ru = 'Не выбрано ни одного документа'"));
		
	Иначе
		
		Если Элементы.Отчеты = ТекущаяТаблица Тогда
			Ссылка = ТекущиеДанные.РегламентированныйОтчет;
		Иначе
			Ссылка = ТекущиеДанные.Ссылка;
		КонецЕсли;
		
		ВыбранноеЗначениеЗакрытия = Ссылка;
		Закрыть(Ссылка);
		
	КонецЕсли;
	
КонецПроцедуры

#Область КомандыЗакладкиОтчетность

&НаКлиенте
Процедура Создать(Команда)
	
	СоздатьОтчет();
	
КонецПроцедуры

&НаКлиенте
Процедура СоздатьОтчет(знач ПараметрыФормы = Неопределено)
	
	Если ПараметрыФормы = Неопределено Тогда
		
		ПараметрыФормы = Новый Структура;
		ПараметрыФормы.Вставить("Организация", Организация);
		ПараметрыФормы.Вставить("ДатаНачалаПериодаОтчета", НачалоПериода);
		ПараметрыФормы.Вставить("ДатаКонцаПериодаОтчета", КонецПериода);
		Если ТипЗнч(ВидОтчета) = Тип("СписокЗначений") Тогда
			ПараметрыФормы.Вставить("ПредставлениеВидаОтчета", ?(ВидОтчета.Количество() = 1, ВидОтчета[0].Значение, ""));
		Иначе
			ПараметрыФормы.Вставить("ПредставлениеВидаОтчета", Строка(ВидОтчета));
		КонецЕсли;
		ПараметрыФормы.Вставить("ИмяФормы","");
		
	КонецЕсли;
	
	Если ПараметрыФормы.ИмяФормы <> "" Тогда
		
		// Сначала попробуем найти его среди открытых стартовых форм.
		// Необходимо для предотвращения
		// открытия нескольких стартовых форм одного отчета.
		НайденоОкно = Ложь;
		РегламентированнаяОтчетностьКлиент.ВебКлиентНайтиАктивизироватьОкно(ПараметрыФормы.ИмяФормы, ЭтотОбъект, НайденоОкно);
		
		Если НайденоОкно <> Неопределено Тогда
			Если НайденоОкно Тогда
			
				Возврат;
			
			КонецЕсли;
		КонецЕсли;
		
	КонецЕсли; 
	
	ЭтотОбъект.ПараметрыВыбораФормыСоздания = Неопределено;
	ОписаниеОповещенияОЗакрытииФормыСозданияОтчета = Новый ОписаниеОповещения("ВыполнитьПослеЗакрытияСозданияОтчета", ЭтотОбъект);
	ОткрытьФорму("Обработка.ОбщиеОбъектыРеглОтчетности.Форма.ФормаСозданияОтчета", ПараметрыФормы, ЭтотОбъект,,,, 
				ОписаниеОповещенияОЗакрытииФормыСозданияОтчета, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
	
КонецПроцедуры

&НаКлиенте
Процедура ВыполнитьПослеЗакрытияСозданияОтчета(Параметр  = Неопределено, ДопПараметр = Неопределено) Экспорт

	Если ЭтотОбъект.ПараметрыВыбораФормыСоздания = Неопределено Тогда
		Возврат;
	КонецЕсли; 
	
	СоздатьОтчет(ЭтотОбъект.ПараметрыВыбораФормыСоздания);
	
КонецПроцедуры

&НаКлиенте
Асинх Процедура ПереустановитьКомпонентыПечатиМашиночитаемыхФорм(Команда)
	
	КаталогКомпонентыМЧБ = Ждать РегламентированнаяОтчетностьКлиент.ПолучитьПутьВыгрузкиАсинх(
		"", "Выберите каталог для сохранения дистрибутива компоненты печати машиночитаемых форм");
	Если ЗначениеЗаполнено(КаталогКомпонентыМЧБ) Тогда
		УстановитьКомпонентуПечати(КаталогКомпонентыМЧБ);
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура УстановитьКомпонентуПечати(КаталогКомпонентыМЧБ)
	
	ДистрибутивКомпонентыПечатиМашиночитаемыхФорм = Новый СписокЗначений;
	РегламентированнаяОтчетностьВызовСервера.ПолучитьДистрибутивКомпонентыПечатиМашиночитаемыхФорм(ДистрибутивКомпонентыПечатиМашиночитаемыхФорм);
	РегламентированнаяОтчетностьКлиент.УстановитьКомпонентуПечатиМашиночитаемыхФорм(Истина, ДистрибутивКомпонентыПечатиМашиночитаемыхФорм, КаталогКомпонентыМЧБ);
	УправлениеЭУПанельУстановкаКомпонентыПечати();
	
КонецПроцедуры

&НаКлиенте
Процедура ОбновитьДанныеПредварительное(Результат, ПараметрыОповещения) Экспорт
	
	ОбновитьДанные(
		ПараметрыОповещения.Команда
	);
	
КонецПроцедуры

&НаКлиенте
Процедура ОбновитьДанные(Команда)
	
	Если КонтекстЭДОКлиент = Неопределено И КонтекстУжеПодключался <> Истина Тогда
		ПараметрыОповещения = Новый Структура;
		ПараметрыОповещения.Вставить("Команда", Команда);
		Оповещение = Новый ОписаниеОповещения("ОбновитьДанныеПредварительное", ЭтотОбъект, ПараметрыОповещения);
		ИнициализироватьКонтекстЭДО(Оповещение);
		Возврат;
	КонецЕсли;
				
	Если КонтекстЭДОКлиент = Неопределено Тогда
		ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстОшибкиИнициализацииКонтекстаЭДО);
		Возврат;
	КонецЕсли;
	
	ДанныеДляОбмена = ВсеОрганизации();
	ВыбранныеОрганизации = ДанныеДляОбмена.МассивОрганизаций;
	
	КалендарьОтчетностиБРОКлиентПереопределяемый.ПолучитьОтборПоОрганизациям(ВыбранныеОрганизации);
	
	Если ДанныеДляОбмена.МассивОрганизаций.Количество() = 0
		И НЕ ДанныеДляОбмена.ЕстьОграничения Тогда
		ДлительнаяОтправкаКлиентСервер.ВывестиОшибку(НСтр("ru = 'Организация не выбрана'"), ,"Организация");
		Возврат;
	КонецЕсли;
	
	СостояниеВозможностиОбмена = КонтекстЭДОКлиент.СостояниеВозможностиОбмена(ДанныеДляОбмена.МассивОрганизаций);
	
	Если СостояниеВозможностиОбмена.Состояние = 1 Тогда
		ОбновитьДанныеПродолжить(ДанныеДляОбмена.МассивОрганизаций);
	ИначеЕсли СостояниеВозможностиОбмена.Состояние = 2 Тогда
		ОбновитьЖурналОтчетовСтатусы();
	Иначе
		ПараметрыЦикла = Новый Структура;
		ПараметрыЦикла.Вставить("ВыбранныеОрганизации", ДанныеДляОбмена.МассивОрганизаций);
		СледующееОповещение = Новый ОписаниеОповещения("НастроитьОграниченияОбмена", ЭтотОбъект, ПараметрыЦикла);
		ОткрытьФормуНастройкиОбновления(Истина, СледующееОповещение);
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ОбновитьДанныеСЭДО(Команда)
	
	Если КонтекстЭДОКлиент = Неопределено Тогда 
		ПараметрыОповещения = Новый Структура;
		ПараметрыОповещения.Вставить("Команда", Команда);
		Оповещение = Новый ОписаниеОповещения("ОбновитьДанныеСЭДОПредварительное", ЭтотОбъект, ПараметрыОповещения);
		ИнициализироватьКонтекстЭДО(Оповещение);
		Возврат;
	КонецЕсли;
				
	Если КонтекстЭДОКлиент = Неопределено Тогда
		ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстОшибкиИнициализацииКонтекстаЭДО);
		Возврат;
	КонецЕсли;
	
	ДанныеДляОбмена = ВсеОрганизации();
	ВыбранныеОрганизации = ДанныеДляОбмена.МассивОрганизаций;
	
	Если ДанныеДляОбмена.МассивОрганизаций.Количество() = 0
		И НЕ ДанныеДляОбмена.ЕстьОграничения Тогда
		ДлительнаяОтправкаКлиентСервер.ВывестиОшибку(НСтр("ru = 'Организация не выбрана'"), ,"Организация");
		Возврат;
	КонецЕсли;
	
	СостояниеВозможностиОбмена = КонтекстЭДОКлиент.СостояниеВозможностиОбмена(ДанныеДляОбмена.МассивОрганизаций);
	
	Если СостояниеВозможностиОбмена.Состояние = 1 Тогда
		ОбновитьДанныеСЭДОПродолжить(ДанныеДляОбмена.МассивОрганизаций);
	ИначеЕсли СостояниеВозможностиОбмена.Состояние = 2 Тогда
		Возврат;
	Иначе
		ПараметрыЦикла = Новый Структура;
		ПараметрыЦикла.Вставить("ВыбранныеОрганизации", ДанныеДляОбмена.МассивОрганизаций);
		СледующееОповещение = Новый ОписаниеОповещения(
			"НастроитьОграниченияОбменаПоСЭДО", ЭтотОбъект, ПараметрыЦикла);
		ОткрытьФормуНастройкиОбновления(Истина, СледующееОповещение);
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура НастройкиОбновления(Команда)
	
	ОписаниеСледующее = Новый ОписаниеОповещения("НастройкиОбновленияПосле", ЭтотОбъект);
	ПодключитьКлиентскийКонтекст(ОписаниеСледующее);
	
КонецПроцедуры

&НаКлиенте
Процедура НастройкиОбновленияКоманднаяПанель(Команда)
	
	КалендарьОтчетностиБРОКлиентПереопределяемый.ОбработкаКоманды(ЭтотОбъект, Команда);
	
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ВыполнитьНазначаемуюКоманду(Команда)
	
	РегламентированнаяОтчетностьКлиентПереопределяемый.ФормаРегламентированнойОтчетности_ВыполнитьНазначаемуюКомандуНаКлиенте(ЭтотОбъект, Команда);
	
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ОбновитьНадписьВремяОбновления()
	
	НадписьВремяОбновления = ОбновитьНадписьВремяОбновления(ДатаПоследнегоОбновления);
	
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ПроизвестиДействияПослеПоказаФормыПредварительное(Результат, ПараметрыОповещения) Экспорт
	
	Подключаемый_ПроизвестиДействияПослеПоказаФормы();
	
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ПроизвестиДействияПослеПоказаФормы()
	
	Если НЕ ДлительнаяОтправкаКлиентСервер.ЭтоФормаГрупповойОтправки(, Ложь) Тогда
		Активизировать();
	КонецЕсли;
	
	Если ПоказатьПредложениеОформитьЗаявлениеНаПодключение Тогда
		
		Если КонтекстЭДОКлиент = Неопределено И КонтекстУжеПодключался <> Истина Тогда
			Оповещение = Новый ОписаниеОповещения("Подключаемый_ПроизвестиДействияПослеПоказаФормыПредварительное", ЭтотОбъект);
			ИнициализироватьКонтекстЭДО(Оповещение);
			Возврат;
		КонецЕсли;
		
		// Показываем предложение на подключение в случае, если ни одна организация
		// не подключена к ЭДО.
		Если КонтекстЭДОКлиент <> Неопределено Тогда
			
			// Не показывается, если есть отправленные заявления
			ЭлектронныйДокументооборотСКонтролирующимиОрганамиКлиент.ПоказатьФормуПредложениеОформитьЗаявлениеНаПодключение(, Истина);
			
		КонецЕсли;
		
	КонецЕсли;
	
	ОнлайнСервисыРегламентированнойОтчетностиКлиент.АктуализироватьСлужебнуюИнформациюМеханизмаОнлайнСервисовРОПриНеобходимости(
		ЭтотОбъект, ПараметрыИНастройкиОнлайнСервисов);
	
	Если ТипЗнч(ВидОтчета) = Тип("СписокЗначений") Тогда
		Если ВидОтчета.Количество() = 1 И ЗначениеЗаполнено(ВидОтчета[0].Значение) Тогда
			Если Элементы.ОтборВидОтчета.СписокВыбора.НайтиПоЗначению(ВидОтчета[0].Значение) = Неопределено Тогда
				СоздатьОтчет();
			КонецЕсли;
		КонецЕсли;
	Иначе
		Если ЗначениеЗаполнено(ВидОтчета) Тогда
			Если Элементы.ОтборВидОтчета.СписокВыбора.НайтиПоЗначению(ВидОтчета) = Неопределено Тогда
				СоздатьОтчет();
			КонецЕсли;
		КонецЕсли;
	КонецЕсли;
	
	#Область Используется1СОтчетность
	Если НЕ Используется1СОтчетность И ПроверкаСостоянияИнтеграцииВФонеПриОткрытии <> Неопределено Тогда
		ОжидатьЗавершенияФоновогоЗаданияПолученияСостоянияИнтеграцииСБанком(ПроверкаСостоянияИнтеграцииВФонеПриОткрытии);
	КонецЕсли;
	#КонецОбласти
	
	ОбновитьТаблицуУведомленийСХешем();
	
КонецПроцедуры

#Область Используется1СОтчетность

&НаКлиенте
Процедура ОжидатьЗавершенияФоновогоЗаданияПолученияСостоянияИнтеграцииСБанком(Результат)
	
	ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(Неопределено);
	ПараметрыОжидания.ВыводитьСообщения = Истина;
	ПараметрыОжидания.ВыводитьОкноОжидания = Ложь;
	ПослеПолученияИнформацииОВнешнейКомпоненте = Новый ОписаниеОповещения(
		"ОбработатьРезультатПроверкиСостоянияИнтеграцииСБанком", ЭтотОбъект);
	ДлительныеОперацииКлиент.ОжидатьЗавершение(Результат, ПослеПолученияИнформацииОВнешнейКомпоненте, ПараметрыОжидания);
	
КонецПроцедуры

&НаКлиенте
Процедура ОбработатьРезультатПроверкиСостоянияИнтеграцииСБанком(Результат, ДополнительныеПараметры) Экспорт
	
	Если ЗначениеЗаполнено(Результат) Тогда
		ПоказатьБаннерСостоянияИнтеграцииСБанком(Результат);
	КонецЕсли;
	
	Если ИнтервалПроверкиСостоянияИнтеграцииСБанком > 0 Тогда
		ПодключитьОбработчикОжидания("Подключаемый_ЗапуститьПроверкуСостояниеИнтеграцииВФоне", ИнтервалПроверкиСостоянияИнтеграцииСБанком, Истина);
	КонецЕсли;
	
КонецПроцедуры

&НаСервере
Процедура ПоказатьБаннерСостоянияИнтеграцииСБанком(Результат)
	
	Если Результат.Статус = "Выполнено" Тогда
		ДанныеБаннера = ПолучитьИзВременногоХранилища(Результат.АдресРезультата);
		РегламентированнаяОтчетностьПереопределяемый.ПоказатьБаннерСостоянияОтправки(ЭтотОбъект, ДанныеБаннера);
	Иначе
		Элементы.ГруппаБаннерСостоянияОтправки.Видимость = Ложь;
	КонецЕсли
	
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ЗапуститьПроверкуСостояниеИнтеграцииВФоне() Экспорт
	
	Результат = РегламентированнаяОтчетностьВызовСервера.СостояниеИнтеграцииСБанкомВФоне(УникальныйИдентификатор);
	ОжидатьЗавершенияФоновогоЗаданияПолученияСостоянияИнтеграцииСБанком(Результат);
	
КонецПроцедуры

#КонецОбласти 

&НаКлиенте
Процедура Подключаемый_ПроверитьПодключениеИнтернетПоддержки() Экспорт
	
	ПараметрыРаботыКлиентаПриЗапуске = СтандартныеПодсистемыКлиент.ПараметрыРаботыКлиента();
	ЗапуститьБыстрыйСтарт = ПараметрыРаботыКлиентаПриЗапуске.ДокументооборотСКонтролирующимиОрганами_ПоказатьБыстрыйСтартО1СО;
	
	Если ЗапуститьБыстрыйСтарт Тогда
		Возврат;
	КонецЕсли;
	
	// Если Форма авторизации ИПП была открыта при начале работы приложения - закроем
	// ее и предложим пользователю для авторизации новую после показа формы "1С-Отчетность".
	ФормаАвторизации = ФормаОкнаАвторизацииИППЕслиОткрыто();
	
	Если НЕ ДлительнаяОтправкаКлиентСервер.ЭтоФормаГрупповойОтправки(, Ложь) Тогда
		Активизировать();
	КонецЕсли;
	
	Если ФормаАвторизации <> Неопределено Тогда
		ФормаАвторизации.Закрыть();
	КонецЕсли;
	
	ИнтернетПоддержкаПользователейБРОКлиент.ПроверитьВозможностьВыполненияОперации(
		ОписаниеОповещенияПослеПроверкиПодключенияКИПП, ЭтотОбъект);
	
КонецПроцедуры

&НаСервереБезКонтекста
Функция ОбновитьНадписьВремяОбновления(ДатаПоследнегоОбновления)
	
	ДатаПоследнегоОбновления = ЭлектронныйДокументооборотСКонтролирующимиОрганами.ДатаПоследнегоОбновленияСобытий();
	Возврат ЭлектронныйДокументооборотСКонтролирующимиОрганами.ПолучитьНадписьВремяОбновления(ДатаПоследнегоОбновления);
	
КонецФункции

&НаКлиенте
Процедура ЗагрузитьИзФайлаВФормуОтчета(Команда)
	
	РегламентированнаяОтчетностьЗагрузкаКлиент.ЗагрузитьИзФайлаОтчет(ЭтотОбъект);
	
КонецПроцедуры

&НаКлиенте
Процедура ЗагрузитьИзФайлаВФормуУведомление(Команда)
	
	УведомлениеОСпецрежимахНалогообложенияКлиент.ЗагрузитьИзФайлаУведомление(ЭтотОбъект);
	
КонецПроцедуры

&НаКлиенте
Процедура ЗагрузитьИзФайлаВЭлектронноеПредставлениеПредварительное(Результат, ПараметрыОповещения) Экспорт
	
	ЗагрузитьИзФайлаВЭлектронноеПредставление(
		ПараметрыОповещения.Команда
	);
	
КонецПроцедуры

&НаКлиенте
Процедура ЗагрузитьИзФайлаВЭлектронноеПредставление(Команда)
	
	Если КонтекстЭДОКлиент = Неопределено И КонтекстУжеПодключался <> Истина Тогда
		ПараметрыОповещения = Новый Структура;
		ПараметрыОповещения.Вставить("Команда", Команда);
		Оповещение = Новый ОписаниеОповещения("ЗагрузитьИзФайлаВЭлектронноеПредставлениеПредварительное", ЭтотОбъект, ПараметрыОповещения);
		ИнициализироватьКонтекстЭДО(Оповещение);
		Возврат;
	КонецЕсли;
	
	Если КонтекстЭДОКлиент = Неопределено Тогда
		ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстОшибкиИнициализацииКонтекстаЭДО);
		Возврат;
	КонецЕсли;
	
	КонтекстЭДОКлиент.ПолучениеФайловДляИмпортаНачало(УникальныйИдентификатор);
	
КонецПроцедуры

&НаКлиенте
Процедура ЗагрузитьМашиночитаемуюДоверенность(Команда)
	
	Если ЗначениеЗаполнено(ИмяТипаСправочникаМашиночитаемыеДоверенности) Тогда
		ОписаниеОповещения = Новый ОписаниеОповещения("ЗагрузитьМашиночитаемуюДоверенностьЗавершение",
			ЭтотОбъект);
		МодульМашиночитаемыеДоверенностиФНССлужебныйКлиент =
			ОбщегоНазначенияКлиент.ОбщийМодуль("МашиночитаемыеДоверенностиФНССлужебныйКлиент");
		МодульМашиночитаемыеДоверенностиФНССлужебныйКлиент.ПолучитьДоверенностьИзРеестраФНС(ОписаниеОповещения);
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ЗагрузитьМашиночитаемуюДоверенностьРаспределенныйРеестр(Команда)
	
	ОписаниеОповещения = Новый ОписаниеОповещения("ЗагрузитьМашиночитаемуюДоверенностьРаспределенныйРеестрЗавершение",
		ЭтотОбъект);
	ДокументооборотСКОКлиент.ПолучитьДанныеМЧДРР(ОписаниеОповещения,, ЭтаФорма);
	
КонецПроцедуры

&НаКлиенте
Процедура ЗагрузитьМашиночитаемуюДоверенностьФНС(Команда)
	
	ОткрытьФорму(
		"Справочник.МашиночитаемыеДоверенностиФНС.Форма.ФормаЗагрузкиИзФайла",,
		ЭтаФорма,,,,,
		РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
	
КонецПроцедуры

&НаКлиенте
Процедура ЗагрузитьЗаявлениеОбОтзывеМЧДФНС(Команда)
	ОткрытьФорму(
		"Справочник.ЗаявленияОбОтзывеМЧДФНС.Форма.ФормаЗагрузкиИзФайла",,
		ЭтаФорма,,,,,
		РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры

&НаКлиенте
Процедура ЗагрузитьМашиночитаемуюДоверенностьФССПредварительное(Результат, ПараметрыОповещения) Экспорт
	
	ЗагрузитьМашиночитаемуюДоверенностьФСС(ПараметрыОповещения.Команда);
	
КонецПроцедуры

&НаКлиенте
Процедура ЗагрузитьМашиночитаемуюДоверенностьФСС(Команда)
	
	Если КонтекстЭДОКлиент = Неопределено И НЕ КонтекстУжеПодключался Тогда
		ПараметрыОповещения = Новый Структура;
		ПараметрыОповещения.Вставить("Команда", Команда);
		Оповещение = Новый ОписаниеОповещения("ЗагрузитьМашиночитаемуюДоверенностьФССПредварительное",
			ЭтотОбъект, ПараметрыОповещения);
		ИнициализироватьКонтекстЭДО(Оповещение);
		Возврат;
	КонецЕсли;
	
	Если КонтекстЭДОКлиент = Неопределено Тогда
		ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстОшибкиИнициализацииКонтекстаЭДО);
		Возврат;
	КонецЕсли;
	
	КонтекстЭДОКлиент.ЗагрузитьМашиночитаемуюДоверенностьФСС();
	
КонецПроцедуры

&НаКлиенте
Процедура ЗагрузитьМашиночитаемуюДоверенностьЦБ(Команда)
	
	Если ЗначениеЗаполнено(ИмяТипаСправочникаМашиночитаемыеДоверенностиЦБ) Тогда
		ОткрытьФорму(
			"Справочник." + ИмяТипаСправочникаМашиночитаемыеДоверенностиЦБ + ".Форма.ФормаЗагрузкиИзФайла",,
			ЭтаФорма,,,,,
			РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ЗагрузитьУведомлениеОПредоставленииПолномочийПредставителю(Команда)
	
	ОписаниеОповещения = Новый ОписаниеОповещения("ЗагрузитьУведомлениеОПредоставленииПолномочийПредставителюПослеЗагрузки", ЭтотОбъект);
	
	ДополнительныеПараметры = Новый Структура();
	ДополнительныеПараметры.Вставить("Фильтр",					"XML-файл УПУП ПФР (*.xml)|*.xml");
	ДополнительныеПараметры.Вставить("ВозвращатьРазмер", 		Истина);
	ДополнительныеПараметры.Вставить("МножественныйВыбор", 		Ложь);
	
	ОперацииСФайламиЭДКОКлиент.ДобавитьФайлы(
		ОписаниеОповещения, 
		Новый УникальныйИдентификатор,
		НСтр("ru = 'Выберите xml-файл'"),
		ДополнительныеПараметры);
	
КонецПроцедуры

&НаКлиенте
Процедура ЗагрузитьУведомлениеОПредоставленииПолномочийПредставителюПослеЗагрузки(Результат, ДополнительныеПараметры) Экспорт
	
	Если НЕ Результат.Выполнено ИЛИ Результат.ОписанияФайлов.Количество() = 0 Тогда
		Возврат;
	КонецЕсли;
	
	ОписаниеФайла = Результат.ОписанияФайлов[0];
	
	Если ЗначениеЗаполнено(ОписаниеФайла) Тогда
		
		Попытка
			УПУП = ДокументооборотСКОВызовСервера.ЗначениеXMLФайлаПоАдресу(ОписаниеФайла.Адрес, "xmlns", "utf-8");
			Если УПУП <> "http://пф.рф/УПУП/2020-02-03" Тогда
				ОбщегоНазначенияКлиент.СообщитьПользователю(
					НСтр("ru = 'Выбран файл не уведомления о предоставлении полномочий представителю ПФР'"));
				Возврат;
			КонецЕсли;
		Исключение
			ОбщегоНазначенияКлиент.СообщитьПользователю(
				НСтр("ru = 'Выбран файл не уведомления о предоставлении полномочий представителю ПФР'"),,,, Истина);
			Возврат;
		КонецПопытки;
		
	КонецЕсли;
	
	ПараметрыФормы = Новый Структура;
	ПараметрыФормы.Вставить("ЗагрузитьДокументИзФайлаОбмена", Истина);
	ПараметрыФормы.Вставить("АдресФайла", ОписаниеФайла.Адрес);
	ОткрытьФорму(
		"Документ.УведомлениеОПредоставленииПолномочийПредставителю.Форма.ФормаДокумента", 
		ПараметрыФормы,
		ЭтаФорма,,,,,);
	
КонецПроцедуры

&НаКлиенте
Процедура ЗагрузитьУведомлениеОПрекращенииПолномочийПредставителя(Команда)
	
	ОписаниеОповещения = Новый ОписаниеОповещения("ЗагрузитьУведомлениеОПрекращенииПолномочийПредставителяПослеЗагрузки", ЭтотОбъект);
	
	ДополнительныеПараметры = Новый Структура();
	ДополнительныеПараметры.Вставить("Фильтр",					"XML-файл УПУП ПФР (*.xml)|*.xml");
	ДополнительныеПараметры.Вставить("ВозвращатьРазмер", 		Истина);
	ДополнительныеПараметры.Вставить("МножественныйВыбор", 		Ложь);
	
	ОперацииСФайламиЭДКОКлиент.ДобавитьФайлы(
		ОписаниеОповещения, 
		Новый УникальныйИдентификатор,
		НСтр("ru = 'Выберите xml-файл'"),
		ДополнительныеПараметры);
	
КонецПроцедуры

&НаКлиенте
Процедура ЗагрузитьУведомлениеОПрекращенииПолномочийПредставителяПослеЗагрузки(Результат, ДополнительныеПараметры) Экспорт
	
	Если НЕ Результат.Выполнено ИЛИ Результат.ОписанияФайлов.Количество() = 0 Тогда
		Возврат;
	КонецЕсли;
	
	ОписаниеФайла = Результат.ОписанияФайлов[0];
	
	Если ЗначениеЗаполнено(ОписаниеФайла) Тогда
		
		Попытка
			УПРУП = ДокументооборотСКОВызовСервера.ЗначениеXMLФайлаПоАдресу(ОписаниеФайла.Адрес, "xmlns", "utf-8");
			Если УПРУП <> "http://пф.рф/УПРУП/2020-02-03" Тогда
				ОбщегоНазначенияКлиент.СообщитьПользователю(
					НСтр("ru = 'Выбран файл не уведомления о прекращении полномочий представителя ПФР'"));
				Возврат;
			КонецЕсли;
		Исключение
			ОбщегоНазначенияКлиент.СообщитьПользователю(
				НСтр("ru = 'Выбран файл не уведомления о прекращении полномочий представителя ПФР'"),,,, Истина);
			Возврат;
		КонецПопытки;
		
	КонецЕсли;
	
	ПараметрыФормы = Новый Структура;
	ПараметрыФормы.Вставить("ЗагрузитьДокументИзФайлаОбмена", Истина);
	ПараметрыФормы.Вставить("АдресФайла", ОписаниеФайла.Адрес);
	ОткрытьФорму(
		"Документ.УведомлениеОПрекращенииПолномочийПредставителя.Форма.ФормаДокумента", 
		ПараметрыФормы,
		ЭтаФорма,,,,,);
	
КонецПроцедуры

&НаКлиенте
Процедура ПроверитьВИнтернете(Команда)
	
	ОнлайнПроверка(Элементы.Отчеты);
	
КонецПроцедуры

&НаКлиенте
Процедура Выгрузить(Команда)
	
	ТекущиеДанные = Элементы.Отчеты.ТекущиеДанные;
	
	Если ТекущиеДанные <> Неопределено Тогда
		
		Ссылка = ТекущиеДанные.РегламентированныйОтчет;
		
		Если ТипЗнч(Ссылка) = Тип("СправочникСсылка.ЭлектронныеПредставленияРегламентированныхОтчетов") Тогда
			
			Ссылка = ТекущиеДанные.РегламентированныйОтчет;
			НаименованиеОтчета = ТекущиеДанные.НаименованиеОтчета;
			ВыгрузкаЭлектронногоПредставления(Ссылка, НаименованиеОтчета);
			
		ИначеЕсли ТипЗнч(Ссылка) = Тип("ДокументСсылка.РегламентированныйОтчет") Тогда
			
			Ссылка               = ТекущиеДанные.РегламентированныйОтчет;
			НаименованиеОтчета   = ТекущиеДанные.НаименованиеОтчета;
			ВариантОтчета        = ТекущиеДанные.ВариантОтчета;
			ПредставлениеПериода = ТекущиеДанные.ФинансовыйПериод;
			ОрганизацияСсылка	 = ТекущиеДанные.Организация;
						
			ВыгрузкаРегламентированногоОтчета(Ссылка, ОрганизацияСсылка, НаименованиеОтчета, ВариантОтчета, ПредставлениеПериода);
			
		ИначеЕсли ТипЗнч(Ссылка) = Тип("СправочникСсылка.МакетыПенсионныхДел") Тогда
			
			ПоказатьПредупреждение(,НСтр("ru = 'Выгрузка макетов пенсионных дел не предусмотрена'"));
			
		ИначеЕсли ТипЗнч(Ссылка) = Тип("СправочникСсылка.ЗаявлениеОНазначенииПенсии") Тогда
			
			ПоказатьПредупреждение(,НСтр("ru = 'Выгрузка заявлений о назначении пенсии не предусмотрена'"));
			
		ИначеЕсли ТипЗнч(Ссылка) = Тип("ДокументСсылка.ЗаявленияПоЭлДокументооборотуСПФР") Тогда
			
			ПоказатьПредупреждение(,НСтр("ru = 'Выгрузка заявлений не предусмотрена'"));
			
		ИначеЕсли ТипЗнч(Ссылка) = Тип("ДокументСсылка.УведомлениеОПредоставленииПолномочийПредставителю") Тогда
			
			ПоказатьПредупреждение(,НСтр("ru = 'Выгрузка уведомлений не предусмотрена'"));
			
		Иначе
			
			// Остальные виды рег отчетов
			РегламентированнаяОтчетностьКлиент.Выгрузить(Ссылка, ЭтотОбъект.УникальныйИдентификатор);
			
		КонецЕсли;
		
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ПечатьОтчет(Команда)
	
	ПечатьОтчетности(Команда.Имя);
	
КонецПроцедуры

&НаКлиенте
Процедура ОтправитьОтчетПредварительное(Результат, ПараметрыОповещения) Экспорт
	
	ОтправитьОтчет(
		ПараметрыОповещения.Команда
	);
	
КонецПроцедуры

&НаКлиенте
Процедура ОтправитьОтчет(Команда)
	
	Если КонтекстЭДОКлиент = Неопределено И КонтекстУжеПодключался <> Истина Тогда
		ПараметрыОповещения = Новый Структура;
		ПараметрыОповещения.Вставить("Команда", Команда);
		Оповещение = Новый ОписаниеОповещения("ОтправитьОтчетПредварительное", ЭтотОбъект, ПараметрыОповещения);
		ИнициализироватьКонтекстЭДО(Оповещение);
		Возврат;
	КонецЕсли;
	
	ТекущиеДанные = Элементы.Отчеты.ТекущиеДанные;
	
	РегламентированнаяОтчетностьКлиент.ОтправитьОтчетИзФормыСписка(ЭтотОбъект, Команда.Имя, КонтекстЭДОКлиент, ТекущиеДанные); 
	
КонецПроцедуры

&НаКлиенте
Процедура ОтправитьОтчетПодтверждениеОтправкиОтчетаЗавершение(Отказ, ДополнительныеПараметры) Экспорт

	// Внимание!
	// ---------
	// В модуле объекта обработки ДокументооборотСКонтролирующимиОрганами есть процедура ОтправитьРегламентированныйОтчет(),
	// которая используется при отправке отчетов из мобильной бухгалтерии без взаимодействия с клиентским контекстом.
	// При изменениях необходимо синхронно менять обе процедуры.
	
	Если Отказ <> КодВозвратаДиалога.ОК Тогда
		Возврат;
	КонецЕсли;
	
	Ссылка = ДополнительныеПараметры.Ссылка;
	
	Если ТипЗнч(Ссылка) = Тип("ДокументСсылка.РегламентированныйОтчет") Тогда
		
		ОписаниеОповещения = Новый ОписаниеОповещения("ПроверкаВозможностиВыгрузкиРегламентированногоОтчетаПередОтправкой", ЭтотОбъект, ДополнительныеПараметры);
		РегламентированнаяОтчетностьКлиент.ПередОтправкойРегламентированногоОтчета(ОписаниеОповещения, Ссылка);
		Возврат;
		
	Иначе
		
		ОписаниеОповещения = Новый ОписаниеОповещения("ОтправитьОтчетЗавершение", ЭтотОбъект, ДополнительныеПараметры);
		ВыполнитьОбработкуОповещения(ОписаниеОповещения, Ложь);
		Возврат;
		
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ПроверкаВозможностиВыгрузкиРегламентированногоОтчетаПередОтправкой(Отказ, ДополнительныеПараметры) Экспорт

	// Внимание!
	// ---------
	// В модуле объекта обработки ДокументооборотСКонтролирующимиОрганами есть процедура ОтправитьРегламентированныйОтчет(),
	// которая используется при отправке отчетов из мобильной бухгалтерии без взаимодействия с клиентским контекстом.
	// При изменениях необходимо синхронно менять обе процедуры.
	
	Если Отказ Тогда
		Возврат;
	КонецЕсли;
	
	Ссылка = ДополнительныеПараметры.Ссылка;
	ОписаниеОповещения = Новый ОписаниеОповещения("ОтправитьОтчетЗавершение", ЭтотОбъект, ДополнительныеПараметры);
	РегламентированнаяОтчетностьКлиент.ПередВыгрузкойРегламентированногоОтчета(ОписаниеОповещения, Ссылка);
	
КонецПроцедуры

&НаКлиенте
Процедура ЗагрузитьМашиночитаемуюДоверенностьЗавершение(Результат, ДополнительныеПараметры) Экспорт
	
	Если (ТипЗнч(Результат) = Тип("Структура") ИЛИ ТипЗнч(Результат) = Тип("ФиксированнаяСтруктура"))
		И Результат.Свойство("Доверенность") И ЗначениеЗаполнено(Результат.Доверенность) Тогда
		
		ПоказатьЗначение(, Результат.Доверенность);
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ЗагрузитьМашиночитаемуюДоверенностьРаспределенныйРеестрЗавершение(Результат, ДополнительныеПараметры) Экспорт
	
	Если ЗначениеЗаполнено(Результат.СсылкаНаДоверенность) Тогда
		ОткрытьФорму(
			"Справочник.МашиночитаемыеДоверенностиРаспределенныйРеестр.ФормаОбъекта",
			Новый Структура("Ключ, ОбновитьСостояниеПриОткрытии", Результат.СсылкаНаДоверенность, Истина),,
			Новый УникальныйИдентификатор);
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ОтправитьОтчетЗавершение(Отказ, ДополнительныеПараметры) Экспорт

	// Внимание!
	// ---------
	// В модуле объекта обработки ДокументооборотСКонтролирующимиОрганами есть процедура ОтправитьРегламентированныйОтчет(),
	// которая используется при отправке отчетов из мобильной бухгалтерии без взаимодействия с клиентским контекстом.
	// При изменениях необходимо синхронно менять обе процедуры.
	
	Если Отказ Тогда
		Возврат;
	КонецЕсли;
	
	РегламентированнаяОтчетностьКлиент.ПриНажатииНаКнопкуОтправкиВКонтролирующийОрган(ЭтотОбъект, ДополнительныеПараметры.КонтролирующийОрган, , 
		Истина, ДополнительныеПараметры.Ссылка, ДополнительныеПараметры.Организация);
	
КонецПроцедуры	

&НаКлиенте
Процедура ПечатьОтчетШтрих(Команда)
	
	ПечатьОтчетности(Команда.Имя);
	
КонецПроцедуры

&НаКлиенте
Процедура ПроверитьВыгрузкуПредварительное(Результат, ПараметрыОповещения) Экспорт
	
	ПроверитьВыгрузку(
		ПараметрыОповещения.Команда
	);
	
КонецПроцедуры

&НаКлиенте
Процедура ПроверитьВыгрузку(Команда)
	
	Если КонтекстЭДОКлиент = Неопределено И КонтекстУжеПодключался <> Истина Тогда
		ПараметрыОповещения = Новый Структура;
		ПараметрыОповещения.Вставить("Команда", Команда);
		Оповещение = Новый ОписаниеОповещения("ПроверитьВыгрузкуПредварительное", ЭтотОбъект, ПараметрыОповещения);
		ИнициализироватьКонтекстЭДО(Оповещение);
		Возврат;
	КонецЕсли;
	
	ТекущиеДанные = Элементы.Отчеты.ТекущиеДанные;
	Закладка = Элементы.Отчеты;
	
	Если ТекущиеДанные <> Неопределено Тогда
		
		Ссылка = ТекущиеДанные.РегламентированныйОтчет;
		
		Если ТипЗнч(Ссылка) = Тип("СправочникСсылка.ЭлектронныеПредставленияРегламентированныхОтчетов") Тогда
			
			ПредупредитьОбОграничениях(Закладка, НСтр("ru = 'Проверка выгрузки не предусмотрена'"));
			Возврат;
			
		ИначеЕсли ТипЗнч(Ссылка) = Тип("ДокументСсылка.РегламентированныйОтчет") Тогда
			
			СтандартнаяОбработка = Истина;
			
			Если ВыполнениеКомандыОтменено(?(ТекущиеДанные.Свойство("НаименованиеОтчета"), ТекущиеДанные.НаименованиеОтчета, ТекущиеДанные.Наименование), ТекущиеДанные.Организация) Тогда
				Возврат;
			КонецЕсли;
			
			ТекущиеДанныеНаименованиеОтчета = ?(ТекущиеДанные.Свойство("НаименованиеОтчета"), ТекущиеДанные.НаименованиеОтчета, ТекущиеДанные.Наименование);
									
			ОписаниеОтчета = ОписаниеРегОтчета(ТекущиеДанные.РегламентированныйОтчет);
		
			Если ОбработаноДействиеДляАлкоОтчета(ТекущиеДанные.РегламентированныйОтчет,  
												ОписаниеОтчета, "ПроверкаВыгрузки") Тогда
			    Возврат;		
			КонецЕсли;
			
			Если ТекущиеДанныеНаименованиеОтчета = "Информация об операциях с денежными средствами НФО" Тогда
				ОписаниеРегОтчета = ОписаниеРегОтчета(Ссылка);
				Если ОписаниеРегОтчета.ВыбраннаяФорма = "ФормаОтчета2022Кв2" Тогда
					ПоказатьПредупреждение(, НСтр(
					"ru='Проверка выгрузки в электронном виде формы
					|отчета будет реализована в будущих
					|версиях программы'"));
					Возврат;
				КонецЕсли;
			КонецЕсли;
			
			Если ТекущиеДанныеНаименованиеОтчета = "Реестр для налоговых вычетов по акцизам на виноград (КНД 1150116)"
				И ОписаниеРегОтчета(Ссылка).ВыбраннаяФорма = "ФормаОтчета2021Кв4" Тогда
				ПоказатьПредупреждение(, НСтр(
				"ru='Проверка выгрузки в электронном виде формы
				|отчета не предусмотрена'"));
				Возврат;
			КонецЕсли;
			
			Если ТекущиеДанныеНаименованиеОтчета
				= "Реестр для налоговых вычетов по акцизам на виноматериалы, виноградное и фруктовое сусло (КНД 1150115)"
				И ОписаниеРегОтчета(Ссылка).ВыбраннаяФорма = "ФормаОтчета2021Кв4" Тогда
				ПоказатьПредупреждение(, НСтр(
				"ru='Проверка выгрузки в электронном виде формы
				|отчета не предусмотрена'"));
				Возврат;
			КонецЕсли;
			
			Если ТекущиеДанныеНаименованиеОтчета = "Движение средств по счету в банке за пределами РФ" Тогда
				ОписаниеРегОтчета = ОписаниеРегОтчета(Ссылка);
				Если ОписаниеРегОтчета.ВыбраннаяФорма = "ФормаОтчета2015Кв3" Тогда
					ПоказатьПредупреждение(, НСтр(
					"ru='Проверка выгрузки в электронном виде формы отчета
					|в редакции постановления Правительства РФ
					|от 25.07.2015 № 761 не предусмотрена
					|законодательством. Форма сдается в бумажном виде'"));
					Возврат;
				КонецЕсли;
			КонецЕсли;
			
			Если ТекущиеДанныеНаименованиеОтчета = "Доходы, выплаченные иностранным организациям" Тогда
				ОписаниеДохИно = ОписаниеРегОтчета(Ссылка);
				Если (ОписаниеДохИно.ВыбраннаяФорма = "ФормаОтчета2023Кв4"
					ИЛИ ОписаниеДохИно.ВыбраннаяФорма = "ФормаОтчета2020Кв1"
					ИЛИ ОписаниеДохИно.ВыбраннаяФорма = "ФормаОтчета2016Кв1")
					И ОписаниеДохИно.Свойство("ВозможноВосстановитьДанныеРеглОтчетаСозданногоВОбычномПриложении") Тогда
					Если НЕ ОписаниеДохИно.ВозможноВосстановитьДанныеРеглОтчетаСозданногоВОбычномПриложении Тогда
						Если ОписаниеДохИно.Свойство("ТекстСообщения") Тогда
							Сообщение = Новый СообщениеПользователю;
							Сообщение.Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр(
							"ru='%1 Проверка выгрузки прервана.'"), ОписаниеДохИно.ТекстСообщения);
							Сообщение.Сообщить();
						КонецЕсли;
						Возврат;
					КонецЕсли;
				КонецЕсли;
			КонецЕсли;
			
			Если ТекущиеДанныеНаименованиеОтчета = "Сведения о доле доходов от туристско-рекреационной деятельности" Тогда
				Если ОписаниеРегОтчета(Ссылка).ВыбраннаяФорма = "ФормаОтчета2018Кв1" Тогда
					Сообщение = Новый СообщениеПользователю;
					Сообщение.Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр(
					"ru='Выгрузка, проверка выгрузки, проверка в интернете, отправка в электронном виде, печать с двухмерным
					|штрихкодом PDF417 формы отчета ""%1"",
					|рекомендованной письмом ФНС России от 16.01.2019 № СД-4-3/441@, не предусмотрены'"),
					ТекущиеДанныеНаименованиеОтчета);
					Сообщение.Сообщить();
					Возврат;
				КонецЕсли;
			КонецЕсли;
			
			Если ТекущиеДанныеНаименованиеОтчета = "РСВ-1 ПФР" Тогда
				ОписаниеРСВ_1 = ОписаниеРегОтчета(Элементы.Отчеты.ТекущиеДанные.РегламентированныйОтчет);
				Если ОписаниеРСВ_1.ДатаКонцаПериодаОтчета >= '20140101' Тогда
					Если НЕ (ПерсонифицированныйУчетВедетсяВоВнешнейПрограмме И ОписаниеРСВ_1.ОтчетСтарогоОбразца_20141101) Тогда
						РегламентированнаяОтчетностьКлиент.ПриПроверкеВыгрузкиРСВ_1ИзЖурналаРеглОтчетов(Ссылка, ОписаниеРСВ_1, СтандартнаяОбработка);
					КонецЕсли;
				КонецЕсли;
			КонецЕсли;
			
			Если (ТекущиеДанныеНаименованиеОтчета = "Статистика: Форма учета перемещения товаров"
				ИЛИ ТекущиеДанныеНаименованиеОтчета = "Статистическая форма учета перемещения товаров") И КонтекстЭДОКлиент <> Неопределено Тогда
				ДокументЗаявлениеОВвозеТоваров = Неопределено;
				ИмяДокументаЗаявлениеОВвозеТоваров = Неопределено;
				РезультатПолученияЗаявленияОВвозеТоваров = КонтекстЭДОКлиент.ПопытатьсяПолучитьЗаявлениеОВвозеТоваровИзСтатформы(
					Ссылка, ДокументЗаявлениеОВвозеТоваров, ИмяДокументаЗаявлениеОВвозеТоваров);
				Если РезультатПолученияЗаявленияОВвозеТоваров = Неопределено Тогда
					Возврат;
				ИначеЕсли РезультатПолученияЗаявленияОВвозеТоваров Тогда
					ДополнительныеПараметры = Новый Структура();
					ДополнительныеПараметры.Вставить("ДокументЗаявлениеОВвозеТоваров", ДокументЗаявлениеОВвозеТоваров);
					ДополнительныеПараметры.Вставить("ИмяДокументаЗаявлениеОВвозеТоваров", ИмяДокументаЗаявлениеОВвозеТоваров);
					ОписаниеОповещения = Новый ОписаниеОповещения("ПроверитьВыгрузкуЗавершениеИзСтатформы", ЭтотОбъект, ДополнительныеПараметры);
					РегламентированнаяОтчетностьКлиент.ПередВыгрузкойРегламентированногоОтчета(ОписаниеОповещения, Ссылка);
					Возврат;
				КонецЕсли;
			КонецЕсли;
									
			Если СтандартнаяОбработка Тогда
				
				ДополнительныеПараметры = Новый Структура();
				ДополнительныеПараметры.Вставить("Ссылка", Ссылка);
				
				ОписаниеОповещения = Новый ОписаниеОповещения("ПроверитьВыгрузкуЗавершение", ЭтотОбъект, ДополнительныеПараметры);
				
				РегламентированнаяОтчетностьКлиент.ПередВыгрузкойРегламентированногоОтчета(ОписаниеОповещения, Ссылка);
				Возврат;
				
			КонецЕсли;
			
		Иначе
			
			// Остальные виды отчетов
			ПредупредитьОбОграничениях(Закладка, НСтр("ru = 'Проверка выгрузки не предусмотрена'"));
			
		КонецЕсли;
		
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ПроверитьВыгрузкуЗавершение(Отказ, ДополнительныеПараметры) Экспорт
	
	Если Отказ Тогда
		Возврат;
	КонецЕсли;
	
	СписокОтчетов = Новый СписокЗначений;
	СписокОтчетов.Добавить(ДополнительныеПараметры.Ссылка);
	
	Если НЕ РегламентированнаяОтчетностьКлиент.ПроверитьРегламентированныеОтчеты(СписокОтчетов) Тогда
		ПоказатьПредупреждение(,НСтр("ru='Проверка прервана!'"));
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ПроверитьВыгрузкуЗавершениеИзСтатформыПредварительное(Результат, ПараметрыОповещения) Экспорт
	
	ПроверитьВыгрузкуЗавершениеИзСтатформы(
		ПараметрыОповещения.Отказ,
		ПараметрыОповещения.ДополнительныеПараметры
	);
	
КонецПроцедуры

&НаКлиенте
Процедура ПроверитьВыгрузкуЗавершениеИзСтатформы(Отказ, ДополнительныеПараметры) Экспорт
	
	Если КонтекстЭДОКлиент = Неопределено И КонтекстУжеПодключался <> Истина Тогда
		ПараметрыОповещения = Новый Структура;
		ПараметрыОповещения.Вставить("Отказ", Отказ);
		ПараметрыОповещения.Вставить("ДополнительныеПараметры", ДополнительныеПараметры);
		Оповещение = Новый ОписаниеОповещения("ПроверитьВыгрузкуЗавершениеИзСтатформыПредварительное", ЭтотОбъект, ПараметрыОповещения);
		ИнициализироватьКонтекстЭДО(Оповещение);
		Возврат;
	КонецЕсли;
	
	ДокументЗаявлениеОВвозеТоваров = ДополнительныеПараметры.ДокументЗаявлениеОВвозеТоваров;
	ИмяДокументаЗаявлениеОВвозеТоваров = ДополнительныеПараметры.ИмяДокументаЗаявлениеОВвозеТоваров;
	
	Если Отказ Тогда
		Возврат;
	КонецЕсли;
	
	Если КонтекстЭДОКлиент = Неопределено Тогда
		ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстОшибкиИнициализацииКонтекстаЭДО);
		Возврат;
	КонецЕсли;
	
	АдресФайлаВыгрузки = Неопределено;
	ИмяФайлаВыгрузки = "";
	
	РезультатВыгрузки = КонтекстЭДОКлиент.ПопытатьсяВыгрузитьСтатформуИзЗаявленияОВвозеТоваров(
		АдресФайлаВыгрузки,
		ИмяФайлаВыгрузки,
		,
		Истина,
		Истина,
		ДокументЗаявлениеОВвозеТоваров,
		ИмяДокументаЗаявлениеОВвозеТоваров);
	
	Если РезультатВыгрузки = Истина Тогда
		ПоказатьПредупреждение(,НСтр("ru='Ошибок не обнаружено!'"));
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ПечатьПротоколовОтчетов(Команда)
	
	ТекущиеДанные = Элементы.Отчеты.ТекущиеДанные;
	
	Если ТекущиеДанные <> Неопределено Тогда
		
		Ссылка 								= ТекущиеДанные.РегламентированныйОтчет;
		ВидКонтролирующегоОргана 			= ТекущиеДанные.ВидКонтролирующегоОргана;
		СостояниеСдачиОтчетности			= ТекущиеДанные.СостояниеСдачиОтчетности;
		НеОтправляетсяВКонтролирующийОрган	= ТекущиеДанные.НеОтправляетсяВКонтролирующийОрган;
		
		ПечатьПротоколовПоСсылке(
			Элементы.Отчеты, 
			Ссылка, 
			ВидКонтролирующегоОргана, 
			НеОтправляетсяВКонтролирующийОрган, 
			СостояниеСдачиОтчетности);
		
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ОткрытьПрисоединенныеФайлыОтчета(Команда)
	
	ОткрытьПрисоединенныеФайлы();
	
КонецПроцедуры

&НаКлиенте
Процедура ГрупповойРежимПредварительное(Результат, ПараметрыОповещения) Экспорт
	
	ГрупповойРежим(
		ПараметрыОповещения.Команда
	);
	
КонецПроцедуры

&НаКлиенте
Процедура ГрупповойРежим(Команда)
	
	Если КонтекстЭДОКлиент = Неопределено И КонтекстУжеПодключался <> Истина Тогда
		ПараметрыОповещения = Новый Структура;
		ПараметрыОповещения.Вставить("Команда", Команда);
		Оповещение = Новый ОписаниеОповещения("ГрупповойРежимПредварительное", ЭтотОбъект, ПараметрыОповещения);
		ИнициализироватьКонтекстЭДО(Оповещение);
		Возврат;
	КонецЕсли;
	
	ДополнительныеПараметры = Новый Структура();
	ДополнительныеПараметры.Вставить("НачалоПериода", НачалоПериода);
	ДополнительныеПараметры.Вставить("КонецПериода", КонецПериода);
	ДополнительныеПараметры.Вставить("Организация", Организация);
	ДополнительныеПараметры.Вставить("ВидОтчета", ВидОтчета);
	ДополнительныеПараметры.Вставить("ПериодОтчета", ПериодОтчета);
	
	ДополнитьОтборГрупповойОтправки(ДополнительныеПараметры);
	
	ОткрытьФорму(КонтекстЭДОКлиент.ПутьКОбъекту + ".Форма.ГрупповаяОтправка", ДополнительныеПараметры, ЭтотОбъект);
	
КонецПроцедуры

&НаСервере
Функция ДополнитьОтборГрупповойОтправки(ВходящийКонтекст)
	
	Ссылки = Новый Массив;
	Для каждого Строка Из Элементы.Отчеты.ВыделенныеСтроки Цикл
		Ссылки.Добавить(Строка.Ссылка);
	КонецЦикла;
	
	Если Ссылки.Количество() > 1 Тогда
		ВходящийКонтекст.Вставить("Ссылки", Ссылки);
	КонецЕсли;
	
КонецФункции

#КонецОбласти

#Область КомандыЗакладкиСверки

&НаКлиенте
Процедура ОтправитьСверкуПредварительное(Результат, ПараметрыОповещения) Экспорт
	
	ОтправитьСверку(
		ПараметрыОповещения.Команда
	);
	
КонецПроцедуры

&НаКлиенте
Процедура ОтправитьСверку(Команда)
	
	Если КонтекстЭДОКлиент = Неопределено И КонтекстУжеПодключался <> Истина Тогда
		ПараметрыОповещения = Новый Структура;
		ПараметрыОповещения.Вставить("Команда", Команда);
		Оповещение = Новый ОписаниеОповещения("ОтправитьСверкуПредварительное", ЭтотОбъект, ПараметрыОповещения);
		ИнициализироватьКонтекстЭДО(Оповещение);
		Возврат;
	КонецЕсли;
	
	Если КонтекстЭДОКлиент = Неопределено Тогда
		ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстОшибкиИнициализацииКонтекстаЭДО);
		Возврат;
	КонецЕсли;
	
	ТекущиеДанные = Элементы.Сверки.ТекущиеДанные;
	Если ТекущиеДанные <> Неопределено Тогда
		ОтправляемыйОбъект = ТекущиеДанные.Ссылка;
		ТекущаяОрганизация = ТекущиеДанные.Организация;
		//Если запрос уже отправлялся, то повторно отправлять не позволяем
		Если ЕщеНеОтправлялся(ОтправляемыйОбъект) Тогда
			ОписаниеОповещения = Новый ОписаниеОповещения("ОтправитьСверкуЗавершение", ЭтотОбъект);
			Если ТипЗнч(ОтправляемыйОбъект) = Тип("ДокументСсылка.ЗапросНаИнформационноеОбслуживаниеНалогоплательщика") Тогда
				КонтекстЭДОКлиент.ОтправкаЗапросаНаИнформационноеОбслуживание(ОтправляемыйОбъект, ТекущаяОрганизация,  ОписаниеОповещения);
			ИначеЕсли ТипЗнч(ОтправляемыйОбъект) = Тип("ДокументСсылка.ЗапросНаИнформационноеОбслуживаниеСтрахователя") Тогда
				КонтекстЭДОКлиент.ОтправкаЗапросаИОС(ОтправляемыйОбъект, ТекущаяОрганизация, ОписаниеОповещения);
			ИначеЕсли ТипЗнч(ОтправляемыйОбъект) = Тип("ДокументСсылка.ЗаявлениеНаФормированиеСправкиОРасчетах") Тогда
				ПоказатьПредупреждение(, НСтр("ru = 'Заявление на формирование справки о расчетах отправляется из формы документа'"));
			Иначе
				КонтекстЭДОКлиент.ОбъектЗаполненКорректно(ОтправляемыйОбъект);
			КонецЕсли;
		Иначе
			ПоказатьПредупреждение(, НСтр("ru = 'Запрос на сверку уже отправлен'"));
		КонецЕсли;
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ОтправитьСверкуЗавершение(Результат, ДополнительныеПараметры) Экспорт
	
	Элементы.Сверки.Обновить();
	
КонецПроцедуры

&НаКлиенте
Процедура СоздатьПредставлениеАктовСверкиРасчетов(Команда)
	СоздатьСверку(ПредопределенноеЗначение("Перечисление.ВидыУслугПриИОН.ПредставлениеАктовСверкиРасчетов"));
КонецПроцедуры

&НаКлиенте
Процедура СоздатьПредставлениеВыпискиОперацийИзКарточкиРасчетыСБюджетом(Команда)
	СоздатьСверку(ПредопределенноеЗначение("Перечисление.ВидыУслугПриИОН.ПредставлениеВыпискиОперацийИзКарточкиРасчетыСБюджетом"));
КонецПроцедуры

&НаКлиенте
Процедура СоздатьПредставлениеПеречняБухгалтерскойИНалоговойОтчетности(Команда)
	СоздатьСверку(ПредопределенноеЗначение("Перечисление.ВидыУслугПриИОН.ПредставлениеПеречняБухгалтерскойИНалоговойОтчетности"));
КонецПроцедуры

&НаКлиенте
Процедура СоздатьПредставлениеСправкиОСостоянииРасчетовСБюджетом(Команда)
	СоздатьСверку(ПредопределенноеЗначение("Перечисление.ВидыУслугПриИОН.ПредставлениеСправкиОСостоянииРасчетовСБюджетом"));
КонецПроцедуры

&НаКлиенте
Процедура СоздатьПредставлениеСправкиОбИсполненииОбязанностейПоУплате(Команда)
	СоздатьСверку(ПредопределенноеЗначение("Перечисление.ВидыУслугПриИОН.ПредставлениеСправкиОбИсполненииОбязанностейПоУплате"));
КонецПроцедуры

&НаКлиенте
Процедура СоздатьСверкаФИОиСНИЛС(Команда)
	СоздатьСверку(ПредопределенноеЗначение("Перечисление.ВидыУслугПриИОС.СверкаФИОиСНИЛС"));
КонецПроцедуры

&НаКлиенте
Процедура ВыгрузитьСверкуПредварительное(Результат, ПараметрыОповещения) Экспорт
	
	ВыгрузитьСверку(
		ПараметрыОповещения.Команда
	);
	
КонецПроцедуры

&НаКлиенте
Процедура ВыгрузитьСверку(Команда)
	
	Если КонтекстЭДОКлиент = Неопределено И КонтекстУжеПодключался <> Истина Тогда
		ПараметрыОповещения = Новый Структура;
		ПараметрыОповещения.Вставить("Команда", Команда);
		Оповещение = Новый ОписаниеОповещения("ВыгрузитьСверкуПредварительное", ЭтотОбъект, ПараметрыОповещения);
		ИнициализироватьКонтекстЭДО(Оповещение);
		Возврат;
	КонецЕсли;
	
	Если КонтекстЭДОКлиент = Неопределено Тогда
		ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстОшибкиИнициализацииКонтекстаЭДО);
		Возврат;
	КонецЕсли;
	
	ТекущиеДанные = Элементы.Сверки.ТекущиеДанные;
	Если ТекущиеДанные <> Неопределено Тогда
		
		ОтправляемыйОбъект = ТекущиеДанные.Ссылка;

		Если ТипЗнч(ОтправляемыйОбъект) = Тип("ДокументСсылка.ЗапросНаИнформационноеОбслуживаниеНалогоплательщика") Тогда
			КонтекстЭДОКлиент.ВыгрузитьЗапросИОНВФайл(ОтправляемыйОбъект, УникальныйИдентификатор);
		Иначе
			КонтекстЭДОКлиент.ВыгрузитьЗапросИОСВФайл(ОтправляемыйОбъект, УникальныйИдентификатор);
		КонецЕсли;
		
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ПечатьСверкиПредварительное(Результат, ПараметрыОповещения) Экспорт
	
	ПечатьСверки(
		ПараметрыОповещения.Команда
	);
	
КонецПроцедуры

&НаКлиенте
Процедура ПечатьСверки(Команда)
	
	Если КонтекстЭДОКлиент = Неопределено И КонтекстУжеПодключался <> Истина Тогда
		ПараметрыОповещения = Новый Структура;
		ПараметрыОповещения.Вставить("Команда", Команда);
		Оповещение = Новый ОписаниеОповещения("ПечатьСверкиПредварительное", ЭтотОбъект, ПараметрыОповещения);
		ИнициализироватьКонтекстЭДО(Оповещение);
		Возврат;
	КонецЕсли;
	
	Если КонтекстЭДОКлиент = Неопределено Тогда
		ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстОшибкиИнициализацииКонтекстаЭДО);
		Возврат;
	КонецЕсли;
	
	ТекущиеДанные = ТекущаяТаблица(ЭтотОбъект).ТекущиеДанные;
	Если ТекущиеДанные <> Неопределено Тогда
		
		ПечатаемыйОбъект = ТекущиеДанные.Ссылка;
		
		Если ТипЗнч(ТекущиеДанные.Ссылка) = Тип("ДокументСсылка.ЗаявлениеНаФормированиеСправкиОРасчетах") Тогда
			ПоказатьПредупреждение(, НСтр("ru = 'Печать справки о расчетах не предусмотрена'"));
			Возврат;
		КонецЕсли;
		
		Если НЕ КонтекстЭДОКлиент.ОбъектЗаполненКорректно(ПечатаемыйОбъект) Тогда
			Возврат;
		КонецЕсли;
		
		ПечатнаяФормаСверки = ТабличныйДокументСверки(ПечатаемыйОбъект);
		КонтекстЭДОКлиент.НапечататьДокумент(ПечатнаяФормаСверки, Строка(ПечатаемыйОбъект));
		
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура СоздатьЗаявлениеНаФормированиеСправкиОРасчетах(Команда)
	
	ФормаДокумента = "Документ.ЗаявлениеНаФормированиеСправкиОРасчетах.Форма.ФормаДокумента";
	
	ПараметрыФормы = Новый Структура;
	ПараметрыФормы.Вставить("ЗначенияЗаполнения", Новый Структура("Организация, ДатаЗадолженности", Организация, НачалоКвартала(ТекущаяДатаНаСервере())));
	
	ОткрытьФорму(ФормаДокумента, ПараметрыФормы, ЭтотОбъект, Новый УникальныйИдентификатор);
	
КонецПроцедуры

#КонецОбласти

#Область КомандыЗакладкиЕГРЮЛ

&НаКлиенте
Процедура СоздатьЗапросНаВыпискуИзЕГРЮЛ_ЕГРИП(Команда)
	
	СоздатьНовыйЗапросНаВыпискуИзЕГРЮЛ_ЕГРИП();
	
КонецПроцедуры

&НаКлиенте
Процедура ОтправитьЗапросНаВыпискуИзЕГРЮЛ_ЕГРИППредварительное(Результат, ПараметрыОповещения) Экспорт
	
	ОтправитьЗапросНаВыпискуИзЕГРЮЛ_ЕГРИП(
		ПараметрыОповещения.Команда
	);
	
КонецПроцедуры

&НаКлиенте
Процедура ОтправитьЗапросНаВыпискуИзЕГРЮЛ_ЕГРИП(Команда)
	
	Если КонтекстЭДОКлиент = Неопределено И КонтекстУжеПодключался <> Истина Тогда
		ПараметрыОповещения = Новый Структура;
		ПараметрыОповещения.Вставить("Команда", Команда);
		Оповещение = Новый ОписаниеОповещения("ОтправитьЗапросНаВыпискуИзЕГРЮЛ_ЕГРИППредварительное", ЭтотОбъект, ПараметрыОповещения);
		ИнициализироватьКонтекстЭДО(Оповещение);
		Возврат;
	КонецЕсли;
	
	Если КонтекстЭДОКлиент = Неопределено Тогда
		ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстОшибкиИнициализацииКонтекстаЭДО);
		Возврат;
	КонецЕсли;
	
	ТекущиеДанные = Элементы.ЕГРЮЛ.ТекущиеДанные;
	Если ТекущиеДанные <> Неопределено Тогда
		Ссылка = ТекущиеДанные.Ссылка;
		ТекущаяОрганизация = ТекущиеДанные.Организация;
		//Если запрос уже отправлялся, то повторно отправлять не позволяем
		Если ТипЗнч(ТекущиеДанные.Ссылка) = Тип("ДокументСсылка.УведомлениеОСпецрежимахНалогообложения") Тогда
			ТекстСообщения = НСтр("ru = 'Для формирования пакета Р13014 или Р24001 зайдите в форму отчета. Отправка других форм не поддерживается.'");
			ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстСообщения, Ссылка);
		ИначеЕсли ЕщеНеОтправлялся(Ссылка) Тогда
			ОписаниеОповещения = Новый ОписаниеОповещения("ОтправитьЗапросНаВыпискуИзЕГРЮЛ_ЕГРИПЗавершение", ЭтотОбъект);
			КонтекстЭДОКлиент.ОтправкаЗапросаНаВыпискуИзЕГР(Ссылка, ТекущаяОрганизация, ОписаниеОповещения);
		Иначе
			ПоказатьПредупреждение(, НСтр("ru = 'Запрос уже отправлен'"));
		КонецЕсли;
			
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ОтправитьЗапросНаВыпискуИзЕГРЮЛ_ЕГРИПЗавершение(Результат, ДополнительныеПараметры) Экспорт
	
	Элементы.ЕГРЮЛ.Обновить();
	
КонецПроцедуры

&НаКлиенте
Процедура ЗарегистрироватьЮЛ(Команда)
	
	СоздатьУведомлениеЕГРЮЛ(
		ПредопределенноеЗначение("Перечисление.ВидыУведомленийОСпецрежимахНалогообложения.ФормаР11001"), 
		ПредопределенноеЗначение("Справочник.Организации.ПустаяСсылка"));
	
КонецПроцедуры

&НаКлиенте
Процедура ЗарегистрироватьИП(Команда)
	
	СоздатьУведомлениеЕГРЮЛ(
		ПредопределенноеЗначение("Перечисление.ВидыУведомленийОСпецрежимахНалогообложения.ФормаР21001"), 
		ПредопределенноеЗначение("Справочник.Организации.ПустаяСсылка"));
	
КонецПроцедуры

&НаКлиенте
Процедура ВнестиИзменениеВСведенияОрганизации(Команда)
	
	ВидыУведомления = Новый Структура();
	ВидыУведомления.Вставить("ИП",  ПредопределенноеЗначение("Перечисление.ВидыУведомленийОСпецрежимахНалогообложения.ФормаР24001"));
	ВидыУведомления.Вставить("ООО", ПредопределенноеЗначение("Перечисление.ВидыУведомленийОСпецрежимахНалогообложения.ФормаР13014"));
	
	ВыбратьОрганизациюИСоздатьУведомление(ВидыУведомления);
	
КонецПроцедуры

&НаКлиенте
Процедура ПрекратитьДеятельность(Команда)

	ВидыУведомления = Новый Структура();
	ВидыУведомления.Вставить("ИП", ПредопределенноеЗначение("Перечисление.ВидыУведомленийОСпецрежимахНалогообложения.ФормаР26001"));
	ВидыУведомления.Вставить("ООО", ПредопределенноеЗначение("Перечисление.ВидыУведомленийОСпецрежимахНалогообложения.ФормаР19001"));
	
	ВыбратьОрганизациюИСоздатьУведомление(ВидыУведомления);
	
КонецПроцедуры
	
&НаКлиенте
Процедура ЗарегистрироватьНовуюОрганизацию(Команда)
	
	СоздатьУведомлениеЕГРЮЛ(
		ПредопределенноеЗначение("Перечисление.ВидыУведомленийОСпецрежимахНалогообложения.ПустаяСсылка"),
		ПредопределенноеЗначение("Справочник.Организации.ПустаяСсылка"));
	
КонецПроцедуры

#КонецОбласти

#Область КомандыЗакладкиПисьма

&НаКлиенте
Процедура СоздатьИсходящееПисьмо(Команда)
	
	СоздатьНовоеИсходящееПисьмо();
	
КонецПроцедуры

&НаКлиенте
Процедура ОтправитьПисьмаПредварительное(Результат, ПараметрыОповещения) Экспорт
	
	ОтправитьПисьма(
		ПараметрыОповещения.Команда
	);
	
КонецПроцедуры

&НаКлиенте
Процедура ОтправитьПисьма(Команда)
	
	Если КонтекстЭДОКлиент = Неопределено И КонтекстУжеПодключался <> Истина Тогда
		ПараметрыОповещения = Новый Структура;
		ПараметрыОповещения.Вставить("Команда", Команда);
		Оповещение = Новый ОписаниеОповещения("ОтправитьПисьмаПредварительное", ЭтотОбъект, ПараметрыОповещения);
		ИнициализироватьКонтекстЭДО(Оповещение);
		Возврат;
	КонецЕсли;
	
	Если КонтекстЭДОКлиент = Неопределено Тогда
		ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстОшибкиИнициализацииКонтекстаЭДО);
		Возврат;
	КонецЕсли;
 
	ТекущиеДанные = Элементы.Письма.ТекущиеДанные;
	Если ТекущиеДанные <> Неопределено Тогда
		ОтправляемыйОбъект = ТекущиеДанные.Ссылка;
		ТекущаяОрганизация = ТекущиеДанные.Организация;
		//Если письмо уже отправлялось, то повторно отправлять не позволяем
		Если ЕщеНеОтправлялся(ОтправляемыйОбъект) Тогда
			
			ОписаниеОповещения = Новый ОписаниеОповещения("ОтправитьПисьмаЗавершение", ЭтотОбъект);
			
			Если ТипЗнч(ОтправляемыйОбъект) = Тип("СправочникСсылка.ПерепискаСКонтролирующимиОрганами") Тогда
				
				ПисьмаВГосОрганыКлиент.ОтправитьПисьмо(ЭтотОбъект, ОтправляемыйОбъект);

			ИначеЕсли ТипЗнч(ОтправляемыйОбъект) = Тип("СправочникСсылка.ОписиИсходящихДокументовВНалоговыеОрганы") Тогда
				
				КонтекстЭДОКлиент.ОтправкаОписиИсходящихДокументовВФНС(
					ОтправляемыйОбъект,
					ТекущаяОрганизация,
					УникальныйИдентификатор,
					ОписаниеОповещения);
				
			ИначеЕсли ТипЗнч(ОтправляемыйОбъект) = Тип("ДокументСсылка.ПоясненияКДекларацииПоНДС") Тогда
				ЭлектронныйДокументооборотСКонтролирующимиОрганамиКлиент.ОтправитьПояснение(КонтекстЭДОКлиент, ОтправляемыйОбъект, ТекущаяОрганизация, УникальныйИдентификатор, ОписаниеОповещения);
			ИначеЕсли ТипЗнч(ОтправляемыйОбъект) = Тип("ДокументСсылка.ОтветСтрахователяНаТребованиеПроверкиФСС") Тогда
				ТекстСообщения = НСтр("ru = 'Ответ можно отправить из формы документа'");
				ПоказатьПредупреждение( , ТекстСообщения);
			КонецЕсли;
		Иначе
			
			Если ТипЗнч(ОтправляемыйОбъект) = Тип("СправочникСсылка.ОписиИсходящихДокументовВНалоговыеОрганы") Тогда
				ТекстСообщения = НСтр("ru = 'Ответ на требование уже отправлен'");
			ИначеЕсли ТипЗнч(ОтправляемыйОбъект) = Тип("ДокументСсылка.ПоясненияКДекларацииПоНДС") Тогда
				ТекстСообщения = НСтр("ru = 'Пояснение уже отправлено'");
			Иначе
				ТекстСообщения = НСтр("ru = 'Письмо уже отправлено'");
			КонецЕсли;
			
			ПоказатьПредупреждение( , ТекстСообщения);
			
		КонецЕсли;
	КонецЕсли;
		
КонецПроцедуры

&НаКлиенте
Процедура ОтправитьПисьмаЗавершение(Результат, ДополнительныеПараметры) Экспорт
	
	ОбработкаОповещения("Завершение отправки в контролирующий орган", , Результат);
	
КонецПроцедуры

&НаКлиенте
Процедура ПечатьПисьмаПредварительное(Результат, ПараметрыОповещения) Экспорт
	
	ПечатьПисьма(
		ПараметрыОповещения.Команда
	);
	
КонецПроцедуры

&НаКлиенте
Процедура ПечатьПисьма(Команда)
	
	Если КонтекстЭДОКлиент = Неопределено И КонтекстУжеПодключался <> Истина Тогда
		ПараметрыОповещения = Новый Структура;
		ПараметрыОповещения.Вставить("Команда", Команда);
		Оповещение = Новый ОписаниеОповещения("ПечатьПисьмаПредварительное", ЭтотОбъект, ПараметрыОповещения);
		ИнициализироватьКонтекстЭДО(Оповещение);
		Возврат;
	КонецЕсли;
	
	Если КонтекстЭДОКлиент = Неопределено Тогда
		ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстОшибкиИнициализацииКонтекстаЭДО);
		Возврат;
	КонецЕсли;
	
	ТекущиеДанные = ТекущаяТаблица(ЭтотОбъект).ТекущиеДанные;
	Если ТекущиеДанные <> Неопределено Тогда
		
		ПечатаемыйОбъект = ТекущиеДанные.Ссылка;
		
		Если ТипЗнч(ПечатаемыйОбъект) = Тип("СправочникСсылка.ДокументыРеализацииПолномочийНалоговыхОрганов") Тогда
			ПечатнаяФормаДокументаНО = ТабличныйДокументНО(ПечатаемыйОбъект);
			Если ПечатнаяФормаДокументаНО = Неопределено Тогда
				ПоказатьПредупреждение(, НСтр("ru = 'Печать требования не предусмотрена'"));
				Возврат;
			КонецЕсли;
			КонтекстЭДОКлиент.НапечататьДокумент(ПечатнаяФормаДокументаНО, Строка(ПечатаемыйОбъект));
			Возврат;
		ИначеЕсли ТипЗнч(ПечатаемыйОбъект) = Тип("СправочникСсылка.ОписиИсходящихДокументовВНалоговыеОрганы") Тогда
			ПоказатьПредупреждение(, НСтр("ru = 'Печать ответа на требование не предусмотрена'"));
		ИначеЕсли ТипЗнч(ПечатаемыйОбъект) = Тип("ДокументСсылка.ПоясненияКДекларацииПоНДС") Тогда
			КонтекстЭДОКлиент.ПечатьПояснениеПоНДС(ПечатаемыйОбъект);
			Возврат;
		ИначеЕсли ТипЗнч(ПечатаемыйОбъект) = Тип("ДокументСсылка.ОтветСтрахователяНаТребованиеПроверкиФСС")
			ИЛИ ТипЗнч(ПечатаемыйОбъект) = Тип("ДокументСсылка.ОтветСтрахователяНаОбращениеСФР") Тогда
			ПоказатьПредупреждение(, НСтр("ru = 'Печать ответа страхователя не предусмотрена'"));
			Возврат;
		ИначеЕсли ТипЗнч(ПечатаемыйОбъект) = Тип("ДокументСсылка.ВходящийДокументСЭДОФСС") Тогда
			ПоказатьПредупреждение(, НСтр("ru = 'Печать требования предусмотрена из документа'"));
			Возврат;
		ИначеЕсли ТипЗнч(ПечатаемыйОбъект) = Тип("ДокументСсылка.ОбращениеСФРКСтрахователю") Тогда
			ПечатнаяФормаПисьма = ТабличныйДокументОбращениеСФРКСтрахователю(ПечатаемыйОбъект);
			КонтекстЭДОКлиент.НапечататьДокумент(ПечатнаяФормаПисьма, Строка(ПечатаемыйОбъект));
			Возврат;
		Иначе
			
			Если НЕ ПровереноЗаполнение(ПечатаемыйОбъект) Тогда
				Возврат;
			КонецЕсли;
			
			ПечатнаяФормаПисьма = ТабличныйДокументПисьма(ПечатаемыйОбъект);
			КонтекстЭДОКлиент.НапечататьДокумент(ПечатнаяФормаПисьма, Строка(ПечатаемыйОбъект));

		КонецЕсли;
	КонецЕсли;
	
КонецПроцедуры

&НаСервере
Функция ПровереноЗаполнение(Ссылка)
	
	СсылкаНаОбъект = Ссылка.ПолучитьОбъект();
	Возврат СсылкаНаОбъект.ПроверитьЗаполнение();
	
КонецФункции

#КонецОбласти

#Область КомандыЗакладкиУведомления

&НаКлиенте
Процедура СоздатьУведомление(Команда)
	
	СоздатьНовоеУведомление();
		
КонецПроцедуры

&НаКлиенте
Процедура ОтправитьУведомленияПредварительное(Результат, ПараметрыОповещения) Экспорт
	
	ОтправитьУведомления(
		ПараметрыОповещения.Команда
	);
	
КонецПроцедуры

&НаКлиенте
Процедура ОтправитьУведомления(Команда)
	
	Если КонтекстЭДОКлиент = Неопределено И КонтекстУжеПодключался <> Истина Тогда
		ПараметрыОповещения = Новый Структура;
		ПараметрыОповещения.Вставить("Команда", Команда);
		Оповещение = Новый ОписаниеОповещения("ОтправитьУведомленияПредварительное", ЭтотОбъект, ПараметрыОповещения);
		ИнициализироватьКонтекстЭДО(Оповещение);
		Возврат;
	КонецЕсли;
	
	Если КонтекстЭДОКлиент = Неопределено Тогда
		ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстОшибкиИнициализацииКонтекстаЭДО);
		Возврат;
	КонецЕсли;
	
	Закладка 		= Элементы.Уведомления;
	ТекущиеДанные 	= Элементы.Уведомления.ТекущиеДанные;
	
	Если ТекущиеДанные <> Неопределено Тогда
		
		Ссылка 			= ТекущиеДанные.Ссылка;
		ТипыСсылки 		= ТипЗнч(Ссылка);
		
		ТекущиеДанныеНаименованиеОтчета = ?(ТекущиеДанные.Свойство("НаименованиеОтчета"), ТекущиеДанные.НаименованиеОтчета,
			ТекущиеДанные.Наименование);
		ОтправкаЗаблокированаИМожетБытьРазблокированаПозже = Ложь;
		НаименованияОтчетаБезПрефикса =
			ЭлектронныйДокументооборотСКонтролирующимиОрганамиКлиентСервер.НаименованияОтчетаБезПрефикса(
			ТекущиеДанныеНаименованиеОтчета);
		
		СведенияОВерсииФормата = Неопределено;
		Если ТипЗнч(Ссылка) = Тип("СправочникСсылка.МашиночитаемыеДоверенностиФНС") Тогда
			СведенияОВерсииФормата = ДокументооборотСКОВызовСервера.СведенияОВерсииФорматаМЧДФНС(Истина, Ссылка);
		ИначеЕсли ТипЗнч(Ссылка) = Тип("СправочникСсылка.ЗаявленияОбОтзывеМЧДФНС") Тогда
			СведенияОВерсииФормата = ДокументооборотСКОВызовСервера.СведенияОВерсииФорматаЗаявленияОбОтзывеМЧДФНС(
				Истина, Ссылка);
		КонецЕсли;
		
		Если ТипЗнч(Ссылка) = Тип("ДокументСсылка.ЗаявленияПоЭлДокументооборотуСПФР")
			И НЕ ПровереноЗаполнение(Ссылка) Тогда
			ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru = 'Зайдите в заявление и исправьте найденные ошибки'"), Ссылка);
			Возврат;
		ИначеЕсли ТипЗнч(Ссылка) = Тип("ДокументСсылка.ЗаявленияПоЭлДокументооборотуСПФР")
			И Не ЕщеНеОтправлялся(Ссылка) Тогда
			
			ТекстСообщения = НСтр("ru = 'Заявление уже отправлено'");
			ПоказатьПредупреждение( , ТекстСообщения);
			Возврат;
			
		ИначеЕсли ТипЗнч(Ссылка) = Тип("СправочникСсылка.МашиночитаемыеДоверенностиФНС")
			И СведенияОВерсииФормата <> Неопределено И НЕ СведенияОВерсииФормата.ОтправкаРазрешена Тогда
			
			ПоказатьПредупреждение(,
				?(СведенияОВерсииФормата.ВерсияФормата = СведенияОВерсииФормата.АктуальнаяВерсияФормата,
				НСтр("ru = 'Отправка машиночитаемой доверенности в электронном виде не применяется.
						   |Обновите программу.'"),
				НСтр("ru = 'Отправка машиночитаемой доверенности в электронном виде не применяется, версия формата не актуальна.
						   |Создайте новую машиночитаемую доверенность.'")));
			
		ИначеЕсли ТипЗнч(Ссылка) = Тип("СправочникСсылка.ЗаявленияОбОтзывеМЧДФНС")
			И СведенияОВерсииФормата <> Неопределено И НЕ СведенияОВерсииФормата.ОтправкаРазрешена Тогда
			
			ПоказатьПредупреждение(,
				?(СведенияОВерсииФормата.ВерсияФормата = СведенияОВерсииФормата.АктуальнаяВерсияФормата,
				НСтр("ru = 'Отправка заявления на отзыв машиночитаемой доверенности в электронном виде не применяется.
						   |Обновите программу.'"),
				НСтр("ru = 'Отправка заявления на отзыв машиночитаемой доверенности в электронном виде не применяется, версия формата не актуальна.
						   |Создайте новое заявление на отзыв машиночитаемой доверенности.'")));
			
		ИначеЕсли ТипЗнч(Ссылка) = Тип("СправочникСсылка.МашиночитаемыеДоверенностиРаспределенныйРеестр")
			И НЕ ОнлайнСервисыРегламентированнойОтчетностиВызовСервера.СобытиеНаступило("Отпр.МЧД ФНС РР вер.5.01", Истина) Тогда
			
			Если ОнлайнСервисыРегламентированнойОтчетностиВызовСервера.СобытиеНаступило("Исп.МЧД един.фор.для ФНС", Истина) Тогда
				ПоказатьПредупреждение(,
					НСтр("ru = 'Отправка машиночитаемой доверенности (ФНС, распределенный реестр) не применяется.
							   |Используйте машиночитаемую доверенность (ФНС) или машиночитаемую доверенность единого формата, распределенный реестр с полномочиями для ФНС.'"));
			Иначе
				ПоказатьПредупреждение(,
					НСтр("ru = 'Отправка машиночитаемой доверенности (ФНС, распределенный реестр) не применяется.
							   |Используйте машиночитаемую доверенность (ФНС).'"));
			КонецЕсли;
			
		ИначеЕсли ТекущиеДанные.НеОтправляетсяВКонтролирующийОрган
			ИЛИ ТекущиеДанныеНаименованиеОтчета = "Уведомление о наличии счета"
			ИЛИ ТекущиеДанныеНаименованиеОтчета = "Отчет о движении средств по счету в банке за пределами РФ"
				И НЕ ОнлайнСервисыРегламентированнойОтчетностиВызовСервера.СобытиеНаступило("Отпр.ув.ОДДС")
			ИЛИ ТекущиеДанныеНаименованиеОтчета = "Заявление на получение субсидии на профилактику"
				И НЕ ОнлайнСервисыРегламентированнойОтчетностиВызовСервера.СобытиеНаступило("Отпр.заяв.субс.профилак.")
			ИЛИ (ТекущиеДанныеНаименованиеОтчета = "Заявление о постановке на учет (ЕНВД-1)"
				ИЛИ ТекущиеДанныеНаименованиеОтчета = "Постановка на учет организации (ЕНВД-1)")
				И НЕ ОнлайнСервисыРегламентированнойОтчетностиВызовСервера.СобытиеНаступило("Отпр.ЕНВД-1")
			ИЛИ (ТекущиеДанныеНаименованиеОтчета = "Заявление о постановке на учет (ЕНВД-2)"
				ИЛИ ТекущиеДанныеНаименованиеОтчета = "Постановка на учет ИП (ЕНВД-2)")
				И НЕ ОнлайнСервисыРегламентированнойОтчетностиВызовСервера.СобытиеНаступило("Отпр.ЕНВД-2")
			ИЛИ (ТекущиеДанныеНаименованиеОтчета = "Заявление о снятии с учета (ЕНВД-3)"
				ИЛИ ТекущиеДанныеНаименованиеОтчета = "Снятие с учета организации (ЕНВД-3)")
				И НЕ ОнлайнСервисыРегламентированнойОтчетностиВызовСервера.СобытиеНаступило("Отпр.ЕНВД-3")
			ИЛИ (ТекущиеДанныеНаименованиеОтчета = "Заявление о снятии с учета (ЕНВД-4)"
				ИЛИ ТекущиеДанныеНаименованиеОтчета = "Снятие с учета ИП (ЕНВД-4)")
				И НЕ ОнлайнСервисыРегламентированнойОтчетностиВызовСервера.СобытиеНаступило("Отпр.ЕНВД-4")
			ИЛИ ТекущиеДанныеНаименованиеОтчета = "Заявление об особом порядке уплаты налогов"
				И НЕ ОнлайнСервисыРегламентированнойОтчетностиВызовСервера.СобытиеНаступило("Отпр.заяв.ос.пор.упл.нал.")
			ИЛИ ТекущиеДанныеНаименованиеОтчета = "Заявление о возврате единого налогового платежа"
				И НЕ ОнлайнСервисыРегламентированнойОтчетностиВызовСервера.СобытиеНаступило("Отпр.возврата ЕНП")
			ИЛИ ТекущиеДанныеНаименованиеОтчета = "Заявление о предоставлении субсидии на нерабочие дни"
				И НЕ ОнлайнСервисыРегламентированнойОтчетностиВызовСервера.СобытиеНаступило("Отпр.заяв.субс.пост.1513")
			ИЛИ ТекущиеДанныеНаименованиеОтчета = "Заявление о поручительстве (залоге)"
				И НЕ ОнлайнСервисыРегламентированнойОтчетностиВызовСервера.СобытиеНаступило("Отпр.заяв.о поручительст.")
			ИЛИ ТекущиеДанныеНаименованиеОтчета = "Заявление о выдаче справки о состоянии расчетов по налогам и сборам"
				И ((НЕ ОнлайнСервисыРегламентированнойОтчетностиВызовСервера.СобытиеНаступило("Отпр.выд.справ.по расчет.")
				И ТипЗнч(Ссылка) = Тип("ДокументСсылка.УведомлениеОСпецрежимахНалогообложения")
				И ЭлектронныйДокументооборотСКонтролирующимиОрганамиВызовСервера.ЗначениеРеквизитаОбъекта(Ссылка, "ИмяФормы") =
					"Форма2023_1")
				ИЛИ (НЕ ОнлайнСервисыРегламентированнойОтчетностиВызовСервера.СобытиеНаступило("Отпр.выд.спр.по расч.25к1")
				И ТипЗнч(Ссылка) = Тип("ДокументСсылка.УведомлениеОСпецрежимахНалогообложения")
				И ЭлектронныйДокументооборотСКонтролирующимиОрганамиВызовСервера.ЗначениеРеквизитаОбъекта(Ссылка, "ИмяФормы") =
					"Форма2025_1"))
			ИЛИ ТекущиеДанныеНаименованиеОтчета = "Запрос о принадлежности сумм, перечисленных в качестве единого налогового платежа"
				И НЕ ОнлайнСервисыРегламентированнойОтчетностиВызовСервера.СобытиеНаступило("Отпр.запр.сумм ЕНП")
			ИЛИ ТекущиеДанныеНаименованиеОтчета = "Запрос информационного сообщения о состоянии расчетов с бюджетом"
				И НЕ ОнлайнСервисыРегламентированнойОтчетностиВызовСервера.СобытиеНаступило("Отпр.запр.сост.расчетов")
			ИЛИ ТекущиеДанныеНаименованиеОтчета = "Сведения о кадастровых номерах земельных участков"
				И НЕ ОнлайнСервисыРегламентированнойОтчетностиВызовСервера.СобытиеНаступило("Отпр.свед.о кадаст.ном.")
			ИЛИ НЕ ОнлайнСервисыРегламентированнойОтчетностиВызовСервера.СобытиеНаступило(НаименованияОтчетаБезПрефикса,
				НЕ ОтправкаЗаблокированаИМожетБытьРазблокированаПозже)
			ИЛИ СокрЛП(ТекущиеДанныеНаименованиеОтчета) = "Уведомление о невозможности предоставления документов в срок"
				И НЕ ОнлайнСервисыРегламентированнойОтчетностиВызовСервера.СобытиеНаступило("Отпр.ув.невоз.предос.5.03")
				И ТипЗнч(Ссылка) = Тип("ДокументСсылка.УведомлениеОСпецрежимахНалогообложения")
				И ЭлектронныйДокументооборотСКонтролирующимиОрганамиВызовСервера.ЗначениеРеквизитаОбъекта(Ссылка, "ИмяФормы") =
					"Форма2024_1"
			ИЛИ ТекущиеДанныеНаименованиеОтчета = "Постановка на учет иностранного лица в ФНС"
				И НЕ ОнлайнСервисыРегламентированнойОтчетностиВызовСервера.СобытиеНаступило("Постановка на учет иностр")
			ИЛИ ТекущиеДанныеНаименованиеОтчета = "Изменение сведений об иностранном лице в ФНС"
				И НЕ ОнлайнСервисыРегламентированнойОтчетностиВызовСервера.СобытиеНаступило("Изменение сведений об ино")
			ИЛИ ТекущиеДанныеНаименованиеОтчета = "Снятие с учета иностранного лица в ФНС"
				И НЕ ОнлайнСервисыРегламентированнойОтчетностиВызовСервера.СобытиеНаступило("Снятие с учета иностранно")
			ИЛИ ТекущиеДанныеНаименованиеОтчета = "Уведомление об уменьшении суммы налога на расходы по приобретению ККТ"
				И НЕ ОнлайнСервисыРегламентированнойОтчетностиВызовСервера.СобытиеНаступило("Отпр.увед.ум.нал.ККТ 24к1")
				И ТипЗнч(Ссылка) = Тип("ДокументСсылка.УведомлениеОСпецрежимахНалогообложения")
				И ЭлектронныйДокументооборотСКонтролирующимиОрганамиВызовСервера.ЗначениеРеквизитаОбъекта(Ссылка, "ИмяФормы") =
					"Форма2024_1"
			ИЛИ ТекущиеДанныеНаименованиеОтчета =
					"Уведомление о порядке представления деклараций по налогу на имущество"
				И НЕ ОнлайнСервисыРегламентированнойОтчетностиВызовСервера.СобытиеНаступило("налогу на имущество орган")
			ИЛИ ТекущиеДанныеНаименованиеОтчета =
					"Уведомление об освобождении от НДС для участников ВИТ Эра МО РФ (КНД 1150153)"
				И НЕ ОнлайнСервисыРегламентированнойОтчетностиВызовСервера.СобытиеНаступило("освобождении от НДС для у")
			ИЛИ ТекущиеДанныеНаименованиеОтчета = "Аудиторское заключение о консолидированной финансовой отчетности"
				И НЕ ОнлайнСервисыРегламентированнойОтчетностиВызовСервера.СобытиеНаступило("Аудиторское заключение о")
			ИЛИ ТекущиеДанныеНаименованиеОтчета = "Запрос выписки из Единого государственного реестра налогоплательщиков"
				И НЕ ОнлайнСервисыРегламентированнойОтчетностиВызовСервера.СобытиеНаступило("Запрос выписки из Единого") Тогда
				
			ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru = 'Отправка уведомления в электронном виде не предусмотрена законодательством.
				|Уведомление сдается в бумажном виде'"), Ссылка);
			Возврат;
			
		ИначеЕсли ТекущиеДанные.ВидКонтролирующегоОргана = ПредопределенноеЗначение("Перечисление.ТипыКонтролирующихОрганов.РегистрацияЮЛФНС") Тогда
			ТекстСообщения = НСтр("ru = 'Отправка заявления в электронном виде не предусмотрена'");
			ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстСообщения, Ссылка);
			Возврат;
			
		ИначеЕсли (ТипЗнч(Ссылка) = Тип("ДокументСсылка.УведомлениеОПредоставленииПолномочийПредставителю")
			ИЛИ ТипЗнч(Ссылка) = Тип("ДокументСсылка.УведомлениеОПрекращенииПолномочийПредставителя"))
			И НЕ ПровереноЗаполнение(Ссылка) Тогда
			ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru = 'Зайдите в уведомление и исправьте найденные ошибки'"), Ссылка);
			Возврат;
			
		ИначеЕсли ЗначениеЗаполнено(ИмяТипаСправочникаМашиночитаемыеДоверенности)
			И ТипЗнч(Ссылка) = Тип("СправочникСсылка." + ИмяТипаСправочникаМашиночитаемыеДоверенности) Тогда
			
			ПоказатьПредупреждение(,
				НСтр("ru = 'Машиночитаемая доверенность (единый формат) отправляется из формы справочника'"));
			Возврат;
			
		Иначе
			
			ДополнительныеПараметры = Новый Структура();
			ДополнительныеПараметры.Вставить("ТипыСсылки", ТипыСсылки);
			ДополнительныеПараметры.Вставить("ВидКонтролирующегоОргана", ТекущиеДанные.ВидКонтролирующегоОргана);
			ДополнительныеПараметры.Вставить("Ссылка", Ссылка);
			ДополнительныеПараметры.Вставить("Организация", ТекущиеДанные.Организация);
			
			ОписаниеОповещения = Новый ОписаниеОповещения(
				"ОтправитьУведомленияПодтверждениеОтправкиОтчетаЗавершение", 
				ЭтотОбъект, 
				ДополнительныеПараметры);
				
			КонтекстЭДОКлиент.ПодтверждениеОтправкиОтчета(
				ЭтотОбъект, 
				ОписаниеОповещения, 
				Ссылка,
				Истина);
			
		КонецЕсли;
		
	КонецЕсли;
	
	Элементы.Уведомления.Обновить();
	
КонецПроцедуры

&НаКлиенте
Процедура ОтправитьУведомленияПодтверждениеОтправкиОтчетаЗавершение(Отказ, ДополнительныеПараметры) Экспорт
	
	Если Отказ <> КодВозвратаДиалога.ОК Тогда
		Возврат;
	КонецЕсли;
	
	ВидКонтролирующегоОргана 	= ДополнительныеПараметры.ВидКонтролирующегоОргана;
	Ссылка 						= ДополнительныеПараметры.Ссылка;
	ОрганизацияВДокументе 		= ДополнительныеПараметры.Организация;
	
	КонтролирующийОрган = ЭлектронныйДокументооборотСКонтролирующимиОрганамиВызовСервера.ИмяПеречисления(ВидКонтролирующегоОргана);
	
	РегламентированнаяОтчетностьКлиент.ПриНажатииНаКнопкуОтправкиВКонтролирующийОрган(
		ЭтотОбъект, 
		КонтролирующийОрган, 
		, 
		Истина, 
		Ссылка, 
		ОрганизацияВДокументе);
		
КонецПроцедуры

&НаКлиенте
Процедура ПроверитьВИнтернетеУведомления(Команда)
	
	ОнлайнПроверка(Элементы.Уведомления);
	
КонецПроцедуры

&НаКлиенте
Процедура ПечатьЕГРЮЛ(Команда)
	ТекущиеДанные = Элементы.ЕГРЮЛ.ТекущиеДанные;
	Если ТекущиеДанные <> Неопределено Тогда
		УведомлениеДляПечати = ТекущиеДанные.Ссылка;
		Если ТипЗнч(УведомлениеДляПечати) = Тип("ДокументСсылка.УведомлениеОСпецрежимахНалогообложения") Тогда
			ПечатьУведомленияИзСписка(УведомлениеДляПечати);
		ИначеЕсли ТипЗнч(УведомлениеДляПечати) = Тип("ДокументСсылка.ЗапросНаВыпискуИзЕГРЮЛ_ЕГРИП") Тогда
			ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru='Печать не предусмотрена'"));
		КонецЕсли;
	КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура ПечатьЕГРЮЛPDF417(Команда)
	ТекущиеДанные = Элементы.ЕГРЮЛ.ТекущиеДанные;
	Если ТекущиеДанные <> Неопределено Тогда
		УведомлениеДляПечати = ТекущиеДанные.Ссылка;
		Если ТипЗнч(УведомлениеДляПечати) = Тип("ДокументСсылка.УведомлениеОСпецрежимахНалогообложения") Тогда
			РегламентированнаяОтчетностьКлиент.ВывестиМашиночитаемуюФормуУведомленияОСпецрежимахПоСсылке(ЭтотОбъект, УведомлениеДляПечати);
		ИначеЕсли ТипЗнч(УведомлениеДляПечати) = Тип("ДокументСсылка.ЗапросНаВыпискуИзЕГРЮЛ_ЕГРИП") Тогда
			ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru='Печать PDF-417 не предусмотрена'"));
		КонецЕсли;
	КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура ПечатьУведомленийPDF417(Команда)
	ТекущиеДанные = Элементы.Уведомления.ТекущиеДанные;
	Если ТекущиеДанные <> Неопределено Тогда
		Если ТипЗнч(ТекущиеДанные.Ссылка) = Тип("ДокументСсылка.УведомлениеОСпецрежимахНалогообложения") Тогда
			РегламентированнаяОтчетностьКлиент.ПечатьPDF417ИзФормыОтчетности(ЭтотОбъект, ТекущиеДанные.Ссылка);
		Иначе
			ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru='Печать PDF-417 не предусмотрена'"));
		КонецЕсли;
	КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура ПечатьУведомлений(Команда)
	
	ТекущиеДанные = Элементы.Уведомления.ТекущиеДанные;
	Если ТекущиеДанные <> Неопределено Тогда
		
		УведомлениеДляПечати = ТекущиеДанные.Ссылка;
		Если Не ЗначениеЗаполнено(УведомлениеДляПечати) Тогда 
			Возврат;
		КонецЕсли;
		
		Если ТипЗнч(УведомлениеДляПечати) = Тип("ДокументСсылка.УведомлениеОСпецрежимахНалогообложения") Тогда
			ПечатьУведомленияИзСписка(УведомлениеДляПечати);
		ИначеЕсли ТипЗнч(УведомлениеДляПечати) = Тип("ДокументСсылка.УведомлениеОПолучателеДокументов") Тогда
			
			ТекстПредупреждения = НСтр("ru = 'Печать уведомления о получателе документов не предусмотрена.'");
			ПоказатьПредупреждение(,ТекстПредупреждения);
			
		ИначеЕсли ТипЗнч(УведомлениеДляПечати) = Тип("СправочникСсылка.МашиночитаемыеДоверенностиРаспределенныйРеестр") Тогда
			
			Если ТекущиеДанные.Наименование = НСтр("ru = 'Машиночитаемая доверенность (ФТС)'") Тогда
				ТекстПредупреждения = НСтр("ru = 'Печать машиночитаемой доверенности (ФТС) не предусмотрена.'");
			Иначе
				ТекстПредупреждения = НСтр("ru = 'Печать машиночитаемой доверенности (ФНС, распределенный реестр) не предусмотрена.'");
			КонецЕсли;
			ПоказатьПредупреждение(, ТекстПредупреждения);
			
		ИначеЕсли ТипЗнч(УведомлениеДляПечати) = Тип("СправочникСсылка.МашиночитаемыеДоверенностиФНС") Тогда
			
			ТекстПредупреждения = НСтр("ru = 'Печать машиночитаемой доверенности (ФНС) не предусмотрена.'");
			ПоказатьПредупреждение(, ТекстПредупреждения); 
			
		ИначеЕсли ТипЗнч(УведомлениеДляПечати) = Тип("СправочникСсылка.ЗаявленияОбОтзывеМЧДФНС") Тогда
			
			ТекстПредупреждения = НСтр("ru = 'Печать заявления на отзыв доверенности не предусмотрена.'");
			ПоказатьПредупреждение(, ТекстПредупреждения);
			
		ИначеЕсли ТипЗнч(УведомлениеДляПечати) = Тип("СправочникСсылка.МашиночитаемыеДоверенностиФСС") Тогда
			
			ТекстПредупреждения = НСтр("ru = 'Печать машиночитаемой доверенности (СФР, бывш. ФСС) не предусмотрена.'");
			ПоказатьПредупреждение(, ТекстПредупреждения); 
			
		ИначеЕсли ЗначениеЗаполнено(ИмяТипаСправочникаМашиночитаемыеДоверенности)
			И ТипЗнч(УведомлениеДляПечати) = Тип("СправочникСсылка." + ИмяТипаСправочникаМашиночитаемыеДоверенности) Тогда
			
			ПоказатьПредупреждение(,
				НСтр("ru = 'Печать машиночитаемой доверенности (единый формат) выполняется из формы справочника.'"));
			
		ИначеЕсли ТипЗнч(УведомлениеДляПечати) = Тип("СправочникСсылка.ЭлектронныеПредставленияРегламентированныхОтчетов") Тогда
			
			// Печать электронного представления
			Ссылка 			= ТекущиеДанные.Ссылка;
			Наименование 	= ТекущиеДанные.Наименование;
			
			ПечатьЭлектронногоПредставления(Ссылка, Наименование);
			
		ИначеЕсли ТипЗнч(УведомлениеДляПечати) = Тип("ДокументСсылка.ЗаявленияПоЭлДокументооборотуСПФР") Тогда
			
			Ссылка 			= ТекущиеДанные.Ссылка;
			Наименование 	= ТекущиеДанные.Наименование;
			
			ПечатьЗаявленияПоЭлДокументооборотуСПФР(Ссылка);
			
		ИначеЕсли ТипЗнч(УведомлениеДляПечати) = Тип("ДокументСсылка.УведомлениеОПредоставленииПолномочийПредставителю") Тогда
			
			Ссылка 			= ТекущиеДанные.Ссылка;
			Наименование 	= ТекущиеДанные.Наименование;
			
			ПечатьУведомленияОПредоставленииПолномочийПредставителю(Ссылка);
			
		ИначеЕсли ТипЗнч(УведомлениеДляПечати) = Тип("ДокументСсылка.УведомлениеОПрекращенииПолномочийПредставителя") Тогда
			
			Ссылка 			= ТекущиеДанные.Ссылка;
			Наименование 	= ТекущиеДанные.Наименование;
			
			ПечатьУведомленияОПрекращенииПолномочийПредставителя(Ссылка);
			
		Иначе
			
			СведенияПоОбъекту = РегламентированнаяОтчетностьВызовСервера.СведенияПоОбъектуНеВходящемуВБРО(УведомлениеДляПечати);
			Если СведенияПоОбъекту <> Неопределено Тогда // это объект, не входящий в БРО
				НапечататьОбъектНеВходящийВБРО(УведомлениеДляПечати, СведенияПоОбъекту);
			КонецЕсли;
				
		КонецЕсли;
		
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ВыгрузитьУведомленияПредварительное(Результат, ПараметрыОповещения) Экспорт
	
	ВыгрузитьУведомления(
		ПараметрыОповещения.Команда
	);
	
КонецПроцедуры

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

&НаКлиенте
Процедура ПечатьПротоколовУведомлений(Команда)
	
	ТекущаяТаблица = ТекущаяТаблица(ЭтотОбъект);
	ТекущиеДанные  = ТекущаяТаблица.ТекущиеДанные;
	
	Если ТекущиеДанные <> Неопределено Тогда
		
		Если ТипЗнч(ТекущиеДанные.Ссылка) = Тип("ДокументСсылка.ОтветСтрахователяНаТребованиеПроверкиФСС")
			ИЛИ ТипЗнч(ТекущиеДанные.Ссылка) = Тип("ДокументСсылка.ОтветСтрахователяНаОбращениеСФР") Тогда
			ПоказатьПредупреждение(, НСтр("ru = 'Печать квитанции ответа страхователя не предусмотрена'"));
			Возврат;
		ИначеЕсли ТипЗнч(ТекущиеДанные.Ссылка) = Тип("ДокументСсылка.ВходящийДокументСЭДОФСС")
			ИЛИ ТипЗнч(ТекущиеДанные.Ссылка) = Тип("ДокументСсылка.ОбращениеСФРКСтрахователю") Тогда
			ПоказатьПредупреждение(, НСтр("ru = 'Печать квитанции не предусмотрена'"));
			Возврат;
		ИначеЕсли ТипЗнч(ТекущиеДанные.Ссылка) = Тип("ДокументСсылка.ЗаявлениеНаФормированиеСправкиОРасчетах") Тогда
			ПоказатьПредупреждение(, НСтр("ru = 'Печать квитанции справки о расчетах не предусмотрена'"));
			Возврат;
		КонецЕсли;
		
		Ссылка 								= ТекущиеДанные.Ссылка;
		ВидКонтролирующегоОргана 			= ТекущиеДанные.ВидКонтролирующегоОргана;
		СостояниеСдачиОтчетности			= ТекущиеДанные.СостояниеСдачиОтчетности;
		НеОтправляетсяВКонтролирующийОрган	= ТекущиеДанные.НеОтправляетсяВКонтролирующийОрган;
		
		ПечатьПротоколовПоСсылке(
			ТекущаяТаблица, 
			Ссылка, 
			ВидКонтролирующегоОргана, 
			НеОтправляетсяВКонтролирующийОрган, 
			СостояниеСдачиОтчетности);
		
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура УведомленияПриАктивизацииСтроки(Элемент)
	ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
КонецПроцедуры

&НаКлиенте
Процедура ОткрытьПрисоединенныеФайлыУведомления(Команда)
	
	ОткрытьПрисоединенныеФайлы();
	
КонецПроцедуры

#КонецОбласти

#Область КомандыЗакладкиВходящие

&НаКлиенте
Функция ТекущиеДанныеВходящих()
	
	Возврат ТекущаяТаблица(ЭтотОбъект).ТекущиеДанные;

КонецФункции

&НаКлиенте
Процедура СоздатьОтветПредварительное(Результат, ПараметрыОповещения) Экспорт
	
	СоздатьОтвет(
		ПараметрыОповещения.Команда
	);
	
КонецПроцедуры

&НаКлиенте
Процедура СоздатьОтвет(Команда)
	
	Если КонтекстЭДОКлиент = Неопределено И КонтекстУжеПодключался <> Истина Тогда
		ПараметрыОповещения = Новый Структура;
		ПараметрыОповещения.Вставить("Команда", Команда);
		Оповещение = Новый ОписаниеОповещения("СоздатьОтветПредварительное", ЭтотОбъект, ПараметрыОповещения);
		ИнициализироватьКонтекстЭДО(Оповещение);
		Возврат;
	КонецЕсли;
	
	Если КонтекстЭДОКлиент = Неопределено Тогда
		ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстОшибкиИнициализацииКонтекстаЭДО);
		Возврат;
	КонецЕсли;
	
	ТекущиеДанные = ТекущиеДанныеВходящих();
	
	Если ТекущиеДанные <> Неопределено Тогда
		
		Ссылка = ТекущиеДанные.Ссылка;
		Если ТипЗнч(Ссылка) = Тип("СправочникСсылка.ПерепискаСКонтролирующимиОрганами") Тогда
			
			Если КонтекстЭДОКлиент.ТребуетсяОтправкаПакетаСДопДокументами(Ссылка) Тогда 
				КонтекстЭДОКлиент.СоздатьПисьмоОтветСВыборомВидаОтвета(Ссылка);
			Иначе
				КонтекстЭДОКлиент.СоздатьПисьмоОтвет(Ссылка);
			КонецЕсли;
			
		ИначеЕсли ТипЗнч(Ссылка) = Тип("СправочникСсылка.ДокументыРеализацииПолномочийНалоговыхОрганов") Тогда
			
			ДополнительныеПараметры = Новый Структура();
			ДополнительныеПараметры.Вставить("ЗапретитьСозданиеПисьмаВОтветНаТребованиеПоДекларации", Истина);
			
			КонтекстЭДОКлиент.СоздатьОтветНаДокументРеализацииПолномочий(Ссылка, ДополнительныеПараметры);
			
		ИначеЕсли ТипЗнч(Ссылка) = Тип("ДокументСсылка.ТранспортноеСообщение") Тогда
			
			ТекстПредупреждения = НСтр("ru = 'Создание ответа на это письмо не предусмотрено'");
			ПоказатьПредупреждение(,ТекстПредупреждения);
			
		ИначеЕсли ТипЗнч(Ссылка) = Тип("ДокументСсылка.ВходящийДокументСЭДОФСС")
			И (НЕ ТипСообщенияВходящего(Ссылка) = "303" И НЕ ТипСообщенияВходящего(Ссылка) = "308") Тогда
			
			Если ТипСообщенияВходящего(Ссылка) = "300" ИЛИ ТипСообщенияВходящего(Ссылка) = "305" Тогда
				ПредставлениеТипСообщения = "этот акт";
			ИначеЕсли ТипСообщенияВходящего(Ссылка) = "310" ИЛИ ТипСообщенияВходящего(Ссылка) = "312" Тогда
				ПредставлениеТипСообщения = "это требование";
			Иначе
				ПредставлениеТипСообщения = "это решение";
			КонецЕсли;
			
			ТекстПредупреждения = НСтр("ru = 'Создание ответа на %1 не предусмотрено'");
			ТекстПредупреждения = СтрШаблон(ТекстПредупреждения, ПредставлениеТипСообщения);
			ПоказатьПредупреждение(,ТекстПредупреждения);
			
		ИначеЕсли ТипЗнч(Ссылка) = Тип("ДокументСсылка.ВходящийДокументСЭДОФСС")
			И (ТипСообщенияВходящего(Ссылка) = "303" ИЛИ ТипСообщенияВходящего(Ссылка) = "308") Тогда
			
			СформированныйОтвет = СфомироватьОтветНаСервере(Ссылка);
			
			Если СформированныйОтвет =
				ПредопределенноеЗначение("Документ.ОтветСтрахователяНаТребованиеПроверкиФСС.ПустаяСсылка")
				ИЛИ СформированныйОтвет = Неопределено Тогда
				
				Возврат;
			КонецЕсли;
			
			ПараметрыФормы = Новый Структура("Ключ", СформированныйОтвет);
			ОткрытьФорму(
				"Документ.ОтветСтрахователяНаТребованиеПроверкиФСС.Форма.ФормаДокумента",
				ПараметрыФормы);
				
		ИначеЕсли ТипЗнч(Ссылка) = Тип("ДокументСсылка.ОбращениеСФРКСтрахователю") Тогда
			
			КонтекстЭДОКлиент.СфомироватьОтветНаОбращениеСФРКСтрахователю(Ссылка);
			
		КонецЕсли;
		
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ПометитьПрочитаннымПредварительное(Результат, ПараметрыОповещения) Экспорт
	
	ПометитьПрочитанным(
		ПараметрыОповещения.Команда
	);
	
КонецПроцедуры

&НаКлиенте
Процедура ПометитьПрочитанным(Команда)
	
	Если КонтекстЭДОКлиент = Неопределено И КонтекстУжеПодключался <> Истина Тогда
		ПараметрыОповещения = Новый Структура;
		ПараметрыОповещения.Вставить("Команда", Команда);
		Оповещение = Новый ОписаниеОповещения("ПометитьПрочитаннымПредварительное", ЭтотОбъект, ПараметрыОповещения);
		ИнициализироватьКонтекстЭДО(Оповещение);
		Возврат;
	КонецЕсли;
	
	Если КонтекстЭДОКлиент = Неопределено Тогда
		ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстОшибкиИнициализацииКонтекстаЭДО);
		Возврат;
	КонецЕсли;
	
	Если ТекущаяСтраница(ЭтотОбъект) = ПредопределенноеЗначение("Перечисление.СтраницыЖурналаОтчетность.Входящие")
		ИЛИ ТекущаяСтраница(ЭтотОбъект) = ПредопределенноеЗначение("Перечисление.СтраницыЖурналаОтчетность.Сверки")
		ИЛИ ТекущаяСтраница(ЭтотОбъект) = ПредопределенноеЗначение("Перечисление.СтраницыЖурналаОтчетность.Письма") Тогда
		
		ТекущаяТаблица = ТекущаяТаблица(ЭтотОбъект);
		ВыделенныеСтроки = Новый Массив;
		Для каждого Строка Из ТекущаяТаблица.ВыделенныеСтроки Цикл
			Если ТекущаяСтраница(ЭтотОбъект) = ПредопределенноеЗначение("Перечисление.СтраницыЖурналаОтчетность.Входящие") Тогда
				ВыделенныеСтроки.Добавить(Элементы.Требования.ДанныеСтроки(Строка).Ссылка);
			ИначеЕсли ТекущаяСтраница(ЭтотОбъект) = ПредопределенноеЗначение("Перечисление.СтраницыЖурналаОтчетность.Сверки") Тогда
				ВыделенныеСтроки.Добавить(Элементы.Сверки.ДанныеСтроки(Строка).Ссылка);
			ИначеЕсли ТекущаяСтраница(ЭтотОбъект) = ПредопределенноеЗначение("Перечисление.СтраницыЖурналаОтчетность.Письма") Тогда
				ВыделенныеСтроки.Добавить(Элементы.Письма.ДанныеСтроки(Строка).Ссылка);
			КонецЕсли;
		КонецЦикла;
		
		Результат = ПометитьПрочтенными(ВыделенныеСтроки);
	Иначе
		Результат = ПометитьПрочтенными();
	КонецЕсли;
	
	Если ТекущаяСтраница(ЭтотОбъект) <> ПредопределенноеЗначение("Перечисление.СтраницыЖурналаОтчетность.Входящие")
		И Результат.ВсеВыделенныеОбъекты.Количество() > 0
		И Результат.СтавшиеПрочтенными.Количество() = 0
		И Результат.СтавшиеНепрочтенными.Количество() = 0 Тогда
		СообщитьОНевозможностиИзменитьПрочтенность();
		Возврат;
	КонецЕсли;

	Для каждого ИзменившийсяОбъект Из Результат.СтавшиеПрочтенными Цикл
		Оповестить("Пометка прочтенным", , ИзменившийсяОбъект);
	КонецЦикла;
	
	Для каждого ИзменившийсяОбъект Из Результат.СтавшиеНепрочтенными Цикл
		Оповестить("Пометка непрочтенным", , ИзменившийсяОбъект);
	КонецЦикла;
	
	// Обновление динамического списка.
	ТекущаяТаблица = ТекущаяТаблица(ЭтотОбъект);
	ТекущаяТаблица.Обновить();
	
КонецПроцедуры

&НаСервере
Функция ТипСообщенияВходящего(Ссылка)
	
	Возврат ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Ссылка, "ТипСообщения");
	
КонецФункции

#КонецОбласти

#Область КомандыЗакладкиНастройки

&НаКлиенте
Процедура ПроиндексироватьОбъекты(Команда)
	
	ДописатьОбъектыОтсутствующиеВРегистре(Истина);
	УправлениеЭУ(ЭтотОбъект);
	
КонецПроцедуры

&НаКлиенте
Процедура НадписьНастройкиМеханизмаОнлайнСервисовРОНажатие(Элемент)
	
	ОткрытьФорму("Обработка.ОнлайнСервисыРегламентированнойОтчетности.Форма.НастройкиМеханизмаОнлайнСервисов");
	
КонецПроцедуры

&НаКлиенте
Процедура НадписьИнформацияОбОбновленияхНажатие(Элемент)
	
	ОнлайнСервисыРегламентированнойОтчетностиКлиент.ОткрытьФормуДоступныхОбновленийРО();
	
КонецПроцедуры

&НаКлиенте
Процедура ЖурналОбменаСКонтролирующимиОрганамиПредварительное(Результат, ПараметрыОповещения) Экспорт
	
	ЖурналОбменаСКонтролирующимиОрганами(
		ПараметрыОповещения.Команда
	);
	
КонецПроцедуры

&НаКлиенте
Процедура ЖурналОбменаСКонтролирующимиОрганами(Команда)
	
	Если КонтекстЭДОКлиент = Неопределено И КонтекстУжеПодключался <> Истина Тогда
		ПараметрыОповещения = Новый Структура;
		ПараметрыОповещения.Вставить("Команда", Команда);
		Оповещение = Новый ОписаниеОповещения("ЖурналОбменаСКонтролирующимиОрганамиПредварительное", ЭтотОбъект, ПараметрыОповещения);
		ИнициализироватьКонтекстЭДО(Оповещение);
		Возврат;
	КонецЕсли;
	
	Если КонтекстЭДОКлиент = Неопределено Тогда
		ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстОшибкиИнициализацииКонтекстаЭДО);
		Возврат;
	КонецЕсли;
	
	ОткрытьФорму(КонтекстЭДОКлиент.ПутьКОбъекту + ".Форма.УправлениеОбменом");
КонецПроцедуры

&НаКлиенте
Процедура СкрытыеОтчетыИДокументыПредварительное(Результат, ПараметрыОповещения) Экспорт
	
	СкрытыеОтчетыИДокументы();
	
КонецПроцедуры

&НаКлиенте
Процедура СкрытыеОтчетыИДокументы()
	
	Если КонтекстЭДОКлиент = Неопределено И КонтекстУжеПодключался <> Истина Тогда
		Оповещение = Новый ОписаниеОповещения("СкрытыеОтчетыИДокументыПредварительное", ЭтотОбъект);
		ИнициализироватьКонтекстЭДО(Оповещение);
		Возврат;
	КонецЕсли;
	
	СтандартнаяОбработка = Ложь;
	
	Если КонтекстЭДОКлиент = Неопределено Тогда
		ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстОшибкиИнициализацииКонтекстаЭДО);
		Возврат;
	КонецЕсли;
			
	ОткрытьФорму(КонтекстЭДОКлиент.ПутьКОбъекту + ".Форма.СкрытыеОбъекты");
	
КонецПроцедуры

&НаКлиенте
Процедура ПолучитьКонтекстЭДОДляЗапускаДиагностики(Результат, ДополнительныеПараметры) Экспорт
	
	Если Результат.Свойство("КонтекстЭДО") Тогда 
		КонтекстЭДОКлиент = Результат.КонтекстЭДО;
		КонтекстЭДОКлиент.ОткрытьФормуДиагностикиОтчетности(Неопределено);
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура Диагностика1СОтчетностьНажатие(Элемент)
			
	ОписаниеОповещения = Новый ОписаниеОповещения("ПолучитьКонтекстЭДОДляЗапускаДиагностики", ЭтотОбъект, Неопределено);
	ДокументооборотСКОКлиент.ПолучитьКонтекстЭДО(ОписаниеОповещения);
	
КонецПроцедуры

#КонецОбласти

#Область КомандыРаботыСВыплатамиИПособиямиСЭДО

&НаКлиенте
Процедура ВыплатыИПособияТекущиеДела(Команда)
	
	КалендарьОтчетностиБРОКлиентПереопределяемый.ОбработкаКоманды(ЭтотОбъект, Команда);
	
КонецПроцедуры

&НаКлиенте
Процедура ВыплатыИПособияРегистрСведенийСведенияОбЭЛНОткрытьСписок(Команда)
	
	КалендарьОтчетностиБРОКлиентПереопределяемый.ОбработкаКоманды(ЭтотОбъект, Команда);
	
КонецПроцедуры

#КонецОбласти

#Область КомандыЗакладкиСправочники

&НаКлиенте
Процедура Организации(Команда)
	
	КалендарьОтчетностиБРОКлиентПереопределяемый.ОбработкаКоманды(ЭтотОбъект, Команда);
	
КонецПроцедуры

&НаКлиенте
Процедура Подразделения(Команда)
	
	КалендарьОтчетностиБРОКлиентПереопределяемый.ОбработкаКоманды(ЭтотОбъект, Команда);
	
КонецПроцедуры

&НаКлиенте
Процедура Сотрудники(Команда)
	
	КалендарьОтчетностиБРОКлиентПереопределяемый.ОбработкаКоманды(ЭтотОбъект, Команда);
	
КонецПроцедуры

&НаКлиенте
Процедура ФизическиеЛица(Команда)
	
	КалендарьОтчетностиБРОКлиентПереопределяемый.ОбработкаКоманды(ЭтотОбъект, Команда);
	
КонецПроцедуры

&НаКлиенте
Процедура Контрагенты(Команда)
	
	КалендарьОтчетностиБРОКлиентПереопределяемый.ОбработкаКоманды(ЭтотОбъект, Команда);
	
КонецПроцедуры

&НаКлиенте
Процедура РегистрацииВНалоговомОргане(Команда)
	
	КалендарьОтчетностиБРОКлиентПереопределяемый.ОбработкаКоманды(ЭтотОбъект, Команда);
	
КонецПроцедуры

#КонецОбласти

#Область КомандыЗакладкиАдминистрирование

&НаКлиенте
Процедура Обслуживание(Команда)
	
	КалендарьОтчетностиБРОКлиентПереопределяемый.ОбработкаКоманды(ЭтотОбъект, Команда);
	
КонецПроцедуры

&НаКлиенте
Процедура ОбщиеНастройки(Команда)
	
	КалендарьОтчетностиБРОКлиентПереопределяемый.ОбработкаКоманды(ЭтотОбъект, Команда);
	
КонецПроцедуры

&НаКлиенте
Процедура НастройкиПользователейИПрав(Команда)
	
	КалендарьОтчетностиБРОКлиентПереопределяемый.ОбработкаКоманды(ЭтотОбъект, Команда);
	
КонецПроцедуры

&НаКлиенте
Процедура ПечатныеФормыОтчетыИОбработки(Команда)
	
	КалендарьОтчетностиБРОКлиентПереопределяемый.ОбработкаКоманды(ЭтотОбъект, Команда);
	
КонецПроцедуры

&НаКлиенте
Процедура ИнтернетПоддержкаИСервисы(Команда)
	
	КалендарьОтчетностиБРОКлиентПереопределяемый.ОбработкаКоманды(ЭтотОбъект, Команда);
	
КонецПроцедуры

&НаКлиенте
Процедура НастройкиРаботыСФайлами(Команда)
	
	КалендарьОтчетностиБРОКлиентПереопределяемый.ОбработкаКоманды(ЭтотОбъект, Команда);
	
КонецПроцедуры

&НаКлиенте
Процедура НастройкиОбмена(Команда)
	
	ЭлектронныйДокументооборотСКонтролирующимиОрганамиКлиент.ОткрытьФормуНастроекОбмена();
	
КонецПроцедуры

&НаКлиенте
Процедура НастройкиДокументооборотаСГосОрганами(Команда)
	
	КалендарьОтчетностиБРОКлиентПереопределяемый.ОбработкаКоманды(ЭтотОбъект, Команда);
	
КонецПроцедуры

&НаКлиенте
Процедура СвязыванияБазДанныхСОблаком(Команда)
	
	КалендарьОтчетностиБРОКлиентПереопределяемый.ОбработкаКоманды(ЭтотОбъект, Команда);
	
КонецПроцедуры

&НаКлиенте
Процедура Диагностика1СОтчетность(Команда)
	
	КалендарьОтчетностиБРОКлиентПереопределяемый.ОбработкаКоманды(ЭтотОбъект, Команда);
	
КонецПроцедуры

&НаКлиенте
Процедура УчетныеЗаписиДокументооборота(Команда)
	
	КалендарьОтчетностиБРОКлиентПереопределяемый.ОбработкаКоманды(ЭтотОбъект, Команда);
	
КонецПроцедуры

&НаКлиенте
Процедура НастройкиМеханизмаОнлайнСервисовРО(Команда)
	
	КалендарьОтчетностиБРОКлиентПереопределяемый.ОбработкаКоманды(ЭтотОбъект, Команда);
	
КонецПроцедуры

&НаКлиенте
Процедура ШаблоныПечатиМашиночитаемыхФорм(Команда)
	
	КалендарьОтчетностиБРОКлиентПереопределяемый.ОбработкаКоманды(ЭтотОбъект, Команда);
	
КонецПроцедуры

&НаКлиенте
Процедура НастройкаXMLШаблонов(Команда)
	
	КалендарьОтчетностиБРОКлиентПереопределяемый.ОбработкаКоманды(ЭтотОбъект, Команда);
	
КонецПроцедуры

&НаКлиенте
Процедура НастройкаРабочегоМеста(Команда)
	
	КалендарьОтчетностиБРОКлиентПереопределяемый.ОбработкаКоманды(ЭтотОбъект, Команда);
	
КонецПроцедуры

#КонецОбласти

#Область КомандыЗакладкиСервисы

&НаКлиенте
Процедура СервисНажатие(Элемент)
	
	ПерейтиПоНавигационнойСсылке(Элемент.Подсказка);
	
КонецПроцедуры

&НаКлиенте
Процедура ФНССервисПредварительное(Результат, ПараметрыОповещения) Экспорт
	
	ФНССервис(
		ПараметрыОповещения.Элемент
	);
	
КонецПроцедуры

&НаКлиенте
Процедура ФНССервис(Элемент)
	
	ИспользоватьИнтернетЭксплорер = Ложь;
	
	Если НЕ ИспользоватьИнтернетЭксплорер Тогда
		ПерейтиПоНавигационнойСсылке(Элемент.Подсказка);
		Возврат;
	КонецЕсли;
	
	Если КонтекстЭДОКлиент = Неопределено И КонтекстУжеПодключался <> Истина Тогда
		ПараметрыОповещения = Новый Структура;
		ПараметрыОповещения.Вставить("Элемент", Элемент);
		Оповещение = Новый ОписаниеОповещения("ФНССервисПредварительное", ЭтотОбъект, ПараметрыОповещения);
		ИнициализироватьКонтекстЭДО(Оповещение);
		Возврат;
	КонецЕсли;
	
	Если КонтекстЭДОКлиент = Неопределено Тогда
		ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстОшибкиИнициализацииКонтекстаЭДО);
		Возврат;
	КонецЕсли;
	
	КонтекстЭДОКлиент.ПерейтиПоСсылкеВИнтернетЭксплорере(Элемент.Подсказка);
	
КонецПроцедуры

#КонецОбласти

#Область ПрочиеКоманды

&НаКлиенте
Процедура ОтправитьПакетСДопДокументамиДляФНС(Команда)
	
	Основание = ОснованиеДляСозданияПакетаСДопДокументамиДляФНС();
	
	Если Основание = Неопределено Тогда
		ПоказатьПредупреждение(, НСтр("ru = 'Сначала выберите документ, для которого создается пакет с доп. документами для ФНС'"));
		Возврат;
	КонецЕсли;
	
	СоздатьПакетСДопДокументамиВФНС(Основание);
	
КонецПроцедуры

&НаСервере
Функция ОснованиеДляСозданияПакетаСДопДокументамиДляФНС()

	Основание = Неопределено;
	ТекущаяТаблица = ТекущаяТаблица(ЭтотОбъект);
	Для каждого Строка Из ТекущаяТаблица.ВыделенныеСтроки Цикл
		Основание = Строка.Ссылка;
		Прервать;
	КонецЦикла;

	Возврат Основание;
	
КонецФункции

&НаКлиенте
Асинх Процедура Скрыть(Команда)
	ТекущаяСтраница = ТекущаяСтраница(ЭтотОбъект);
	ТекущаяТаблица 			= ТекущаяТаблица(ЭтотОбъект);
	ВыделеноНесколькоСтрок 	= ТекущаяТаблица.ВыделенныеСтроки.Количество() > 1;
	
	Если ТекущаяСтраница = ПредопределенноеЗначение("Перечисление.СтраницыЖурналаОтчетность.Отчеты") Тогда
		Если ВыделеноНесколькоСтрок Тогда 
			ВидОбъекта = НСтр("ru = 'отчеты'");
		Иначе
			ВидОбъекта = НСтр("ru = 'отчет'");
		КонецЕсли;
	ИначеЕсли ТекущаяСтраница = ПредопределенноеЗначение("Перечисление.СтраницыЖурналаОтчетность.Уведомления") Тогда
		Если ВыделеноНесколькоСтрок Тогда 
			ВидОбъекта = НСтр("ru = 'уведомления'");
		Иначе
			ВидОбъекта = НСтр("ru = 'уведомление'");
		КонецЕсли;
	ИначеЕсли ТекущаяСтраница = ПредопределенноеЗначение("Перечисление.СтраницыЖурналаОтчетность.Входящие")
		ИЛИ ТекущаяСтраница = ПредопределенноеЗначение("Перечисление.СтраницыЖурналаОтчетность.Письма")
		ИЛИ ТекущаяСтраница = ПредопределенноеЗначение("Перечисление.СтраницыЖурналаОтчетность.Сверки") Тогда
		
		Если ТекущаяСтраница = ПредопределенноеЗначение("Перечисление.СтраницыЖурналаОтчетность.Сверки") Тогда
			Если ВыделеноНесколькоСтрок Тогда 
				ВидОбъекта = НСтр("ru = 'запросы на сверку'");
			Иначе
				ВидОбъекта = НСтр("ru = 'запрос на сверку'");
			КонецЕсли;
		Иначе
			Если ВыделеноНесколькоСтрок Тогда 
				ВидОбъекта = НСтр("ru = 'письма'");
			Иначе
				ВидОбъекта = НСтр("ru = 'письмо'");
			КонецЕсли;
		КонецЕсли;
	ИначеЕсли ТекущаяСтраница = ПредопределенноеЗначение("Перечисление.СтраницыЖурналаОтчетность.ЕГРЮЛ") Тогда
		Если ВыделеноНесколькоСтрок Тогда 
			ВидОбъекта = НСтр("ru = 'выписки из ЕГРЮЛ'");
		Иначе
			ВидОбъекта = НСтр("ru = 'выписку из ЕГРЮЛ'");
		КонецЕсли;
	КонецЕсли;
	
	ТекстСообщения = НСтр("ru = 'Вы уверены, что хотите скрыть %1?
		|
		|Скрытые отчеты и документы можно восстановить в разделе
		|""Настройки"" - ""Скрытые отчеты и документы"" формы 1С-Отчетность'");
	ТекстСообщения = СтрШаблон(ТекстСообщения, ВидОбъекта);
	
	Если Ждать ВопросАсинх(ТекстСообщения, РежимДиалогаВопрос.ДаНет) = КодВозвратаДиалога.Да Тогда
		СкрытыеОбъекты = СкрытьОбъект1СОтчетности();
		Для Каждого СкрытыйОбъект Из СкрытыеОбъекты Цикл
			Оповестить("Скрытие/восстановление объекта", СкрытыйОбъект, СкрытыйОбъект.Ссылка);
		КонецЦикла;
	КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура ГруппаКатегориииВхПриСменеСтраницы(Элемент, ТекущаяСтраница)	
	
	УстановитьОтборыНаСтраницеВходящие(ЭтотОбъект);
	
КонецПроцедуры

#КонецОбласти

#КонецОбласти

#Область СлужебныеПроцедурыИФункции

&НаКлиенте
Процедура Подключаемый_РазделениеПисемОжидание() Экспорт
	
	ПисьмаВГосОрганыКлиент.Подключаемый_РазделениеПисемОжидание(ЭтотОбъект);
	
КонецПроцедуры
	
&НаКлиентеНаСервереБезКонтекста
Функция ПолучитьХеш(Стр)
	Хеш = СтрЗаменить(НРег(Стр), " ", "");
	Хеш = СтрЗаменить(Хеш, """", "");
	Хеш = СтрЗаменить(Хеш, ",", "");
	Хеш = СтрЗаменить(Хеш, "ё", "е");
	Возврат Хеш;
КонецФункции

&НаСервере
Процедура УпроститьФормуРегОтчетности() Экспорт
	
	ФлагиУчета = ЭлектронныйДокументооборотСКонтролирующимиОрганами.ПолучитьФлагиИнтеграцииПоУмолчанию();
	ЭлектронныйДокументооборотСКонтролирующимиОрганамиПереопределяемый.ПолучитьЗначенияКонстантИнтеграции(ФлагиУчета);
	
	Элементы.СсылкаЗаявленияНаПодключениеИзменение.Видимость = Ложь;
	
	Если ФлагиУчета.ИнтеграцияСБанком 
		И Не ФлагиУчета.Использовать1СОтчетностьПриИнтеграцииСБанком Тогда //Доступна и активна упрощенная отчетность
		
		Использовать1СОтчетность = ФлагиУчета.Использовать1СОтчетностьПриИнтеграцииСБанком;
		Элементы.ГиперссылкаОтчеты.Видимость = Использовать1СОтчетность;
		
		Если Использовать1СОтчетность Тогда
			Элементы.Разделы.ТекущаяСтраница = Элементы.СтраницаОтчеты;
			КалендарьОтчетностиБРОКлиентСерверПереопределяемый.ПриСменеСтраницыРазделаОтчетности(ЭтотОбъект);
		КонецЕсли;
		
		Элементы.ГиперссылкаУведомления.Видимость = Ложь;
		Элементы.ГиперссылкаСервисы.Видимость = Ложь;
		Элементы.ГиперссылкаНастройки.Видимость = Ложь;
		
		Элементы.СтраницаУведомления.Видимость = Ложь;
		Элементы.СтраницаСервисы.Видимость = Ложь;
		Элементы.СтраницаНастройки.Видимость = Ложь;
		
		Элементы.СтраницаНастройки.Видимость = Ложь;
		
		Элементы.ГруппаОтборовОтчетов.Видимость = Ложь;
		
		Элементы.ОтчетыЗагрузитьИзФайла.Видимость = Ложь;
		Элементы.ОтчетыГруппаЗагрузитьИзФайла.Видимость = Ложь;
		Элементы.ОтчетыВыгрузить.Видимость = Ложь;
		
		Элементы.ОтчетыГруппаПрисоединенныеФайлы.Видимость = Ложь;
		
		Элементы.КнопкаСоздатьСверкаФИОиСНИЛС.Видимость = Ложь;
		
		ЭлектронныйДокументооборотДоступен = Ложь;
		КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
		Если КонтекстЭДОСервер <> Неопределено Тогда
			ЭлектронныйДокументооборотДоступен = КонтекстЭДОСервер.ХотяБыОднаОрганизацияИспользуетДокументооборот();
		КонецЕсли;
		
		ЕстьОтправленныеЗаявления = ОбработкаЗаявленийАбонентаВызовСервера.ЕстьОтправленныеИлиОдобренныеЗаявления();
		УжеПодключен = ЭлектронныйДокументооборотДоступен Или ЕстьОтправленныеЗаявления;
		Если УжеПодключен Тогда 
			Элементы.СсылкаЗаявленияНаПодключениеИзменение.Заголовок = 
				НСтр("ru='Заявления на изменение и продление подключения к 1С-Отчетности'");
		Иначе
			Элементы.СсылкаЗаявленияНаПодключениеИзменение.Заголовок = 
				НСтр("ru='Заявления на подключение к 1С-Отчетности'");
		КонецЕсли;
		
	КонецЕсли;
	
	Если ФлагиУчета.СервисЭлектронныхТрудовыхКнижек Тогда
		
		// ЭДО
		Элементы.ГиперссылкаПисьма.Видимость = Ложь;
		Элементы.СтраницаПисьма.Видимость = Ложь;
		
		Элементы.ГиперссылкаСверки.Видимость = Ложь;
		Элементы.СтраницаСверки.Видимость = Ложь;
		
		Элементы.ГиперссылкаЕГРЮЛ.Видимость = Ложь;
		Элементы.СтраницаЕГРЮЛ.Видимость = Ложь;
		
		Элементы.ГиперссылкаСервисы.Видимость = Ложь;
		Элементы.СтраницаСервисы.Видимость = Ложь;
		
		Элементы.ЖурналОбменаСКонтролирующимиОрганами.Видимость = Ложь;
		Элементы.УведомленияЗагрузитьИзФайла.Видимость = Ложь;
		
		// Отчетность
		Элементы.НастройкиРегламентированнойОтчетности.Видимость = Ложь;
		Элементы.Декорация1.Видимость = Ложь;
		Элементы.ОтчетыГруппаЗагрузитьИзФайла.Видимость = Ложь;
		
		// Переключаем на раздел отчеты
		ПредыдущаяГиперссылка = ТекущийРазделФормы(ЭтотОбъект);
		ТекущаяГиперссылка    = Элементы.ГиперссылкаОтчеты;
		ПриПереключенииРазделаСервер(ПредыдущаяГиперссылка.Имя, ТекущаяГиперссылка.Имя);
		ВывестиТаблицуРаздела(ЭтотОбъект, ТекущаяГиперссылка.Имя);
		
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура СоздатьПакетСДопДокументамиВФНСПредварительное(Результат, ОснованиеПакета) Экспорт
	
	СоздатьПакетСДопДокументамиВФНС(ОснованиеПакета);
	
КонецПроцедуры

&НаКлиенте
Процедура СоздатьПакетСДопДокументамиВФНС(ОснованиеПакета = Неопределено)
	
	Если КонтекстЭДОКлиент = Неопределено И КонтекстУжеПодключался <> Истина Тогда
		Оповещение = Новый ОписаниеОповещения(
			"СоздатьПакетСДопДокументамиВФНСПредварительное", 
			ЭтотОбъект,
			ОснованиеПакета);
		ИнициализироватьКонтекстЭДО(Оповещение);
		Возврат;
	КонецЕсли;
	
	Если КонтекстЭДОКлиент = Неопределено Тогда
		ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстОшибкиИнициализацииКонтекстаЭДО);
		Возврат;
	КонецЕсли;
	
	КонтекстЭДОКлиент.СоздатьПакетСДопДокуменами(ОснованиеПакета);
	
КонецПроцедуры

&НаСервере
Процедура СкрытьЛишниеЭлементыВрежимеВыбора(Параметры)

	Если Параметры.Свойство("СкрытьЕГРЮЛ") Тогда
		СкрытьЕГРЮЛ = Параметры.СкрытьЕГРЮЛ;
	Иначе
		СкрытьЕГРЮЛ = Ложь;
	КонецЕсли;
			
	Элементы.ГруппаВыбора.Видимость = ЭтоРежимВыбора;
	
	Если ЭтоРежимВыбора Тогда
		
		Заголовок = НСтр("ru = 'Выберите документ'");
		
		Элементы.ВыбратьДокумент.КнопкаПоУмолчанию = Истина;
		
		Элементы.ГруппаПанельИнформацииСКнопкой.Видимость = Ложь;
		Элементы.ГиперссылкаСервисы.Видимость = Ложь;
		Элементы.ГиперссылкаНастройки.Видимость = Ложь;
		
		Таблицы = Новый Массив;
		Таблицы.Добавить("Отчеты");
		Таблицы.Добавить("Уведомления");
		Таблицы.Добавить("Письма");
		Таблицы.Добавить("Сверки");
		Таблицы.Добавить("ЕГРЮЛ");
		Таблицы.Добавить("ВходящиеПисьма");
		Таблицы.Добавить("Рассылки");
		
		Для каждого ИмяТаблицы Из Таблицы Цикл
			
			ОбрабатываемыйЭлемент = Элементы[ИмяТаблицы];
			
			ОбрабатываемыйЭлемент.КоманднаяПанель.Видимость = Ложь;
			ОбрабатываемыйЭлемент.КонтекстноеМеню.Видимость = Ложь;
			ОбрабатываемыйЭлемент.ИзменятьСоставСтрок = Ложь;
			ОбрабатываемыйЭлемент.ТолькоПросмотр = Истина;
			ОбрабатываемыйЭлемент.РежимВыделения = РежимВыделенияТаблицы.Одиночный;
			
			Для каждого Подменю Из ОбрабатываемыйЭлемент.КонтекстноеМеню.ПодчиненныеЭлементы Цикл
				Подменю.Видимость = Ложь;
			КонецЦикла;
			
		КонецЦикла;
		
		Элементы.ЕГРЮЛКоманднаяПанель1.Видимость = Ложь;
		
		Если СкрытьЕГРЮЛ Тогда
			Элементы.СтраницаЕГРЮЛ.Видимость = Ложь;
			Элементы.ГиперссылкаЕГРЮЛ.Видимость = Ложь;
		КонецЕсли;
		
		Если Параметры.Свойство("Ссылка") Тогда
			СсылкаВКлюче      = Параметры.Ссылка;
			ОрганизацияВКлюче = Параметры.Организация;
		КонецЕсли;
		
	КонецЕсли;

КонецПроцедуры

&НаКлиенте
Процедура СпозиционироватьсяНаСсылка(СсылкаВКлюче, ОрганизацияВКлюче, ИмяСобытия = Неопределено)

	// Обновляем текущую таблицу
	Если Элементы.Разделы.ТекущаяСтраница = Элементы.СтраницаОтчеты Тогда
		
		ДополнительноеУсловиеТолстыйКлиент = Истина;
#Если ТолстыйКлиентУправляемоеПриложение Тогда
		Если ОрганизацияВКлюче = Неопределено Тогда 
			Попытка
				ДополнительноеУсловиеТолстыйКлиент = (ОрганизацияВКлюче <> ПредопределенноеЗначение("Справочник.Организации.ПустаяСсылка"));
			Исключение
			КонецПопытки;
		КонецЕсли;
#КонецЕсли
		
		Если ОрганизацияВКлюче <> Неопределено И ДополнительноеУсловиеТолстыйКлиент Тогда
			
			Отборы = Новый Массив;
			Отборы.Добавить(Новый Структура("Организация, Ссылка", ОрганизацияВКлюче, СсылкаВКлюче));
			
			КлючЗаписи = Новый(Тип("РегистрСведенийКлючЗаписи.ЖурналОтчетовСтатусы"), Отборы);
			
			Если НЕ КлючЗаписи.Пустой() Тогда
				
				ОповеститьОбИзменении(КлючЗаписи);
				Если ИмяСобытия <> "Пометка прочтенным"
					И ИмяСобытия <> "Пометка непрочтенным"
					И ИмяСобытия <> "Скрытие/восстановление объекта" Тогда
					ДобавитьВидОтчетаВИзбранные(Отборы[0]);
					Элементы.Отчеты.ТекущаяСтрока = КлючЗаписи;
				КонецЕсли;
			КонецЕсли;
			
		КонецЕсли;
		
	Иначе
		
		// Определем текущую страницу
		ИмяРаздела 		= СтрЗаменить(Элементы.Разделы.ТекущаяСтраница.Имя, "Страница", "");
		СтраницаЖурнала = Неопределено;
		
		Если ИмяРаздела <> "Календарь" Тогда
			Если НЕ ИмяРаздела = "Справочники"
				И НЕ ИмяРаздела = "Администрирование"
				И НЕ ИмяРаздела = "ВыплатыИПособия" Тогда
				СтраницаЖурнала = ПредопределенноеЗначение("Перечисление.СтраницыЖурналаОтчетность." + ИмяРаздела);
			КонецЕсли;
		КонецЕсли;
		
		// Вызываем обновление только одной строки только данной страницы
		Если СтраницаЖурнала = Неопределено Тогда
			Возврат;
		КонецЕсли;
		
		Отборы = Новый Массив;
		Отборы.Добавить(Новый Структура("СтраницаЖурнала, Ссылка, Организация", СтраницаЖурнала, СсылкаВКлюче, ОрганизацияВКлюче));
		
		КлючЗаписи = Новый(Тип("РегистрСведенийКлючЗаписи.ЖурналОтправокВКонтролирующиеОрганы"), Отборы);
		
		Если КлючЗаписи.Пустой() Тогда
			Возврат;
		КонецЕсли;
		
		ОповеститьОбИзменении(КлючЗаписи);
		
		СтраницыБезСписков = СтрРазделить("Настройки,Сервисы,Новое", ",");
		// При записи объекта позиционируемся на нем в таблице
		Если (СтрНайти(ИмяСобытия, "Запись_") > 0 ИЛИ ИмяСобытия = "Позиционирование")
			И СтраницыБезСписков.Найти(ИмяРаздела) = Неопределено Тогда
			
			Если ИмяРаздела = "Входящие" Тогда //Есть вложенные таблицы/вкладки
				
				Если ТипЗнч(СсылкаВКлюче) = Тип("СправочникСсылка.ДокументыРеализацииПолномочийНалоговыхОрганов") Тогда 
					
					ИмяРаздела = "Требования";
					Элементы.ГруппаКатегориииВх.ТекущаяСтраница = Элементы.СтраницаТребования;
					Элементы[ИмяРаздела].ТекущаяСтрока = КлючЗаписи;
					
					ПрорисоватьПанельТребований(ЭтотОбъект);
					
				ИначеЕсли ТипЗнч(СсылкаВКлюче) = Тип("СправочникСсылка.ПерепискаСКонтролирующимиОрганами") Тогда 
					ИмяРаздела = "ВходящиеПисьма";
					Элементы.ГруппаКатегориииВх.ТекущаяСтраница = Элементы.СтраницаВходящиеПисьма;
					Элементы[ИмяРаздела].ТекущаяСтрока = КлючЗаписи;
				КонецЕсли;
				
			Иначе
				// При создании узла обмена по плану обмена генерируется 
				// Оповещение вида "Запись_ИмяУзла", после чего срабатывает данная процедура,
				// и выдается ошибка, поскольку Элементы[ИмяРаздела] не существует.
				// Добавлена проверка наличия ИмяРаздела. 
				Если Элементы.Найти(ИмяРаздела) <> Неопределено Тогда
					Элементы[ИмяРаздела].ТекущаяСтрока = КлючЗаписи;
					Если Элементы[ИмяРаздела].ТекущаяСтрока = Неопределено Тогда
						СообщитьПроНесоответствиеОтбору(СсылкаВКлюче, ИмяРаздела);
					КонецЕсли;
				КонецЕсли;
			КонецЕсли;
			
		КонецЕсли;
			
	КонецЕсли;

КонецПроцедуры

&НаСервере
Процедура СообщитьПроНесоответствиеОтбору(Ссылка, ИмяРаздела)
	
	Если НЕ ЗначениеЗаполнено(Ссылка)
		ИЛИ ТипЗнч(Ссылка) <> Тип("ДокументСсылка.УведомлениеОСпецрежимахНалогообложения") Тогда
		Возврат;
	КонецЕсли;
	
	ЗначенияРеквизитов = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Ссылка, "Организация, ВидУведомления");
	УжеСообщали = УведомленияОКоторыхСообщали.НайтиПоЗначению(Ссылка) <> Неопределено;
	
	Если НЕ ДокументооборотСКО.ЭтоЗаявлениеНаГосРегистрацию(ЗначенияРеквизитов.ВидУведомления)
		ИЛИ УжеСообщали Тогда
		Возврат;
	КонецЕсли;
	
	КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
	СведенияПоОбъекту = КонтекстЭДОСервер.СведенияПоОтправляемымОбъектам(Ссылка, Истина);
	
	ЭтоДругойРаздел = ИмяРаздела = НСтр("ru = 'Уведомления'");
	Наименование = Строка(ЗначенияРеквизитов.ВидУведомления);
	
	НачалоТекст = НСтр("ru = 'Уведомление ""%1"" не отображается в списке раздела ""%2"" формы 1С-Отчетность, поскольку '");
	Если ЭтоДругойРаздел Тогда
		Текст = НачалоТекст + НСтр("ru = 'переехало в раздел ""ЕГРЮЛ""'");
	ИначеЕсли Организация <> ЗначенияРеквизитов.Организация
			И НЕ ЗначениеЗаполнено(ЗначенияРеквизитов.Организация)
			И ИмяРаздела = НСтр("ru = 'ЕГРЮЛ'") Тогда
		Текст = НачалоТекст + НСтр("ru = 'не соответствует отбору по организации'");
	Иначе
		Возврат;
	КонецЕсли;

	Текст = СтрШаблон(Текст, Наименование, ИмяРаздела);
	ОбщегоНазначения.СообщитьПользователю(Текст);
	
	УведомленияОКоторыхСообщали.Добавить(Ссылка);
	
КонецПроцедуры

&НаСервере
Процедура ОтметитьДеревоПросмотренным(ПроверитьСобытие = Ложь)
	
	Если НЕ ПроверитьСобытие
		ИЛИ ОнлайнСервисыРегламентированнойОтчетностиВызовСервера.СобытиеНаступило("Отмечать новое просмотр.") Тогда
		
		ЭлектронныйДокументооборотСКонтролирующимиОрганами.ОтметитьДеревоПросмотренным(Новое);
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура СообщитьОНевозможностиИзменитьПрочтенность()
	
	ТекущаяСтраница = ТекущаяСтраница(ЭтотОбъект);
	ТекстСообщения = "";
	Если ТекущаяСтраница = ПредопределенноеЗначение("Перечисление.СтраницыЖурналаОтчетность.Отчеты") Тогда
		ТекстСообщения = НСтр("ru = 'Отчет уже прочитан'");
	ИначеЕсли ТекущаяСтраница = ПредопределенноеЗначение("Перечисление.СтраницыЖурналаОтчетность.Уведомления") Тогда
		ТекстСообщения = НСтр("ru = 'Уведомление уже прочитано'");
	ИначеЕсли ТекущаяСтраница = ПредопределенноеЗначение("Перечисление.СтраницыЖурналаОтчетность.Сверки") Тогда
		ТекстСообщения = НСтр("ru = 'Запрос на сверку уже прочитан'");
	ИначеЕсли ТекущаяСтраница = ПредопределенноеЗначение("Перечисление.СтраницыЖурналаОтчетность.ЕГРЮЛ") Тогда
		ТекстСообщения = НСтр("ru = 'Запрос выписки из ЕГРЮЛ уже прочитан'");
	ИначеЕсли ТекущаяСтраница = ПредопределенноеЗначение("Перечисление.СтраницыЖурналаОтчетность.Входящие") Тогда
		ТекстСообщения = НСтр("ru = 'Письмо уже прочитано'");
	КонецЕсли;
		
	Если ЗначениеЗаполнено(ТекстСообщения) Тогда
		ПоказатьПредупреждение(,ТекстСообщения);
	КонецЕсли;
	
КонецПроцедуры

&НаКлиентеНаСервереБезКонтекста
Функция ИмяСтраницы(Страница)
	
	Если Страница = ПредопределенноеЗначение("Перечисление.СтраницыЖурналаОтчетность.Новое") Тогда
		ИмяРаздела = "Новое";
	ИначеЕсли Страница = ПредопределенноеЗначение("Перечисление.СтраницыЖурналаОтчетность.Отчеты") Тогда
		ИмяРаздела = "Отчеты";
	ИначеЕсли Страница = ПредопределенноеЗначение("Перечисление.СтраницыЖурналаОтчетность.Уведомления") Тогда
		ИмяРаздела = "Уведомления";
	ИначеЕсли Страница = ПредопределенноеЗначение("Перечисление.СтраницыЖурналаОтчетность.Письма") Тогда
		ИмяРаздела = "Письма";
	ИначеЕсли Страница = ПредопределенноеЗначение("Перечисление.СтраницыЖурналаОтчетность.Сверки") Тогда
		ИмяРаздела = "Сверки";
	ИначеЕсли Страница = ПредопределенноеЗначение("Перечисление.СтраницыЖурналаОтчетность.ЕГРЮЛ") Тогда
		ИмяРаздела = "ЕГРЮЛ";
	ИначеЕсли Страница = ПредопределенноеЗначение("Перечисление.СтраницыЖурналаОтчетность.Входящие") Тогда
		ИмяРаздела = "Входящие";
	ИначеЕсли Страница = ПредопределенноеЗначение("Перечисление.СтраницыЖурналаОтчетность.Настройки") Тогда
		ИмяРаздела = "Настройки";
	ИначеЕсли Страница = ПредопределенноеЗначение("Перечисление.СтраницыЖурналаОтчетность.Сервисы") Тогда
		ИмяРаздела = "Сервисы";
	КонецЕсли;
	
	Возврат ИмяРаздела;
	
КонецФункции

&НаСервере
Функция СкрытьОбъект1СОтчетности()
	
	СкрытыеОбъекты = Новый Массив;
	
	ТекущаяТаблица = ТекущаяТаблица(ЭтотОбъект);
	Для каждого Строка Из ТекущаяТаблица.ВыделенныеСтроки Цикл
		
		СкрытыйОбъект = Новый Структура;
		СкрытыйОбъект.Вставить("Ссылка", 		Строка.Ссылка);
		СкрытыйОбъект.Вставить("Организация", 	Строка.Организация);
		
		ЭлектронныйДокументооборотСКонтролирующимиОрганамиВызовСервера.СкрытьВосстановитьОбъект1СОтчетности(
			СкрытыйОбъект.Ссылка, 
			Истина);
			
		СкрытыеОбъекты.Добавить(СкрытыйОбъект);
				
	КонецЦикла;
	
	Возврат СкрытыеОбъекты;
	
КонецФункции

&НаСервереБезКонтекста
Функция ТабличныйДокументПисьма(Письмо)
	
	Возврат Справочники.ПерепискаСКонтролирующимиОрганами.ПечатнаяФорма(Письмо);

КонецФункции

&НаСервереБезКонтекста
Функция ТабличныйДокументОбращениеСФРКСтрахователю(Обращение)
	
	ТабДокумент = Новый ТабличныйДокумент;
	Бланк = Документы.ОбращениеСФРКСтрахователю.ПолучитьМакет("Обращение");
	
	ОбластьШапка = Бланк.ПолучитьОбласть("Шапка");
	ОбластьШапка.Параметры.ДатаПисьмо = Обращение.Дата;
	ОбластьШапка.Параметры.Идентификатор = Обращение.Идентификатор;
	ОбластьШапка.Параметры.Страхователь = Обращение.Организация;

	ТабДокумент.Вывести(ОбластьШапка);
	
	ТекстОбращения = СокрЛП(Обращение.ТекстОбращения);
	Для НомерСтроки = 1 По СтрЧислоСтрок(ТекстОбращения) Цикл
		ОбластьТекстПисьма = Бланк.ПолучитьОбласть("ТекстПисьма");
		ОбластьТекстПисьма.Параметры.ТекстПисьма = СтрПолучитьСтроку(
			ТекстОбращения, НомерСтроки);
		ТабДокумент.Вывести(ОбластьТекстПисьма);
	КонецЦикла;
	
	ОбластьПриложений = Бланк.ПолучитьОбласть("Приложения");
	НомерПриложения = 0;
	Для каждого Вложение Из Обращение.ФайлыОбращения Цикл
		
		НомерПриложения = НомерПриложения + 1;
		ИмяПриложения 	= Вложение.ИмяФайла;
		
		ОбластьПриложений.Параметры.Приложение = Строка(НомерПриложения) + ". " + ИмяПриложения;
		ТабДокумент.Вывести(ОбластьПриложений);
		
	КонецЦикла;
	
	Возврат ТабДокумент;
	
КонецФункции

&НаСервереБезКонтекста
Функция ТабличныйДокументНО(ДокументНО)
	
	Возврат Справочники.ДокументыРеализацииПолномочийНалоговыхОрганов.ПечатнаяФорма(ДокументНО);
	
КонецФункции

&НаСервереБезКонтекста
Функция ТабличныйДокументСверки(Сверка)
	
	Если ТипЗнч(Сверка) = Тип("ДокументСсылка.ЗапросНаИнформационноеОбслуживаниеСтрахователя") Тогда
		Источник = Документы.ЗапросНаИнформационноеОбслуживаниеСтрахователя;
	Иначе
		Источник = Документы.ЗапросНаИнформационноеОбслуживаниеНалогоплательщика;
	КонецЕсли;
	ТабличныйДокумент = Источник.ПечатнаяФорма(Сверка);
	
	Возврат ТабличныйДокумент;

КонецФункции

&НаСервереБезКонтекста
Функция ТекущаяДатаНаСервере()
	
	Возврат ТекущаяДатаСеанса();
	
КонецФункции

&НаКлиентеНаСервереБезКонтекста
Функция Разделы(Форма, ТолькоРазделыСТаблицами = Ложь) Экспорт
	
	Возврат РегламентированнаяОтчетностьКлиентСервер.Разделы(Форма, ТолькоРазделыСТаблицами);
	
КонецФункции

&НаКлиентеНаСервереБезКонтекста
Процедура ОбновитьКоличествоНовых(Форма)
	
	Форма.КоличествоНовых = ЭлектронныйДокументооборотСКонтролирующимиОрганамиКлиентСервер.ОбновитьКоличествоНовых(Форма);

	// Количество в разделе "Новое"
	Если Форма.КоличествоНовых > 0 Тогда
		ТекстНовое = НСтр("ru = 'Новое (%1)'");
		ТекстНовое = СтрШаблон(ТекстНовое, ?(Форма.КоличествоНовых > 99, "99+", Форма.КоличествоНовых));
		Форма.Элементы.ГиперссылкаНовое.Заголовок = ТекстНовое;
	Иначе
		Форма.Элементы.ГиперссылкаНовое.Заголовок = НСтр("ru = 'Новое'");
	КонецЕсли;
	
КонецПроцедуры

&НаСервере
Функция ЗаполнитьДеревоНовое(ПервоначальноеЗаполнение = Ложь)
	
	ЕстьИзмененияВНовыхСообщениях = Ложь;
	
	ДеревоНовое = РеквизитФормыВЗначение("Новое");
	
	ТекущиеСобытия = Новый Соответствие;
	Для Каждого СтрокаДерева Из ДеревоНовое.Строки Цикл
		Если ЗначениеЗаполнено(СтрокаДерева.Ссылка) Тогда
			ТекущиеСобытия.Вставить(Строка(СтрокаДерева.Ссылка.УникальныйИдентификатор()) + СтрокаДерева.Статус, Истина);
		КонецЕсли;
		Для Каждого ПодСтрокаДерева Из СтрокаДерева.Строки Цикл
			Если ЗначениеЗаполнено(ПодСтрокаДерева.Ссылка) Тогда
				ТекущиеСобытия.Вставить(Строка(ПодСтрокаДерева.Ссылка.УникальныйИдентификатор()) + ПодСтрокаДерева.Статус, Истина);
			КонецЕсли;
		КонецЦикла;
	КонецЦикла;

	ЭлектронныйДокументооборотСКонтролирующимиОрганами.ЗаполнитьДеревоНовое(ДеревоНовое);
	
	Для Каждого СтрокаДерева Из ДеревоНовое.Строки Цикл
		Если ЗначениеЗаполнено(СтрокаДерева.Ссылка) Тогда
			КлючПоиска = Строка(СтрокаДерева.Ссылка.УникальныйИдентификатор()) + СтрокаДерева.Статус; 
			Если ТекущиеСобытия.Получить(КлючПоиска) = Неопределено Тогда
				ЕстьИзмененияВНовыхСообщениях = Истина;
				Прервать;
			КонецЕсли;
		КонецЕсли;
	КонецЦикла;
	
	ЗначениеВРеквизитФормы(ДеревоНовое, "Новое");
	
	ДатаПоследнегоОбновления = ЭлектронныйДокументооборотСКонтролирующимиОрганами.ДатаПоследнегоОбновленияСобытий();
	НадписьВремяОбновления = ЭлектронныйДокументооборотСКонтролирующимиОрганами.ПолучитьНадписьВремяОбновления(ДатаПоследнегоОбновления);
	
	ОбновитьКоличествоНовых(ЭтотОбъект);

	Возврат ЕстьИзмененияВНовыхСообщениях И Не ПервоначальноеЗаполнение;
	
КонецФункции

&НаСервереБезКонтекста
Функция ПолучитьСписокОтчетовИзРегистраСведений(ПараметрыОтбора = Неопределено)
	
	Запрос = Новый Запрос;
	ТекстЗапроса     = "ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
	                   |	Журнал.НаименованиеОтчета КАК НаименованиеОтчета
	                   |ИЗ
	                   |	РегистрСведений.ЖурналОтчетовСтатусы КАК Журнал
	                   |";
	ТекстУпорядочить = "
	                   |УПОРЯДОЧИТЬ ПО
	                   |	НаименованиеОтчета";
	
	ТекстУсловия = "";
	
	Если НЕ ПараметрыОтбора = Неопределено Тогда
		
		ЕстьПараметры = Ложь;
		
		Если НЕ ПараметрыОтбора.Организация = Справочники.Организации.ПустаяСсылка() Тогда
			ТекстУсловия  = Символы.ПС + "	Журнал.Организация = &Организация ";
			Запрос.УстановитьПараметр("Организация", ПараметрыОтбора.Организация);
			ЕстьПараметры = Истина;
		КонецЕсли;
		
		Если ЗначениеЗаполнено(ПараметрыОтбора.НачалоПериода)Тогда
			ТекстУсловия  = ТекстУсловия  + Символы.ПС + "	" + ?(ЕстьПараметры, "И ", "") + "Журнал.ДатаНачала >= &НачалоПериода";
			Запрос.УстановитьПараметр("НачалоПериода", ПараметрыОтбора.НачалоПериода);
			ЕстьПараметры = Истина;
		КонецЕсли;
		
		Если ЗначениеЗаполнено(ПараметрыОтбора.КонецПериода)Тогда
			ТекстУсловия  = ТекстУсловия  + Символы.ПС + "	" + ?(ЕстьПараметры, "И ", "") + "Журнал.ДатаОкончания <= &КонецПериода";
			Запрос.УстановитьПараметр("КонецПериода", ПараметрыОтбора.КонецПериода);
			ЕстьПараметры = Истина;
		КонецЕсли;
		
		Если ЗначениеЗаполнено(ТекстУсловия) Тогда
			ТекстЗапроса = ТекстЗапроса + "ГДЕ " + ТекстУсловия;
		КонецЕсли;
		
	КонецЕсли;
	
	Запрос.Текст = ТекстЗапроса + ТекстУпорядочить;
	
	РезультатЗапроса = Запрос.Выполнить().Выгрузить();
	
	Возврат РезультатЗапроса.ВыгрузитьКолонку("НаименованиеОтчета");
	
КонецФункции

&НаКлиентеНаСервереБезКонтекста
Процедура ВывестиТаблицуРаздела(Форма, РазделОтчетности)
	
	ТекущийРаздел 		= ТекущийРазделФормы(Форма);
	ИмяТекущейТаблицы 	= СтрЗаменить(ТекущийРаздел.Имя, "Гиперссылка", ""); 
	
	Форма.Элементы.Разделы.ТекущаяСтраница = Форма.Элементы["Страница" + ИмяТекущейТаблицы];
	
	ТекущийРаздел = Форма.Элементы.Разделы.ТекущаяСтраница;
	
	// Эсли форма открыта на закладке с таблицей, то активизируем эту таблицу
	Если ТекущийРаздел <> Форма.Элементы.СтраницаНовое И ТекущийРаздел <> Форма.Элементы.СтраницаНастройки Тогда 
		
		ИмяЭлемента = СтрЗаменить(РазделОтчетности, "Гиперссылка", "");
		ЭлементТаблица = Форма.Элементы.Найти(?(ИмяЭлемента = "Входящие", "Требования", ИмяЭлемента));
		Если ЭлементТаблица <> Неопределено Тогда 
			Форма.ТекущийЭлемент = ЭлементТаблица;
			Если ЭлементТаблица = Форма.Элементы.Требования Тогда
				ДобавитьОтборПоПериодуТребования(Форма);
				УстановитьОтборыНаСтраницеВходящие(Форма);
			КонецЕсли;
		КонецЕсли;
		
	КонецЕсли;
	
	КалендарьОтчетностиБРОКлиентСерверПереопределяемый.ПриСменеСтраницыРазделаОтчетности(Форма);
	
КонецПроцедуры

&НаКлиенте
Процедура УправлениеЭУПанельУстановкаКомпонентыПечати(ОперацияСКомпонентойСовершена = Ложь)
	
	Если РегламентированнаяОтчетностьКлиент.КомпонентаПечатиМашиночитаемыхФормДоступна() Тогда
		Элементы.ПереустановитьКомпонентыПечатиМашиночитаемыхФорм.Заголовок = НСтр("ru = 'Переустановить компоненты печати машиночитаемых форм'");
	Иначе
		Элементы.ПереустановитьКомпонентыПечатиМашиночитаемыхФорм.Заголовок = НСтр("ru = 'Установка компоненты печати'");
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура УправлениеЭУГруппаНастройки()
	
	ЗаголовкиГруппы = ЗаголовкиГруппыНастройки(Организация);
	
	Элементы.ЗаявлениеНаПодключениеК1СОтчетности.Заголовок = ЗаголовкиГруппы.ЗаголовокГиперссылкиЗаявления;
	
	ОткрывающаясяСкобка = Новый ФорматированнаяСтрока("(");
	СсылкаСписокЗавлений = Новый ФорматированнаяСтрока(
		ЗаголовкиГруппы.ЗаголовокГиперссылкиСпискаЗаявлений,,,,
		"Список");
	ЗакрывающаясяСкобка = Новый ФорматированнаяСтрока(")");
	Элементы.СписокЗаявлений.Заголовок = Новый ФорматированнаяСтрока(ОткрывающаясяСкобка, СсылкаСписокЗавлений, ЗакрывающаясяСкобка);
	
	ВебБраузер = РегламентированнаяОтчетностьКлиент.ВебБраузер();
	
	Если ЗначениеЗаполнено(ВебБраузер)
	   И НЕ ВебБраузер = "MSIE" Тогда
	   
	   Элементы.ГруппаДвухмерногоШтрихкода.Видимость = Ложь;
		
	КонецЕсли;			
	
КонецПроцедуры

&НаКлиенте
Процедура ШаблоныПечатиМашиночитаемыхФормНажатие()
	
	ОткрытьФорму("РегистрСведений.ШаблоныПечатиМашиночитаемыхФорм.Форма.ФормаСписка");
	
КонецПроцедуры

&НаКлиенте
Процедура НастройкаXMLШаблоновНажатие(Элемент)
	
	ОткрытьФорму("РегистрСведений.ШаблоныЭВФОтчетовСтатистики.ФормаСписка");
	
КонецПроцедуры

&НаКлиенте
Процедура НастройкаФорматаВыгрузкиНажатие(Элемент)
	
	РегламентированнаяОтчетностьКлиент.ПоказатьФормуНастроекФорматаВыгрузкиСтатистическойОтчетностиВЭлектронномВиде(Организация);
	
КонецПроцедуры

&НаКлиенте
Процедура ЖурналВыгруженныхОтчетовНажатие(Элемент)
	
	ОткрытьФорму("Документ.ВыгрузкаРегламентированныхОтчетов.Форма.ФормаСписка", , ЭтотОбъект);
	
КонецПроцедуры

&НаКлиенте
Процедура СправочникРегламентированныхОтчетовНажатие(Элемент)
	
	ОткрытьФорму("Справочник.РегламентированныеОтчеты.Форма.ФормаСписка");
	
КонецПроцедуры

&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьОтборыПоОтчетам(Форма)
	
	ОтборДинамическогоСписка = Форма.Отчеты.КомпоновщикНастроек.Настройки.Отбор;
	
	ДобавляемыеЭлементыОтбора          = Новый Массив;
	ДобавляемыеЭлементыОтбораВидОтчета = Новый Массив;
	
	ПолеКомпоновкиНаименованиеОтчета = Новый ПолеКомпоновкиДанных("НаименованиеОтчета");
	ПолеКомпоновкиОрганизация        = Новый ПолеКомпоновкиДанных("Организация");
	ПолеКомпоновкиДатаНачала         = Новый ПолеКомпоновкиДанных("ДатаНачала");
	ПолеКомпоновкиДатаОкончания      = Новый ПолеКомпоновкиДанных("ДатаОкончания");
	
	СтрМакетПенсионногоДела = "Макет пенсионного дела";
	СтрЗаявлениеОНазначенииПенсии = "Заявление о назначении пенсии";
	
	// Отбираем в массив пользовательские элементы отбора.
	Для Каждого ЭлементПользовательскойНастройки Из Форма.Отчеты.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы Цикл
		Если ТипЗнч(ЭлементПользовательскойНастройки) = Тип("ОтборКомпоновкиДанных")
			И ЭлементПользовательскойНастройки.ИдентификаторПользовательскойНастройки
				= ОтборДинамическогоСписка.ИдентификаторПользовательскойНастройки Тогда
			Для Каждого ЭлементОтбора Из ЭлементПользовательскойНастройки.Элементы Цикл
				Если ТипЗнч(ЭлементОтбора) = Тип("ЭлементОтбораКомпоновкиДанных") Тогда
					Если (ЭлементОтбора.ЛевоеЗначение = ПолеКомпоновкиНаименованиеОтчета
							И  (ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке
							ИЛИ СокрЛП(ЭлементОтбора.ПравоеЗначение) = СтрМакетПенсионногоДела))
					 ИЛИ (ЭлементОтбора.ЛевоеЗначение = ПолеКомпоновкиНаименованиеОтчета
							И  (ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке
							ИЛИ СокрЛП(ЭлементОтбора.ПравоеЗначение) = СтрЗаявлениеОНазначенииПенсии))
					 ИЛИ (ЭлементОтбора.ЛевоеЗначение = ПолеКомпоновкиОрганизация
							И ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно)
					 ИЛИ (ЭлементОтбора.ЛевоеЗначение = ПолеКомпоновкиДатаНачала
							И  (ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно
							ИЛИ ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.БольшеИлиРавно))
					 ИЛИ (ЭлементОтбора.ЛевоеЗначение = ПолеКомпоновкиДатаОкончания
							И ЭлементОтбора.ВидСравнения <> ВидСравненияКомпоновкиДанных.Равно) Тогда
						Продолжить;
					КонецЕсли;
					Если ЭлементОтбора.ЛевоеЗначение = ПолеКомпоновкиНаименованиеОтчета Тогда
						ДобавляемыеЭлементыОтбораВидОтчета.Добавить(ЭлементОтбора);
					Иначе
						ДобавляемыеЭлементыОтбора.Добавить(ЭлементОтбора);
					КонецЕсли;
				КонецЕсли;
			КонецЦикла;
		КонецЕсли;
	КонецЦикла;
	
	// Для отбора отчета "Макет пенсионного дела" создается отдельный элемент с видом сравнения "Содержит".
	СписокОтбораВидОтчета = Новый СписокЗначений;
	ВидОтчетаМакетПенсионногоДела = Неопределено;
	Если ТипЗнч(Форма.ВидОтчета) = Тип("СписокЗначений") Тогда
		Для Каждого ЭлементВидОтчета Из Форма.ВидОтчета Цикл
			Если СокрЛП(ЭлементВидОтчета.Значение) = СтрМакетПенсионногоДела
				ИЛИ СокрЛП(ЭлементВидОтчета.Значение) = СтрЗаявлениеОНазначенииПенсии Тогда
				ВидОтчетаМакетПенсионногоДела = ЭлементВидОтчета.Значение;
			ИначеЕсли ЗначениеЗаполнено(ЭлементВидОтчета.Значение) Тогда
				СписокОтбораВидОтчета.Добавить(ЭлементВидОтчета.Значение);
			КонецЕсли;
		КонецЦикла;
	Иначе
		Если СокрЛП(Форма.ВидОтчета) = СтрМакетПенсионногоДела
			ИЛИ СокрЛП(Форма.ВидОтчета) = СтрЗаявлениеОНазначенииПенсии Тогда
			ВидОтчетаМакетПенсионногоДела = Строка(Форма.ВидОтчета);
		ИначеЕсли ЗначениеЗаполнено(Форма.ВидОтчета) Тогда
			СписокОтбораВидОтчета.Добавить(Строка(Форма.ВидОтчета));
			Если Строка(Форма.ВидОтчета) = "Сведения о трудовой деятельности, ЕФС-1 подраздел 1.1" Тогда
				СписокОтбораВидОтчета.Добавить("Сведения о трудовой деятельности работников, СЗВ-ТД");
			КонецЕсли;
		КонецЕсли;
	КонецЕсли;
	
	// Формируем фиксированные элементы отбора.
	ОтборДинамическогоСписка.Элементы.Очистить();
	
	ОтборГруппа = Неопределено;
	ОтборВидОтчета = Неопределено;
	ОтборВидОтчетаМакетПенсионногоДела = Неопределено;
	
	Если ВидОтчетаМакетПенсионногоДела <> Неопределено Тогда
		Если СписокОтбораВидОтчета.Количество() > 0 Тогда // создадим группу для отбора по "ИЛИ"
			ОтборГруппа = ОтборДинамическогоСписка.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
			ОтборГруппа.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
			ОтборГруппа.Использование = Истина;
			ОтборВидОтчета = ОтборГруппа.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
			ОтборВидОтчетаМакетПенсионногоДела = ОтборГруппа.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
			ОтборВидОтчета.ЛевоеЗначение = ПолеКомпоновкиНаименованиеОтчета;
		Иначе
			ОтборВидОтчетаМакетПенсионногоДела = ОтборДинамическогоСписка.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
		КонецЕсли;
		ОтборВидОтчетаМакетПенсионногоДела.ЛевоеЗначение = ПолеКомпоновкиНаименованиеОтчета;
	Иначе
		ОтборВидОтчета = ОтборДинамическогоСписка.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
		ОтборВидОтчета.ЛевоеЗначение = ПолеКомпоновкиНаименованиеОтчета;
	КонецЕсли;
	
	ОтборОрганизация      = ОтборДинамическогоСписка.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	ОтборДатаНачала       = ОтборДинамическогоСписка.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	ОтборДатаОкончания1   = ОтборДинамическогоСписка.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	ОтборДатаОкончания2   = ОтборДинамическогоСписка.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	
	ОтборОрганизация.ЛевоеЗначение    = ПолеКомпоновкиОрганизация;
	ОтборДатаНачала.ЛевоеЗначение     = ПолеКомпоновкиДатаНачала;
	ОтборДатаОкончания1.ЛевоеЗначение = ПолеКомпоновкиДатаОкончания;
	ОтборДатаОкончания2.ЛевоеЗначение = ПолеКомпоновкиДатаОкончания;
	
	Если НЕ ЗначениеЗаполнено(Форма.Организация) Тогда
		ОтборДинамическогоСписка.Элементы.Удалить(ОтборОрганизация);
	Иначе
		ОтборОрганизация.Использование  = Истина;
		ОтборОрганизация.ВидСравнения   = ВидСравненияКомпоновкиДанных.Равно;
		ОтборОрганизация.ПравоеЗначение = Форма.Организация;
	КонецЕсли;
	
	Если НЕ ЗначениеЗаполнено(Форма.ВидОтчета)
		ИЛИ (ТипЗнч(Форма.ВидОтчета) = Тип("СписокЗначений")
			И Форма.ВидОтчета.Количество() = 1 И Форма.ВидОтчета[0].Значение = "") Тогда
		Если ОтборГруппа <> Неопределено Тогда
			ОтборДинамическогоСписка.Элементы.Удалить(ОтборГруппа);
		ИначеЕсли ОтборВидОтчета <> Неопределено Тогда
			ОтборДинамическогоСписка.Элементы.Удалить(ОтборВидОтчета);
		ИначеЕсли ОтборВидОтчетаМакетПенсионногоДела <> Неопределено Тогда
			ОтборДинамическогоСписка.Элементы.Удалить(ОтборВидОтчетаМакетПенсионногоДела);
		КонецЕсли;
	Иначе
		Если ОтборВидОтчетаМакетПенсионногоДела <> Неопределено Тогда
			ОтборВидОтчетаМакетПенсионногоДела.Использование = Истина;
			ОтборВидОтчетаМакетПенсионногоДела.ВидСравнения = ВидСравненияКомпоновкиДанных.Содержит;
			ОтборВидОтчетаМакетПенсионногоДела.ПравоеЗначение = ВидОтчетаМакетПенсионногоДела;
		КонецЕсли;
		Если ОтборВидОтчета <> Неопределено Тогда
			ОтборВидОтчета.Использование = Истина;
			ОтборВидОтчета.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
			ОтборВидОтчета.ПравоеЗначение = СписокОтбораВидОтчета;
		КонецЕсли;
	КонецЕсли;
	
	Если НЕ ЗначениеЗаполнено(Форма.ПериодОтчета) Тогда
		ОтборДинамическогоСписка.Элементы.Удалить(ОтборДатаНачала);
		ОтборДинамическогоСписка.Элементы.Удалить(ОтборДатаОкончания1);
		ОтборДинамическогоСписка.Элементы.Удалить(ОтборДатаОкончания2);
	Иначе
		Если ЗначениеЗаполнено(Форма.НачалоПериода) Тогда
			ОтборДатаНачала.Использование      = Истина;
			ОтборДатаНачала.ВидСравнения       = ?(Форма.ТолькоУказанныйПериод, ВидСравненияКомпоновкиДанных.Равно, ВидСравненияКомпоновкиДанных.БольшеИлиРавно);
			ОтборДатаНачала.ПравоеЗначение     = ?(Форма.ТолькоУказанныйПериод, Форма.НачалоПериода, НачалоГода(Форма.НачалоПериода));
			
			ОтборДатаОкончания1.Использование  = НЕ Форма.ТолькоУказанныйПериод;
			ОтборДатаОкончания1.ВидСравнения   = ВидСравненияКомпоновкиДанных.БольшеИлиРавно;
			ОтборДатаОкончания1.ПравоеЗначение = Форма.НачалоПериода;
		Иначе
			ОтборДинамическогоСписка.Элементы.Удалить(ОтборДатаНачала);
			Если Форма.ТолькоУказанныйПериод Тогда
				ОтборДатаОкончания1.Использование = Ложь;
			Иначе
				ОтборДинамическогоСписка.Элементы.Удалить(ОтборДатаОкончания1);
			КонецЕсли;
		КонецЕсли;
		
		Если ЗначениеЗаполнено(Форма.КонецПериода) Тогда
			Если Форма.ТолькоУказанныйПериод Тогда
				ОтборДатаОкончания1.Использование  = Истина;
				ОтборДатаОкончания1.ВидСравнения   = ВидСравненияКомпоновкиДанных.БольшеИлиРавно;
				ОтборДатаОкончания1.ПравоеЗначение = НачалоДня(Форма.КонецПериода);
			КонецЕсли;
			
			ОтборДатаОкончания2.Использование  = Истина;
			ОтборДатаОкончания2.ВидСравнения   = ВидСравненияКомпоновкиДанных.МеньшеИлиРавно;
			ОтборДатаОкончания2.ПравоеЗначение = Форма.КонецПериода;
		Иначе
			ОтборДинамическогоСписка.Элементы.Удалить(ОтборДатаОкончания2);
		КонецЕсли;
	КонецЕсли;
	
	Если ТипЗнч(ОтборДатаОкончания1) = Тип("ЭлементОтбораКомпоновкиДанных")
		И НЕ ОтборДатаОкончания1.Использование Тогда
		ОтборДинамическогоСписка.Элементы.Удалить(ОтборДатаОкончания1);
	КонецЕсли;
	
	// Добавляем пользовательские элементы отбора "Вид отчета".
	Для Каждого ДобавляемыйЭлементОтбораВидОтчета Из ДобавляемыеЭлементыОтбораВидОтчета Цикл
		НовыйЭлементОтбора = ОтборДинамическогоСписка.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
		ЗаполнитьЗначенияСвойств(НовыйЭлементОтбора, ДобавляемыйЭлементОтбораВидОтчета, , "ИдентификаторПользовательскойНастройки");
		// Сохраним идентификатор пользовательской настройки элемента в его пользовательском представлении.
		НовыйЭлементОтбора.ПредставлениеПользовательскойНастройки = ДобавляемыйЭлементОтбораВидОтчета.ИдентификаторПользовательскойНастройки;
	КонецЦикла;
	
	// Добавляем пользовательские элементы отбора.
	Для Каждого ДобавляемыйЭлементОтбора Из ДобавляемыеЭлементыОтбора Цикл
		НовыйЭлементОтбора = ОтборДинамическогоСписка.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
		ЗаполнитьЗначенияСвойств(НовыйЭлементОтбора, ДобавляемыйЭлементОтбора, , "ИдентификаторПользовательскойНастройки");
		// Сохраним идентификатор пользовательской настройки элемента в его пользовательском представлении.
		НовыйЭлементОтбора.ПредставлениеПользовательскойНастройки = ДобавляемыйЭлементОтбора.ИдентификаторПользовательскойНастройки;
	КонецЦикла;
	
	УстановитьДопОтборы(Форма, ОтборДинамическогоСписка);

	ОтборДинамическогоСписка.ИдентификаторПользовательскойНастройки = Строка(Новый УникальныйИдентификатор);
	
	// Назначаем идентификаторы пользовательских настроек для элементов установленного отбора (быстрые отборы в форме).
	Для Каждого ЭлементПользовательскойНастройки Из Форма.Отчеты.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы Цикл
		Если ТипЗнч(ЭлементПользовательскойНастройки) = Тип("ОтборКомпоновкиДанных")
			И ЭлементПользовательскойНастройки.ИдентификаторПользовательскойНастройки
				= ОтборДинамическогоСписка.ИдентификаторПользовательскойНастройки Тогда
			Для Каждого ЭлементОтбора Из ЭлементПользовательскойНастройки.Элементы Цикл
				Если ТипЗнч(ЭлементОтбора) = Тип("ЭлементОтбораКомпоновкиДанных") Тогда
					Если ЗначениеЗаполнено(ЭлементОтбора.ПредставлениеПользовательскойНастройки) Тогда
						ЭлементОтбора.ИдентификаторПользовательскойНастройки = ЭлементОтбора.ПредставлениеПользовательскойНастройки;
						ДоступноеПолеОтбора = ЭлементПользовательскойНастройки.ДоступныеПоляОтбора.НайтиПоле(ЭлементОтбора.ЛевоеЗначение);
						ЭлементОтбора.ПредставлениеПользовательскойНастройки =
							?(ДоступноеПолеОтбора = Неопределено, Строка(ЭлементОтбора.ЛевоеЗначение), ДоступноеПолеОтбора.Заголовок);
					КонецЕсли
				КонецЕсли;
			КонецЦикла;
		КонецЕсли;
	КонецЦикла;
	
	//Очищаем для удаления элементов пользовательского отбора при установке стандартных настроек.
	ОтборДинамическогоСписка.Элементы.Очистить();
	
КонецПроцедуры

&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьСортировкуПоУмолчанию(Форма)
	
	ПорядокДинамическогоСписка = Форма.Отчеты.КомпоновщикНастроек.Настройки.Порядок;
	
	ПользовательскиеНастройкиДинамическогоСписка = Форма.Отчеты.КомпоновщикНастроек.ПользовательскиеНастройки;
	
	ПользовательскийПорядокДинамическогоСписка = ПользовательскиеНастройкиДинамическогоСписка.Элементы.Найти(
		ПорядокДинамическогоСписка.ИдентификаторПользовательскойНастройки);
		
	Если ПользовательскийПорядокДинамическогоСписка <> Неопределено
		И ПорядокДинамическогоСписка.Элементы.Количество() = ПользовательскийПорядокДинамическогоСписка.Элементы.Количество() Тогда
		
		Для Каждого ЭлементПорядка Из ПользовательскийПорядокДинамическогоСписка.Элементы Цикл
			Если ЭлементПорядка.Поле <> ПорядокДинамическогоСписка.Элементы[ПользовательскийПорядокДинамическогоСписка.Элементы.Индекс(ЭлементПорядка)].Поле Тогда
				ПорядокДинамическогоСписка.ИдентификаторПользовательскойНастройки = Строка(Новый УникальныйИдентификатор);
				Возврат;
			КонецЕсли;
		КонецЦикла;
		
		Для Каждого ЭлементПорядка Из ПользовательскийПорядокДинамическогоСписка.Элементы Цикл
			Если ЭлементПорядка.ТипУпорядочивания = НаправлениеСортировкиКомпоновкиДанных.Возр Тогда
				ЭлементПорядка.ТипУпорядочивания = НаправлениеСортировкиКомпоновкиДанных.Убыв;
			Иначе
				ЭлементПорядка.ТипУпорядочивания = НаправлениеСортировкиКомпоновкиДанных.Возр;
			КонецЕсли;
			ЭлементПорядка.Использование = Истина;
		КонецЦикла;
		
	Иначе
		
		ПорядокДинамическогоСписка.ИдентификаторПользовательскойНастройки = Строка(Новый УникальныйИдентификатор);
		
	КонецЕсли;
	
КонецПроцедуры

&НаКлиентеНаСервереБезКонтекста
Процедура ВостановитьНастройкиОтборовИСортировкиОтчетов(Форма, СохраненныеПользовательскиеНастройки)
	
	Для Каждого ЭлементПользовательскойНастройки Из СохраненныеПользовательскиеНастройки.Элементы Цикл
		Если ТипЗнч(ЭлементПользовательскойНастройки) = Тип("ОтборКомпоновкиДанных") Тогда
			ЭлементПользовательскойНастройки.ИдентификаторПользовательскойНастройки =
				Форма.Отчеты.КомпоновщикНастроек.Настройки.Отбор.ИдентификаторПользовательскойНастройки;
		ИначеЕсли ТипЗнч(ЭлементПользовательскойНастройки) = Тип("ПорядокКомпоновкиДанных") Тогда
			ЭлементПользовательскойНастройки.ИдентификаторПользовательскойНастройки =
				Форма.Отчеты.КомпоновщикНастроек.Настройки.Порядок.ИдентификаторПользовательскойНастройки;
		КонецЕсли;
	КонецЦикла;
	
	Форма.Отчеты.КомпоновщикНастроек.ЗагрузитьПользовательскиеНастройки(СохраненныеПользовательскиеНастройки);
	
КонецПроцедуры

&НаСервереБезКонтекста
Функция ВсеОрганизации()

	Результат = Новый Структура;
	Результат.Вставить("ЕстьОграничения", Ложь);
	
	КонтекстСервера = ДокументооборотСКО.ПолучитьОбработкуЭДО();
	Если КонтекстСервера <> Неопределено Тогда
		МассивОрганизаций = КонтекстСервера.ВыбранныеОрганизацииДляОбмена();
		Результат.Вставить("ЕстьОграничения", Истина);
	Иначе
		Запрос = Новый Запрос;
		Запрос.Текст = 
			"ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
			|	Организации.Ссылка КАК Организация
			|ИЗ
			|	Справочник.Организации КАК Организации
			|ГДЕ
			|	Организации.ПометкаУдаления = ЛОЖЬ";

		РезультатЗапроса = Запрос.Выполнить();
		ТаблицаОрганизаций = РезультатЗапроса.Выгрузить();
		
		МассивОрганизаций = ТаблицаОрганизаций.ВыгрузитьКолонку("Организация");
	КонецЕсли;
	
	Результат.Вставить("МассивОрганизаций", МассивОрганизаций);
	
	Возврат Результат;
	
КонецФункции

&НаКлиенте
Процедура Подключаемый_ОсуществитьОбменПоВыбраннымОрганизациям()

	Если НомерОбъекта + 1 > ВыбранныеОрганизации.Количество() Тогда
		
		ОписаниеОповещения = Новый ОписаниеОповещения("ОсуществитьОбменПоВыбраннымОрганизациямПослеНастройкиМЧДФНС",
			ЭтотОбъект);
		ДокументооборотСКОКлиент.НастроитьМЧДФНС(ОписаниеОповещения,, ВыбранныеОрганизации);
		
	Иначе
		
		// Получим очередную организацию для обмена
		ОрганизацияДляОбмена = ВыбранныеОрганизации[НомерОбъекта];
		
		ОписаниеОповещения = Новый ОписаниеОповещения(
			"ОсуществитьОбменПоВыбраннымОрганизациямЗавершение", 
			ЭтотОбъект);
			
		//КонтекстЭДО инициализируется в ОбновитьДанные
		КонтекстЭДОКлиент.ОсуществитьОбменПоОрганизации(
			ЭтотОбъект, 
			ОрганизацияДляОбмена, 
			ОписаниеОповещения);
		
	КонецЕсли;

КонецПроцедуры

&НаКлиенте
Процедура ОсуществитьОбменПоВыбраннымОрганизациямПослеНастройкиМЧДФНС(Результат, ДополнительныеПараметры) Экспорт

	ОписаниеОповещения = Новый ОписаниеОповещения(
		"ОсуществитьОбменПоВыбраннымОрганизациямПослеОтправкиУПУП", 
		ЭтотОбъект); 
		
	КонтекстЭДОКлиент.ОтправитьУПУППослеОбмена(ОписаниеОповещения);
	
КонецПроцедуры

&НаКлиенте
Процедура ОсуществитьОбменПоВыбраннымОрганизациямПослеОтправкиУПУП(Результат, ДополнительныеПараметры) Экспорт
	
	УправлениеЭУ(ЭтотОбъект);
	ДлительнаяОтправкаКлиент.ОповеститьОЗавершенииОбмена(); // из формы 1С-Отчетность
	
	ПодключитьОбработчикОжидания("Подключаемый_ОбновитьНадписьВремяОбновления", 0.1, Истина);
	
КонецПроцедуры

&НаКлиенте
Процедура ОсуществитьОбменПоВыбраннымОрганизациямЗавершение(Результат, ДополнительныеПараметры) Экспорт
	
	НомерОбъекта = НомерОбъекта + 1;
	ПодключитьОбработчикОжидания("Подключаемый_ОсуществитьОбменПоВыбраннымОрганизациям", 0.1, Истина);
	
КонецПроцедуры

&НаКлиенте
Процедура ОсуществитьОбменСЭДОПоВыбраннымОрганизациямЗавершение(Результат, ДополнительныеПараметры) Экспорт
	
	НомерОбъекта = НомерОбъекта + 1;
	ПодключитьОбработчикОжидания("Подключаемый_ОсуществитьОбменСЭДОПоВыбраннымОрганизациям", 0.1, Истина);
	
КонецПроцедуры

&НаКлиенте
Процедура СоздатьСверку(ВидУслуги)

	Если КонтекстЭДОКлиент = Неопределено И КонтекстУжеПодключался <> Истина Тогда
		Оповещение = Новый ОписаниеОповещения("СоздатьСверкуПредварительное", ЭтотОбъект, ВидУслуги);
		ИнициализироватьКонтекстЭДО(Оповещение);
		Возврат;
	КонецЕсли;

	Если НЕ ДокументооборотСКОКлиент.ЭтоКорректныйВидСверки(ВидУслуги) Тогда
		Возврат;
	КонецЕсли;
	
	Если ТипЗнч(ВидУслуги) = Тип("ПеречислениеСсылка.ВидыУслугПриИОН") Тогда
		// Это запрос ИОН
		ФормаДокумента = "Документ.ЗапросНаИнформационноеОбслуживаниеНалогоплательщика.Форма.ФормаДокумента";
		
	Иначе
		// Это запрос ИОС
		ФормаДокумента = "Документ.ЗапросНаИнформационноеОбслуживаниеСтрахователя.Форма.ФормаДокумента";
	КонецЕсли;
	
	Если ВидУслуги = "ЗаявлениеНаФормированиеСправкиОРасчетах" Тогда
		ФормаДокумента = "Документ.ЗаявлениеНаФормированиеСправкиОРасчетах.Форма.ФормаДокумента";
	КонецЕсли;
	
	ПараметрыФормы = Новый Структура;
	ПараметрыФормы.Вставить("ЗначенияЗаполнения", Новый Структура("ВидУслуги, Организация", ВидУслуги, Организация));
	ОткрытьФорму(ФормаДокумента, ПараметрыФормы, ЭтотОбъект, Новый УникальныйИдентификатор);
	
КонецПроцедуры

&НаКлиенте
Процедура РедактироватьОбъект(Элемент)
	
	ИмяТекущегоРаздела = Элементы.Разделы.ТекущаяСтраница.Имя;
	
	Если ИмяТекущегоРаздела = "СтраницаВходящие" Тогда
		ИмяТекущейСтраницы = Элементы.ГруппаКатегориииВх.ТекущаяСтраница.Имя;
		ИмяТекущейСтраницы = СтрЗаменить(ИмяТекущейСтраницы, "Страница", "");
		ТекущиеДанные = Элементы[ИмяТекущейСтраницы].ТекущиеДанные;
	Иначе
		ТекущиеДанные = Элемент.ТекущиеДанные;
	КонецЕсли;
	
	Если ТекущиеДанные <> Неопределено Тогда
		Ссылка = ТекущиеДанные.Ссылка;
		Если ЗначениеЗаполнено(Ссылка) Тогда
			ПоказатьЗначение(,Ссылка);
			Оповестить("Пометка прочтенным", , Ссылка);
		КонецЕсли;
	КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура ПометитьНаУдалениеОбъект(Таблица)
	
	ТекущиеДанные = Таблица.ТекущиеДанные;
	Если ТекущиеДанные = Неопределено Тогда
		Возврат;
	КонецЕсли;
	
	Если Таблица = Элементы.Отчеты Тогда 
		Ссылка = ТекущиеДанные.РегламентированныйОтчет;
	Иначе
		Ссылка = ТекущиеДанные.Ссылка;
	КонецЕсли;
	
	ПометитьНаУдалениеОбъектНаСервере(Ссылка);
	
	// Обновление списка "точечно"
	ПараметрОповещения = Новый Структура(); 
	ПараметрОповещения.Вставить("Ссылка", Ссылка);
	ПараметрОповещения.Вставить("Организация", ТекущиеДанные.Организация);
	Оповестить("Изменение пометки удаления объекта", ПараметрОповещения, Ссылка);

КонецПроцедуры

&НаСервереБезКонтекста
Процедура ПометитьНаУдалениеОбъектНаСервере(Ссылка)
	
	УдаляемыйОбъект = Ссылка.ПолучитьОбъект();
	ПометкаУдаленияОбъекта = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Ссылка, "ПометкаУдаления");
	УдаляемыйОбъект.УстановитьПометкуУдаления(НЕ ПометкаУдаленияОбъекта);
	
КонецПроцедуры

&НаСервере
Функция ЕщеНеОтправлялся(Ссылка)
	
	Возврат ЭлектронныйДокументооборотСКонтролирующимиОрганамиВызовСервера.ОтчетЕщеНеОтправлялся(Ссылка);
	
КонецФункции

&НаКлиентеНаСервереБезКонтекста
Функция ТекущийРазделФормы(Форма)
	
	Возврат РегламентированнаяОтчетностьКлиентСервер.ТекущийРазделФормы(Форма);
	
КонецФункции

&НаКлиентеНаСервереБезКонтекста
Функция ТекущаяТаблица(Форма)
	
	Возврат РегламентированнаяОтчетностьКлиентСервер.ТекущаяТаблица(Форма);
	
КонецФункции

&НаКлиентеНаСервереБезКонтекста
Функция ТекущаяСтраница(Форма)
	
	ТекущийРаздел 		= ТекущийРазделФормы(Форма);
	ИмяТекущейТаблицы 	= СтрЗаменить(ТекущийРаздел.Имя, "Гиперссылка", ""); 
	
	Возврат ПредопределенноеЗначение("Перечисление.СтраницыЖурналаОтчетность." + ИмяТекущейТаблицы);
	
КонецФункции

&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьОтборПоОрганизацииВСписке(Форма, ГруппаОтбора)
	Если ЗначениеЗаполнено(Форма.Организация) Тогда
		ЭлементОтбора = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
		ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Организация");
		ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
		ЭлементОтбора.Использование = Истина;
		ЭлементОтбора.ПравоеЗначение = Форма.Организация;
	КонецЕсли;
КонецПроцедуры

&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьОтборыПоПрочимТаблицам(Форма, ДинамическийСписок, ВидОбъектаДляОтбора = Неопределено)
	ДинамическийСписок.Отбор.Элементы.Очистить();
	ГруппаОтбора = ДинамическийСписок.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
	ГруппаОтбора.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
	УстановитьОтборПоОрганизацииВСписке(Форма, ГруппаОтбора);
	
	// отбор по виду сверки
	Если ЗначениеЗаполнено(ВидОбъектаДляОтбора) Тогда
		ЭлементОтбора = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
		ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Наименование");
		ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
		ЭлементОтбора.Использование = Истина;
		ЭлементОтбора.ПравоеЗначение = ВидОбъектаДляОтбора;
	КонецЕсли;
	
	УстановитьДопОтборы(Форма, ДинамическийСписок.Отбор);
КонецПроцедуры

&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьОтборыПоУведомлениям(Форма)
	ДинамическийСписок = Форма.Уведомления;
	ВидОбъектаДляОтбора = ?(Форма.СписокНаименованийУведомлений.Количество() = 0, Форма.ПредставлениеВидаУведомления, Форма.СписокНаименованийУведомлений);
	ДинамическийСписок.Отбор.Элементы.Очистить();
	ГруппаОтбора = ДинамическийСписок.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
	ГруппаОтбора.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
	УстановитьОтборПоОрганизацииВСписке(Форма, ГруппаОтбора);
	
	Если ЗначениеЗаполнено(ВидОбъектаДляОтбора) Тогда
		ЭлементОтбора = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
		ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Наименование");
		Если ТипЗнч(ВидОбъектаДляОтбора) = Тип("Строка")
				И СтрНайти(ВидОбъектаДляОтбора, " ") = 0 Тогда 
				
			ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Содержит;
		ИначеЕсли ТипЗнч(ВидОбъектаДляОтбора) = Тип("СписокЗначений") Тогда 
			ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
		Иначе
			ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
		КонецЕсли;
		ЭлементОтбора.Использование = Истина;
		ЭлементОтбора.ПравоеЗначение = ВидОбъектаДляОтбора;
	КонецЕсли;
	
	УстановитьДопОтборы(Форма, ДинамическийСписок.Отбор);
КонецПроцедуры

&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьДопОтборы(Форма, ОтборДинамическогоСписка)
	Если ЗначениеЗаполнено(Форма.ОтборОрган) Тогда
		ЭлементОтбора = ОтборДинамическогоСписка.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
		ЭлементОтбора.ЛевоеЗначение  = Новый ПолеКомпоновкиДанных("ВидКонтролирующегоОргана");
		ЭлементОтбора.ВидСравнения   = ВидСравненияКомпоновкиДанных.Равно;
		ЭлементОтбора.Использование  = Истина;
		ЭлементОтбора.ПравоеЗначение = ПредопределенноеЗначение("Перечисление.ТипыКонтролирующихОрганов.ФНС");
	КонецЕсли;
КонецПроцедуры

&НаСервереБезКонтекста
Функция ВидУведомленияОСпецрежимахНалогообложения(Ссылка)
	
	Возврат ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Ссылка, "ВидУведомления");
	
КонецФункции

&НаКлиентеНаСервереБезКонтекста
Процедура ДействияПриИзмененииОтборов(Форма)
	
	Элементы = Форма.Элементы;
	
	УстановитьОтборыПоОтчетам(Форма);
	УстановитьОтборыПоУведомлениям(Форма);
	УстановитьОтборыПоПрочимТаблицам(Форма, Форма.Письма);
	УстановитьОтборыПоПрочимТаблицам(Форма, Форма.Сверки, Форма.ВидСверки);
	УстановитьОтборыПоПрочимТаблицам(Форма, Форма.ЕГРЮЛ);
	УстановитьОтборыПоПрочимТаблицам(Форма, Форма.Входящие);
	
	УстановитьОтборыНаСтраницеВходящие(Форма);
	ПрорисоватьПанельТребований(Форма);
	
КонецПроцедуры

&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьОтборыНаСтраницеВходящие(Форма)
	
	Элементы = Форма.Элементы;
	
	Если Элементы.Разделы.ТекущаяСтраница = Элементы.СтраницаВходящие Тогда
		
		ТребованияФНСКлиентСервер.ДополнитьОтборПоТипуВходящих(Форма);
		ДобавитьОтборПоВидуТребования(Форма);
		ДобавитьОтборПоСостояниюТребования(Форма);
		ДобавитьОтборПоПериодуТребования(Форма);
		
	КонецЕсли;
	
КонецПроцедуры

&НаСервереБезКонтекста
Процедура ЗаменитьПредставлениеСлужебногоУведомления(ПредставлениеВидаУведомления)
	НовоеПредставление = УведомлениеОСпецрежимахНалогообложенияПовтИсп.СинонимЭлементДляВыпускаНовыхПатчей();
	Если ЗначениеЗаполнено(НовоеПредставление) Тогда 
		ПредставлениеВидаУведомления = НовоеПредставление;
	КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура ОбработкаВыбораВидаУведомления(Результат, Параметры) Экспорт
	Элементы.ОтборВидУведомления.СписокВыбора.Очистить();
	Элементы.ОтборВидУведомления.РежимВыбораИзСписка = Ложь;
	Элементы.ОтборВидУведомления.ОбновлениеТекстаРедактирования = ОбновлениеТекстаРедактирования.Авто;
	Если Результат <> Неопределено Тогда
		СписокНаименованийУведомлений.Очистить();
		Если ТипЗнч(Результат) = Тип("ПеречислениеСсылка.ВидыУведомленийОСпецрежимахНалогообложения") Тогда
			
			ВидУведомления = Результат;
			ПредставлениеВидаУведомления = Строка(Результат);
			Если ПредопределенноеЗначение("Перечисление.ВидыУведомленийОСпецрежимахНалогообложения.ЭлементДляВыпускаНовыхПатчей") 
				= ВидУведомления Тогда 
				
				ЗаменитьПредставлениеСлужебногоУведомления(ПредставлениеВидаУведомления);
			КонецЕсли;
		Иначе
			ВидУведомления = Результат.Тип;
			ПредставлениеВидаУведомления = Результат.Наименование;
			СписокНаименованийУведомлений = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(Результат, "СписокНаименованийУведомлений", Новый СписокЗначений);
		КонецЕсли;
	КонецЕсли;
	
	ДействияПриИзмененииОтборов(ЭтотОбъект);
КонецПроцедуры

&НаСервереБезКонтекста
Функция СформироватьXMLНаСервере(УникальныйИдентификатор, Объект)
	ДокОбъект = Объект.ПолучитьОбъект();
	Если ОбщегоНазначения.ОбщийМодуль("Отчеты.ВизуализацияУстаревшихУведомлений").РедакцияУдалена(Объект.ИмяОтчета, Объект.ИмяФормы) Тогда 
		ОбщегоНазначения.СообщитьПользователю(НСтр("ru = 'Выгрузка устаревших редакций не поддерживается'"));
	Иначе
		Возврат ДокОбъект.ВыгрузитьДокумент(УникальныйИдентификатор);
	КонецЕсли;;
КонецФункции

&НаСервереБезКонтекста
Функция КоличествоНепрочитанныхОбъектов(ОтборОрганизацияВходящие)
	
	ДетализацияВходящих = Новый Структура("ВходящиеТребования, ВходящиеПисьма, ВходящиеРассылки", 0, 0, 0);
	
	Запрос = Новый Запрос;
	
	Запрос.Текст = 
		"ВЫБРАТЬ РАЗРЕШЕННЫЕ
		|	КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ЖурналОтчетовСтатусы.Ссылка) КАК КоличествоНепрочтенных,
		|	ЗНАЧЕНИЕ(Перечисление.СтраницыЖурналаОтчетность.Отчеты) КАК СтраницаЖурнала
		|ИЗ
		|	РегистрСведений.ЖурналОтчетовСтатусы КАК ЖурналОтчетовСтатусы
		|ГДЕ
		|	ЖурналОтчетовСтатусы.Непрочтенное = ИСТИНА
		|	И НЕ ЖурналОтчетовСтатусы.Скрыт
		|
		|ОБЪЕДИНИТЬ ВСЕ
		|
		|ВЫБРАТЬ
		|	КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ЖурналОтправокВКонтролирующиеОрганы.Ссылка),
		|	ЖурналОтправокВКонтролирующиеОрганы.СтраницаЖурнала
		|ИЗ
		|	РегистрСведений.ЖурналОтправокВКонтролирующиеОрганы КАК ЖурналОтправокВКонтролирующиеОрганы
		|ГДЕ
		|	ЖурналОтправокВКонтролирующиеОрганы.Непрочтенное = ИСТИНА
		|	И НЕ ЖурналОтправокВКонтролирующиеОрганы.Скрыт
		|
		|СГРУППИРОВАТЬ ПО
		|	ЖурналОтправокВКонтролирующиеОрганы.СтраницаЖурнала";
		
		
	ТаблицаНепрочтенных = Запрос.Выполнить().Выгрузить();
	МассивНепрочтенных  = ОбщегоНазначения.ТаблицаЗначенийВМассив(ТаблицаНепрочтенных);
	
	Для Каждого Элемент Из МассивНепрочтенных Цикл 
		Элемент.СтраницаЖурнала = ИмяСтраницы(Элемент.СтраницаЖурнала);
		Если Элемент.СтраницаЖурнала = "Входящие" Тогда 
			Элемент.Вставить("ДетализацияВходящих", ДетализацияНепрочтенныхВходящих(ОтборОрганизацияВходящие));
		КонецЕсли;
	КонецЦикла;

	Возврат МассивНепрочтенных;
	
КонецФункции

&НаСервереБезКонтекста
Функция ДетализацияНепрочтенныхВходящих(ОтборОрганизацияВходящие)
	
	Детализация = Новый Структура("ВходящиеТребования, ВходящиеПисьма, ВходящиеРассылки", 0, 0, 0);
	
	Запрос = Новый Запрос;
	
	Запрос.Текст = 
	"ВЫБРАТЬ РАЗРЕШЕННЫЕ
	|	ЖурналОтправокВКонтролирующиеОрганы.ВидДокумента КАК ВидДокумента,
	|	КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ЖурналОтправокВКонтролирующиеОрганы.Ссылка) КАК КОЛИЧЕСТВО
	|ИЗ
	|	РегистрСведений.ЖурналОтправокВКонтролирующиеОрганы КАК ЖурналОтправокВКонтролирующиеОрганы
	|ГДЕ
	|	ЖурналОтправокВКонтролирующиеОрганы.Непрочтенное = ИСТИНА
	|	И НЕ ЖурналОтправокВКонтролирующиеОрганы.Скрыт
	|	И ЖурналОтправокВКонтролирующиеОрганы.СтраницаЖурнала = ЗНАЧЕНИЕ(Перечисление.СтраницыЖурналаОтчетность.Входящие)
	|
	|СГРУППИРОВАТЬ ПО
	|	ЖурналОтправокВКонтролирующиеОрганы.ВидДокумента";
	
	ТребованияФНС.ДобавитьОтборПоОрганизации(Запрос, ОтборОрганизацияВходящие);
	
	Выборка = Запрос.Выполнить().Выбрать();
	Пока Выборка.Следующий() Цикл
		Если Выборка.ВидДокумента = Перечисления.ВидыДокументовВЖурнале.Рассылка Тогда
			 Детализация.ВходящиеРассылки = Выборка.КОЛИЧЕСТВО;
		ИначеЕсли Выборка.ВидДокумента = Перечисления.ВидыДокументовВЖурнале.ТребованиеИлиУведомление Тогда
			 Детализация.ВходящиеТребования = Выборка.КОЛИЧЕСТВО;
		ИначеЕсли Выборка.ВидДокумента = Перечисления.ВидыДокументовВЖурнале.ВходящееПисьмо Тогда
			 Детализация.ВходящиеПисьма = Выборка.КОЛИЧЕСТВО;
		КонецЕсли;
		
	КонецЦикла;
	
	Возврат Детализация;
	
КонецФункции

&НаКлиентеНаСервереБезКонтекста
Процедура ОбновитьКоличествоНепрочтенныхОбъектов(Форма)
	Перем ЗаголовокКатегории;
	
	Элементы = Форма.Элементы;
	
	// Сбрасываем количества во всех заголовках.
	Для каждого Раздел Из Разделы(Форма, Истина) Цикл
		Элементы["Гиперссылка" + Раздел].Заголовок = Раздел;
	КонецЦикла;
	
	// Сбрасываем количества в заголовках вложенных закладок
	Элементы.СтраницаТребования.Заголовок = НСтр("ru = 'Требования и уведомления'");
	Элементы.СтраницаВходящиеПисьма.Заголовок = НСтр("ru = 'Входящие письма'");
	Элементы.СтраницаРассылки.Заголовок = НСтр("ru = 'Рассылки'");
	
	// Устанавливаем количества только там, где есть непрочтенные.
	НепрочтенныеОбъектыПоРазделам = КоличествоНепрочитанныхОбъектов(Форма.Организация);
	
	Для каждого НепрочтенныеОбъектыРаздела Из НепрочтенныеОбъектыПоРазделам Цикл
		
		КоличествоНепрочитанныхОбъектов = НепрочтенныеОбъектыРаздела.КоличествоНепрочтенных;
		СтраницаЖурнала 				= НепрочтенныеОбъектыРаздела.СтраницаЖурнала;
		
		Элементы["Гиперссылка" + СтраницаЖурнала].Заголовок = 
				СтраницаЖурнала + ПредставлениеКоличества(КоличествоНепрочитанныхОбъектов);
				
		Если СтраницаЖурнала = "Входящие" Тогда 
					
			Элементы.СтраницаВходящиеПисьма.Заголовок = 
				Элементы.СтраницаВходящиеПисьма.Заголовок + 
				ПредставлениеКоличества(НепрочтенныеОбъектыРаздела.ДетализацияВходящих.ВходящиеПисьма);
				
			Элементы.СтраницаРассылки.Заголовок = 
				Элементы.СтраницаРассылки.Заголовок + 
				ПредставлениеКоличества(НепрочтенныеОбъектыРаздела.ДетализацияВходящих.ВходящиеРассылки);
					
			Элементы.СтраницаТребования.Заголовок = 
				Элементы.СтраницаТребования.Заголовок + 
				ПредставлениеКоличества(НепрочтенныеОбъектыРаздела.ДетализацияВходящих.ВходящиеТребования);
				
		КонецЕсли;
			
	КонецЦикла; 

	ПрорисоватьПанельТребований(Форма);
	
КонецПроцедуры

&НаКлиенте
Процедура ПечатьОтчетности(ВидПечати)
	
	ТекущиеДанные 	= Элементы.Отчеты.ТекущиеДанные;
	Закладка	 	= Элементы.Отчеты;
	
	Если ТекущиеДанные <> Неопределено Тогда
		
		Ссылка = ТекущиеДанные.РегламентированныйОтчет;
		
		Если ВидПечати = "ПечатьОтчет" Тогда
			
			Если ТипЗнч(Ссылка) = Тип("СправочникСсылка.ЭлектронныеПредставленияРегламентированныхОтчетов") Тогда
				// Печать электронного представления
				Ссылка 				= ТекущиеДанные.РегламентированныйОтчет;
				НаименованиеОтчета 	= ТекущиеДанные.НаименованиеОтчета;
				
				ПечатьЭлектронногоПредставления(Ссылка, НаименованиеОтчета);
				
			ИначеЕсли ТипЗнч(Ссылка) = Тип("ДокументСсылка.РегламентированныйОтчет") Тогда
				
				// Печать регламентированного отчета
				Ссылка             = ТекущиеДанные.РегламентированныйОтчет;
				НаименованиеОтчета = ТекущиеДанные.НаименованиеОтчета;
				
				ОписаниеОтчета = ОписаниеРегОтчета(Ссылка);
				
				Если ОбработаноДействиеДляАлкоОтчета(Ссылка, ОписаниеОтчета, "Печать", ВидПечати) Тогда
					Возврат;
				КонецЕсли;
				
				Если НаименованиеОтчета = "Доходы, выплаченные иностранным организациям" Тогда
					ОписаниеДохИно = ОписаниеРегОтчета(Ссылка);
					Если (ОписаниеДохИно.ВыбраннаяФорма = "ФормаОтчета2023Кв4"
						ИЛИ ОписаниеДохИно.ВыбраннаяФорма = "ФормаОтчета2020Кв1"
						ИЛИ ОписаниеДохИно.ВыбраннаяФорма = "ФормаОтчета2016Кв1")
						И ОписаниеДохИно.Свойство("ВозможноВосстановитьДанныеРеглОтчетаСозданногоВОбычномПриложении") Тогда
						Если НЕ ОписаниеДохИно.ВозможноВосстановитьДанныеРеглОтчетаСозданногоВОбычномПриложении Тогда
							Если ОписаниеДохИно.Свойство("ТекстСообщения") Тогда
								Сообщение = Новый СообщениеПользователю;
								Сообщение.Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр(
								"ru='%1 Печать прервана.'"), ОписаниеДохИно.ТекстСообщения);
								Сообщение.Сообщить();
							КонецЕсли;
							Возврат;
						КонецЕсли;
					КонецЕсли;
				
				ИначеЕсли НаименованиеОтчета = "Уведомление об участии в международной группе компаний"
				          ИЛИ НаименованиеОтчета = "Страновой отчет" Тогда
					Сообщение = Новый СообщениеПользователю;
					Сообщение.Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
						НСтр("ru = 'Для отчета ""%1"" не предусмотрена печать бланка формы без двухмерного штрихкода PDF417'"),
						НаименованиеОтчета);
						Сообщение.Сообщить();
					Возврат;
					
				ИначеЕсли ОписаниеОтчета.ИсточникОтчета = "РегламентированныйОтчетФинОтчетностьМГК"
				          И ОписаниеОтчета.ВыбраннаяФорма = "ФормаОтчета2025Кв1" Тогда
					ТекстПредупреждения = СтрШаблон(
						НСтр("ru = 'Для отчета ""%1"" печать будет реализована в будущих версиях программы'"),
						НаименованиеОтчета);
					ПоказатьПредупреждение( , ТекстПредупреждения);
					Возврат;
					
				КонецЕсли;
				
				ДополнительныеПараметры = Новый Структура();
				ДополнительныеПараметры.Вставить("НаименованиеОтчета", НаименованиеОтчета);
				ДополнительныеПараметры.Вставить("Ссылка", Ссылка);
				
				ОписаниеОповещения = Новый ОписаниеОповещения("ПечатьОтчетностиЗавершение", ЭтотОбъект, ДополнительныеПараметры);
				
				РегламентированнаяОтчетностьКлиент.ПередПечатьюРегламентированногоОтчета(ОписаниеОповещения, Ссылка);
				Возврат;
				
			Иначе
				// Печать объекта, не входящего в БРО
				СведенияПоОбъекту = РегламентированнаяОтчетностьВызовСервера.СведенияПоОбъектуНеВходящемуВБРО(Ссылка);
				Если СведенияПоОбъекту <> Неопределено Тогда
					НапечататьОбъектНеВходящийВБРО(Ссылка, СведенияПоОбъекту);
				КонецЕсли;
			КонецЕсли;
			
		ИначеЕсли ВидПечати = "ПечатьОтчетШтрих" Тогда
			Если ТипЗнч(Ссылка) = Тип("СправочникСсылка.ЭлектронныеПредставленияРегламентированныхОтчетов") Тогда
				// Печать электронного представления
				Ссылка             = ТекущиеДанные.РегламентированныйОтчет;
				НаименованиеОтчета = ТекущиеДанные.НаименованиеОтчета;
				
				ПечатьЭлектронногоПредставления(Ссылка, НаименованиеОтчета);
				
			ИначеЕсли ТипЗнч(Ссылка) = Тип("ДокументСсылка.РегламентированныйОтчет") Тогда
				// Печать регламентированного отчета со штрихкодом PDF417
				Ссылка             = ТекущиеДанные.РегламентированныйОтчет;
				НаименованиеОтчета = ТекущиеДанные.НаименованиеОтчета;
				
				ОписаниеОтчета = ОписаниеРегОтчета(Ссылка);
				
				Если ОписаниеОтчета.ИсточникОтчета = "РегламентированныйОтчетФинОтчетностьМГК"
				     И ОписаниеОтчета.ВыбраннаяФорма = "ФормаОтчета2025Кв1" Тогда
					ТекстПредупреждения = СтрШаблон(
						НСтр("ru = 'Для отчета ""%1"" печать на бланках с двухмерным штрихкодом PDF417 не предусмотрена'"),
						НаименованиеОтчета);
					ПоказатьПредупреждение( , ТекстПредупреждения);
					Возврат;
					
				КонецЕсли;
				
				Если ОписаниеОтчета.ИсточникОтчета = "РегламентированныйОтчетБухОтчетность"
				     И ОписаниеОтчета.ВыбраннаяФорма = "ФормаОтчета2025Кв1" Тогда
					ТекстПредупреждения = СтрШаблон(
						НСтр("ru = 'Для отчета ""%1"" печать на бланках с двухмерным штрихкодом PDF417 будет реализована в будущих версиях программы'"),
						НаименованиеОтчета);
					ПоказатьПредупреждение( , ТекстПредупреждения);
					Возврат;
					
				КонецЕсли;
				
				ВыполнениеКомандыОтменено = ВыполнениеКомандыОтменено(
					?(ТекущиеДанные.Свойство("НаименованиеОтчета"), ТекущиеДанные.НаименованиеОтчета, ТекущиеДанные.Наименование),
					ТекущиеДанные.Организация, "ПечатьОтчетШтрих");
				Если ВыполнениеКомандыОтменено Тогда
					Возврат;
				КонецЕсли;
				
				ПечатьРегламентированногоОтчетаШтрих(Ссылка, НаименованиеОтчета);
				
			Иначе
				// Печать объекта, не входящего в БРО
				ПредупредитьОбОграничениях(Закладка, НСтр("ru = 'Печать со штрихкодом PDF417 не предусмотрена'"));
			
			КонецЕсли;
			
		ИначеЕсли ВидПечати = "ПечатьПротоколы" Тогда
			
		КонецЕсли;
		
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Функция ВыполнениеКомандыОтменено(НаименованиеОтчета, Организация, НаименованиеКоманды = "")
	
	Возврат РегламентированнаяОтчетностьКлиент.ВыполнениеКомандыОтменено(ЭтотОбъект, НаименованиеОтчета, Организация, НаименованиеКоманды);
	
КонецФункции

&НаКлиенте
Процедура ПечатьОтчетностиЗавершение(Отказ, ДополнительныеПараметры) Экспорт
	
	Если Отказ Тогда
		Возврат;
	КонецЕсли;
	
	ПечатьРегламентированногоОтчета(ДополнительныеПараметры.Ссылка, ДополнительныеПараметры.НаименованиеОтчета);
	
КонецПроцедуры

&НаКлиенте
Процедура ПечатьЭлектронногоПредставленияПредварительное(Результат, ПараметрыОповещения) Экспорт
	
	ПечатьЭлектронногоПредставления(
		ПараметрыОповещения.Ссылка,
		ПараметрыОповещения.Наименование
	);
	
КонецПроцедуры

&НаКлиенте
Процедура ПечатьЭлектронногоПредставления(Ссылка, Наименование)
	
	Если КонтекстЭДОКлиент = Неопределено И КонтекстУжеПодключался <> Истина Тогда
		ПараметрыОповещения = Новый Структура;
		ПараметрыОповещения.Вставить("Ссылка", Ссылка);
		ПараметрыОповещения.Вставить("Наименование", Наименование);
		Оповещение = Новый ОписаниеОповещения("ПечатьЭлектронногоПредставленияПредварительное", ЭтотОбъект, ПараметрыОповещения);
		ИнициализироватьКонтекстЭДО(Оповещение);
		Возврат;
	КонецЕсли;
	
	Если КонтекстЭДОКлиент = Неопределено Тогда
		ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстОшибкиИнициализацииКонтекстаЭДО);
		Возврат;
	КонецЕсли;
 
	КонтекстЭДОКлиент.ПечатьЭлектронногоПредставления(Ссылка, , Наименование);
	
КонецПроцедуры

&НаКлиенте
Процедура ПечатьЗаявленияПоЭлДокументооборотуСПФРПредварительное(Результат, Ссылка) Экспорт
	
	ПечатьЗаявленияПоЭлДокументооборотуСПФР(Ссылка);
	
КонецПроцедуры

&НаКлиенте
Процедура ПечатьЗаявленияПоЭлДокументооборотуСПФР(Ссылка)
	
	Если КонтекстЭДОКлиент = Неопределено И КонтекстУжеПодключался <> Истина Тогда
		
		Оповещение = Новый ОписаниеОповещения(
			"ПечатьЗаявленияПоЭлДокументооборотуСПФРПредварительное", 
			ЭтотОбъект, 
			Ссылка);
			
		ИнициализироватьКонтекстЭДО(Оповещение);
		Возврат;
		
	КонецЕсли;
	
	Если КонтекстЭДОКлиент = Неопределено Тогда
		ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстОшибкиИнициализацииКонтекстаЭДО);
		Возврат;
	КонецЕсли;
 
	КонтекстЭДОКлиент.ПечатьЗаявленияПоЭлДокументооборотуСПФР(Ссылка);
	
КонецПроцедуры

&НаКлиенте
Процедура ПечатьУведомленияОПредоставленииПолномочийПредставителюПредварительное(Результат, Ссылка) Экспорт
	
	ПечатьУведомленияОПредоставленииПолномочийПредставителю(Ссылка);
	
КонецПроцедуры

&НаКлиенте
Процедура ПечатьУведомленияОПредоставленииПолномочийПредставителю(Ссылка)
	
	Если КонтекстЭДОКлиент = Неопределено И КонтекстУжеПодключался <> Истина Тогда
		
		Оповещение = Новый ОписаниеОповещения(
			"ПечатьУведомленияОПредоставленииПолномочийПредставителюПредварительное", 
			ЭтотОбъект, 
			Ссылка);
			
		ИнициализироватьКонтекстЭДО(Оповещение);
		Возврат;
		
	КонецЕсли;
	
	Если КонтекстЭДОКлиент = Неопределено Тогда
		ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстОшибкиИнициализацииКонтекстаЭДО);
		Возврат;
	КонецЕсли;
	
	КонтекстЭДОКлиент.ПечатьУведомленияОПредоставленииПолномочийПредставителю(Ссылка);
	
КонецПроцедуры

&НаКлиенте
Процедура ПечатьУведомленияОПрекращенииПолномочийПредставителя(Ссылка)
	
	Если КонтекстЭДОКлиент = Неопределено И КонтекстУжеПодключался <> Истина Тогда
		
		Оповещение = Новый ОписаниеОповещения(
			"ПечатьУведомленияОПрекращенииПолномочийПредставителяПредварительное", 
			ЭтотОбъект, 
			Ссылка);
			
		ИнициализироватьКонтекстЭДО(Оповещение);
		Возврат;
		
	КонецЕсли;
	
	Если КонтекстЭДОКлиент = Неопределено Тогда
		ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстОшибкиИнициализацииКонтекстаЭДО);
		Возврат;
	КонецЕсли;
 
	КонтекстЭДОКлиент.ПечатьУведомленияОПрекращенииПолномочийПредставителя(Ссылка);
	
КонецПроцедуры

&НаКлиенте
Процедура ПечатьУведомленияОПрекращенииПолномочийПредставителяПредварительное(Результат, Ссылка) Экспорт
	
	ПечатьУведомленияОПрекращенииПолномочийПредставителя(Ссылка);
	
КонецПроцедуры

&НаКлиенте
Процедура ПечатьРегламентированногоОтчетаПредварительное(Результат, ПараметрыОповещения) Экспорт
	
	ПечатьРегламентированногоОтчета(
		ПараметрыОповещения.Ссылка,
		ПараметрыОповещения.Наименование
	);
	
КонецПроцедуры

&НаКлиенте
Процедура ПечатьРегламентированногоОтчета(Ссылка, Наименование)
	
	Если КонтекстЭДОКлиент = Неопределено И КонтекстУжеПодключался <> Истина Тогда
		ПараметрыОповещения = Новый Структура;
		ПараметрыОповещения.Вставить("Ссылка", Ссылка);
		ПараметрыОповещения.Вставить("Наименование", Наименование);
		Оповещение = Новый ОписаниеОповещения("ПечатьРегламентированногоОтчетаПредварительное", ЭтотОбъект, ПараметрыОповещения);
		ИнициализироватьКонтекстЭДО(Оповещение);
		Возврат;
	КонецЕсли;
	
	СтандартнаяОбработка = Истина;
	
	Если Наименование = "РСВ-1 ПФР" Тогда
		
		ОписаниеРСВ_1 = ОписаниеРегОтчета(Ссылка);
		Если ОписаниеРСВ_1.ДатаКонцаПериодаОтчета >= '20140101' Тогда
			Если НЕ (ПерсонифицированныйУчетВедетсяВоВнешнейПрограмме И ОписаниеРСВ_1.ОтчетСтарогоОбразца_20141101) Тогда
				РегламентированнаяОтчетностьКлиент.ПриПечатиРСВ_1ИзЖурналаРеглОтчетов(Ссылка, ОписаниеРСВ_1, СтандартнаяОбработка);
			КонецЕсли;
		КонецЕсли;
		
	КонецЕсли;
	
	Если (Наименование = "Статистика: Форма учета перемещения товаров"
		ИЛИ Наименование = "Статистическая форма учета перемещения товаров") И КонтекстЭДОКлиент <> Неопределено Тогда
		
		ДокументЗаявлениеОВвозеТоваров = Неопределено;
		ИмяДокументаЗаявлениеОВвозеТоваров = Неопределено;
		РезультатПолученияЗаявленияОВвозеТоваров = КонтекстЭДОКлиент.ПопытатьсяПолучитьЗаявлениеОВвозеТоваровИзСтатформы(
			Ссылка, ДокументЗаявлениеОВвозеТоваров, ИмяДокументаЗаявлениеОВвозеТоваров);
		Если РезультатПолученияЗаявленияОВвозеТоваров = Неопределено Тогда
			Возврат;
		ИначеЕсли РезультатПолученияЗаявленияОВвозеТоваров Тогда
			МассивОбъектов = Новый Массив;
			МассивОбъектов.Добавить(ДокументЗаявлениеОВвозеТоваров);
			УправлениеПечатьюКлиент.ВыполнитьКомандуПечати("Документ." + ИмяДокументаЗаявлениеОВвозеТоваров, "СтатистическаяФормаУчетаПеремещенияТоваров", МассивОбъектов, ЭтотОбъект);
			Возврат;
		КонецЕсли;
		
	КонецЕсли;
	
	Если СтандартнаяОбработка Тогда
		
		СписокОтчетов = Новый СписокЗначений;
		СписокОтчетов.Добавить(Ссылка);
		
		РегламентированнаяОтчетностьКлиент.НапечататьОтчеты(СписокОтчетов, "ПоказатьБланк");
		
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ПечатьРегламентированногоОтчетаШтрих(Ссылка, Наименование)
	
	ФормаОтчета = Неопределено; // Обход ошибки в платформе.
	
	ПредставлениеДокументаРеглОтч = "";
	
	ФормаОтчета = РегламентированнаяОтчетностьКлиент.ИнициализацияОтчета(Ссылка, ПредставлениеДокументаРеглОтч);
	Если ФормаОтчета = Неопределено Тогда
		Возврат;
	КонецЕсли;
	
	Если Наименование = "Движение средств нерезидента за пределами РФ" Тогда
		ПоказатьПредупреждение(, НСтр(
		"ru='Печать со штрихкодом PDF417 формы отчета
		|в редакции постановления Правительства
		|Российской Федерации от 22.05.2024 № 633
		|будет реализована в будущих версиях программы'"));
		Возврат;
	КонецЕсли;
	
	Если Наименование = "Декларация по УСН" Тогда
		ОписаниеУСН = ОписаниеРегОтчета(Ссылка);
		Если ОписаниеУСН.ВыбраннаяФорма = "ФормаОтчета2014Кв1" И ОписаниеУСН.РекомендованнаяФорма Тогда
			ПоказатьПредупреждение(, НСтр("ru='Печать с двухмерным штрихкодом PDF417 формы, рекомендованной письмом ФНС от 20.05.2015 № ГД-4-3/8533@, не предусмотрена.'"));
			Возврат;
		ИначеЕсли ОписаниеУСН.ВыбраннаяФорма = "ФормаОтчета2025Кв1" Тогда
			ПоказатьПредупреждение(, НСтр(
			"ru='Печать со штрихкодом PDF417 формы
			|отчета, утвержденной приказом ФНС России
			|от 26.11.2025 № ЕД-7-3/1017@, будет реализована
			|в будущих версиях программы'"));
			Возврат;
		КонецЕсли;
	КонецЕсли;
	
	Если Наименование = "Доходы, выплаченные иностранным организациям" Тогда
		ОписаниеДохИно = ОписаниеРегОтчета(Ссылка);
		Если (ОписаниеДохИно.ВыбраннаяФорма = "ФормаОтчета2023Кв4"
			ИЛИ ОписаниеДохИно.ВыбраннаяФорма = "ФормаОтчета2020Кв1"
			ИЛИ ОписаниеДохИно.ВыбраннаяФорма = "ФормаОтчета2016Кв1")
			И ОписаниеДохИно.Свойство("ВозможноВосстановитьДанныеРеглОтчетаСозданногоВОбычномПриложении") Тогда
			Если НЕ ОписаниеДохИно.ВозможноВосстановитьДанныеРеглОтчетаСозданногоВОбычномПриложении Тогда
				Если ОписаниеДохИно.Свойство("ТекстСообщения") Тогда
					Сообщение = Новый СообщениеПользователю;
					Сообщение.Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр(
					"ru='%1 Печать формы с двухмерным штрихкодом PDF417 прервана.'"), ОписаниеДохИно.ТекстСообщения);
					Сообщение.Сообщить();
				КонецЕсли;
				Возврат;
			КонецЕсли;
		КонецЕсли;
	КонецЕсли;
	
	Если Наименование = "Сведения о доле доходов от туристско-рекреационной деятельности" Тогда
		Если ОписаниеРегОтчета(Ссылка).ВыбраннаяФорма = "ФормаОтчета2018Кв1" Тогда
			Сообщение = Новый СообщениеПользователю;
			Сообщение.Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр(
			"ru='Выгрузка, проверка выгрузки, проверка в интернете, отправка в электронном виде, печать с двухмерным
			|штрихкодом PDF417 формы отчета ""%1"",
			|рекомендованной письмом ФНС России от 16.01.2019 № СД-4-3/441@, не предусмотрены'"), Наименование);
			Сообщение.Сообщить();
			Возврат;
		КонецЕсли;
	КонецЕсли;
	
	Если Наименование = "Декларация 3-НДФЛ" Тогда
		Описание3НДФЛ = ОписаниеРегОтчета(Ссылка);
		Если Не Описание3НДФЛ.ДоступнаПечатьPDF417 Тогда
			ПоказатьПредупреждение(, НСтр("ru = 'Печать формы со штрихкодом PDF417 будет реализована в будущих версиях программы.'"));
			Возврат;
		КонецЕсли;
	КонецЕсли;
	
	Если ФормаОтчета.СтруктураРеквизитовФормы.Свойство("ДоступенМеханизмПечатиРеглОтчетностиСДвухмернымШтрихкодомPDF417")
	   И СтрНайти(ФормаОтчета.ИмяФормы, "РегламентированныйОтчетСтатистика") = 0 Тогда
		РегламентированнаяОтчетностьКлиент.ВывестиМашиночитаемуюФорму(ФормаОтчета, "ПоказатьСДвухмернымШтрихкодомPDF417");
	Иначе
		Сообщение = Новый СообщениеПользователю;
		Сообщение.Текст = НСтр("ru='Для отчета """ + Наименование + """ не предусмотрена печать бланка формы с двухмерным штрихкодом PDF417!'");
		Сообщение.Сообщить();
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ВыгрузкаЭлектронногоПредставленияПредварительное(Результат, ПараметрыОповещения) Экспорт
	
	ВыгрузкаЭлектронногоПредставления(
		ПараметрыОповещения.Ссылка,
		ПараметрыОповещения.НаименованиеОтчета
	);
	
КонецПроцедуры

&НаКлиенте
Асинх Процедура ВыгрузкаЭлектронногоПредставления(Ссылка, НаименованиеОтчета)
	Если КонтекстЭДОКлиент = Неопределено И КонтекстУжеПодключался <> Истина Тогда
		ПараметрыОповещения = Новый Структура;
		ПараметрыОповещения.Вставить("Ссылка", Ссылка);
		ПараметрыОповещения.Вставить("НаименованиеОтчета", НаименованиеОтчета);
		Оповещение = Новый ОписаниеОповещения("ВыгрузкаЭлектронногоПредставленияПредварительное", ЭтотОбъект, ПараметрыОповещения);
		ИнициализироватьКонтекстЭДО(Оповещение);
		Возврат;
	КонецЕсли;
	
	Если КонтекстЭДОКлиент = Неопределено Тогда
		ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстОшибкиИнициализацииКонтекстаЭДО);
		Возврат;
	КонецЕсли;
	
	Если Ждать РегламентированнаяОтчетностьКлиент.РезультатПодключенияРасширенияРаботыСФайламиАсинх() Тогда 
		Если КодВозвратаДиалога.Да = Ждать ВопросАсинх("Выгрузить выбранное электронное представление отчета?", РежимДиалогаВопрос.ДаНет) Тогда 
			КонтекстЭДОКлиент.ВыгрузкаЭлектронногоПредставления(Ссылка);
		КонецЕсли;
	КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура ВыгрузкаРегламентированногоОтчетаПредварительное(Результат, ПараметрыОповещения) Экспорт
	
	ВыгрузкаРегламентированногоОтчета(
		ПараметрыОповещения.Ссылка,
		ПараметрыОповещения.ОрганизацияСсылка,
		ПараметрыОповещения.НаименованиеОтчета,
		ПараметрыОповещения.ВариантОтчета,
		ПараметрыОповещения.ПредставлениеПериода
	);
	
КонецПроцедуры

&НаКлиенте
Процедура ВыгрузкаРегламентированногоОтчета(Ссылка, ОрганизацияСсылка, НаименованиеОтчета, ВариантОтчета, ПредставлениеПериода);
	
	Это_РСВ_1_2014_И_ЗагруженыВнешниеСведенияРаздела6 = Ложь;
	
	СтандартнаяОбработка = Истина;
	
	Если ВыполнениеКомандыОтменено(НаименованиеОтчета, ОрганизацияСсылка) Тогда
		Возврат;
	КонецЕсли;
	
	Если КонтекстЭДОКлиент = Неопределено И КонтекстУжеПодключался <> Истина Тогда
		ПараметрыОповещения = Новый Структура;
		ПараметрыОповещения.Вставить("Ссылка", Ссылка);
		ПараметрыОповещения.Вставить("ОрганизацияСсылка", ОрганизацияСсылка);
		ПараметрыОповещения.Вставить("НаименованиеОтчета", НаименованиеОтчета);
		ПараметрыОповещения.Вставить("ВариантОтчета", ВариантОтчета);
		ПараметрыОповещения.Вставить("ПредставлениеПериода", ПредставлениеПериода);
		Оповещение = Новый ОписаниеОповещения("ВыгрузкаРегламентированногоОтчетаПредварительное", ЭтотОбъект, ПараметрыОповещения);
		ИнициализироватьКонтекстЭДО(Оповещение);
		Возврат;
	КонецЕсли;
	
	Если ТипЗнч(Ссылка) = Тип("ДокументСсылка.РегламентированныйОтчет") Тогда
		
		ОписаниеОтчета = ОписаниеРегОтчета(Ссылка);
		
		Если ОбработаноДействиеДляАлкоОтчета(Ссылка, ОписаниеОтчета, "Выгрузка") Тогда
		    Возврат;		
		КонецЕсли;
		
	КонецЕсли;
	
	Если НаименованиеОтчета = "Информация об операциях с денежными средствами НФО" Тогда
		ОписаниеРегОтчета = ОписаниеРегОтчета(Ссылка);
		Если ОписаниеРегОтчета.ВыбраннаяФорма = "ФормаОтчета2022Кв2" Тогда
			ПоказатьПредупреждение(, НСтр(
			"ru='Выгрузка в электронном виде формы
			|отчета будет реализована в будущих
			|версиях программы'"));
			Возврат;
		КонецЕсли;
	КонецЕсли;
	
	Если НаименованиеОтчета = "Реестр для налоговых вычетов по акцизам на виноград (КНД 1150116)"
		И ОписаниеРегОтчета(Ссылка).ВыбраннаяФорма = "ФормаОтчета2021Кв4" Тогда
		ПоказатьПредупреждение(, НСтр(
		"ru='Выгрузка в электронном виде формы
		|отчета не предусмотрена'"));
		Возврат;
	КонецЕсли;
	
	Если НаименованиеОтчета
		= "Реестр для налоговых вычетов по акцизам на виноматериалы, виноградное и фруктовое сусло (КНД 1150115)"
		И ОписаниеРегОтчета(Ссылка).ВыбраннаяФорма = "ФормаОтчета2021Кв4" Тогда
		ПоказатьПредупреждение(, НСтр(
		"ru='Выгрузка в электронном виде формы
		|отчета не предусмотрена'"));
		Возврат;
	КонецЕсли;
	
	Если НаименованиеОтчета = "Движение средств по счету в банке за пределами РФ" Тогда
		ОписаниеРегОтчета = ОписаниеРегОтчета(Ссылка);
		Если ОписаниеРегОтчета.ВыбраннаяФорма = "ФормаОтчета2015Кв3" Тогда
			ПоказатьПредупреждение(, НСтр(
			"ru='Выгрузка в электронном виде формы отчета
			|в редакции постановления Правительства РФ
			|от 25.07.2015 № 761 не предусмотрена
			|законодательством. Форма сдается в бумажном виде'"));
			Возврат;
		КонецЕсли;
	КонецЕсли;
	
	Если НаименованиеОтчета = "Доходы, выплаченные иностранным организациям" Тогда
		ОписаниеДохИно = ОписаниеРегОтчета(Ссылка);
		Если (ОписаниеДохИно.ВыбраннаяФорма = "ФормаОтчета2023Кв4"
			ИЛИ ОписаниеДохИно.ВыбраннаяФорма = "ФормаОтчета2020Кв1"
			ИЛИ ОписаниеДохИно.ВыбраннаяФорма = "ФормаОтчета2016Кв1")
			И ОписаниеДохИно.Свойство("ВозможноВосстановитьДанныеРеглОтчетаСозданногоВОбычномПриложении") Тогда
			Если НЕ ОписаниеДохИно.ВозможноВосстановитьДанныеРеглОтчетаСозданногоВОбычномПриложении Тогда
				Если ОписаниеДохИно.Свойство("ТекстСообщения") Тогда
					Сообщение = Новый СообщениеПользователю;
					Сообщение.Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр(
					"ru='%1 Выгрузка прервана.'"), ОписаниеДохИно.ТекстСообщения);
					Сообщение.Сообщить();
				КонецЕсли;
				Возврат;
			КонецЕсли;
		КонецЕсли;
	КонецЕсли;
	
	Если НаименованиеОтчета = "Сведения о доле доходов от туристско-рекреационной деятельности" Тогда
		Если ОписаниеРегОтчета(Ссылка).ВыбраннаяФорма = "ФормаОтчета2018Кв1" Тогда
			Сообщение = Новый СообщениеПользователю;
			Сообщение.Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр(
			"ru='Выгрузка, проверка выгрузки, проверка в интернете, отправка в электронном виде, печать с двухмерным
			|штрихкодом PDF417 формы отчета ""%1"",
			|рекомендованной письмом ФНС России от 16.01.2019 № СД-4-3/441@, не предусмотрены'"), НаименованиеОтчета);
			Сообщение.Сообщить();
			Возврат;
		КонецЕсли;
	КонецЕсли;
	
	Если НаименованиеОтчета = "РСВ-1 ПФР" Тогда
		
		ОписаниеРСВ_1 = ОписаниеРегОтчета(Ссылка);
		
		Если ОписаниеРСВ_1.ДатаКонцаПериодаОтчета >= '20140101' Тогда
			
			Если НЕ (ПерсонифицированныйУчетВедетсяВоВнешнейПрограмме И ОписаниеРСВ_1.ОтчетСтарогоОбразца_20141101) Тогда
				РегламентированнаяОтчетностьКлиент.ПриВыгрузкеРСВ_1ИзЖурналаРеглОтчетов(
					Ссылка, ОписаниеРСВ_1, СтандартнаяОбработка);
			КонецЕсли;
			
			Если ОписаниеРСВ_1.ЗагруженыВнешниеСведенияРаздела6 Тогда
				Это_РСВ_1_2014_И_ЗагруженыВнешниеСведенияРаздела6 = Истина;
			КонецЕсли;
			
		Иначе
			
			Если СокрЛП(ВариантОтчета) = "П"
				И НЕ РегламентированнаяОтчетностьКлиентСерверПереопределяемый.ИмяОсновнойФормыРСВ1() = "ОсновнаяФорма" Тогда
				
				ПоказатьПредупреждение(,НСтр("ru='Внимание! Выгружать в электронном виде первичную форму РСВ-1 необходимо
				|в комплекте с документами квартальной отчетности персонифицированного
				|учета из специализированного рабочего места подготовки квартальной
				|отчетности в ПФР. Выгрузка прервана.'"));
				
				Возврат;
				
			КонецЕсли;
			
		КонецЕсли;
		
	КонецЕсли;
	
	Если (НаименованиеОтчета = "Статистика: Форма учета перемещения товаров"
		ИЛИ НаименованиеОтчета = "Статистическая форма учета перемещения товаров") И КонтекстЭДОКлиент <> Неопределено Тогда
		ДокументЗаявлениеОВвозеТоваров = Неопределено;
		ИмяДокументаЗаявлениеОВвозеТоваров = Неопределено;
		РезультатПолученияЗаявленияОВвозеТоваров = КонтекстЭДОКлиент.ПопытатьсяПолучитьЗаявлениеОВвозеТоваровИзСтатформы(
			Ссылка, ДокументЗаявлениеОВвозеТоваров, ИмяДокументаЗаявлениеОВвозеТоваров);
		Если РезультатПолученияЗаявленияОВвозеТоваров = Неопределено Тогда
			Возврат;
		ИначеЕсли РезультатПолученияЗаявленияОВвозеТоваров Тогда
			ДополнительныеПараметры = Новый Структура();
			ДополнительныеПараметры.Вставить("ДокументЗаявлениеОВвозеТоваров", ДокументЗаявлениеОВвозеТоваров);
			ДополнительныеПараметры.Вставить("ИмяДокументаЗаявлениеОВвозеТоваров", ИмяДокументаЗаявлениеОВвозеТоваров);
			ОписаниеОповещения = Новый ОписаниеОповещения("ВыгрузкаРегламентированногоОтчетаЗавершениеИзСтатформы", ЭтотОбъект, ДополнительныеПараметры);
			РегламентированнаяОтчетностьКлиент.ПередВыгрузкойРегламентированногоОтчета(ОписаниеОповещения, Ссылка);
			Возврат;
		КонецЕсли;
	КонецЕсли;
	
	Если НаименованиеОтчета = "Статистика: Форма П-1" Тогда
			
		Если НЕ ПроверитьВозможностьВыгрузкиП1ИзФормыОтчетностьНаСервере(Ссылка) Тогда
			
			Сообщение = Новый СообщениеПользователю;
			Сообщение.Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru='Для отчета ""Статистика: Форма П-1 за %1"" не выбрано Приложение №3.
				|Необходимо сначала осуществить выгрузку из формы отчета! Выгрузка прервана.'"), ПредставлениеПериода);
			Сообщение.Сообщить();
			СтандартнаяОбработка = Ложь;
			
		КонецЕсли;
		
	КонецЕсли;
	
	Если НаименованиеОтчета = "Статистика: Форма П-1 Приложение 3" Тогда 
		Сообщение = Новый СообщениеПользователю;
		Сообщение.Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru='Выгрузка отчета ""Статистика: форма П-1 (приложение 3) за %1"" производится из формы П-1 за соответствующий период.'"), ПредставлениеПериода);
		Сообщение.Сообщить();
		СтандартнаяОбработка = Ложь;
	КонецЕсли;
			
	Если СтандартнаяОбработка Тогда
	
		СписокОтчетов = Новый СписокЗначений;
		СписокОтчетов.Добавить(Ссылка);
		
		ДополнительныеПараметры = Новый Структура();
		ДополнительныеПараметры.Вставить("СписокОтчетов", СписокОтчетов);
		ДополнительныеПараметры.Вставить("Это_РСВ_1_2014_И_ЗагруженыВнешниеСведенияРаздела6", Это_РСВ_1_2014_И_ЗагруженыВнешниеСведенияРаздела6);
			
		ОписаниеОповещения = Новый ОписаниеОповещения("ВыгрузкаРегламентированногоОтчетаПослеПодключенияРасширенияРаботыСФайлами", ЭтотОбъект, ДополнительныеПараметры);
	
		НачатьПодключениеРасширенияРаботыСФайлами(ОписаниеОповещения);
		
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ВыгрузкаРегламентированногоОтчетаПослеПодключенияРасширенияРаботыСФайлами(Подключено, ДополнительныеПараметры) Экспорт
	
	ДополнительныеПараметры.Вставить("ПодключеноРасширениеРаботыСФайлами", Подключено);
	
	ОписаниеОповещения = Новый ОписаниеОповещения("ВыгрузкаРегламентированногоОтчетаПродолжение", ЭтотОбъект, ДополнительныеПараметры);
	
	ТекстВопроса = "Выгрузить выбранный отчет?";
	ПоказатьВопрос(ОписаниеОповещения, СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
		НСтр("ru='%1'"), ТекстВопроса), РежимДиалогаВопрос.ДаНет);
	
КонецПроцедуры

&НаКлиенте
Процедура ВыгрузкаРегламентированногоОтчетаПродолжение(РезультатВопроса, ДополнительныеПараметры) Экспорт
	
	СписокОтчетов = ДополнительныеПараметры.СписокОтчетов;

	Если РезультатВопроса = КодВозвратаДиалога.Да Тогда
		
		ОписаниеОповещения = Новый ОписаниеОповещения("ВыгрузкаРегламентированногоОтчетаЗавершение", ЭтотОбъект, ДополнительныеПараметры);
		
		РегламентированнаяОтчетностьКлиент.ПередВыгрузкойРегламентированногоОтчета(ОписаниеОповещения, СписокОтчетов[0].Значение)
		
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ВыгрузкаРегламентированногоОтчетаЗавершение(Отказ, ДополнительныеПараметры) Экспорт
	
	Если Отказ Тогда
		Возврат;
	КонецЕсли;
	
	СписокОтчетов = ДополнительныеПараметры.СписокОтчетов;
	
	ВВебКлиентеСохранятьФайлВыгрузкиИнтерактивно = Истина;
	
	Если ДополнительныеПараметры.Это_РСВ_1_2014_И_ЗагруженыВнешниеСведенияРаздела6
		И ДополнительныеПараметры.ПодключеноРасширениеРаботыСФайлами Тогда
		ВВебКлиентеСохранятьФайлВыгрузкиИнтерактивно = Ложь;
	КонецЕсли;
	
	Если НЕ РегламентированнаяОтчетностьКлиент.ВыгрузитьОтчеты(
		СписокОтчетов, , , ВВебКлиентеСохранятьФайлВыгрузкиИнтерактивно) Тогда
		ПоказатьПредупреждение(,НСтр("ru='Выгрузка прервана!'"));
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ВыгрузкаРегламентированногоОтчетаЗавершениеИзСтатформыПредварительное(Результат, ПараметрыОповещения) Экспорт
	
	ВыгрузкаРегламентированногоОтчетаЗавершениеИзСтатформы(
		ПараметрыОповещения.Отказ,
		ПараметрыОповещения.ДополнительныеПараметры
	);
	
КонецПроцедуры

&НаКлиенте
Процедура ВыгрузкаРегламентированногоОтчетаЗавершениеИзСтатформы(Отказ, ДополнительныеПараметры) Экспорт
	
	ДокументЗаявлениеОВвозеТоваров = ДополнительныеПараметры.ДокументЗаявлениеОВвозеТоваров;
	ИмяДокументаЗаявлениеОВвозеТоваров = ДополнительныеПараметры.ИмяДокументаЗаявлениеОВвозеТоваров;
	
	Если Отказ Тогда
		Возврат;
	КонецЕсли;
	
	Если КонтекстЭДОКлиент = Неопределено И КонтекстУжеПодключался <> Истина Тогда
		ПараметрыОповещения = Новый Структура;
		ПараметрыОповещения.Вставить("Отказ", Отказ);
		ПараметрыОповещения.Вставить("ДополнительныеПараметры", ДополнительныеПараметры);
		Оповещение = Новый ОписаниеОповещения(
			"ВыгрузкаРегламентированногоОтчетаЗавершениеИзСтатформыПредварительное", 
			ЭтотОбъект, 
			ПараметрыОповещения
		);
		ИнициализироватьКонтекстЭДО(Оповещение);
		Возврат;
	КонецЕсли;
	
	Если КонтекстЭДОКлиент = Неопределено Тогда
		ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстОшибкиИнициализацииКонтекстаЭДО);
		Возврат;
	КонецЕсли;
	
	АдресФайлаВыгрузки = Неопределено;
	ИмяФайлаВыгрузки = "";
	
	РезультатВыгрузки = КонтекстЭДОКлиент.ПопытатьсяВыгрузитьСтатформуИзЗаявленияОВвозеТоваров(
		АдресФайлаВыгрузки,
		ИмяФайлаВыгрузки,
		,
		Истина,
		,
		ДокументЗаявлениеОВвозеТоваров,
		ИмяДокументаЗаявлениеОВвозеТоваров);
	
	Если РезультатВыгрузки = Истина Тогда
		НачатьПолучениеФайлаССервера(АдресФайлаВыгрузки, ИмяФайлаВыгрузки);
	КонецЕсли;
	
КонецПроцедуры

&НаСервереБезКонтекста
Функция ПроверитьВозможностьВыгрузкиП1ИзФормыОтчетностьНаСервере(ОтчетСсылка)
	
	Перем ВыбранныйОтчетПриложение3;
	
	ДанныеОтчетаХЗ = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ОтчетСсылка, "ДанныеОтчета, ДатаНачала");
	Если Год(ДанныеОтчетаХЗ.ДатаНачала) >= 2017 Тогда 
		Возврат Истина;
	КонецЕсли;
	
	ДанныеВыгружаемогоОтчета = ДанныеОтчетаХЗ.ДанныеОтчета.Получить();
	
	Если НЕ ДанныеВыгружаемогоОтчета.Свойство("ВыбранныйОтчетПриложение3", ВыбранныйОтчетПриложение3) Тогда
		Возврат Ложь;
	ИначеЕсли ВыбранныйОтчетПриложение3 = Неопределено Тогда
		Возврат Ложь;
	КонецЕсли;
	
	Возврат Истина;
	
КонецФункции

&НаКлиенте
Процедура ПоказатьФормуСтатусовОтправкиИзСпискаПредварительное(Результат, ПараметрыОповещения) Экспорт
	
	ПоказатьФормуСтатусовОтправкиИзСписка(
		ПараметрыОповещения.Элемент
	);
	
КонецПроцедуры

&НаКлиенте
Процедура ПоказатьФормуСтатусовОтправкиИзСписка(Элемент) Экспорт
	
	Если КонтекстЭДОКлиент = Неопределено И КонтекстУжеПодключался <> Истина Тогда
		ПараметрыОповещения = Новый Структура;
		ПараметрыОповещения.Вставить("Элемент", Элемент);
		Оповещение = Новый ОписаниеОповещения(
			"ПоказатьФормуСтатусовОтправкиИзСпискаПредварительное", 
			ЭтотОбъект, 
			ПараметрыОповещения
		);
		ИнициализироватьКонтекстЭДО(Оповещение);
		Возврат;
	КонецЕсли;
	
	Если КонтекстЭДОКлиент = Неопределено Тогда
		ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстОшибкиИнициализацииКонтекстаЭДО);
		Возврат;
	КонецЕсли;
	
	КонтекстЭДОКлиент.ПоказатьФормуСтатусовОтправкиИзСписка(Элемент);
	
КонецПроцедуры

&НаСервереБезКонтекста
Функция ОписаниеРегОтчета(ДокументРегОтчет)
	
	Возврат РегламентированнаяОтчетностьВызовСервера.ОписаниеРегОтчета(ДокументРегОтчет);
	
КонецФункции

&НаСервереБезКонтекста
Функция ОбъектВАрхиве(Знач ОбъектОтправки, Знач ИмяФайла)
	
	КонтекстМодуля = ДокументооборотСКО.ПолучитьОбработкуЭДО();
	Возврат КонтекстМодуля.ОбъектВАрхиве(ОбъектОтправки, ИмяФайла);
	
КонецФункции

&НаСервереБезКонтекста
Функция ПротоколЕсть(Отправка, ВАрхиве = Ложь)
	
	ВАрхиве = Ложь;
	Если ЗначениеЗаполнено(Отправка) Тогда
		ВАрхиве = ОбъектВАрхиве(Отправка, "Протокол");
		Возврат ЗначениеЗаполнено(Отправка.Протокол.Получить());
	Иначе
		Возврат Ложь;
	КонецЕсли;
	
КонецФункции

&НаКлиенте
Процедура НапечататьОбъектНеВходящийВБРО(Ссылка, СведенияПоОбъекту)
	
	МакетПечати = СведенияПоОбъекту.ИмяОсновногоМакетаДляПечати;
	
	СтандартнаяПечатьОбъекта = Истина;
	РегламентированнаяОтчетностьКлиент.ПечатьПереопределяемый(Ссылка, МакетПечати, СтандартнаяПечатьОбъекта);
	
	Если СтандартнаяПечатьОбъекта Тогда
		
		Если МакетПечати <> Неопределено Тогда
			
			ИмяМенеджера = ИмяМенеджераПечати(Ссылка);
			
			МассивПечати = Новый Массив;
			МассивПечати.Добавить(Ссылка);
			
			Попытка
				УправлениеПечатьюКлиент.ВыполнитьКомандуПечати(ИмяМенеджера, МакетПечати, МассивПечати, Неопределено);
			Исключение
				ДлительнаяОтправкаКлиентСервер.ВывестиОшибку(НСтр("ru = 'При печати возникла ошибка'"));
			КонецПопытки;
			
		Иначе
			
			ПредупредитьОбОграничениях(Элементы.Отчеты, НСтр("ru = 'Печать без штрихкода PDF417 не предусмотрена'"));
			
		КонецЕсли;
		
	КонецЕсли;
	
КонецПроцедуры

&НаСервереБезКонтекста
Функция ИмяМенеджераПечати(Ссылка)
	
	Возврат Ссылка.Метаданные().ПолноеИмя();
	
КонецФункции

&НаКлиенте
Процедура ПечатьПротоколовПоСсылкеПредварительное(Результат, ПараметрыОповещения) Экспорт
	
	ПечатьПротоколовПоСсылке(
		ПараметрыОповещения.Закладка,
		ПараметрыОповещения.Ссылка,
		ПараметрыОповещения.ВидКонтролирующегоОргана,
		ПараметрыОповещения.НеОтправляетсяВКонтролирующийОрган,
		ПараметрыОповещения.СостояниеСдачиОтчетности
	);
	
КонецПроцедуры

&НаКлиенте
Процедура ПечатьПротоколовПоСсылке(
	Закладка, 
	Ссылка, 
	ВидКонтролирующегоОргана, 
	НеОтправляетсяВКонтролирующийОрган, 
	СостояниеСдачиОтчетности)
	
	Если КонтекстЭДОКлиент = Неопределено И КонтекстУжеПодключался <> Истина Тогда
		ПараметрыОповещения = Новый Структура;
		ПараметрыОповещения.Вставить("Закладка", Закладка);
		ПараметрыОповещения.Вставить("Ссылка", Ссылка);
		ПараметрыОповещения.Вставить("ВидКонтролирующегоОргана", ВидКонтролирующегоОргана);
		ПараметрыОповещения.Вставить("НеОтправляетсяВКонтролирующийОрган", НеОтправляетсяВКонтролирующийОрган);
		ПараметрыОповещения.Вставить("СостояниеСдачиОтчетности", СостояниеСдачиОтчетности);
		Оповещение = Новый ОписаниеОповещения(
			"ПечатьПротоколовПоСсылкеПредварительное", 
			ЭтотОбъект, 
			ПараметрыОповещения
		);
		ИнициализироватьКонтекстЭДО(Оповещение);
		Возврат;
	КонецЕсли;
	
	Если КонтекстЭДОКлиент = Неопределено Тогда
		ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстОшибкиИнициализацииКонтекстаЭДО);
		Возврат;
	КонецЕсли;
	
	Если НеОтправляетсяВКонтролирующийОрган Тогда
		ПредупредитьОбОграничениях(Закладка, НСтр("ru = 'Печать протоколов не предусмотрена'"));
	Иначе
		
		Если ТипЗнч(Ссылка) <> Тип("СправочникСсылка.ДокументыРеализацииПолномочийНалоговыхОрганов")
			И ТипЗнч(Ссылка) <> Тип("СправочникСсылка.ПерепискаСКонтролирующимиОрганами") Тогда
			ЭлектронныйДокументооборотСКонтролирующимиОрганамиКлиент.ОтметитьКакПрочтенное(Ссылка);
		КонецЕсли;

		ПоследнийЦиклИлиОтправка = Неопределено;
		ВАрхиве	= Ложь;
		
		// ФСС
		Если ВидКонтролирующегоОргана = ПредопределенноеЗначение("Перечисление.ТипыКонтролирующихОрганов.ФСС") Тогда
			ПоследнийЦиклИлиОтправка = КонтекстЭДОКлиент.ПолучитьПоследнююОтправкуОтчетаВФСС(Ссылка);
			ПротоколЕсть 			 = ПротоколЕсть(ПоследнийЦиклИлиОтправка, ВАрхиве);
		// ФСРАР
		ИначеЕсли ВидКонтролирующегоОргана = ПредопределенноеЗначение("Перечисление.ТипыКонтролирующихОрганов.ФСРАР") Тогда
			ПоследнийЦиклИлиОтправка = КонтекстЭДОКлиент.ПолучитьПоследнююОтправкуОтчетаВФСРАР(Ссылка);
			ПротоколЕсть 			 = ПротоколЕсть(ПоследнийЦиклИлиОтправка, ВАрхиве);
		// РПН
		ИначеЕсли ВидКонтролирующегоОргана = ПредопределенноеЗначение("Перечисление.ТипыКонтролирующихОрганов.РПН") Тогда
			ПоследнийЦиклИлиОтправка = КонтекстЭДОКлиент.ПолучитьПоследнююОтправкуОтчетаВРПН(Ссылка);
			ПротоколЕсть 			 = ПротоколЕсть(ПоследнийЦиклИлиОтправка, ВАрхиве);
		// ФТС
		ИначеЕсли ВидКонтролирующегоОргана = ПредопределенноеЗначение("Перечисление.ТипыКонтролирующихОрганов.ФТС") Тогда
			ПоследнийЦиклИлиОтправка = КонтекстЭДОКлиент.ПолучитьПоследнююОтправкуОтчетаВФТС(Ссылка);
			ПротоколЕсть 			 = ПротоколЕсть(ПоследнийЦиклИлиОтправка, ВАрхиве);
		// Банк России
		ИначеЕсли ВидКонтролирующегоОргана =
			ПредопределенноеЗначение("Перечисление.ТипыКонтролирующихОрганов.УдалитьБанкРоссии") Тогда
			МодульУдалитьДокументооборотСБанкомРоссииКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль(
				"УдалитьДокументооборотСБанкомРоссииКлиент");
			ПоследнийЦиклИлиОтправка = МодульУдалитьДокументооборотСБанкомРоссииКлиент.ПолучитьПоследнююОтправкуОтчета(Ссылка);
			ПротоколЕсть 			 = ПротоколЕсть(ПоследнийЦиклИлиОтправка, ВАрхиве);
		// Остальные контролирующие органы
		Иначе
			ПоследнийЦиклИлиОтправка = ДокументооборотСКОВызовСервера.ПолучитьПоследнийЦиклОбмена(Ссылка);
			ПротоколЕсть 			 = Истина;
		КонецЕсли;
		
		// Предупреждаем об ошибке, если нет протокола  
		Если НЕ ЗначениеЗаполнено(ПоследнийЦиклИлиОтправка) ИЛИ НЕ ПротоколЕсть Или ВАрхиве Тогда
			Если СостояниеСдачиОтчетности = ПредопределенноеЗначение("Перечисление.СостояниеСдачиОтчетности.ДокументооборотНеНачат") Тогда
				КонтекстЭДОКлиент.ПредупредитьОбОтсутствииПротокола();
			Иначе
				Если ВАрхиве Тогда 
					КонтекстЭДОКлиент.ПоказатьУведомлениеАрхивныхФайлов(, 16, 5, Истина);
				Иначе 
					ТекстПредупреждения = НСтр("ru = 'У пользователя недостаточно прав для просмотра и печати протоколов.'");
					ПоказатьПредупреждение(,ТекстПредупреждения);
				КонецЕсли;
			КонецЕсли;
			Возврат;
		КонецЕсли;
		
		// ФСС
		Если ВидКонтролирующегоОргана = ПредопределенноеЗначение("Перечисление.ТипыКонтролирующихОрганов.ФСС") Тогда
			КонтекстЭДОКлиент.ПоказатьПротоколОбработкиПоСсылкеИсточникаДляФСС(ПоследнийЦиклИлиОтправка);
		// ФСРАР
		ИначеЕсли ВидКонтролирующегоОргана = ПредопределенноеЗначение("Перечисление.ТипыКонтролирующихОрганов.ФСРАР") Тогда
			КонтекстЭДОКлиент.ПоказатьПротоколОбработкиПоСсылкеИсточникаДляФСРАР(ПоследнийЦиклИлиОтправка);
		// РПН
		ИначеЕсли ВидКонтролирующегоОргана = ПредопределенноеЗначение("Перечисление.ТипыКонтролирующихОрганов.РПН") Тогда
			КонтекстЭДОКлиент.ПоказатьПротоколОбработкиПоСсылкеИсточникаДляРПН(ПоследнийЦиклИлиОтправка);
		// ФТС
		ИначеЕсли ВидКонтролирующегоОргана = ПредопределенноеЗначение("Перечисление.ТипыКонтролирующихОрганов.ФТС") Тогда
			КонтекстЭДОКлиент.ПоказатьПротоколОбработкиПоСсылкеИсточникаДляФТС(ПоследнийЦиклИлиОтправка);
		// Банк России
		ИначеЕсли ВидКонтролирующегоОргана = ПредопределенноеЗначение("Перечисление.ТипыКонтролирующихОрганов.УдалитьБанкРоссии") Тогда
			МодульУдалитьДокументооборотСБанкомРоссииКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("УдалитьДокументооборотСБанкомРоссииКлиент");
			МодульУдалитьДокументооборотСБанкомРоссииКлиент.ПоказатьПротокол(ПоследнийЦиклИлиОтправка);
		// Остальные контролирующие органы
		Иначе
			КонтекстЭДОКлиент.ПоказатьДокументыЦикловОбмена(ПоследнийЦиклИлиОтправка, Истина);
		КонецЕсли;
		
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ПоказатьРезультатПроверкиОбновленияИнформацииМОС(
	Результат = Неопределено,
	ДополнительныеПараметры = Неопределено) Экспорт
	
	Попытка
		Если ЗаданиеВыполнено(ИдентификаторЗаданияМОС) Тогда // задание выполнено
			
			РезультатПроверки = ПолучитьИзВременногоХранилища(АдресХранилищаМОС);
			Если НЕ ЗначениеЗаполнено(РезультатПроверки) Тогда
				Возврат;
			КонецЕсли;
			
			Если ТипЗнч(РезультатПроверки) <> Тип("Массив") Тогда
				Возврат;
			КонецЕсли;
				
			ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
								НСтр("ru = 'Обновлены внешние формы отчетов - %1'"),
								Формат(РезультатПроверки.Количество(), "ЧГ="));
				
			Для каждого СтрокаСообщения Из РезультатПроверки Цикл
				
				ТекстСообщения = ТекстСообщения + Символы.ПС + Символы.ПС
							   + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = '%1'"), СтрокаСообщения);
				
			КонецЦикла;
			
			ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстСообщения);
			
		КонецЕсли;
	Исключение
		ИнформацияОбОшибке = ИнформацияОбОшибке();
			
		ТекстСообщенияОбОшибке =
			СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
				НСтр("ru = 'Ошибка при проверке результата обновления информации механизма онлайн-сервисов регламентированной отчетности
					 |%1'"), ПодробноеПредставлениеОшибки(ИнформацияОбОшибке));
					 
		ЖурналРегистрацииКлиент.ДобавитьСообщениеДляЖурналаРегистрации(
			НСтр("ru = 'Регламентированная отчетность. Проверка результата обновления информации механизма онлайн-сервисов регламентированной отчетности'"), 
			"Ошибка", ТекстСообщенияОбОшибке);
	КонецПопытки;
	
КонецПроцедуры

&НаСервере
Функция ПроверитьКоличествоОбъектовНеЗаписанныхВРегистр()
	
	ИдентификаторЗадания = Неопределено;
	
	ПараметрыЗапуска = Новый Структура;
	ПараметрыЗапуска.Вставить("УникальныйИдентификаторФормы", УникальныйИдентификатор);
	
	Результат = РегламентированнаяОтчетность.КоличествоОбъектовНеЗаписанныхВРегистр(ПараметрыЗапуска);
	
	Если Результат = Неопределено Тогда
		Возврат Неопределено;
	КонецЕсли;
	
	АдресХранилища       = Результат.АдресРезультата;
	ИдентификаторЗадания = Результат.ИдентификаторЗадания;
	
	Возврат Результат;
	
КонецФункции

&НаКлиенте
Процедура ПроверитьВыполнениеПодсчетаКоличестваНезаписанныхОбъектов(Результат, ДополнительныеДанные = Неопределено) Экспорт
	
	Если Результат = Неопределено Тогда
		Возврат;
	КонецЕсли;
	
	Попытка
		
		// Обрабатываем результат запуска фонового задания по проверке наличия объектов, не записанных в регистры
		Если Результат.Статус = "Выполнено" Тогда
			РезультатПроверкиКоличестваНезаписанныхОбъектов = Неопределено;
			ПоказатьРезультатПроверки();
		КонецЕсли;
		
	Исключение
		
		ИнформацияОбОшибке = ИнформацияОбОшибке();
		
		ТекстСообщенияОбОшибке =
			СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
				НСтр("ru = 'Ошибка при подсчете количества объектов, не отображаемых в форме 1С-Отчетность 
					 |%1'"), ПодробноеПредставлениеОшибки(ИнформацияОбОшибке));
					 
		ЖурналРегистрацииКлиент.ДобавитьСообщениеДляЖурналаРегистрации(
			НСтр("ru = 'Регламентированная отчетность. Проверка количества незаписанных объектов'"), 
			"Ошибка", 
			ТекстСообщенияОбОшибке,
			,
			Истина);
		
	КонецПопытки;
	
КонецПроцедуры

&НаКлиенте
Процедура ПоказатьРезультатПроверки()
	
	РезультатПроверки = ПолучитьИзВременногоХранилища(АдресХранилища);
	Если НЕ ЗначениеЗаполнено(РезультатПроверки) Тогда
		Возврат;
	КонецЕсли;
	
	Если РезультатПроверки.КоличествоНезаписанныхОбъектов = 0 И РезультатПроверки.КоличествоНекорректныхЗаписей = 0 Тогда
		Возврат;
	КонецЕсли;
	
	ДописатьОбъектыОтсутствующиеВРегистре();
	
КонецПроцедуры

&НаСервереБезКонтекста
Функция ЗаданиеВыполнено(ИдентификаторЗадания)
	
	Возврат ДлительныеОперации.ЗаданиеВыполнено(ИдентификаторЗадания);
	
КонецФункции

&НаКлиенте
Процедура ДописатьОбъектыОтсутствующиеВРегистре(СОчисткойРегистров = Ложь)
	
	Результат = ЗапуститьДобавлениеОбъектовВРегистр(СОчисткойРегистров);
	
	Если Результат = Неопределено Тогда
		Возврат;
	КонецЕсли;
	
	Если Результат.Статус = "Выполнено" Тогда
		// Задание отработало, результат получен
		ДействияПослеЗавершенияИндексированияОбъектов();
	ИначеЕсли ЗначениеЗаполнено(ИдентификаторЗадания) Тогда
		ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект);
		ПараметрыОжидания.ВыводитьСообщения = Истина;
		ПараметрыОжидания.ВыводитьОкноОжидания = Ложь;
		ОповещениеПроверитьРезультат = Новый ОписаниеОповещения(
			"ПроверитьРезультатДобавленияОбъектовОтсутствующихВРегистре", ЭтотОбъект);
		ДлительныеОперацииКлиент.ОжидатьЗавершение(Результат, ОповещениеПроверитьРезультат, ПараметрыОжидания);
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ПроверитьРезультатДобавленияОбъектовОтсутствующихВРегистре(Результат, ДополнительныеДанные = Неопределено) Экспорт
	
	Если Результат <> Неопределено И Результат.Статус = "Выполнено" Тогда
		ДействияПослеЗавершенияИндексированияОбъектов();
	КонецЕсли;
	
КонецПроцедуры

&НаСервере
Функция ЗапуститьДобавлениеОбъектовВРегистр(СОчисткойРегистров = Ложь)
	
	ИдентификаторЗадания = Неопределено;
	
	ПараметрыЗапуска = Новый Структура;
	ПараметрыЗапуска.Вставить("УникальныйИдентификаторФормы", УникальныйИдентификатор);
	ПараметрыЗапуска.Вставить("СОчисткойРегистров", СОчисткойРегистров);
	
	Результат = РегламентированнаяОтчетность.ДобавлениеОбъектовОтсутствующихВРегистре(ПараметрыЗапуска);
	
	Если Результат = Неопределено Тогда
		Возврат Неопределено;
	КонецЕсли;
	
	АдресХранилища       = Результат.АдресРезультата;
	ИдентификаторЗадания = Результат.ИдентификаторЗадания;
	
	Возврат Результат;
	
КонецФункции

&НаСервереБезКонтекста
Функция ИмяФормыОбъектаПоУмолчанию(Ссылка)
	
	Возврат Ссылка.Метаданные().ПолноеИмя() + ".ФормаОбъекта";
	
КонецФункции

&НаКлиенте
Процедура ОнлайнПроверкаПредварительное(Результат, ПараметрыОповещения) Экспорт
	
	ОнлайнПроверка(
		ПараметрыОповещения.Закладка		
	);
	
КонецПроцедуры

&НаКлиенте
Процедура ОнлайнПроверка(Закладка)
	
	Если КонтекстЭДОКлиент = Неопределено И КонтекстУжеПодключался <> Истина Тогда
		ПараметрыОповещения = Новый Структура;
		ПараметрыОповещения.Вставить("Закладка", Закладка);
		Оповещение = Новый ОписаниеОповещения(
			"ОнлайнПроверкаПредварительное", 
			ЭтотОбъект, 
			ПараметрыОповещения
		);
		ИнициализироватьКонтекстЭДО(Оповещение);
		Возврат;
	КонецЕсли;
	
	Если КонтекстЭДОКлиент = Неопределено Тогда
		ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстОшибкиИнициализацииКонтекстаЭДО);
		Возврат;
	КонецЕсли;
	
	ТекущиеДанные 	= Закладка.ТекущиеДанные;
	ЭтоОтчеты = Закладка = Элементы.Отчеты;
	
	РегламентированнаяОтчетностьКлиент.ОнлайнПроверка(ЭтотОбъект, КонтекстЭДОКлиент, ТекущиеДанные, ЭтоОтчеты);
	
КонецПроцедуры

&НаКлиенте
Процедура ПредупредитьОбОграничениях(Закладка, Знач ТекстПредупреждения, Знач ВидОбъекта = Неопределено)
	
	// Переводим первый символ в нижний регистр
	ТекстПредупреждения = НРег(Лев(ТекстПредупреждения, 1)) + Сред(ТекстПредупреждения, 2);
	
	ТекстПредупреждения = НСтр("ru = 'Для %1 ""%2"" '") + ТекстПредупреждения;
	
	ЭтоОтчеты = Закладка = Элементы.Отчеты;
	ТекущиеДанные = Закладка.ТекущиеДанные;
	
	Если ВидОбъекта = Неопределено Тогда
		Если ЭтоОтчеты Тогда
			ВидОбъекта = НСтр("ru = 'отчета'");
		Иначе
			ВидОбъекта = НСтр("ru = 'уведомления'"); 
		КонецЕсли;
	КонецЕсли;
	
	Наименование = "";
	Если ЭтоОтчеты Тогда
		Наименование = ТекущиеДанные.НаименованиеОтчета;
	Иначе
		Наименование = ТекущиеДанные.Наименование;
	КонецЕсли;
	
	ТекстПредупреждения = СтрЗаменить(ТекстПредупреждения, "%1", ВидОбъекта);
	ТекстПредупреждения = СтрЗаменить(ТекстПредупреждения, "%2", Наименование);
	
	ПоказатьПредупреждение(,ТекстПредупреждения);
	
КонецПроцедуры

&НаСервере
Процедура СохранитьНастройки()
	
	ХранилищеНастроекДанныхФорм.Сохранить(ЭтотОбъект.ИмяФормы, "Форма1СОтчетность_ТекущаяСтраницаРазделов", Элементы.Разделы.ТекущаяСтраница.Имя);
	ХранилищеНастроекДанныхФорм.Сохранить(ЭтотОбъект.ИмяФормы, "Форма1СОтчетность_ТолькоУказанныйПериод", ТолькоУказанныйПериод);
	ХранилищеНастроекДанныхФорм.Сохранить(ЭтотОбъект.ИмяФормы, "Форма1СОтчетность_ПериодОтчета",  ПериодОтчета);
	ХранилищеНастроекДанныхФорм.Сохранить(ЭтотОбъект.ИмяФормы, "Форма1СОтчетность_НачалоПериода", НачалоПериода);
	ХранилищеНастроекДанныхФорм.Сохранить(ЭтотОбъект.ИмяФормы, "Форма1СОтчетность_КонецПериода",  КонецПериода);
	
КонецПроцедуры

&НаСервере
Процедура СохранитьНастройкиОтбораИСортировки()
	
	ХранилищеНастроекДанныхФорм.Сохранить(ЭтотОбъект.ИмяФормы, "Форма1СОтчетность_Организация", Организация);
	ХранилищеНастроекДанныхФорм.Сохранить(ЭтотОбъект.ИмяФормы, "Форма1СОтчетность_ВидОтчета",   ВидОтчета);
	
	ПользовательскиеНастройкиДинамическогоСписка = ЭтотОбъект.Отчеты.КомпоновщикНастроек.ПользовательскиеНастройки;
	ХранилищеНастроекДанныхФорм.Сохранить(ЭтотОбъект.ИмяФормы, "Форма1СОтчетность_ПользовательскиеНастройкиОтчетов", ПользовательскиеНастройкиДинамическогоСписка);
	
КонецПроцедуры

&НаСервере
Процедура УправлениеВидимостьюЭлементовПриОтключенномЭДО()
	
	ЕстьПравоОбмена = 
		РольДоступна("ПравоНаЗащищенныйДокументооборотСКонтролирующимиОрганами")
		ИЛИ РольДоступна("АдминистраторСистемы")
		ИЛИ РольДоступна("ПолныеПрава");
	
	Элементы.ГруппаПанельИнформацииСКнопкой.Видимость = ЭлектронныйДокументооборотДоступен;
	Элементы.ОбновитьДанные.Видимость = ЕстьПравоОбмена;
	
КонецПроцедуры

&НаСервере
Процедура УправлениеВидимостьюЛичныхКабинетов()
	
	УправлениеВидимостьюЛичныхКабинетовНаправлений();
	УправлениеВидимостьюЛичныхКабинетовСпецоператоров();
	
КонецПроцедуры

&НаСервере
Процедура УправлениеВидимостьюЛичныхКабинетовНаправлений()
	
	СтрокаСписокПоддерживаемыхКО = "ФНСЮЛ,ФНСИП,ФСС,ФСРАР,РПН,ФТС";
	НаправленияЭталон = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(СтрокаСписокПоддерживаемыхКО, ",");
	
	ЭлектронныйДокументооборотСКонтролирующимиОрганамиПереопределяемый.ПереопределитьСписокПоддерживаемыхНаправлений(СтрокаСписокПоддерживаемыхКО);
	НаправленияПереопределенный = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(СтрокаСписокПоддерживаемыхКО, ",");
	
	Для каждого СтрокаНаправление Из НаправленияЭталон Цикл
		Если НаправленияПереопределенный.Найти(СтрокаНаправление) = Неопределено Тогда
			ИмяЭлемента = "Группа" + СтрокаНаправление + "Сервис";
			
			ЭлементГруппа = Элементы.Найти(ИмяЭлемента);
			Если ЭлементГруппа <> Неопределено Тогда 
				ЭлементГруппа.Видимость = Ложь;
			КонецЕсли;
			
		КонецЕсли;
	КонецЦикла;
	
КонецПроцедуры

&НаСервере
Процедура УправлениеВидимостьюЛичныхКабинетовСпецоператоров()
	
	КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
	
	Если КонтекстЭДОСервер = Неопределено Тогда
		Возврат;
	КонецЕсли;

	//получение списка используемых операторов
	МассивИспользуемыхСпецоператоров = КонтекстЭДОСервер.ПолучитьМассивИспользуемыхСпецоператоров();
	
	//заполнение таблицы свойств операторов
	ТаблицаСвойствОператоров = Новый ТаблицаЗначений;
	ТаблицаСвойствОператоров.Колонки.Добавить("ЛичныйКабинетНаименованиеСервиса");
	ТаблицаСвойствОператоров.Колонки.Добавить("ЛичныйКабинетАдресСервиса");
	ТаблицаСвойствОператоров.Колонки.Добавить("ЛичныйКабинетОписаниеСервиса");
	
	Для каждого ИспользуемыйСпецоператор Из МассивИспользуемыхСпецоператоров Цикл
		ПараметрыСтруктура = Новый Структура("ЛичныйКабинетНаименованиеСервиса, ЛичныйКабинетАдресСервиса, ЛичныйКабинетОписаниеСервиса");
		КонтекстЭДОСервер.ЗаполнитьПараметрыСпецоператора(ИспользуемыйСпецоператор, ПараметрыСтруктура);
		
		Если ЗначениеЗаполнено(ПараметрыСтруктура.ЛичныйКабинетАдресСервиса) Тогда
			//в таблицу попадают лишь спецоператоры, у которых есть личный кабинет
			ЗаполнитьЗначенияСвойств(ТаблицаСвойствОператоров.Добавить(), ПараметрыСтруктура);
		КонецЕсли;
	КонецЦикла;
	
	ТаблицаСвойствОператоров.Сортировать("ЛичныйКабинетАдресСервиса");	
	
	//заполнение таблицы личных кабинетов на основе свойств операторов
	//в этой таблице будут сгруппированы в одну строку спецоператоры с одинаковым адресом личных кабинетов
	//наименование и описание сервиса - по первому из операторов
	ТаблицаЛичныхКабинетов = Новый ТаблицаЗначений;
	ТаблицаЛичныхКабинетов.Колонки.Добавить("ЛичныйКабинетНаименованиеСервиса");
	ТаблицаЛичныхКабинетов.Колонки.Добавить("ЛичныйКабинетАдресСервиса");
	ТаблицаЛичныхКабинетов.Колонки.Добавить("ЛичныйКабинетОписаниеСервиса");
	
	ТекущееНазваниеСервиса 		= "";
	ТекущийАдресСервиса 		= "";
	ТекущееОписаниеСервиса 		= "";
	Для каждого СвойстваОператора Из ТаблицаСвойствОператоров Цикл
		
		Если ТекущийАдресСервиса <> СвойстваОператора.ЛичныйКабинетАдресСервиса Тогда
			//новый личный кабинет
			НовыйЛичныйКабинет = ТаблицаЛичныхКабинетов.Добавить();
			ТекущееНазваниеСервиса 		= СвойстваОператора.ЛичныйКабинетНаименованиеСервиса;
			ТекущийАдресСервиса 		= СвойстваОператора.ЛичныйКабинетАдресСервиса;
			ТекущееОписаниеСервиса 		= СвойстваОператора.ЛичныйКабинетОписаниеСервиса;
		КонецЕсли;
		
		НовыйЛичныйКабинет.ЛичныйКабинетНаименованиеСервиса = ТекущееНазваниеСервиса;
		НовыйЛичныйКабинет.ЛичныйКабинетАдресСервиса 	= ТекущийАдресСервиса;
		НовыйЛичныйКабинет.ЛичныйКабинетОписаниеСервиса = ТекущееОписаниеСервиса;
		
	КонецЦикла;

	// заполнение свойств элементов формы на основе таблицы личных кабинетов 
	Для каждого СтрокаЛичныйКабинет Из ТаблицаЛичныхКабинетов Цикл
		
		НомерЛК = ТаблицаЛичныхКабинетов.Индекс(СтрокаЛичныйКабинет) + 1;
		ЦветГиперссылкаБРО = Новый Цвет(28, 85, 174);
		НазваниеСервиса = Новый ФорматированнаяСтрока(СтрокаЛичныйКабинет.ЛичныйКабинетНаименованиеСервиса, , ЦветГиперссылкаБРО, , СтрокаЛичныйКабинет.ЛичныйКабинетАдресСервиса);
		
		ЭлементНазваниеСервиса = Элементы.Найти("ЛичныйКабинет1Сотчетность" + НомерЛК);
		Если ЭлементНазваниеСервиса <> Неопределено Тогда 
			ЭлементНазваниеСервиса.Заголовок = НазваниеСервиса;
			ЭлементНазваниеСервиса.Подсказка = СтрокаЛичныйКабинет.ЛичныйКабинетАдресСервиса;
		КонецЕсли;

		ЭлементОписаниеСервиса = Элементы.Найти("ПояснениеЛичныйКабинет1Сотчетность" + НомерЛК);
		Если ЭлементОписаниеСервиса <> Неопределено Тогда 
			ЭлементОписаниеСервиса.Заголовок = СтрокаЛичныйКабинет.ЛичныйКабинетОписаниеСервиса;
		КонецЕсли;

		ЭлементГруппаЛичныйКабинет = Элементы.Найти("ГруппаЛичныйКабинет1Сотчетность" + НомерЛК);
		Если ЭлементОписаниеСервиса <> Неопределено Тогда 
			ЭлементГруппаЛичныйКабинет.Видимость = Истина;
		КонецЕсли;
		
	КонецЦикла;
	
КонецПроцедуры

&НаКлиенте
Процедура ПоказатьКритическиеОшибкиПоСсылкеПредварительное(Результат, ПараметрыОповещения) Экспорт
	
	ПоказатьКритическиеОшибкиПоСсылке(
		ПараметрыОповещения.Ссылка		
	);
	
КонецПроцедуры

&НаКлиенте
Процедура ПоказатьКритическиеОшибкиПоСсылке(Ссылка) Экспорт
	
	Если КонтекстЭДОКлиент = Неопределено И КонтекстУжеПодключался <> Истина Тогда
		ПараметрыОповещения = Новый Структура;
		ПараметрыОповещения.Вставить("Ссылка", Ссылка);
		Оповещение = Новый ОписаниеОповещения(
			"ПоказатьКритическиеОшибкиПоСсылкеПредварительное", 
			ЭтотОбъект, 
			ПараметрыОповещения
		);
		ИнициализироватьКонтекстЭДО(Оповещение);
		Возврат;
	КонецЕсли;
	
	Если КонтекстЭДОКлиент = Неопределено Тогда
		ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстОшибкиИнициализацииКонтекстаЭДО);
		Возврат;
	КонецЕсли;
	
	КонтекстЭДОКлиент.ПоказатьКритическиеОшибкиПоСсылке(Ссылка);
	
КонецПроцедуры

&НаСервере
Процедура ОткрытьНаНужнойСтранице(Параметры)
	
	// Если в качестве параметра открытия формы 1С-Отчетность была передана закладка, то открываем на этой закладке,
	// инчае открываем на той, на которой форму закрыли в последний раз,
	// либо на закладке Отчеты, если форма открывается впервые
	Если Параметры.Свойство("ВидУведомления") И ЗначениеЗаполнено(Параметры.ВидУведомления) Тогда
		
		Элементы.Разделы.ТекущаяСтраница = Элементы.СтраницаУведомления;
	
	ИначеЕсли Параметры.Свойство("Раздел") Тогда
		
		Элементы.Разделы.ТекущаяСтраница = Элементы["Страница" + ИмяСтраницы(Параметры.Раздел)];
			
	Иначе
		
		// Восстанавливаем запомненную страницу
		ТекСтраница = ХранилищеНастроекДанныхФорм.Загрузить(ЭтотОбъект.ИмяФормы, "Форма1СОтчетность_ТекущаяСтраницаРазделов");
		Если ТекСтраница <> Неопределено И Элементы.Разделы.ПодчиненныеЭлементы.Найти(ТекСтраница) <> Неопределено Тогда
			Элементы.Разделы.ТекущаяСтраница = Элементы[ТекСтраница];
		Иначе
			Элементы.Разделы.ТекущаяСтраница = Элементы.СтраницаОтчеты;
		КонецЕсли;
		
	КонецЕсли;

	КалендарьОтчетностиБРОКлиентСерверПереопределяемый.ПриСменеСтраницыРазделаОтчетности(ЭтотОбъект);
	
КонецПроцедуры

&НаСервере
Процедура НазначитьВидОтчетаИзПараметра(Параметры)
	
	Если Параметры.Свойство("ВидОтчета") Тогда
		
		ПараметрВидОтчета = СокрЛП(Параметры.ВидОтчета);
		
		Если ЗначениеЗаполнено(ПараметрВидОтчета) Тогда
			
			МассивВидовОтчетов = ПолучитьСписокОтчетовИзРегистраСведений();
			Элементы.ОтборВидОтчета.СписокВыбора.ЗагрузитьЗначения(МассивВидовОтчетов);
			// Тип реквизита может быть переопределен при необходимости (при переопределении формы выбора вида отчета).
			ВидОтчета = ПараметрВидОтчета;
			
		КонецЕсли;
		
	КонецЕсли;
	
КонецПроцедуры

&НаСервере
Процедура НазначитьВидУведомленияИзПараметра(Параметры)
	
	Если Параметры.Свойство("ВидУведомления") И ЗначениеЗаполнено(Параметры.ВидУведомления) Тогда
		
		ВидУведомления = Параметры.ВидУведомления;
		ПредставлениеВидаУведомления = СокрЛП(Параметры.ВидУведомления);
		
	КонецЕсли;
	
КонецПроцедуры

&НаСервере
Процедура СделатьВсеГиперссылкиНеактивными()
	
	Для каждого Раздел Из Разделы(ЭтотОбъект) Цикл
		
		Гиперссылка = Элементы["Гиперссылка" + Раздел];
		
		Гиперссылка.ЦветФона		= Серый;
		Гиперссылка.Гиперссылка		= Истина;
		Гиперссылка.ЦветТекста		= Черный;
	
	КонецЦикла; 
	
КонецПроцедуры

&НаКлиенте
Процедура СоздатьНовоеУведомление_Предварительное(Результат, ПараметрыОповещения) Экспорт
	
	СоздатьНовоеУведомление();
	
КонецПроцедуры

&НаКлиенте
Процедура СоздатьНовоеЗаявлениеПФРПоПредставлениюВидаУведомления(ПредставлениеВидаУведомления)
	
	Если КонтекстЭДОКлиент = Неопределено И КонтекстУжеПодключался <> Истина Тогда
					
		Оповещение = Новый ОписаниеОповещения(
			"СоздатьНовоеУведомление_Предварительное", 
			ЭтотОбъект);
			
		ИнициализироватьКонтекстЭДО(Оповещение);
		Возврат;
		
	КонецЕсли;
		
	ЗаявлениеПФР = КонтекстЭДОКлиент.СоздатьЗаявлениеВПФР(
		ПредставлениеВидаУведомления, 
		Организация);
		
	ПоказатьЗначение(, ЗаявлениеПФР);
	
КонецПроцедуры

&НаКлиенте
Функция ЭтоЗаявлениеПФР(ВидУведомления)
	
	Тип  = Тип("ДокументСсылка.ЗаявленияПоЭлДокументооборотуСПФР");
	Типы = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Тип);
	Возврат ВидУведомления = Новый ОписаниеТипов(Типы);
			
КонецФункции

&НаКлиенте
Процедура СоздатьНовоеУведомление()
	
	ПараметрыФормы = Новый Структура;
	ПараметрыФормы.Вставить("Организация", Организация);
	ПараметрыФормы.Вставить("Создание_УведомлениеОСпецрежимахНалогообложения", Истина);
	ПараметрыФормы.Вставить("УчитыватьУведомленияНеВходящиеВБРО", Истина);
	ПараметрыФормы.Вставить("UIDФорма1СОтчетность", УникальныйИдентификатор);
	
	Если ЗначениеЗаполнено(ПредставлениеВидаУведомления) И ЗначениеЗаполнено(ВидУведомления) Тогда
		
		Если ЭтоЗаявлениеПФР(ВидУведомления) Тогда
			СоздатьНовоеЗаявлениеПФРПоПредставлениюВидаУведомления(ПредставлениеВидаУведомления);
			Возврат;
			
		ИначеЕсли ТипЗнч(ВидУведомления) = Тип("ОписаниеТипов")
			И ВидУведомления.СодержитТип(Тип("СправочникСсылка.МашиночитаемыеДоверенностиРаспределенныйРеестр"))
			И ВидУведомления.Типы().Количество() = 1 Тогда
			
			ОткрытьФорму(
				"Справочник.МашиночитаемыеДоверенностиРаспределенныйРеестр.ФормаОбъекта",
				Новый Структура("Организация", Организация),
				ЭтотОбъект);
			Возврат;
			
		ИначеЕсли ТипЗнч(ВидУведомления) = Тип("ОписаниеТипов")
			И ВидУведомления.СодержитТип(Тип("СправочникСсылка.МашиночитаемыеДоверенностиФНС"))
			И ВидУведомления.Типы().Количество() = 1 Тогда
			
			ОткрытьФорму(
				"Справочник.МашиночитаемыеДоверенностиФНС.ФормаОбъекта",
				Новый Структура("Организация", Организация),
				ЭтотОбъект);
			Возврат;
			
		ИначеЕсли ТипЗнч(ВидУведомления) = Тип("ОписаниеТипов")
			И ВидУведомления.СодержитТип(Тип("СправочникСсылка.ЗаявленияОбОтзывеМЧДФНС"))
			И ВидУведомления.Типы().Количество() = 1 Тогда
			
			ОткрытьФорму(
				"Справочник.ЗаявленияОбОтзывеМЧДФНС.ФормаОбъекта",
				Новый Структура("Организация", Организация),
				ЭтотОбъект);
			Возврат;
			
		ИначеЕсли ТипЗнч(ВидУведомления) = Тип("ОписаниеТипов")
			И ВидУведомления.СодержитТип(Тип("СправочникСсылка.МашиночитаемыеДоверенностиФСС"))
			И ВидУведомления.Типы().Количество() = 1 Тогда
			
			ОткрытьФорму(
				"Справочник.МашиночитаемыеДоверенностиФСС.ФормаОбъекта",
				Новый Структура("Организация", Организация),
				ЭтотОбъект);
			Возврат;
			
		ИначеЕсли ТипЗнч(ВидУведомления) = Тип("ОписаниеТипов")
			И ВидУведомления.СодержитТип(Тип("ДокументСсылка.УведомлениеОПредоставленииПолномочийПредставителю"))
			И ВидУведомления.Типы().Количество() = 1 Тогда
			
			ОткрытьФорму(
				"Документ.УведомлениеОПредоставленииПолномочийПредставителю.ФормаОбъекта",
				Новый Структура("Организация", Организация),
				ЭтотОбъект);
			Возврат;
			
		ИначеЕсли ТипЗнч(ВидУведомления) = Тип("ОписаниеТипов")
			И ВидУведомления.СодержитТип(Тип("ДокументСсылка.УведомлениеОПрекращенииПолномочийПредставителя"))
			И ВидУведомления.Типы().Количество() = 1 Тогда
			
			ОткрытьФорму(
				"Документ.УведомлениеОПрекращенииПолномочийПредставителя.ФормаОбъекта",
				Новый Структура("Организация", Организация),
				ЭтотОбъект);
			Возврат;
			
		ИначеЕсли ЗначениеЗаполнено(ИмяТипаСправочникаМашиночитаемыеДоверенностиЦБ)
			И ТипЗнч(ВидУведомления) = Тип("ОписаниеТипов")
			И ВидУведомления.СодержитТип(Тип("СправочникСсылка." + ИмяТипаСправочникаМашиночитаемыеДоверенностиЦБ))
			И ВидУведомления.Типы().Количество() = 1 Тогда
			
			ОткрытьФорму(
				"Справочник." + ИмяТипаСправочникаМашиночитаемыеДоверенностиЦБ + ".ФормаОбъекта",
				Новый Структура("Организация", Организация),
				ЭтотОбъект);
			Возврат;
			
		ИначеЕсли ТипЗнч(ВидУведомления) = Тип("ОписаниеТипов")
			И ВидУведомления.СодержитТип(Тип("ДокументСсылка.УведомлениеОПолучателеДокументов"))
			И ВидУведомления.Типы().Количество() = 1 Тогда
			
			ОткрытьФорму(
				"Документ.УведомлениеОПолучателеДокументов.ФормаОбъекта",
				Новый Структура("Организация", Организация),
				ЭтотОбъект);
			Возврат;
			
		ИначеЕсли ЗначениеЗаполнено(ИмяТипаСправочникаМашиночитаемыеДоверенности)
			И ТипЗнч(ВидУведомления) = Тип("ОписаниеТипов")
			И ВидУведомления.СодержитТип(Тип("СправочникСсылка." + ИмяТипаСправочникаМашиночитаемыеДоверенности))
			И ВидУведомления.Типы().Количество() = 1 Тогда
			
			МассивДоверителей = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Организация);
			ОткрытьФорму(
				"Справочник." + ИмяТипаСправочникаМашиночитаемыеДоверенности + ".ФормаОбъекта",
				Новый Структура("Организация, Доверители", Организация, МассивДоверителей),
				ЭтотОбъект);
			Возврат;
			
		Иначе
			ПараметрыФормы.Вставить("ВидУведомления", ВидУведомления);
		КонецЕсли;
	КонецЕсли;
	
	ОткрытьФорму("Документ.УведомлениеОСпецрежимахНалогообложения.Форма.ФормаВыбораВидаСообщения", ПараметрыФормы,
		ЭтотОбъект,,,,, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
	
КонецПроцедуры

&НаКлиенте
Процедура СоздатьНовыйЗапросНаВыпискуИзЕГРЮЛ_ЕГРИППредварительное(Результат, ПараметрыОповещения) Экспорт
	
	СоздатьНовыйЗапросНаВыпискуИзЕГРЮЛ_ЕГРИП();
	
КонецПроцедуры

&НаКлиенте
Процедура СоздатьНовыйЗапросНаВыпискуИзЕГРЮЛ_ЕГРИП()
	
	Если КонтекстЭДОКлиент = Неопределено И КонтекстУжеПодключался <> Истина Тогда
		Оповещение = Новый ОписаниеОповещения(
			"СоздатьНовыйЗапросНаВыпискуИзЕГРЮЛ_ЕГРИППредварительное", 
			ЭтотОбъект
		);
		ИнициализироватьКонтекстЭДО(Оповещение);
		Возврат;
	КонецЕсли;
	
	Если КонтекстЭДОКлиент = Неопределено Тогда
		ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстОшибкиИнициализацииКонтекстаЭДО);
		Возврат;
	КонецЕсли;
	
	ПараметрыФормы = Новый Структура;
	ПараметрыФормы.Вставить("ЗначенияЗаполнения", Новый Структура("Организация", Организация));
	
	ОткрытьФорму("Документ.ЗапросНаВыпискуИзЕГРЮЛ_ЕГРИП.Форма.ФормаДокумента", ПараметрыФормы, ЭтотОбъект);
	
КонецПроцедуры

&НаКлиенте
Процедура СоздатьНовоеПисьмо()
	
	СписокВидовПисьма = Новый СписокЗначений;
	СписокВидовПисьма.Добавить(НСтр("ru = 'Письмо'"));
	СписокВидовПисьма.Добавить(НСтр("ru = 'Ответ на требование'"));
	СписокВидовПисьма.Добавить(НСтр("ru = 'Ответ на требование СФР (бывш. ФСС)'"));
	
	ОписаниеОповещения = Новый ОписаниеОповещения("ЗавершениеВыбораВидаПисьма", ЭтотОбъект);
	СписокВидовПисьма.ПоказатьВыборЭлемента(ОписаниеОповещения, НСтр("ru = 'Выберите вид письма'"));
	
КонецПроцедуры

&НаКлиенте
Процедура ЗавершениеВыбораВидаПисьма(Результат, ДополнительныеПараметры) Экспорт
	
	Если Результат = Неопределено Тогда
		// Значит пользователь нажал Отмена
	ИначеЕсли Результат.Значение = НСтр("ru = 'Письмо'") Тогда
		 СоздатьНовоеИсходящееПисьмо();
	ИначеЕсли Результат.Значение = НСтр("ru = 'Ответ на требование'") Тогда 
		 СоздатьОтветНаТребование();
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура СоздатьНовоеИсходящееПисьмо()
	
	ПараметрыФормы = Новый Структура;
	ПараметрыФормы.Вставить("ЗначенияЗаполнения", Новый Структура("Отправитель", Организация));
	
	ОткрытьФорму("Справочник.ПерепискаСКонтролирующимиОрганами.ФормаОбъекта", ПараметрыФормы, ЭтотОбъект);
	
КонецПроцедуры

&НаКлиенте
Процедура СоздатьНовуюСверку()
	
	СписокВыбораВидаСверки = Новый СписокЗначений;
	
	СписокВыбораВидаСверки.Добавить(ПредопределенноеЗначение("Перечисление.ВидыУслугПриИОН.ПредставлениеАктовСверкиРасчетов"));
	СписокВыбораВидаСверки.Добавить(ПредопределенноеЗначение("Перечисление.ВидыУслугПриИОН.ПредставлениеВыпискиОперацийИзКарточкиРасчетыСБюджетом"));
	СписокВыбораВидаСверки.Добавить(ПредопределенноеЗначение("Перечисление.ВидыУслугПриИОН.ПредставлениеПеречняБухгалтерскойИНалоговойОтчетности"));
	СписокВыбораВидаСверки.Добавить(ПредопределенноеЗначение("Перечисление.ВидыУслугПриИОН.ПредставлениеСправкиОСостоянииРасчетовСБюджетом"));
	СписокВыбораВидаСверки.Добавить(ПредопределенноеЗначение("Перечисление.ВидыУслугПриИОН.ПредставлениеСправкиОбИсполненииОбязанностейПоУплате"));
	СписокВыбораВидаСверки.Добавить(ПредопределенноеЗначение("Перечисление.ВидыУслугПриИОС.СверкаФИОиСНИЛС"));
	СписокВыбораВидаСверки.Добавить(ПредопределенноеЗначение("Перечисление.ВидыУслугПриИОС.СправкаОСостоянииРасчетов"));
	СписокВыбораВидаСверки.Добавить("ЗаявлениеНаФормированиеСправкиОРасчетах", "Справка о расчетах с СФР (бывш. ФСС)");

	ОписаниеОповещения = Новый ОписаниеОповещения("ЗавершениеВыбораВидаСверки", ЭтотОбъект);
	
	СписокВыбораВидаСверки.ПоказатьВыборЭлемента(ОписаниеОповещения, НСтр("ru = 'Выберите вид сверки'"));
	
КонецПроцедуры

&НаКлиенте
Процедура ЗавершениеВыбораВидаСверки(Результат, ДополнительныеПараметры) Экспорт
	
	Если Результат <> Неопределено Тогда
		СоздатьСверку(Результат.Значение);
	КонецЕсли;
	
КонецПроцедуры

&НаСервере
Процедура УправлениеЭУВРежимеСервиса()
	
	Если ОбщегоНазначения.РазделениеВключено() Тогда 
		Элементы.НадписьИнформацияОбОбновлениях.Видимость = Ложь;
	КонецЕсли;
	
КонецПроцедуры

&НаСервере
Процедура ОпределитьПоказыватьЛиПредложениеНаПодключение()
	
	ОпределитьДоступностьЭДО();
	
	ЕстьОтправленныеЗаявления = ОбработкаЗаявленийАбонентаВызовСервера.ЕстьОтправленныеИлиОдобренныеЗаявления();
	
	ОтказалисьОтПредложения = ХранилищеОбщихНастроек.Загрузить("Обработка.ОбщиеОбъектыРеглОтчетности", "НеПоказыватьПредложениеОформитьЗаявлениеНаПодключение") = Истина;
	
	ПоказатьПредложениеОформитьЗаявлениеНаПодключение = 
		НЕ ЭлектронныйДокументооборотДоступен
		И НЕ ОтказалисьОтПредложения
		И НЕ ЕстьОтправленныеЗаявления
		И Используется1СОтчетность
		И НЕ ЭтоРежимВыбора;
		
КонецПроцедуры

&НаСервере
Процедура ОпределитьДоступностьЭДО()
	
	КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
	Если КонтекстЭДОСервер <> Неопределено Тогда
		ЭлектронныйДокументооборотДоступен = КонтекстЭДОСервер.ХотяБыОднаОрганизацияИспользуетДокументооборот();
	КонецЕсли;
	
	ЕстьОтправленныеЗаявления = ОбработкаЗаявленийАбонентаВызовСервера.ЕстьОтправленныеИлиОдобренныеЗаявления();
	
	НеОтказалисьОтПредложения = ХранилищеОбщихНастроек.Загрузить("Обработка.ОбщиеОбъектыРеглОтчетности", "НеПоказыватьПредложениеОформитьЗаявлениеНаПодключение") <> Истина;
	
	ПоказатьПредложениеОформитьЗаявлениеНаПодключение = 
		НЕ ЭлектронныйДокументооборотДоступен
		И НеОтказалисьОтПредложения
		И НЕ ЕстьОтправленныеЗаявления;
		
КонецПроцедуры

&НаСервере
Функция ПометитьПрочтенными(ВыделенныеСтроки = Неопределено)
	
	ВсеВыделенныеОбъекты 	= Новый Массив;
	СтавшиеПрочтенными 		= Новый Массив;
	СтавшиеНепрочтенными 	= Новый Массив;
	
	ТекущаяСтраница = ТекущаяСтраница(ЭтотОбъект);
	ТекущаяТаблица  = ТекущаяТаблица(ЭтотОбъект);
	
	Если ВыделенныеСтроки = Неопределено Тогда
		Для каждого Строка Из ТекущаяТаблица.ВыделенныеСтроки Цикл
			Если ТекущаяСтраница = Перечисления.СтраницыЖурналаОтчетность.Новое Тогда
				СвойстваСтроки = Новое.НайтиПоИдентификатору(Строка);
				ВсеВыделенныеОбъекты.Добавить(СвойстваСтроки.Ссылка);
			Иначе
				ВсеВыделенныеОбъекты.Добавить(Строка.Ссылка);
			КонецЕсли;
		КонецЦикла;
	Иначе
		Для каждого Строка Из ВыделенныеСтроки Цикл
			ВсеВыделенныеОбъекты.Добавить(Строка.Ссылка);
		КонецЦикла;
	КонецЕсли;
	
	Если ТекущаяСтраница = Перечисления.СтраницыЖурналаОтчетность.Входящие Тогда
		
		Запрос = Новый Запрос;
		Запрос.Текст = 
		"ВЫБРАТЬ
		|	ЖурналОтправокВКонтролирующиеОрганы.Ссылка КАК Ссылка,
		|	ЖурналОтправокВКонтролирующиеОрганы.Непрочтенное КАК Непрочтенное
		|ИЗ
		|	РегистрСведений.ЖурналОтправокВКонтролирующиеОрганы КАК ЖурналОтправокВКонтролирующиеОрганы
		|ГДЕ
		|	ЖурналОтправокВКонтролирующиеОрганы.Ссылка В(&Ссылки)
		|
		|ОБЪЕДИНИТЬ ВСЕ
		|
		|ВЫБРАТЬ
		|	ЖурналНовыхСобытий.Ссылка,
		|	НЕ ЖурналНовыхСобытий.Просмотрено
		|ИЗ
		|	РегистрСведений.ЖурналНовыхСобытий КАК ЖурналНовыхСобытий
		|ГДЕ
		|	ЖурналНовыхСобытий.Ссылка В(&Ссылки)";
		
		Запрос.УстановитьПараметр("Ссылки", ВсеВыделенныеОбъекты);
		
		ВходящиеПисьма = Запрос.Выполнить().Выгрузить();
		ЕстьНепрочтенные 	= ВходящиеПисьма.Найти(Истина, 	"Непрочтенное") <> Неопределено;
		ЕстьПрочтенные 		= ВходящиеПисьма.Найти(Ложь, 	"Непрочтенное") <> Неопределено;
		ВсеНепрочтенные  	= НЕ ЕстьПрочтенные;
		
		Для каждого ВходящийОбъект Из ВходящиеПисьма Цикл
			
			Если ЕстьНепрочтенные И ЕстьПрочтенные Тогда
				
				Если ВходящийОбъект.Непрочтенное Тогда
					
					СтавшиеПрочтенными.Добавить(ВходящийОбъект.Ссылка);
			
					ЭлектронныйДокументооборотСКонтролирующимиОрганами.УстановитьНепрочтенность(
						ВходящийОбъект.Ссылка, 
						Ложь);
						
				КонецЕсли;
					
			Иначе
				
				СтавшиеПрочтенными.Добавить(ВходящийОбъект.Ссылка);
				
				Непрочтенное = НЕ ВходящийОбъект.Непрочтенное;
				
				Если Непрочтенное Тогда
					СтавшиеНепрочтенными.Добавить(ВходящийОбъект.Ссылка);
				Иначе
					СтавшиеПрочтенными.Добавить(ВходящийОбъект.Ссылка);
				КонецЕсли;
				
				ЭлектронныйДокументооборотСКонтролирующимиОрганами.УстановитьНепрочтенность(
					ВходящийОбъект.Ссылка, 
					Непрочтенное);
					
			КонецЕсли;
			
		КонецЦикла;
		
	Иначе
		
		Запрос = Новый Запрос;
		Если ТекущаяСтраница = Перечисления.СтраницыЖурналаОтчетность.Отчеты Тогда
		
			Запрос.Текст = 
			"ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
			|	ЖурналОтчетовСтатусы.Ссылка,
			|	ЖурналОтчетовСтатусы.Непрочтенное
			|ИЗ
			|	РегистрСведений.ЖурналОтчетовСтатусы КАК ЖурналОтчетовСтатусы
			|ГДЕ
			|	ЖурналОтчетовСтатусы.Ссылка В(&Ссылки)";
			
		ИначеЕсли ТекущаяСтраница = Перечисления.СтраницыЖурналаОтчетность.Новое Тогда
			
			Запрос.Текст = 
			"ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
			|	ЖурналНовыхСобытий.Ссылка,
			|	НЕ ЖурналНовыхСобытий.Просмотрено КАК Непрочтенное
			|ИЗ
			|	РегистрСведений.ЖурналНовыхСобытий КАК ЖурналНовыхСобытий
			|ГДЕ
			|	ЖурналНовыхСобытий.Ссылка В(&Ссылки)";
			
		Иначе
			
			Запрос.Текст = 
			"ВЫБРАТЬ
			|	ЖурналОтправокВКонтролирующиеОрганы.Ссылка,
			|	ЖурналОтправокВКонтролирующиеОрганы.Непрочтенное
			|ИЗ
			|	РегистрСведений.ЖурналОтправокВКонтролирующиеОрганы КАК ЖурналОтправокВКонтролирующиеОрганы
			|ГДЕ
			|	ЖурналОтправокВКонтролирующиеОрганы.Ссылка В(&Ссылки)";

		КонецЕсли;
	
		Запрос.УстановитьПараметр("Ссылки", ВсеВыделенныеОбъекты);
		
		Выборка = Запрос.Выполнить().Выбрать();
		Пока Выборка.Следующий() Цикл
			
			Если Выборка.Непрочтенное Тогда
				
				СтавшиеПрочтенными.Добавить(Выборка.Ссылка);
				
				ЭлектронныйДокументооборотСКонтролирующимиОрганами.УстановитьНепрочтенность(
					Выборка.Ссылка, 
					Ложь);
					
			КонецЕсли;
			
		КонецЦикла;
			
	КонецЕсли;
	
	Результат = Новый Структура;
	Результат.Вставить("ВсеВыделенныеОбъекты", 		ВсеВыделенныеОбъекты);
	Результат.Вставить("СтавшиеПрочтенными", 		СтавшиеПрочтенными);
	Результат.Вставить("СтавшиеНепрочтенными", 		СтавшиеНепрочтенными);

	Возврат Результат;
	
КонецФункции

&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьВидимостьПанелиОшибокОбновления(Форма)

	Форма.Элементы.ОшибкиОбновления.Видимость = ЭтоАдресВременногоХранилища(Форма.АдресСведенийПоОшибкам);

КонецПроцедуры

&НаКлиенте
Процедура ОтчетыВыборЗавершение(Результат, ДополнительныеПараметры) Экспорт
	
	РегламентированнаяОтчетностьКлиент.ОповеститьСписокОтчетовОбИзмененииИндексаКартинки(
	ДополнительныеПараметры);
	
КонецПроцедуры

&НаКлиенте
Асинх Процедура ОткрытьПрисоединенныеФайлы()
	ТекущиеДанные = Неопределено;
	ТекущаяСтраница = ТекущаяСтраница(ЭтотОбъект);
	
	Если ТекущаяСтраница = ПредопределенноеЗначение("Перечисление.СтраницыЖурналаОтчетность.Отчеты") Тогда
		
		ТекущиеДанные = Элементы.Отчеты.ТекущиеДанные;
		Если ТекущиеДанные = Неопределено Тогда
			Возврат;
		КонецЕсли;
		СсылкаНаОбъект 		= ТекущиеДанные.РегламентированныйОтчет;
		НаименованиеОтчета 	= ТекущиеДанные.НаименованиеОтчета;
		
		СвойстваВидаОтправляемыхДокументов =
			ЭлектронныйДокументооборотСКонтролирующимиОрганамиВызовСервера.СвойстваВидаОтправляемыхДокументов(СсылкаНаОбъект);
		ТипПолучателя = ?(СвойстваВидаОтправляемыхДокументов <> Неопределено
			И СвойстваВидаОтправляемыхДокументов.Свойство("ТипПолучателя"),
			СвойстваВидаОтправляемыхДокументов.ТипПолучателя, Неопределено);
		ВозможноПрисоединениеФайловКОбъекту = ?(СвойстваВидаОтправляемыхДокументов <> Неопределено
			И СвойстваВидаОтправляемыхДокументов.Свойство("ВозможноПрисоединениеФайловКОбъекту"),
			СвойстваВидаОтправляемыхДокументов.ВозможноПрисоединениеФайловКОбъекту, Ложь);
		
	ИначеЕсли ТекущаяСтраница = ПредопределенноеЗначение("Перечисление.СтраницыЖурналаОтчетность.Уведомления")
		ИЛИ ТекущаяСтраница = ПредопределенноеЗначение("Перечисление.СтраницыЖурналаОтчетность.ЕГРЮЛ") Тогда
		
		ТекущиеДанные = ТекущаяТаблица(ЭтотОбъект).ТекущиеДанные;
			
		Если ТекущиеДанные = Неопределено Тогда
			Возврат;
		КонецЕсли;
		СсылкаНаОбъект 		= ТекущиеДанные.Ссылка;
		НаименованиеОтчета 	= ТекущиеДанные.Наименование;
		
		Если ТипЗнч(СсылкаНаОбъект) = Тип("ДокументСсылка.ЗапросНаВыпискуИзЕГРЮЛ_ЕГРИП") Тогда
			ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru = 'Работа с присоединенными файлами для выписки не предусмотрена'"));
			Возврат;
		КонецЕсли;
		
		ВозможноПрисоединениеФайловКОбъекту =
			РегламентированнаяОтчетностьВызовСервера.ВозможноПрисоединениеФайловКОбъекту(СсылкаНаОбъект);
		
	КонецЕсли;
	
	Если ТекущиеДанные <> Неопределено Тогда
		Если ВозможноПрисоединениеФайловКОбъекту Тогда
			ПараметрыПроверки = Новый Структура;
			ПараметрыПроверки.Вставить("Владелец", 				СсылкаНаОбъект);
			ПараметрыПроверки.Вставить("ТекстПредупреждения", 	"");
			ПараметрыПроверки.Вставить("СтандартнаяОбработка", 	Истина);
			РегламентированнаяОтчетностьКлиент.ПроверитьВладельцаПриОткрытииПрисоединенныхФайловИзСпискаОтчетов(
				ПараметрыПроверки);
		КонецЕсли;
		
		ДопПараметры = Новый Структура();
		ДопПараметры.Вставить("СсылкаНаОбъект", 	СсылкаНаОбъект);
		ДопПараметры.Вставить("ОрганизацияОтчета", 	ТекущиеДанные.Организация);
		ДопПараметры.Вставить("НаименованиеОтчета", НаименованиеОтчета);
		
		Если ВозможноПрисоединениеФайловКОбъекту И ПараметрыПроверки.СтандартнаяОбработка Тогда
			Оповещение = Новый ОписаниеОповещения("ОткрытьПрисоединенныеФайлыПослеПредупрежденияПоОтправке",
				ЭтотОбъект, ДопПараметры);
			
			Если ТекущаяСтраница = ПредопределенноеЗначение("Перечисление.СтраницыЖурналаОтчетность.Отчеты") Тогда
				Если ТипПолучателя = ПредопределенноеЗначение("Перечисление.ТипыКонтролирующихОрганов.ФНС") Тогда
					Ждать ПредупреждениеАсинх(НСтр("ru = 'Обратите внимание, присоединенные файлы не отправляются при отправке отчета.
						|
						|Отправить дополнительные файлы для отчета возможно в 1С-Отчетности, разделе ""Письма"", воспользовавшись меню ""Создать"" - ""Пакет с доп. документами для ФНС"".'"));
				Иначе
					Ждать ПредупреждениеАсинх(НСтр("ru = 'Обратите внимание, присоединенные файлы не отправляются при отправке отчета'"));
				КонецЕсли;
			Иначе
				Ждать ПредупреждениеАсинх(НСтр("ru = 'Обратите внимание, присоединенные файлы не отправляются при отправке уведомления.
					|
					|Отправить дополнительные файлы для уведомления ФНС возможно в 1С-Отчетности, разделе ""Письма"", воспользовавшись меню ""Создать"" - ""Пакет с доп. документами для ФНС"".'"));
			КонецЕсли;
		КонецЕсли;
		ОткрытьПрисоединенныеФайлыПослеПредупрежденияПоОтправке(ДопПараметры);
	КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура ОткрытьПрисоединенныеФайлыПослеПредупрежденияПоОтправке(ДопПараметры = Неопределено) Экспорт
	
	СсылкаНаОбъект 		= ДопПараметры.СсылкаНаОбъект;
	ОрганизацияОтчета 	= ДопПараметры.ОрганизацияОтчета;
	НаименованиеОтчета 	= ДопПараметры.НаименованиеОтчета;
	
	ЗаголовокФормы = СтрШаблон(
		НСтр("ru = 'Присоединенные файлы: %1'"),
		НаименованиеОтчета);
	
	ДопПараметры = Новый Структура;
	ДопПараметры.Вставить("ВладелецФайла", 	СсылкаНаОбъект);
	ДопПараметры.Вставить("Организация", 	ОрганизацияОтчета);
	ДопПараметры.Вставить("ТолькоПросмотр", Ложь);
	ДопПараметры.Вставить("ЗаголовокФормы", ЗаголовокФормы);
	
	РегламентированнаяОтчетностьКлиент.ОткрытьФормуПрисоединенныеФайлы(, ДопПараметры);
	
КонецПроцедуры

&НаКлиенте
Процедура ДействияПослеЗавершенияИндексированияОбъектов()
	
	ТекущаяТаблица(ЭтотОбъект).Обновить();
	Если ЗаполнитьДеревоНовое() Тогда
		ПриПереключенииРаздела(Элементы.ГиперссылкаНовое);
		Оповестить("Получены новые сообщения 1С-Отчетности", , ЭтотОбъект);
	КонецЕсли;
	
	ОбновитьКоличествоНепрочтенныхОбъектов(ЭтотОбъект);
	
КонецПроцедуры

&НаСервереБезКонтекста
Функция ЗаголовкиГруппыНастройки(Организация)
	
	ЗаголовокГиперссылкиЗаявления = ЭлектронныйДокументооборотСКонтролирующимиОрганамиВызовСервера.ЗаголовокГиперссылкиЗаявления(Организация);
	
	ЗаголовокГиперссылкиСпискаЗаявлений = НСтр("ru = 'Список заявлений'");
	
	Если ЗначениеЗаполнено(Организация) Тогда
		КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
		Если КонтекстЭДОСервер <> Неопределено И КонтекстЭДОСервер.ПоддерживаетсяВторичноеЗаявление(Организация) Тогда
			ЗаголовокГиперссылкиСпискаЗаявлений = НСтр("ru = 'Список'");
		КонецЕсли;
	КонецЕсли;
	
	Результат = Новый Структура;
	Результат.Вставить("ЗаголовокГиперссылкиЗаявления", 		ЗаголовокГиперссылкиЗаявления);
	Результат.Вставить("ЗаголовокГиперссылкиСпискаЗаявлений", 	ЗаголовокГиперссылкиСпискаЗаявлений);
	Возврат Результат;
	
КонецФункции

#Область ДлительныеОперацииАЛКО

////////////////////////////////////////////////////////////////////////////////
//
// Механизм длительных операций отчетов подсистемы ОтчетностьПоАлкогольнойПродукции
//		  
////////////////////////////////////////////////////////////////////////////////

&НаКлиенте
Функция ОбработаноДействиеДляАлкоОтчета(ДокументСсылкаАлкоОтчет, ОписаниеОтчета, 
										Действие, ВидПечати = Неопределено)

	Возврат РегламентированнаяОтчетностьКлиент.ОбработаноДействиеДляАлкоОтчета(ЭтотОбъект, ДокументСсылкаАлкоОтчет, ОписаниеОтчета, 
				Действие, ВидПечати);
	
КонецФункции
 
&НаКлиенте
Процедура Подключаемый_ПроверитьВыполнениеДлительнойОперацииНаКлиенте()
	
	РегламентированнаяОтчетностьКлиент.Подключаемый_ПроверитьВыполнениеДлительнойАлкоОперацииНаКлиенте(ЭтотОбъект);
	
КонецПроцедуры

// Конец области ДлительныеОперацииАЛКО.
#КонецОбласти

#Область РучнойВводСтатусовОтправки

&НаКлиенте
Процедура ВыбратьСтатусОтправкиИзСписка(Элемент)
	
	Если ТекущаяСтраница(ЭтотОбъект) = ПредопределенноеЗначение("Перечисление.СтраницыЖурналаОтчетность.Уведомления")
		ИЛИ ТекущаяСтраница(ЭтотОбъект) = ПредопределенноеЗначение("Перечисление.СтраницыЖурналаОтчетность.ЕГРЮЛ") Тогда
		ТекСтатус = СокрЛП(Элемент.ТекущиеДанные.СтатусОтправки);
		СсылкаНаОбъект = Элемент.ТекущиеДанные.Ссылка;
		ЭтоОтчет = Ложь;
	Иначе
		ТекСтатус = СокрЛП(Элемент.ТекущиеДанные.Статус);
		СсылкаНаОбъект = Элемент.ТекущиеДанные.РегламентированныйОтчет;
		ЭтоОтчет = Истина;
	КонецЕсли;
	
	РегламентированнаяОтчетностьКлиент.ВыбратьСтатусОтправкиИзСписка(Элемент.ТекущиеДанные, ТекСтатус, СсылкаНаОбъект, ЭтоОтчет, ЭтотОбъект);
	
КонецПроцедуры

#КонецОбласти

#Область НастройкиПравОбновления

&НаСервере
Процедура УстановитьВидимостьКнопкиНастроекПрав()
	
	ЭлементФормы = Элементы.НастройкиОбновления;
	ЭлементФормы.Видимость = Ложь;
	
	Если УстановленыОграниченияПрав <> 0 Тогда
		ЭлементФормы.Видимость = Истина;
		Если УстановленыОграниченияПрав > 0 Тогда
			ЭлементФормы.Картинка = БиблиотекаКартинок.ИзменитьНастройкиВыделено;
		Иначе
			ЭлементФормы.Картинка = БиблиотекаКартинок.ИзменитьНастройки;
		КонецЕсли;
	КонецЕсли;
	
	ДобавитьОтдельнуюКнопкуОбменаДляСЭДО = ПолучитьЗначениеДобавитьОтдельнуюКнопкуОбменаДляСЭДО();
	Элементы.ОбновитьДанныеСЭДО.Видимость = ДобавитьОтдельнуюКнопкуОбменаДляСЭДО;
	
КонецПроцедуры	

&НаСервереБезКонтекста
Функция ПроверитьДоступностьНастроекОграниченияПравНаОбмен(ЭлектронныйДокументооборотДоступен)
	
	Результат = 0;
	КонтекстСервера = ДокументооборотСКО.ПолучитьОбработкуЭДО();
	Если КонтекстСервера <> Неопределено И ЭлектронныйДокументооборотДоступен Тогда
		ВсеОрганизации = КонтекстСервера.ОрганизацииСОграничениемПрав(Истина);
		ВсегоОрганизаций = ВсеОрганизации.Количество();
		ВсеОрганизации = КонтекстСервера.ВыбранныеОрганизацииДляОбмена();
		Результат = ВсеОрганизации.Количество();
		Результат = ?(Результат = ВсегоОрганизаций, -1, Макс(1, Результат));
	КонецЕсли;
	
	Возврат Результат;
	
КонецФункции	

&НаКлиенте
Процедура ОбновитьДанныеПродолжить(ВыбранныеОрганизации)
	
	НомерОбъекта = 0;
	АдресСведенийПоОшибкам = "";
	УстановитьВидимостьПанелиОшибокОбновления(ЭтотОбъект);
	
	ПараметрыРаботыКлиентаПриЗапуске = СтандартныеПодсистемыКлиент.ПараметрыРаботыКлиента();
	ЕстьПравоНаДО = ПараметрыРаботыКлиентаПриЗапуске.ДокументооборотСКонтролирующимиОрганами_ЕстьПравоНаДОсКОПриЗапуске;
	Если ЕстьПравоНаДО И ПараметрыПриложения["БРО.БольшеНеПоказыватьСообщенияТребующиеРасшифровки"] <> Истина Тогда
		// исключение показа диалога расшифровки при обмене
		ДокументооборотСКОКлиент.ПодключениеОбработчикаОжиданияАвтообмена(Ложь);
		ДокументооборотСКОКлиент.ПодключениеОбработчикаОжиданияАвтообмена(Истина);
	КонецЕсли;
	ДокументооборотСКОКлиент.ЗапоминаниеОшибок("Сброс");
	
	ПараметрыДлительногоОбмена = ДлительнаяОтправкаКлиент.ПараметрыДлительногоОбмена();
	ПараметрыДлительногоОбмена.Организации 					= ВыбранныеОрганизации;
	ПараметрыДлительногоОбмена.ЭтоОбменИзФормы1СОтчетность 	= Истина;
	
	Если НЕ ДлительнаяОтправкаКлиент.ПоказатьФормуДлительногоОбмена(ПараметрыДлительногоОбмена) Тогда // Обмен из 1С-Отчетность.
		Возврат;
	КонецЕсли;
	
	ПодключитьОбработчикОжидания("Подключаемый_ОсуществитьОбменПоВыбраннымОрганизациям", 0.1, Истина);
	
КонецПроцедуры

&НаКлиенте
Процедура НастроитьОграниченияОбмена(РезультатВыбора, ПараметрыЦикла) Экспорт
	
	Если РезультатВыбора <> Неопределено Тогда
		ДанныеДляОбмена = ВсеОрганизации();
		ВыбранныеОрганизации = ДанныеДляОбмена.МассивОрганизаций;
		ОбновитьДанныеПродолжить(ВыбранныеОрганизации);
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ПодключитьКлиентскийКонтекст(ОповещениеПроцедуры, ПараметрыОперации = Неопределено)
	
	Если КонтекстЭДОКлиент = Неопределено И КонтекстУжеПодключался <> Истина Тогда
		ИнициализироватьКонтекстЭДО(ОповещениеПроцедуры);
		
	ИначеЕсли КонтекстЭДОКлиент = Неопределено Тогда
		ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстОшибкиИнициализацииКонтекстаЭДО);
		
	Иначе
		ВыполнитьОбработкуОповещения(ОповещениеПроцедуры, ПараметрыОперации);
		
	КонецЕсли;

КонецПроцедуры

&НаКлиенте
Процедура НастройкиОбновленияПосле(РезультатРаботы, ДополнительныеПараметры) Экспорт
	
	ОткрытьФормуНастройкиОбновления(Ложь);
	
КонецПроцедуры

&НаКлиенте
Процедура ОткрытьФормуНастройкиОбновления(АвтоматическийВызов, СледующееОповещение = Неопределено)
	
	ПараметрыФормы = Новый Структура;
	ПараметрыФормы.Вставить("АвтоматическийВызов", АвтоматическийВызов);
	ОткрытьФорму(КонтекстЭДОКлиент.ПутьКОбъекту + ".Форма.НастройкаОграниченийОбмена", ПараметрыФормы, , , , , СледующееОповещение);
	
КонецПроцедуры

#КонецОбласти

&НаКлиентеНаСервереБезКонтекста
Процедура ДействияПриИзмененииОтборовИОбновлениеВходящих(Форма)
	
	ДействияПриИзмененииОтборов(Форма);
	ОбновитьКоличествоНепрочтенныхОбъектов(Форма);
					
КонецПроцедуры

&НаКлиентеНаСервереБезКонтекста
Функция ПредставлениеКоличества(Знач КоличествоНепрочитанныхОбъектов)
	
	НадписьКоличество = "";
	Если КоличествоНепрочитанныхОбъектов > 99 Тогда  
		НадписьКоличество = " (99+)";
	ИначеЕсли КоличествоНепрочитанныхОбъектов <> 0 Тогда
		НадписьКоличество = " (" + Строка(КоличествоНепрочитанныхОбъектов) + ")";
	КонецЕсли;
	
	Возврат НадписьКоличество;
	
КонецФункции

&НаКлиенте
Функция ПереопределитьОткрытие(Элемент)
	
	ТекущиеДанные = Элемент.ТекущиеДанные;
	Если ТекущиеДанные <> Неопределено Тогда
		
		Ссылка = ТекущиеДанные.Ссылка;
	
		Переопределить = Ложь;
		
		Попытка
			МодульСверкаСФНС = ОбщегоНазначенияКлиент.ОбщийМодуль("СверкаСФНСКлиент");
		Исключение
		    МодульСверкаСФНС = Неопределено;
		КонецПопытки;
		
		Если МодульСверкаСФНС <> Неопределено Тогда
			СтандартнаяОбработка = Истина;
			МодульСверкаСФНС.РегламентированнаяОтчетность_ТаблицаНовоеПриОткрытии(ЭтотОбъект, Ссылка, СтандартнаяОбработка);
			
			Если НЕ СтандартнаяОбработка Тогда
				Переопределить = Истина;
			КонецЕсли;
				
		КонецЕсли;
		
	КонецЕсли;
	
	Возврат Переопределить;

КонецФункции

&НаСервере
Процедура ПереопределитьОформлениеСверки()
	
	Попытка
		МодульСверкаСФНС = ОбщегоНазначения.ОбщийМодуль("СверкаСФНС");
	Исключение
	    МодульСверкаСФНС = Неопределено;
	КонецПопытки; 
	
	Если МодульСверкаСФНС <> Неопределено Тогда
		МодульСверкаСФНС.РегламентированнаяОтчетность_ТаблицаНовоеПриОбновлении(ЭтотОбъект);
	КонецЕсли;
	
КонецПроцедуры

#Область ТребованияРаботаСОтветами

&НаКлиенте
Процедура ПереключитьсяНаПроблемныеТребования()
	
	ПриПереключенииРаздела(Элементы.ГиперссылкаВходящие);
	СохранитьНастройки();
	СостоянияТребований = НСтр("ru = 'Требует подтверждения или ответа'");
	ДобавитьОтборПоСостояниюТребования(ЭтотОбъект);
	
КонецПроцедуры

&НаСервере
Процедура ПрименитьУсловноеОформлениеТребований()
	
	ВыделитьКраснымОтветНаТребование();
	ВыделитьКраснымПодтверждение();
	
КонецПроцедуры

&НаСервере
Процедура ВыделитьКраснымОтветНаТребование()
	
	ЭлементОформления = ТребованияФНСКлиентСервер.ВыделитьЦветом(
		ЭтотОбъект, 
		ЦветаСтиля.ЦветОшибкиОтправкиБРО, 
		"Входящие.ОтветТребуетРеакции", 
		Истина);
	
	ПолеОформления = ЭлементОформления.Поля.Элементы.Добавить();
	ПолеОформления.Поле = Новый ПолеКомпоновкиДанных("ТребованияСтатусОтвета");
	ПолеОформления.Использование = Истина;
	
	ПолеОформления = ЭлементОформления.Поля.Элементы.Добавить();
	ПолеОформления.Поле = Новый ПолеКомпоновкиДанных("ТребованияСтатусОтветаСсылка");
	ПолеОформления.Использование = Истина;
	
	ПолеОформления = ЭлементОформления.Поля.Элементы.Добавить();
	ПолеОформления.Поле = Новый ПолеКомпоновкиДанных("ТребованияДатаОтвета");
	ПолеОформления.Использование = Истина;
	
КонецПроцедуры

&НаСервере
Процедура ВыделитьКраснымПодтверждение()
	
	ЭлементОформления = ТребованияФНСКлиентСервер.ВыделитьЦветом(
		ЭтотОбъект, 
		ЦветаСтиля.ЦветОшибкиОтправкиБРО, 
		"Входящие.СостояниеСдачиОтчетности", 
		Перечисления.СостояниеСдачиОтчетности.ТребуетсяПодтверждениеПриема);
		
	ПолеОформления = ЭлементОформления.Поля.Элементы.Добавить();
	ПолеОформления.Поле = Новый ПолеКомпоновкиДанных("ТребованияДатаПодтверждения");
	ПолеОформления.Использование = Истина;
	
КонецПроцедуры

&НаСервереБезКонтекста
Процедура ВходящиеТребованияПриПолученииДанныхНаСервере(ИмяЭлемента, Настройки, Строки)
	
	ЕстьОплата = Ложь;
	ДокументооборотСКОПереопределяемый.КонфигурацияПоддерживаетПлатежныеПоручения(ЕстьОплата, Ложь);
	Сегодня = ТекущееВремяНаКлиенте();
	
	Ответы = ОтправленныеОтветыНаВходящие(Строки);
	
	Для Каждого СтрокаСписка Из Строки Цикл
		
		// Подтверждение
		ЗадатьДатуПодтверждения(СтрокаСписка, Сегодня);
		
		// Ответ
		ЗадатьСтатусОтветаНаТребование(СтрокаСписка, ЕстьОплата, Ответы);
		Если НЕ СтрокаСписка.Значение.Данные.Ссылка = Неопределено Тогда
			ЗадатьДатуОтветаНаТребование(СтрокаСписка, Сегодня, ЕстьОплата, Ответы);
		КонецЕсли;
		
	КонецЦикла;
	
КонецПроцедуры

&НаСервереБезКонтекста
Функция ОтправленныеОтветыНаВходящие(Строки)
	
	Требования = Новый Массив;
	Для Каждого СтрокаСписка Из Строки Цикл
		Требование = СтрокаСписка.Значение.Данные.Ссылка;
		Требования.Добавить(Требование);
	КонецЦикла;
	
	Ответы = ТребованияФНС.ОтветыНаТребования(Требования, Истина, Ложь);
	
	Возврат Ответы;
	
КонецФункции

&НаСервереБезКонтекста
Функция ЕстьОтправленныеОтветы(Требование, Ответы)
	
	Возврат Ответы.Найти(Требование, "Требование") <> Неопределено;
	
КонецФункции

&НаСервереБезКонтекста
Функция КоличествоОтправленныхОтветовНаТребование(Требование, Ответы)
	
	Отбор = Новый Структура();
	Отбор.Вставить("Требование", Требование);
	
	НайденныеСтроки = Ответы.НайтиСтроки(Отбор);
		
	Возврат НайденныеСтроки.Количество();
	
КонецФункции

&НаСервереБезКонтекста
Процедура ЗадатьДатуПодтверждения(СтрокаСписка, Сегодня)
	
	// Течение сроков исчисляется в рабочих днях (если явно не сказано про календарные дни) 
	// и начинается на следующий день после получения (отправки квитанции) и заканчивается в 24 часа последнего дня срока.
	
	Данные = СтрокаСписка.Значение.Данные;
	Данные.ПодтверждениеПросрочено = 0;
	
	Если ЗначениеЗаполнено(Данные.ДатаПодтверждения) Тогда
		Данные.ДатаПодтвержденияПредставление = Формат(Данные.ДатаПодтверждения, "ДЛФ=D");
		Возврат;
	КонецЕсли;
	
	Если Данные.СостояниеСдачиОтчетности = Перечисления.СостояниеСдачиОтчетности.ТребуетсяПодтверждениеПриема Тогда 
	
		Ответили = ТребованияФНСВызовСервера.ОтветилиНаВопросПроЭДО(Данные.Ссылка);
		
		Если НЕ ЗначениеЗаполнено(Данные.ПодтвердитьДо) ИЛИ НЕ Ответили Тогда
			Данные.ДатаПодтвержденияПредставление = "";
			Возврат;
		КонецЕсли;
		
		РазностьДней = ТребованияФНС.РазностьДнейИсправленная(Данные, Сегодня);
		
		Если РазностьДней = 0 Тогда
			
			Данные.ДатаПодтвержденияПредставление = ТребованияФНС.ОсталосьЧасовПредставление(Сегодня);
			
		ИначеЕсли РазностьДней > 0 Тогда
			
			Данные.ДатаПодтвержденияПредставление = ТребованияФНС.ПредставлениеОставшихсяДней(РазностьДней);
			
		Иначе
			
			РазностьДней = ДокументооборотСКОКлиентСервер.МодульЧисла(РазностьДней);
			
			Данные.ДатаПодтвержденияПредставление = ТребованияФНС.ПредставлениеПросроченныхДней(РазностьДней);
			Данные.ПодтверждениеПросрочено = 1;
			
		КонецЕсли;
		
	КонецЕсли;
		
КонецПроцедуры

&НаСервереБезКонтекста
Процедура ЗадатьДатуОтветаНаТребование(СтрокаСписка, Сегодня, ПоддерживаетсяОплата, Ответы)
	
	Данные = СтрокаСписка.Значение.Данные;
	Данные.ОтветТребуетРеакции = Ложь;
	
	ЕстьОтправленные = ЕстьОтправленныеОтветы(Данные.Ссылка, Ответы);
	ЕстьДатаОплаты = ПоддерживаетсяОплата И ЗначениеЗаполнено(Данные.Сумма) И ЗначениеЗаполнено(Данные.СрокОплаты);
	ЕстьОтвет = Данные.ЕстьОтвет ИЛИ (ЕстьДатаОплаты И Данные.ОтветУжеДан);
	
	Если ЗначениеЗаполнено(Данные.ДатаОтвета) Тогда
		
		Данные.ДатаОтветаПредставление = Формат(Данные.ДатаОтвета, "ДЛФ=D");
		Возврат;
		
	ИначеЕсли ЕстьДатаОплаты И ЕстьОтвет Тогда
		Данные.ДатаОтветаПредставление = "";
		Возврат;

	ИначеЕсли ЕстьОтвет = Истина И ЕстьОтправленные 
		ИЛИ НЕ Данные.ЕстьИзвлеченныеДанные 
		ИЛИ НЕ (Данные.ТребуетОтвета ИЛИ ЕстьДатаОплаты) Тогда
		
		Данные.ДатаОтветаПредставление = "";
		Возврат;
		
	ИначеЕсли Данные.ДатаОтвета = '00010101' 
		И Данные.ЕстьИзвлеченныеДанные 
		И НЕ ЗначениеЗаполнено(Данные.ДатаПодтверждения)
		И (НЕ Данные.ОтветилиНаВопросПроЭДО // не знаем откуда отсчитывать дату ответа - от даты требования или подтверждения
		ИЛИ НЕ Данные.ЭДООбязателен) Тогда // ответили что ЭДО не обязателен и подтверждение еще не отправлено, поэтому не можем рассчитать срок ответа
		
		// Случай, когда подтверждение приема не отправлено
		Данные.ДатаОтветаПредставление = "";
		Данные.ОтветТребуетРеакции = Истина;
		Возврат;
		
	КонецЕсли;
	
	// Течение сроков исчисляется в рабочих днях (если явно не сказано про календарные дни) 
	// и начинается на следующий день после получения (отправки квитанции) и заканчивается в 24 часа последнего дня срока.
	
	Если ЕстьДатаОплаты И НЕ ЕстьОтвет Тогда
		ДатаОтвета = Данные.СрокОплаты;
	ИначеЕсли ЗначениеЗаполнено(Данные.ДатаОтветаИзмененная) Тогда
		ДатаОтвета = Данные.ДатаОтветаИзмененная;
	Иначе
		ДатаОтвета = Данные.ОтветитьДо;
	КонецЕсли;
	
	Если ЕстьДатаОплаты И НЕ ЗначениеЗаполнено(ДатаОтвета) Тогда
		Данные.ДатаОтветаПредставление = "";
		Данные.ОтветТребуетРеакции = Ложь;
		Возврат;
	ИначеЕсли НЕ ЗначениеЗаполнено(ДатаОтвета) Тогда
		Данные.ДатаОтветаПредставление = "";
		Данные.ОтветТребуетРеакции = Истина;
		Возврат;
	КонецЕсли;
	
	Если ЕстьДатаОплаты И НЕ ЕстьОтвет Тогда
		РазностьДней = (ДатаОтвета - НачалоДня(Сегодня)) / (60*60*24);
	Иначе
		РазностьДней = ТребованияФНС.РазностьДатПоКалендарю(Сегодня, ДатаОтвета).Дельта;
	КонецЕсли;
	
	Если РазностьДней = 0 Тогда
		
		Данные.ДатаОтветаПредставление = ТребованияФНС.ОсталосьЧасовПредставление(Сегодня);
		Данные.ОтветТребуетРеакции = Истина;
		
	ИначеЕсли РазностьДней > 0 Тогда
		
		Данные.ДатаОтветаПредставление = ТребованияФНС.ПредставлениеОставшихсяДней(РазностьДней);
		Данные.ОтветТребуетРеакции = Истина;
		
	Иначе
		
		РазностьДней = ДокументооборотСКОКлиентСервер.МодульЧисла(РазностьДней);
		
		Данные.ДатаОтветаПредставление = ТребованияФНС.ПредставлениеПросроченныхДней(РазностьДней);
		Данные.ОтветТребуетРеакции = Истина;
		Данные.ОтветПросрочен = 1;
		
	КонецЕсли;
		
КонецПроцедуры

&НаСервереБезКонтекста
Процедура ЗадатьСтатусОтветаНаТребование(СтрокаСписка, ПоддерживаетсяОплата, Ответы)
	
	Данные = СтрокаСписка.Значение.Данные;
	
	Требование = Данные.Ссылка;
	ЭтоТребованиеСФР = ЭлектронныйДокументооборотСФСС.ЭтоТребованиеСФР(Требование);
	ДанныеОтветовНаТребованияСФР = ЭлектронныйДокументооборотСФСС.НовыеДанныеОтветовНаТребованияСФР();
	Если ЭтоТребованиеСФР Тогда
		Если ЭлектронныйДокументооборотСФСС.ЭтоТребованиеСФРОПредоставленииДокументов(Требование) Тогда
			// Заполняем данные требований, требующих ответа.
			ДанныеОтветовНаТребованияСФР = ЭлектронныйДокументооборотСФСС.ПолучитьКоличествоОтветовНаТребованияСФР(
				Требование, Ложь)[Требование];
			КоличествоОтветов = ДанныеОтветовНаТребованияСФР.Ответы.Количество();
			Данные.КоличествоОтветов = КоличествоОтветов;
			Если КоличествоОтветов = 0 Тогда
				Данные.ЕстьОтвет = Ложь;
			КонецЕсли;
		КонецЕсли;
	КонецЕсли;
			
	КоличествоОтветов = Данные["КоличествоОтветов"];
	Если Данные.ЕстьОтвет Тогда
		
		Если ЭтоТребованиеСФР Тогда
			Отправлено = ДанныеОтветовНаТребованияСФР.КоличествоОтправлено;
			Если Отправлено > 0 Тогда
				Данные.СтатусОтвета = НСтр("ru='Ответ отправлен (" + Строка(Отправлено) + ")'");
			ИначеЕсли КоличествоОтветов > 0 Тогда
				Данные.СтатусОтвета = НСтр("ru='Ответ подготовлен (" + Строка(КоличествоОтветов) + ")'");
			Иначе
				Данные.СтатусОтвета = НСтр("ru='Ответ подготовлен'");
			КонецЕсли;
		Иначе
			Отправлено = КоличествоОтправленныхОтветовНаТребование(Требование, Ответы);
			Если Отправлено > 0 Тогда 
				Данные.СтатусОтвета = НСтр("ru='Ответ отправлен (" + Строка(Отправлено) + ")'");
			ИначеЕсли КоличествоОтветов > 0 Тогда
				Данные.СтатусОтвета = НСтр("ru='Ответ подготовлен (" + Строка(КоличествоОтветов) + ")'");
			Иначе
				Данные.СтатусОтвета = НСтр("ru='Ответ подготовлен'");
			КонецЕсли;
		КонецЕсли;
		
	ИначеЕсли ПоддерживаетсяОплата И ЗначениеЗаполнено(Данные.Сумма) Тогда
		Если НЕ Данные.ОтветУжеДан Тогда
			Данные.СтатусОтвета = НСтр("ru='Требуется оплатить'");
		Иначе
			Данные.СтатусОтвета = НСтр("ru='Оплачено'");
		КонецЕсли;

	ИначеЕсли Данные.ЕстьИзвлеченныеДанные И Данные.ОтветУжеДан Тогда
		Данные.СтатусОтвета = НСтр("ru='Ответ уже дан'");
	ИначеЕсли НЕ Данные.ТребуетОтвета И Данные.ЕстьИзвлеченныеДанные Тогда
		Данные.СтатусОтвета = НСтр("ru='Ответ не требуется'");
	ИначеЕсли НЕ Данные.ЕстьИзвлеченныеДанные Тогда
		Данные.СтатусОтвета = "";
	Иначе
		Данные.СтатусОтвета = НСтр("ru='Отправьте ответ'");
	КонецЕсли;
	
КонецПроцедуры

&НаКлиентеНаСервереБезКонтекста
Процедура ДобавитьОтборПоТребованиямНеотработанные(Куда, Знач Использование)
	
	ПредставлениеГруппы = НСтр("ru = 'Нет подтверждения или ответа'");
	ГруппаОтбора = ТребованияФНСКлиентСервер.СоздатьГруппуОтбораСУдалением(
		Куда, 
		ПредставлениеГруппы, 
		Использование, 
		ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИЛИ);
	
	ДобавитьОтборПоНаличиюОтвета(ГруппаОтбора, Использование, Ложь);
	ДобавитьОтборПоТребованиямБезПодтверждения(ГруппаОтбора, Использование);
	
КонецПроцедуры

&НаКлиентеНаСервереБезКонтекста
Процедура ДобавитьОтборПоТребованиямБезПодтверждения(ГруппаОтбора, Знач Использование)
	
	ГруппаОтбораПоПодтверждению = ТребованияФНСКлиентСервер.СоздатьГруппуЭлементовОтбора(
		ГруппаОтбора, 
		НСтр("ru = 'Нет подтверждения'"),
		Использование,
		ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ);
		
	Список = Новый СписокЗначений;
	Список.Добавить(ПредопределенноеЗначение("Перечисление.СостояниеСдачиОтчетности.ТребуетсяПодтверждениеПриема"));
	Список.Добавить(ПредопределенноеЗначение("Перечисление.СостояниеСдачиОтчетности.ОбязанностьПодтвержденияНеОпределена"));
		
	ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(
		ГруппаОтбораПоПодтверждению,
		"СостояниеСдачиОтчетности",
		ВидСравненияКомпоновкиДанных.ВСписке,
		Список,
		,
		Использование);
	
КонецПроцедуры

&НаКлиентеНаСервереБезКонтекста
Процедура ДобавитьОтборПоТребованиямПросроченные(Куда, Использование)
	
	ПредставлениеГруппы = НСтр("ru = 'Ответ просрочен'");
	ГруппаОтбора = ТребованияФНСКлиентСервер.СоздатьГруппуОтбораСУдалением(
		Куда, 
		ПредставлениеГруппы, 
		Использование, 
		ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ);
		
	ТребованияФНСКлиентСервер.ДобавитьОтборДатаОтветаПросрочена(
		ГруппаОтбора, 
		Использование,
		ТекущаяДата());
		
	ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(
		ГруппаОтбора,
		"ДатаОтвета",
		ВидСравненияКомпоновкиДанных.НеЗаполнено,
		,
		,
		Использование);
		
	ДобавитьОтборПоНаличиюОтвета(ГруппаОтбора, Использование);
	
КонецПроцедуры

&НаКлиентеНаСервереБезКонтекста
Процедура ДобавитьОтборПоНаличиюОтвета(ГруппаОтбора, Использование, ПравоеЗначение = Ложь, ЭтоУсловноеОформление = Ложь)
	
	ПодгруппаОтбора = ТребованияФНСКлиентСервер.СоздатьГруппуЭлементовОтбора(
		ГруппаОтбора, 
		НСтр("ru = 'Есть ответа'"), 
		Использование,
		ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ);
	
	ТребованияФНСКлиентСервер.ДобавитьЭлементКомпоновкиСУдалением(
		ПодгруппаОтбора, 
		?(ЭтоУсловноеОформление, "Входящие.ЕстьОтвет", "ЕстьОтвет"), 
		ВидСравненияКомпоновкиДанных.Равно, 
		ПравоеЗначение, 
		Использование);
		
	ДобавитьОтборПоНеобходимостиОтвета(ПодгруппаОтбора, Использование И НЕ ПравоеЗначение,ЭтоУсловноеОформление);
	ДобавитьОтборЕстьИзвлеченныеДанные(ПодгруппаОтбора, Использование И НЕ ПравоеЗначение);
	
КонецПроцедуры
	
&НаКлиентеНаСервереБезКонтекста
Процедура ДобавитьОтборПоНеобходимостиОтвета(ГруппаОтбора, Использование, ЭтоУсловноеОформление = Ложь)
	
	ПредставлениеГруппы = НСтр("ru = 'Требует ответа'");
	ПодГруппаОтбора = ТребованияФНСКлиентСервер.СоздатьГруппуОтбораСУдалением(
		ГруппаОтбора, 
		ПредставлениеГруппы, 
		Использование, 
		ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ);
	
	ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(
		ПодГруппаОтбора,
		?(ЭтоУсловноеОформление, "Входящие.ТребуетОтвета", "ТребуетОтвета"),
		ВидСравненияКомпоновкиДанных.Равно,
		Истина,
		,
		Использование);
		
	ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(
		ПодГруппаОтбора,
		?(ЭтоУсловноеОформление, "Входящие.ОтветУжеДан", "ОтветУжеДан"),
		ВидСравненияКомпоновкиДанных.Равно,
		Ложь,
		,
		Использование);
	
КонецПроцедуры
	
&НаКлиентеНаСервереБезКонтекста
Процедура ДобавитьОтборЕстьИзвлеченныеДанные(ГруппаОтбора, Использование)
	
	ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(
		ГруппаОтбора,
		"ЕстьИзвлеченныеДанные",
		ВидСравненияКомпоновкиДанных.Равно,
		Истина,
		,
		Использование);
	
КонецПроцедуры

&НаКлиентеНаСервереБезКонтекста
Процедура ПрорисоватьПанельТребований(Форма)
	
	Элементы = Форма.Элементы;
	
	ЗакрытьПанельТребований = ДокументооборотСКОВызовСервера.ЗагрузитьНастройку("ДокументооборотСКонтролирующимиОрганами_1СОтчетность_ЗакрытьПанельТребований");
	Если ЗакрытьПанельТребований = Истина Тогда
		Элементы.ГруппаТребований.Видимость = Ложь;
		ОформитьРежимОблачнойОтчетности(Форма);
		Возврат;
	КонецЕсли;
	
	Состояние = ТребованияФНСВызовСервера.СостояниеТребованийДляПанели();
	СостояниеСФР = ЭлектронныйДокументооборотСКонтролирующимиОрганамиВызовСервера.СостояниеТребованийСФРДляПанели();
	
	Если ТипЗнч(Состояние) = Тип("Структура") Тогда
		Состояние.БезОтвета = Состояние.БезОтвета + СостояниеСФР.БезОтвета;
		Состояние.Подтвердить = Состояние.Подтвердить + СостояниеСФР.Подтвердить;
	КонецЕсли;
	
	Если Состояние.Подтвердить = 0 И Состояние.БезОтвета = 0 Тогда
		Элементы.ГруппаТребований.Видимость = Ложь;
		ОформитьРежимОблачнойОтчетности(Форма);
		Возврат;
	КонецЕсли;
	
	Текст = ТребованияФНСКлиентСервер.ТекстДляПанелиТребований(Истина, Форма.Организация);
	
	Элементы.ПанельТребований.Заголовок = Текст;
	Элементы.ГруппаТребований.Видимость = НЕ Форма.ЭтоРежимВыбора И ЗначениеЗаполнено(Текст);
	
	ОформитьРежимОблачнойОтчетности(Форма);
	
КонецПроцедуры

#КонецОбласти

#Область ОбработкаВходящих

#КонецОбласти

#Область Новости

// Процедура показывает новости, требующие прочтения (важные и очень важные)
//
// Параметры:
//  Нет
//
&НаКлиенте
Процедура Подключаемый_ПоказатьНовостиТребующиеПрочтенияПриОткрытии()

	// ИнтернетПоддержкаПользователей.Новости.Подключаемый_ПоказатьНовостиТребующиеПрочтенияПриОткрытии
	ИдентификаторыСобытийПриОткрытии = "ПриОткрытии";
	// Конец ИнтернетПоддержкаПользователей.Новости.Подключаемый_ПоказатьНовостиТребующиеПрочтенияПриОткрытии

	Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ИнтернетПоддержкаПользователей.Новости") Тогда
		
		МодульОбработкаНовостейКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ОбработкаНовостейКлиент");
		
		МодульОбработкаНовостейКлиент.КонтекстныеНовости_ПоказатьНовостиТребующиеПрочтенияПриОткрытии(ЭтотОбъект, ИдентификаторыСобытийПриОткрытии);
		
	КонецЕсли;

КонецПроцедуры

&НаКлиенте
Процедура ОбработкаКомандыНовости(Команда)
		
	Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ИнтернетПоддержкаПользователей.Новости") Тогда
		
		МодульОбработкаНовостейКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ОбработкаНовостейКлиент");
		
		МодульОбработкаНовостейКлиент.КонтекстныеНовости_ОбработкаКомандыНовости(ЭтотОбъект, Команда);
		
	КонецЕсли;

КонецПроцедуры

#КонецОбласти

#Область РаботаСКалендаремОтчетности

&НаКлиенте
Процедура Подключаемый_КалендарьОтчетностиВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
	
	КалендарьОтчетностиБРОКлиентПереопределяемый.ТаблицыФормыВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка);
	
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_КалендарьОтчетностиПриАктивизацииСтроки(Элемент)
	
	КалендарьОтчетностиБРОКлиентПереопределяемый.ТаблицыФормыПриАктивизацииСтроки(Элемент);
	
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_КалендарьОтчетностиПриИзменении(Элемент)
	
	КалендарьОтчетностиБРОКлиентПереопределяемый.ПолеФормыПриИзменении(Элемент);
	
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_КалендарьОтчетностиАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка)
	
	КалендарьОтчетностиБРОКлиентПереопределяемый.ПолеФормыАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка);
	
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_КалендарьОтчетностиПриВыводеПериода(Элемент, ОформлениеПериода)
	
	КалендарьОтчетностиБРОКлиентПереопределяемый.КалендарьПриВыводеПериода(Элемент, ОформлениеПериода);
	
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_КалендарьОтчетностиНажатие(Элемент)
	
	КалендарьОтчетностиБРОКлиентПереопределяемый.ДекорацияНажатие(Элемент);
	
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_КалендарьОтчетностиОбработкаКоманды(Команда)
	
	КалендарьОтчетностиБРОКлиентПереопределяемый.ОбработкаКоманды(ЭтотОбъект, Команда);
	
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_КалендарьОтчетностиФоновоеЗадание()
	
	КалендарьОтчетностиБРОКлиентПереопределяемый.ОбработчикОжиданияФормы(ЭтотОбъект);
	
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_КалендарьОтчетностиОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
	
	КалендарьОтчетностиБРОКлиентПереопределяемый.ОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка);
	
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_КалендарьОтчетностиОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
	
	КалендарьОтчетностиБРОКлиентПереопределяемый.ОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка);
	
КонецПроцедуры

&НаСервере
Процедура Подключаемый_КалендарьОтчетностиОбработкаОповещенияРегламентированнойОтчетности(ИмяСобытия, Параметр, Источник, ИмяРаздела)
	
	КалендарьОтчетностиБРОВызовСервераПереопределяемый.ОбработкаОповещенияРегламентированнойОтчетности(ЭтотОбъект, ИмяСобытия, Параметр, Источник, ИмяРаздела);
	
КонецПроцедуры

&НаКлиентеНаСервереБезКонтекста
Процедура ОформитьРежимОблачнойОтчетности(ОбъектФормы)
	
	КалендарьОтчетностиБРОКлиентСерверПереопределяемый.ОформитьРежимОблачнойОтчетности(ОбъектФормы);
	
КонецПроцедуры

&НаКлиенте
Процедура ВыполнитьДействиеПослеОткрытия(Действие)
	
	Если Действие = "create-report" Тогда
		СоздатьОтчет();
	ИначеЕсли Действие = "create-notification" Тогда
		СоздатьНовоеУведомление();
	ИначеЕсли Действие = "upload-notification" Тогда
		УведомлениеОСпецрежимахНалогообложенияКлиент.ЗагрузитьИзФайлаУведомление(ЭтотОбъект);
	ИначеЕсли Действие = "create-reconciliation" Тогда
		СоздатьСверку(ПредопределенноеЗначение("Перечисление.ВидыУслугПриИОН.ПредставлениеАктовСверкиРасчетов"));
	ИначеЕсли Действие = "create-reporting-list" Тогда
		СоздатьСверку(ПредопределенноеЗначение("Перечисление.ВидыУслугПриИОН.ПредставлениеПеречняБухгалтерскойИНалоговойОтчетности"));
	ИначеЕсли Действие = "create-tax-statement" Тогда
		СоздатьСверку(ПредопределенноеЗначение("Перечисление.ВидыУслугПриИОН.ПредставлениеСправкиОбИсполненииОбязанностейПоУплате"));
	ИначеЕсли Действие = "create-amounts-statement" Тогда
		СоздатьСверку(ПредопределенноеЗначение("Перечисление.ВидыУслугПриИОН.СправкаОПринадлежностиСумм"));
	ИначеЕсли Действие = "create-balance-statement" Тогда
		СоздатьСверку(ПредопределенноеЗначение("Перечисление.ВидыУслугПриИОН.СправкаОНаличииСальдо"));
	ИначеЕсли Действие = "create-billings-statement" Тогда
		СоздатьНовоеЗаявлениеНаФормированиеСправкиОРасчетах();
	ИначеЕсли Действие = "create-name-reconciliation" Тогда
		СоздатьСверку(ПредопределенноеЗначение("Перечисление.ВидыУслугПриИОС.СверкаФИОиСНИЛС"));
	КонецЕсли;

КонецПроцедуры

&НаКлиенте
Процедура СоздатьНовоеЗаявлениеНаФормированиеСправкиОРасчетах()
	
	ПараметрыФормы = Новый Структура;
	ПараметрыФормы.Вставить("ЗначенияЗаполнения", Новый Структура("Отправитель", Организация));
	
	ОткрытьФорму("Справочник.ПерепискаСКонтролирующимиОрганами.ФормаОбъекта", ПараметрыФормы, ЭтотОбъект);
	
КонецПроцедуры

&НаКлиенте
Процедура ПереключитьсяНаПроблемныеОтчеты()
	
	ПриПереключенииРаздела(Элементы.ГиперссылкаОтчеты);
	СохранитьНастройки();
	ОтборСтатусОтчета = "Непрочитанные";
	ДобавитьОтборПоСостояниюОтчетов(ЭтотОбъект);
	
КонецПроцедуры

&НаКлиенте
Процедура ПереключитьсяНаПроблемныеУведомления()
	
	ПриПереключенииРаздела(Элементы.ГиперссылкаУведомления);
	СохранитьНастройки();
	ОтборСтатусУведомления = "Непрочитанные";
	ДобавитьОтборПоСостояниюУведомлений(ЭтотОбъект);
	
КонецПроцедуры

&НаКлиентеНаСервереБезКонтекста
Процедура ДобавитьОтборПоСостояниюУведомлений(Форма)
	
	Использование = НЕ ПустаяСтрока(Форма.ОтборСтатусУведомления);
	ТекущееЗначение = Форма.ОтборСтатусУведомления = "Непрочитанные";
		
	ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(
		Форма.Уведомления,
		"Непрочтенное", 
		ТекущееЗначение,
		ВидСравненияКомпоновкиДанных.Равно,
		"",
		Использование);
		
КонецПроцедуры

&НаКлиентеНаСервереБезКонтекста
Процедура ДобавитьОтборПоСостояниюОтчетов(Форма)
	
	Использование = НЕ ПустаяСтрока(Форма.ОтборСтатусОтчета);
	ТекущееЗначение = Форма.ОтборСтатусОтчета = "Непрочитанные";
		
	ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(
		Форма.Отчеты,
		"Непрочтенное", 
		ТекущееЗначение,
		ВидСравненияКомпоновкиДанных.Равно,
		"",
		Использование);
		
КонецПроцедуры

#КонецОбласти

&НаКлиенте
Процедура СоздатьОтветНаТребованиеПредварительное(Результат, ПараметрыОповещения) Экспорт
	
	СоздатьОтветНаТребование(
		ПараметрыОповещения.Команда		
	);
	
КонецПроцедуры

&НаКлиенте
Процедура СоздатьОтветНаТребование(Команда = Неопределено)
	
	Если КонтекстЭДОКлиент = Неопределено И КонтекстУжеПодключался <> Истина Тогда
		ПараметрыОповещения = Новый Структура;
		ПараметрыОповещения.Вставить("Команда", Команда);
		Оповещение = Новый ОписаниеОповещения(
			"СоздатьОтветНаТребованиеПредварительное", 
			ЭтотОбъект, 
			ПараметрыОповещения
		);
		ИнициализироватьКонтекстЭДО(Оповещение);
		Возврат;
	КонецЕсли;
	
	Если КонтекстЭДОКлиент = Неопределено Тогда
		ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстОшибкиИнициализацииКонтекстаЭДО);
		Возврат;
	КонецЕсли;
	
	ДополнительныеПараметры = Новый Структура();
	ДополнительныеПараметры.Вставить("ЗапретитьСозданиеПисьмаВОтветНаТребованиеПоДекларации", Истина);
			
	КонтекстЭДОКлиент.СоздатьОтветНаТребованиеСВыборомТребования(,Организация,ДополнительныеПараметры);
	
КонецПроцедуры

&НаКлиенте
Процедура СоздатьПакетСДопДокументами(Команда)
	
	СоздатьПакетСДопДокументамиВФНС();
	
КонецПроцедуры

&НаКлиенте
Функция ФормаОкнаАвторизацииИППЕслиОткрыто()
	
	ОткрытыеОкна = ПолучитьОкна();
	
	Для каждого ОткрытоеОкно Из ОткрытыеОкна Цикл
		
		Если ОткрытоеОкно = Неопределено Тогда
			Продолжить;
		КонецЕсли;
		
		Содержимое = ОткрытоеОкно.Содержимое;
		
		Если Содержимое.Количество() = 0 Тогда
			Продолжить;
		КонецЕсли;
		
		ТекущаяФорма = Содержимое[0];
		
		Если ТекущаяФорма.ИмяФормы = "ОбщаяФорма.АвторизацияНаСайтеПоддержкиПользователей"
		 ИЛИ ТекущаяФорма.ИмяФормы = "ОбщаяФорма.ПодключениеИнтернетПоддержки" Тогда
			
			Возврат ТекущаяФорма;
			
		КонецЕсли;
		
	КонецЦикла;
	
	Возврат Неопределено;
	
КонецФункции

&НаСервере
Функция ПометитьНаУдалениеРассылки()
	
	УстановитьПривилегированныйРежим(Истина);
	
	Запрос = Новый Запрос;
	Запрос.Текст = ЭтотОбъект.Входящие.ТекстЗапроса;
	
	ТребованияФНС.ДобавитьОтборПоОрганизации(Запрос, Организация);
	ТребованияФНС.ДобавитьОтборВЗапросЖурнала(Запрос, "ВидДокумента", Перечисления.ВидыДокументовВЖурнале.Рассылка);
	
	ТаблицаРезультатов = Запрос.Выполнить().Выгрузить();
	ТаблицаРезультатов.Свернуть("Ссылка");
	ПредметыРассылок = ТаблицаРезультатов.ВыгрузитьКолонку("Ссылка");
	
	Если ПредметыРассылок.Количество() = 0 Тогда 
		Возврат Новый Массив;
	КонецЕсли;
	
	КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
	
	Для каждого Ссылка Из ПредметыРассылок Цикл
		
		ЦиклОбмена = ДокументооборотСКОВызовСервера.ПолучитьПоследнийЦиклОбмена(Ссылка);
	
		Если ЦиклОбмена <> Неопределено И ЦиклОбмена <> Справочники.ЦиклыОбмена.ПустаяСсылка() Тогда 
			ЦиклОбменаОбъект = ЦиклОбмена.ПолучитьОбъект();
		КонецЕсли;
		
		НачатьТранзакцию();
		
		Если Не Ссылка.ПометкаУдаления Тогда
			ПредметОбъект = Ссылка.ПолучитьОбъект();
			ПредметОбъект.УстановитьПометкуУдаления(Истина);
			КонтекстЭДОСервер.ПриЗаписиОбъекта(ПредметОбъект, Ложь);
		КонецЕсли;
		
		Если ЦиклОбменаОбъект <> Неопределено Тогда
			ЦиклОбменаОбъект.УстановитьПометкуУдаления(Истина);
			ЦиклОбменаОбъект.ИзмененаПометкаУдаления = Истина;
			КонтекстЭДОСервер.ПриЗаписиОбъекта(ЦиклОбменаОбъект, Ложь);
		КонецЕсли;
		
		ЭлектронныйДокументооборотСКонтролирующимиОрганамиВызовСервера.ИзменитьЗначениеВФорме1СОтчетность(
			Ссылка, "Скрыт", Истина);
			
		ЭлектронныйДокументооборотСКонтролирующимиОрганамиВызовСервера.ИзменитьЗначениеВФорме1СОтчетность(
			Ссылка, "Непрочтенное", Ложь);
			
		ЭлектронныйДокументооборотСКонтролирующимиОрганамиВызовСервера.ИзменитьЗначениеВФорме1СОтчетность(
			Ссылка, "ПометкаУдаления", Истина);
		
		ЗафиксироватьТранзакцию();
		
	КонецЦикла;
	
	УстановитьПривилегированныйРежим(Ложь);
	
	Возврат ПредметыРассылок;
		
КонецФункции

&НаКлиенте
Асинх Процедура ОчисткаРассылок(Команда)
	ВидОбъекта = НСтр("ru = 'все рассылки'");
	ТекстСообщения = НСтр("ru = 'Вы уверены, что хотите пометить на удаление и скрыть %1?
		|
		|Помеченные на удаление рассылки в дальнейшем могут быть удалены навсегда при удалении помеченных объектов.
		|Скрытые отчеты и документы можно восстановить в разделе
		|""Настройки"" - ""Скрытые отчеты и документы"" формы 1С-Отчетность'");
	
	ТекстСообщения = СтрШаблон(ТекстСообщения, ВидОбъекта);
	Если Ждать ВопросАсинх(ТекстСообщения, РежимДиалогаВопрос.ДаНет) = КодВозвратаДиалога.Да Тогда 
		ПредметыРассылок = ПометитьНаУдалениеРассылки();
		Если ПредметыРассылок.Количество() > 0 Тогда 
			Для Каждого Ссылка Из ПредметыРассылок Цикл 
				Оповестить("Скрытие/восстановление объекта",, Ссылка);
			КонецЦикла;
		КонецЕсли;
	КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_АктуализироватьТекущееВремя()
	
	ДокументооборотСКОВызовСервера.СохранитьНастройку(
		"ДокументооборотСКонтролирующимиОрганами_ТекущаяДата", 
		ТекущаяДата());
	
	ПодключитьОбработчикОжидания("Подключаемый_АктуализироватьТекущееВремя", 10*60, Ложь);
	
КонецПроцедуры

&НаСервереБезКонтекста
Функция ТекущееВремяНаКлиенте()
	
	Дата = ХранилищеОбщихНастроек.Загрузить("ДокументооборотСКонтролирующимиОрганами_ТекущаяДата");
	Если ЗначениеЗаполнено(Дата) Тогда
		Возврат Дата;
	Иначе
		Возврат ТекущаяДатаСеанса();
	КонецЕсли;
	
КонецФункции

&НаКлиенте
Процедура ЗакрытьПанельТребованийНажатие(Элемент)
	
	ДокументооборотСКОВызовСервера.СохранитьНастройку(
		"ДокументооборотСКонтролирующимиОрганами_1СОтчетность_ЗакрытьПанельТребований", 
		Истина);
		
	ПрорисоватьПанельТребований(ЭтотОбъект);
	
КонецПроцедуры

&НаСервереБезКонтекста
Процедура СброситьВидимостьПанелиТребований()
	
	ДокументооборотСКОВызовСервера.СохранитьНастройку(
		"ДокументооборотСКонтролирующимиОрганами_1СОтчетность_ЗакрытьПанельТребований", 
		Неопределено);
	
КонецПроцедуры

&НаКлиенте
Процедура НастроитьОграниченияОбменаПоСЭДО(РезультатВыбора, ДополнительныеПараметры) Экспорт
	
	Если РезультатВыбора <> Неопределено Тогда
		ДанныеДляОбмена = ВсеОрганизации();
		ВыбранныеОрганизации = ДанныеДляОбмена.МассивОрганизаций;
		ОбновитьДанныеСЭДОПродолжить(ВыбранныеОрганизации);
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ОбновитьДанныеСЭДОПродолжить(ВыбранныеОрганизации)
	
	НомерОбъекта = 0;
	АдресСведенийПоОшибкам = "";
	УстановитьВидимостьПанелиОшибокОбновления(ЭтотОбъект);
	
	ПараметрыДлительногоОбмена = ДлительнаяОтправкаКлиент.ПараметрыДлительногоОбмена();
	ПараметрыДлительногоОбмена.Организации 					= ВыбранныеОрганизации;
	ПараметрыДлительногоОбмена.ЭтоОбменИзФормы1СОтчетность 	= Истина;
	
	Если НЕ ДлительнаяОтправкаКлиент.ПоказатьФормуДлительногоОбмена(ПараметрыДлительногоОбмена) Тогда // Обмен из 1С-Отчетность.
		Возврат;
	КонецЕсли;
	
	ПодключитьОбработчикОжидания("Подключаемый_ОсуществитьОбменСЭДОПоВыбраннымОрганизациям", 0.1, Истина);
	
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ОсуществитьОбменСЭДОПоВыбраннымОрганизациям()

	Если НомерОбъекта + 1 > ВыбранныеОрганизации.Количество() Тогда
		
		ОписаниеОповещения = Новый ОписаниеОповещения("ОсуществитьОбменПоВыбраннымОрганизациямПослеНастройкиМЧДФНС",
			ЭтотОбъект);
		ДокументооборотСКОКлиент.НастроитьМЧДФНС(ОписаниеОповещения, , ВыбранныеОрганизации);
		
	Иначе
		
		// Получим очередную организацию для обмена
		ОрганизацияДляОбмена = ВыбранныеОрганизации[НомерОбъекта];
		
		ОписаниеОповещения = Новый ОписаниеОповещения(
			"ОсуществитьОбменСЭДОПоВыбраннымОрганизациямЗавершение",
			ЭтотОбъект);
			
		//КонтекстЭДО инициализируется в ОбновитьДанные
		КонтекстЭДОКлиент.ОсуществитьОбменСЭДОПоОрганизации(
			ЭтотОбъект,
			ОрганизацияДляОбмена,
			ОписаниеОповещения);
		
	КонецЕсли;

КонецПроцедуры

&НаСервереБезКонтекста
Функция ПолучитьЗначениеДобавитьОтдельнуюКнопкуОбменаДляСЭДО()

	ДобавитьОтдельнуюКнопкуОбменаДляСЭДО = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить(
		"НастройкиОбменаСЭДОСФР",
		"ДобавитьОтдельнуюКнопкуОбменаДляСЭДО",
		Ложь);
	Возврат ДобавитьОтдельнуюКнопкуОбменаДляСЭДО;
	
КонецФункции

&НаКлиенте
Процедура ОбновитьДанныеСЭДОПредварительное(Результат, ПараметрыОповещения) Экспорт
	
	ОбновитьДанныеСЭДО(
		ПараметрыОповещения.Команда
	);
	
КонецПроцедуры

&НаКлиенте
Процедура ПеренестиВДругойВидДокумента(ВидДокумента)
	
	ТекущаяТаблица = ТекущаяТаблица(ЭтотОбъект);
	ВыделенныеСтроки = Новый Массив;
	Для каждого Строка Из ТекущаяТаблица.ВыделенныеСтроки Цикл
		ВыделенныеСтроки.Добавить(Элементы.Требования.ДанныеСтроки(Строка).Ссылка);
	КонецЦикла;
	
	ПеренестиВходящиеВДругойВидДокументаНаСервере(ВидДокумента, ВыделенныеСтроки);
		
	ТекущаяТаблица.Обновить();
	ОбновитьКоличествоНепрочтенныхОбъектов(ЭтотОбъект);
	
КонецПроцедуры

&НаСервере
Процедура ПеренестиВходящиеВДругойВидДокументаНаСервере(ВидДокумента, ВыделенныеСтроки = Неопределено)
	
	ТекущаяТаблица = ТекущаяТаблица(ЭтотОбъект);
	
	Для каждого Строка Из ТекущаяТаблица.ВыделенныеСтроки Цикл
		
		ЭлектронныйДокументооборотСКонтролирующимиОрганамиВызовСервера.ИзменитьЗначениеВФорме1СОтчетность(
			Строка.Ссылка, "ВидДокумента", ВидДокумента);
		
	КонецЦикла;
	
КонецПроцедуры

&НаКлиенте
Процедура СоздатьОтветНаТребованиеСФРПредварительное(Результат, ПараметрыОповещения) Экспорт
	
	СоздатьОтветНаТребованиеСФР(
		ПараметрыОповещения.Команда
	);
	
КонецПроцедуры

&НаКлиенте
Процедура СоздатьОтветНаТребованиеСФР(Команда = Неопределено)
	
	Если КонтекстЭДОКлиент = Неопределено И КонтекстУжеПодключался <> Истина Тогда
		ПараметрыОповещения = Новый Структура;
		ПараметрыОповещения.Вставить("Команда", Команда);
		Оповещение = Новый ОписаниеОповещения(
			"СоздатьОтветНаТребованиеСФРПредварительное",
			ЭтотОбъект,
			ПараметрыОповещения
		);
		ИнициализироватьКонтекстЭДО(Оповещение);
		Возврат;
	КонецЕсли;
	
	Если КонтекстЭДОКлиент = Неопределено Тогда
		ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстОшибкиИнициализацииКонтекстаЭДО);
		Возврат;
	КонецЕсли;
	
	КонтекстЭДОКлиент.СоздатьОтветНаТребованиеСФРСВыборомТребования(, Организация,);
	
КонецПроцедуры

&НаСервере
Функция СфомироватьОтветНаСервере(Ссылка)
	
	Результат = Неопределено;
	
	Попытка
		Ответ = Документы.ОтветСтрахователяНаТребованиеПроверкиФСС.СоздатьДокумент();
		
		Ответ.Дата 		= ТекущаяДатаСеанса();
		Ответ.Основание	= Ссылка;
		
		Ответ.УстановитьВремя();
		Ответ.УстановитьНовыйНомер();
		
		Ответ.Заполнить(Ссылка);
		
		Ответ.Записать();
		
		Результат = Ответ.Ссылка;
	Исключение
		ОбщегоНазначения.СообщитьПользователю(НСтр("ru = 'Невозможно сформировать ответ.'"));
	КонецПопытки;
	
	Возврат Результат;
	
КонецФункции

&НаКлиенте
Процедура ПриИзмененииВидаЕГРЮЛ()
	
	Использование = ЗначениеЗаполнено(ВидЕГРЮЛ);
	
	ТребованияФНСКлиентСервер.ДобавитьЭлементКомпоновкиСУдалением(
		ЭтотОбъект.ЕГРЮЛ.Отбор,
		"Вид",
		ВидСравненияКомпоновкиДанных.Равно,
		ВидЕГРЮЛ,
		Использование);
	
КонецПроцедуры

&НаСервере
Функция ПолучитьСписокЕГРЮЛИзРегистраСведений()

	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
		|	ВЫБОР
		|		КОГДА ТИПЗНАЧЕНИЯ(ЖурналОтправокВКонтролирующиеОрганы.Ссылка) = ТИП(Документ.УведомлениеОСпецрежимахНалогообложения)
		|			ТОГДА ВЫРАЗИТЬ(ЖурналОтправокВКонтролирующиеОрганы.Ссылка КАК Документ.УведомлениеОСпецрежимахНалогообложения).ВидУведомления
		|		ИНАЧЕ ""Выписка из ЕГРЮЛ/ЕГРИП""
		|	КОНЕЦ КАК Вид
		|ИЗ
		|	РегистрСведений.ЖурналОтправокВКонтролирующиеОрганы КАК ЖурналОтправокВКонтролирующиеОрганы
		|		ЛЕВОЕ СОЕДИНЕНИЕ Документ.УведомлениеОСпецрежимахНалогообложения КАК УведомлениеОСпецрежимахНалогообложения
		|		ПО ЖурналОтправокВКонтролирующиеОрганы.Ссылка = УведомлениеОСпецрежимахНалогообложения.Ссылка
		|ГДЕ
		|	ЖурналОтправокВКонтролирующиеОрганы.СтраницаЖурнала = ЗНАЧЕНИЕ(Перечисление.СтраницыЖурналаОтчетность.ЕГРЮЛ)
		|	И НЕ ЖурналОтправокВКонтролирующиеОрганы.Скрыт";
	
	Результат = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Вид");
	Возврат Результат;

КонецФункции

&НаКлиенте
Асинх Процедура ВыбратьОрганизациюИСоздатьУведомление(ВидыУведомления)
	ВыбраннаяОрганизация = Организация;
	Если Не ЗначениеЗаполнено(Организация) Тогда 
		ВыбраннаяОрганизация = Ждать ВвестиЗначениеАсинх(ПредопределенноеЗначение("Справочник.Организации.ПустаяСсылка"), 
			НСтр("ru = 'Выберите организацию'"), Тип("СправочникСсылка.Организации"));
		Если Не ЗначениеЗаполнено(ВыбраннаяОрганизация) Тогда 
			Возврат;
		КонецЕсли;
	КонецЕсли;
	
	ЭтоЮрЛицо = ЭлектронныйДокументооборотСКонтролирующимиОрганамиВызовСервера.ЭтоЮрЛицо(ВыбраннаяОрганизация);
	Если ЭтоЮрЛицо Тогда
		ВидУведомления = ВидыУведомления.ООО;
	Иначе
		ВидУведомления = ВидыУведомления.ИП;
	КонецЕсли;
	
	СоздатьУведомлениеЕГРЮЛ(ВидУведомления, ВыбраннаяОрганизация);
КонецПроцедуры

&НаКлиенте
Процедура СоздатьУведомлениеЕГРЮЛ(ВидУведомления, ВыбраннаяОрганизация, Переопределить = Истина)

	СтандартнаяОбработка = Истина;
	
	Если Переопределить Тогда 
		Попытка
			РегламентированнаяОтчетностьКлиентПереопределяемый.ПередОткрытиемФормыУведомления(
				ВыбраннаяОрганизация, 
				ВидУведомления, 
				СтандартнаяОбработка);
		Исключение
			СтандартнаяОбработка = Истина;
		КонецПопытки;
	КонецЕсли;
	
	ПараметрыУведомления = Новый Структура;
	ПараметрыУведомления.Вставить("Организация", ВыбраннаяОрганизация);
	ПараметрыУведомления.Вставить("ВидУведомления", ВидУведомления);
	ПараметрыУведомления.Вставить("UIDФорма1СОтчетность", УникальныйИдентификатор);
	
	Если СтандартнаяОбработка Тогда
		ОткрытьФорму("Документ.УведомлениеОСпецрежимахНалогообложения.ФормаОбъекта",  ПараметрыУведомления, ВладелецФормы);
	Иначе
		Оповестить("РеализованаНестандартнаяОбработкаОткрытияУведомления", ПараметрыУведомления);
	КонецЕсли;
			
КонецПроцедуры

&НаКлиенте
Функция ФормаУведомленияЗаменена(ВидУведомления, ВыбраннаяОрганизация)

	СтандартнаяФорма = Истина;
	
	Попытка
		РегламентированнаяОтчетностьКлиентПереопределяемый.ПередОткрытиемФормыУведомления(
			ВыбраннаяОрганизация, 
			ВидУведомления, 
			СтандартнаяФорма);
	Исключение
		СтандартнаяФорма = Истина;
	КонецПопытки;

	Возврат НЕ СтандартнаяФорма;
	
КонецФункции

&НаКлиенте
Функция ОпределитьНаличиеМастераРегистрацииЕГРЮЛ()
	
	Если ЭтоРежимОблачной1СО Тогда
		ЕстьМастерРегистрацииЕГРЮЛ = Ложь;
	Иначе
	
		ВыбраннаяОрганизация = ПредопределенноеЗначение("Справочник.Организации.ПустаяСсылка");
		
		ФормаРегистрацииИПЗаменена = ФормаУведомленияЗаменена(
			ПредопределенноеЗначение("Перечисление.ВидыУведомленийОСпецрежимахНалогообложения.ФормаР21001"), 
			ВыбраннаяОрганизация);
			
		ФормаРегистрацииЮЛЗаменена = ФормаУведомленияЗаменена(
			ПредопределенноеЗначение("Перечисление.ВидыУведомленийОСпецрежимахНалогообложения.ФормаР11001"), 
			ВыбраннаяОрганизация);
			
		ЕстьМастерРегистрацииЕГРЮЛ = ФормаРегистрацииИПЗаменена И ФормаРегистрацииЮЛЗаменена;
		
	КонецЕсли;
	
КонецФункции

&НаКлиенте
Процедура УстановитьВидимостьПанелиОтправкиВЕГРЮЛ()
	
	Если ЭтоРежимОблачной1СО Тогда
		
		Элементы.ГруппаОтправкиВЕГРЮЛ.Видимость = Ложь;
		
	Иначе
	
		КлючНастройки = "ДокументооборотСКонтролирующимиОрганами_1СОтчетность_СкрытьПанельВЕГРЮЛ";
		СкрытьПанель  = ДокументооборотСКОВызовСервера.ЗагрузитьНастройку(КлючНастройки) = Истина;
		
		ЭтоВеб = ДокументооборотСКОКлиентСервер.ЭтоВебКлиент();
		
		Элементы.ГруппаОтправкиВЕГРЮЛ.Видимость = 
			НЕ СкрытьЗаявленияЕГРЮЛ_ЕГРИПвКонфигурации
			И НЕ СкрытьПанель 
			И (ЕстьМастерРегистрацииЕГРЮЛ ИЛИ НЕ ЭтоВеб);
			
		Элементы.ГруппаЕГРЮЛСоздать.Видимость = НЕ СкрытьЗаявленияЕГРЮЛ_ЕГРИПвКонфигурации;
		
		Если Элементы.ГруппаОтправкиВЕГРЮЛ.Видимость Тогда
			
			Если ЕстьМастерРегистрацииЕГРЮЛ Тогда
				Элементы.ПредупреждениеОбОтправкеЕГРЮЛ.Заголовок = НСтр("ru = 'У вас есть возможность зарегистрировать прямо из программы ООО или ИП, внести изменение в ЕГРЮЛ или ЕГРИП, а также отправить заявление на закрытие ИП'");
			ИначеЕсли НЕ ЭтоВеб Тогда
				Элементы.ПредупреждениеОбОтправкеЕГРЮЛ.Заголовок = Новый ФорматированнаяСтрока(
					НСтр("ru = 'У вас есть возможность прямо из программы отправить '"),
					Новый ФорматированнаяСтрока("заявление", , , , "заявление"),
					НСтр("ru = ' на изменение в ЕГРЮЛ/ЕГРИП'"));
			КонецЕсли;
				
		КонецЕсли;
	КонецЕсли;

КонецПроцедуры

&НаКлиенте
Процедура УстановитьВидимостьКнопокРазделаЕГРЮЛ()
	
	Элементы.ЗарегистрироватьНовуюОрганизацию.Видимость = НЕ ЕстьМастерРегистрацииЕГРЮЛ;
	Элементы.ЗарегистрироватьНовуюОрганизациюМастер.Видимость = ЕстьМастерРегистрацииЕГРЮЛ;

КонецПроцедуры

&НаКлиенте
Процедура УправлениеЭУРазделаЕГРЮЛ()
	
	ОпределитьНаличиеМастераРегистрацииЕГРЮЛ();
	УстановитьВидимостьКнопокРазделаЕГРЮЛ();
	УстановитьВидимостьПанелиОтправкиВЕГРЮЛ();
	
КонецПроцедуры

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

&НаКлиенте
Процедура ПечатьУведомленияИзСписка(УведомлениеДляПечати)
	ДанныеДляПечатиУведомления = ДанныеДляПечатиУведомления(УведомлениеДляПечати);
	
	Если ДанныеДляПечатиУведомления.УдаленныйОбъектМетаданных Тогда 
		Попытка
			Если ДанныеДляПечатиУведомления.ПечатьБСП Тогда 
				МассивПечати = Новый Массив;
				МассивПечати.Добавить(УведомлениеДляПечати);
				УправлениеПечатьюКлиент.ВыполнитьКомандуПечати(ДанныеДляПечатиУведомления.МенеджерПечати, "Уведомление", МассивПечати, Неопределено);
			Иначе
				СтруктураРеквизитовФормы = ОбщегоНазначенияКлиентСервер.СкопироватьСтруктуру(ДанныеДляПечатиУведомления.СтруктураРеквизитовФормы);
				РегламентированнаяОтчетностьКлиент.ОткрытьФормуПредварительногоПросмотра(ЭтотОбъект, , Ложь, 
					ДанныеДляПечатиУведомления.СписокПечатаемыхЛистов, ДанныеДляПечатиУведомления);
				СтруктураРеквизитовФормы = Неопределено;
			КонецЕсли;
		Исключение
			РегламентированнаяОтчетностьКлиент.ОткрытьФормуПредварительногоПросмотра(ЭтотОбъект, , Ложь, 
				ДанныеДляПечатиУведомления.ОшибкаПечати, ДанныеДляПечатиУведомления);
		КонецПопытки;
	Иначе
		Если ДанныеДляПечатиУведомления.НеобходимоФормированиеСредствамиБСП Тогда 
			Попытка
				МассивПечати = Новый Массив;
				МассивПечати.Добавить(УведомлениеДляПечати);
				
				УправлениеПечатьюКлиент.ВыполнитьКомандуПечати(
					"Документ.УведомлениеОСпецрежимахНалогообложения",
					"Уведомление", МассивПечати, Неопределено);
			Исключение
				РегламентированнаяОтчетностьКлиент.ОткрытьФормуПредварительногоПросмотра(ЭтотОбъект, , Ложь, 
					ДанныеДляПечатиУведомления.ОшибкаПечати, ДанныеДляПечатиУведомления);
			КонецПопытки;
		Иначе
			СтруктураРеквизитовФормы = ОбщегоНазначенияКлиентСервер.СкопироватьСтруктуру(ДанныеДляПечатиУведомления.СтруктураРеквизитовФормы);
			РегламентированнаяОтчетностьКлиент.ОткрытьФормуПредварительногоПросмотра(ЭтотОбъект, , Ложь, 
				ДанныеДляПечатиУведомления.СписокПечатаемыхЛистов, ДанныеДляПечатиУведомления);
			СтруктураРеквизитовФормы = Неопределено;
		КонецЕсли;
	КонецЕсли;
КонецПроцедуры

// СтандартныеПодсистемы.ПодключаемыеКоманды
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
		
	Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда
		
		МодульПодключаемыеКомандыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиент");
		
		МодульПодключаемыеКомандыКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда, Элементы.Отчеты);
				
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ПродолжитьВыполнениеКомандыНаСервере(ПараметрыВыполнения, ДополнительныеПараметры) Экспорт
	
	ВыполнитьКомандуНаСервере(ПараметрыВыполнения);
	
КонецПроцедуры

&НаСервере
Процедура ВыполнитьКомандуНаСервере(ПараметрыВыполнения)
	
	Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда
		
		МодульПодключаемыеКоманды = ОбщегоНазначения.ОбщийМодуль("ПодключаемыеКоманды");
		
		МодульПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, ПараметрыВыполнения, Элементы.Отчеты);
	
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
	МодульПодключаемыеКомандыКлиентСервер = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиентСервер");
	Если Элементы.Разделы.ТекущаяСтраница.Имя = "СтраницаОтчеты" Тогда
		МодульПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Элементы.Отчеты);
		ОтчетыПриАктивизацииСтрокиНаСервере();
	ИначеЕсли Элементы.Разделы.ТекущаяСтраница.Имя = "СтраницаУведомления" Тогда
		МодульПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Элементы.Уведомления);
	КонецЕсли;
КонецПроцедуры
// Конец СтандартныеПодсистемы.ПодключаемыеКоманды

&НаКлиенте
Процедура ОтчетыПриАктивизацииСтроки(Элемент)
	ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
КонецПроцедуры

&НаСервере
Процедура ОтчетыПриАктивизацииСтрокиНаСервере()
	РегламентированнаяОтчетностьПереопределяемый.ОтчетыПриАктивизацииСтрокиНаСервере(ЭтотОбъект);
КонецПроцедуры

&НаКлиенте
Процедура ОбновитьЖурналОтчетовСтатусы()
	Если РезультатПроверкиКоличестваНезаписанныхОбъектов = Неопределено Тогда 
		РезультатПроверкиКоличестваНезаписанныхОбъектов = ПроверитьКоличествоОбъектовНеЗаписанныхВРегистр();
		Если РезультатПроверкиКоличестваНезаписанныхОбъектов <> Неопределено Тогда
			ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект);
			ПараметрыОжидания.ВыводитьСообщения = Истина;
			ПараметрыОжидания.ВыводитьОкноОжидания = Ложь;
			ОповещениеПроверитьВыполнение = Новый ОписаниеОповещения(
				"ПроверитьВыполнениеПодсчетаКоличестваНезаписанныхОбъектов", ЭтотОбъект);
			ДлительныеОперацииКлиент.ОжидатьЗавершение(
				РезультатПроверкиКоличестваНезаписанныхОбъектов, ОповещениеПроверитьВыполнение, ПараметрыОжидания);
		КонецЕсли;
	КонецЕсли;
КонецПроцедуры

#КонецОбласти

Связанные материалы