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

файл

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

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

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

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

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

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

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

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

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

	КнопкаОбращение(Ложь);
	
КонецПроцедуры

&НаКлиенте
Процедура Отмена(Команда)
	
	Если РежимФормы = "Выгрузка" Тогда
		Закрыть(Ложь);
	Иначе
		Закрыть();
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура Обращение_Пропустить(Команда)

	Закрыть(КодВозвратаДиалога.Да);
	
КонецПроцедуры

&НаКлиенте
Процедура Обращение_ТекущиеФайлы(Команда)
	
	КнопкаОбращение(Истина);

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура ОтправитьПисьмо(Режим = Истина)
	
	ТекстФайла = СформироватьПеречень(Режим);
	
	Если ПустаяСтрока(ТекстФайла) Тогда
		Возврат;
	КонецЕсли;

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

&НаКлиенте
Процедура Перечень_Локальная(Режим)
	
	ТекстФайла = СформироватьПеречень(Режим);
	
	Если ПустаяСтрока(ТекстФайла) Тогда
		Возврат;
	КонецЕсли;

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

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

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

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

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

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

&НаКлиенте
Процедура УстановитьВидимостьЭлементов()

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

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

	ИначеЕсли РежимФормы = "ВыгрузкаЧастично" ИЛИ РежимФормы = "Выгрузка" Тогда
		Элементы.ГруппаСтраницы.ТекущаяСтраница = Элементы.ГруппаСервис_Выгрузить;
		Элементы.ДекорацияВыгрузка.Заголовок = Наполнение.Описание;
		Элементы.Обращение_Выгрузить.Заголовок = Наполнение.Кнопка1;
		Элементы.Обращение_Пропустить.Заголовок = Наполнение.Кнопка2;

		Элементы.Обращение_Пропустить.Видимость = НЕ РежимФормы = "Выгрузка";

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

		Элементы.Обращение_Пропустить.Видимость = НЕ РежимФормы = "Сохранить";

	КонецЕсли;
	
	Элементы.АдресОтвета.Видимость = ПустаяСтрока(АдресДляОтвета) И БазаПодключенаКУСП;
	Элементы.АдресОтветаВыгрузить.Видимость = ПустаяСтрока(АдресДляОтвета) И БазаПодключенаКУСП;
	
КонецПроцедуры

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

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

&НаСервереБезКонтекста
Функция ИдентификацияФайла(ИдентификаторФайла, ИмяФайла, Вид, ИдентификаторВыгрузки, ИдентификаторАбонента)
	
	СоздаватьЛинки = Ложь;
	Результат = Новый Структура("Первый, Второй", "", "");
	
	СведенияФайла = Новый Файл(ИмяФайла);

	ТекущийРазделитель = "=";
	
	Если СоздаватьЛинки Тогда
		Результат.Первый = КатегорияФайла(Вид) + ТекущийРазделитель
					+ ИдентификаторАбонента + ТекущийРазделитель
					+ ИдентификаторФайла + СведенияФайла.Расширение;
	Иначе
		Результат.Первый = КатегорияФайла(Вид) + ТекущийРазделитель
					+ ИдентификаторВыгрузки + ТекущийРазделитель
					+ ИдентификаторАбонента + ТекущийРазделитель
					+ ИдентификаторФайла + СведенияФайла.Расширение;
	КонецЕсли;
	
	Результат.Второй = ИдентификаторВыгрузки + ТекущийРазделитель
				+ ИдентификаторАбонента + ТекущийРазделитель
				+ ИдентификаторФайла + СведенияФайла.Расширение;

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

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

&НаСервереБезКонтекста
Функция ТекстТемыОбращения()
	
	Результат = НСтр("ru = 'Запрос на выгрузку архива 1С-Отчетности в 1C:Fresh'");
	
	Возврат Результат;
	
КонецФункции

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

&НаСервереБезКонтекста
Функция ПочтаПоддержки()
	
	Возврат "support@1cfresh.com";
	
