Документооборот с контролирующими органами / Настройки групповой печати534 / Модуль формы

файл
&НаСервере
Перем ЦиклыОбмена Экспорт;

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

&НаКлиенте
Процедура ПриОткрытии(Отказ)
	
	Если ЗначениеЗаполнено(ТекстПредупреждения) Тогда 
		ПоказатьПредупреждение(, ТекстПредупреждения);
		Отказ = Истина;
	КонецЕсли;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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