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