КонецФункции

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

	ИначеЕсли РежимФормы = "Архив" И ИнтернетПоддержкаПодключена Тогда
		Тело = НСтр("ru = 'Чтобы получить старые транспортные контейнеры, содержащие нерасшифрованные данные, необходимо отправить обращение на линию консультаций фирмы ""1C"".'")
			+ " " + НСтр("ru = 'Вложить сохраненный файл в сформированное письмо и отправить на электронный адрес <a href=""%1"">%1</a>'.");
		Результат.Кнопка1 = НСтр("ru = 'Отправить обращение'");

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

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

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

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

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

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

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

	ИначеЕсли РежимФормы = "ВыгрузкаЧастично" И НЕ РежимМоделиСервиса И НЕ ИнтернетПоддержкаПодключена Тогда
		Тело = НСтр("ru = 'Вы можете выгрузить содержимое транспортных контейнеров по кнопке ""Выгрузить содержимое без контейнеров"".'")
			+ Символы.ПС + Символы.ПС
			+ НСтр("ru = 'Чтобы получить старые транспортные контейнеры, содержащие нерасшифрованные данные по документу, необходимо'")
			+ " " + НСтр("ru = 'сформировать файл с перечнем транспортных контейнеров.'")
			+ " " + НСтр("ru = 'Вложить сохраненный файл в сформированное письмо и отправить на электронный адрес <a href=""%1"">%1</a>.'");
		Результат.Кнопка1 = НСтр("ru = 'Сформировать письмо'");
		Результат.Кнопка2 = НСтр("ru = 'Выгрузить содержимое без контейнеров'");

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

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

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

	ИначеЕсли РежимФормы = "Выгрузка" И НЕ РежимМоделиСервиса И НЕ ИнтернетПоддержкаПодключена Тогда
		Тело = НСтр("ru = 'Чтобы получить старые транспортные контейнеры, содержащие нерасшифрованные данные по документу, необходимо'")
			+ " " + НСтр("ru = 'сформировать файл с перечнем транспортных контейнеров.'")
			+ " " + НСтр("ru = 'Вложить сохраненный файл в сформированное письмо и отправить на электронный адрес <a href=""%1"">%1</a>.'");
		Результат.Кнопка1 = НСтр("ru = 'Сформировать письмо'");

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

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

	ИначеЕсли РежимФормы = "СохранитьЧастично" И НЕ РежимМоделиСервиса И ИнтернетПоддержкаПодключена Тогда
		Тело = НСтр("ru = 'Вы можете выгрузить содержимое транспортных контейнеров по кнопке ""Выгрузить содержимое без контейнеров"".'")
			+ Символы.ПС + Символы.ПС
			+ НСтр("ru = 'Чтобы получить старые транспортные контейнеры, содержащие нерасшифрованные данные по документу, необходимо'")
			+ " " + НСтр("ru = 'отправить обращение на линию консультаций фирмы ""1C"".'");
		Результат.Кнопка1 = НСтр("ru = 'Сформировать письмо'");
		Результат.Кнопка2 = НСтр("ru = 'Выгрузить содержимое без контейнеров'");

	ИначеЕсли РежимФормы = "СохранитьЧастично" И НЕ РежимМоделиСервиса И НЕ ИнтернетПоддержкаПодключена Тогда
		Тело = НСтр("ru = 'Вы можете выгрузить содержимое транспортных контейнеров по кнопке ""Выгрузить содержимое без контейнеров"".'")
			+ Символы.ПС + Символы.ПС
			+ НСтр("ru = 'Чтобы получить старые транспортные контейнеры, содержащие нерасшифрованные данные по документу, необходимо'")
			+ " " + НСтр("ru = 'сформировать файл с перечнем транспортных контейнеров.'")
			+ " " + НСтр("ru = 'Вложить сохраненный файл в сформированное письмо и отправить на электронный адрес <a href=""%1"">%1</a>.'");
		Результат.Кнопка1 = НСтр("ru = 'Сформировать письмо'");
		Результат.Кнопка2 = НСтр("ru = 'Выгрузить содержимое без контейнеров'");

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

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

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

	ИначеЕсли РежимФормы = "Сохранить" И НЕ РежимМоделиСервиса И НЕ ИнтернетПоддержкаПодключена Тогда
		Тело = НСтр("ru = 'Чтобы получить старые транспортные контейнеры, содержащие нерасшифрованные данные по документу, необходимо'")
			+ " " + НСтр("ru = 'сформировать файл с перечнем транспортных контейнеров.'")
			+ " " + НСтр("ru = 'Вложить сохраненный файл в сформированное письмо и отправить на электронный адрес <a href=""%1"">%1</a>.'");
		Результат.Кнопка1 = НСтр("ru = 'Сформировать письмо'");

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

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

	ИначеЕсли РежимФормы = "Расшифровка" И НЕ РежимМоделиСервиса И ИнтернетПоддержкаПодключена Тогда
		Тело = НСтр("ru = 'Чтобы расшифровать старые транспортные контейнеры необходимо'")
			+ " " + НСтр("ru = 'отправить обращение на линию консультаций фирмы ""1C"".'");
		Результат.Кнопка1 = НСтр("ru = 'Отправить обращение'");

	ИначеЕсли РежимФормы = "Расшифровка" И НЕ РежимМоделиСервиса И НЕ ИнтернетПоддержкаПодключена Тогда
		Тело = НСтр("ru = 'Чтобы расшифровать старые транспортные контейнеры необходимо'")
			+ " " + НСтр("ru = 'сформировать файл с перечнем.'")
			+ " " + НСтр("ru = 'Вложить сохраненный файл в сформированное письмо и отправить на электронный адрес <a href=""%1"">%1</a>.'");
		Результат.Кнопка1 = НСтр("ru = 'Сформировать письмо'");

	КонецЕсли;
	
	Тело = СтрЗаменить(Тело, "%1", ПочтаПоддержки());
	Результат.Описание = СтроковыеФункции.ФорматированнаяСтрока(Заголовок + Символы.ПС + Символы.ПС + Тело);
	
	Возврат Результат;
	
КонецФункции

#Область ОбращенияФреш

// Ожидаем появление программного интерфейса в БТС, чтобы исключить вызов служебных функций

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

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

	ТекстHTML = ЗаполнитьШаблономСодержание(ТекстСодержанияОбращения());
	МодульОбработкиИнформационныйЦентр.ДобавитьИнформациюОПриложении(ТекстHTML, Новый Структура);
	КодПользователя = МодульИнформационныйЦентрСервер.КодПользователяДляДоступа();
	ОбластьДанных = МодульРаботаВМоделиСервиса.ЗначениеРазделителяСеанса();
	
	Попытка
		
		WSПрокси = МодульИнформационныйЦентрСервер.ПолучитьПроксиСлужбыПоддержки();
		
		СписокФайловXDTO = СформироватьСписокФайловXDTO(WSПрокси.ФабрикаXDTO, ТекстФайла);
		
		WSПрокси.addComments(КодПользователя, "", ТекстТемыОбращения(), 
			ТекстHTML, Истина,  СписокФайловXDTO, ОбластьДанных, АдресДляОтвета);
			
		Результат = Истина;
		
	Исключение
		
		ТекстОшибки = МодульИнформационныйЦентрСлужебный.ПодробныйТекстОшибки(ИнформацияОбОшибке());
		ЗаписьЖурналаРегистрации(МодульИнформационныйЦентрСервер.ПолучитьИмяСобытияДляЖурналаРегистрации(), 
		                         УровеньЖурналаРегистрации.Ошибка,,, ТекстОшибки);
		ТекстВывода = МодульИнформационныйЦентрСервер.ТекстВыводаИнформацииОбОшибкеВСлужбеПоддержки();
		
		ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстВывода);
		
	КонецПопытки;
	
	Возврат Результат;
	
КонецФункции

&НаСервере
Функция СформироватьСписокФайловXDTO(Фабрика, ТекстПеречня)
	
	ТипСпискаФайлов = Фабрика.Тип("http://www.1c.ru/1cFresh/InformationCenter/SupportServiceData/1.0.0.1", "ListFile");
	СписокФайлов = Фабрика.Создать(ТипСпискаФайлов);
	
	ТипФайла = Фабрика.Тип("http://www.1c.ru/1cFresh/InformationCenter/SupportServiceData/1.0.0.1", "File");
	ФайлОбъект = Фабрика.Создать(ТипФайла);
	ФайлОбъект.Name = "ПереченьТК";
	ФайлОбъект.Data = ТекстПеречня;
	ФайлОбъект.Extension = "txt";
	ФайлОбъект.Size = СтрДлина(ТекстПеречня);
	
	МодульОбработкиИнформационныйЦентр = ОбщегоНазначения.ОбщийМодуль("Обработки.ИнформационныйЦентр");
	МодульОбработкиИнформационныйЦентр.ДобавитьЗначениеВСписокXDTO(СписокФайлов, "Files", ФайлОбъект);
	
	Возврат СписокФайлов;
	
КонецФункции

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

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

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