Документооборот с контролирующими органами / Просмотр текст / Модуль формы

файл
&НаСервере
Перем КонтекстЭДОСервер;

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

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
	
	Если ЗначениеЗаполнено(Параметры.ИмяФайла) Тогда
		Заголовок = Параметры.ИмяФайла + " - просмотр";
	ИначеЕсли Параметры.Свойство("ТекстЗаголовка") И ЗначениеЗаполнено(Параметры.ТекстЗаголовка) Тогда
		Заголовок = Параметры.ТекстЗаголовка;
	КонецЕсли;
	Если НЕ ЗначениеЗаполнено(Параметры.Содержимое) Тогда
		Возврат;
	КонецЕсли;
	
	Если Параметры.Свойство("ПереноситьПоСловам") И Параметры.ПереноситьПоСловам Тогда
		Элементы.ПолеTEXTДокумента.Вид = ВидПоляФормы.ПолеВвода;
		Элементы.ПолеTEXTДокумента.МногострочныйРежим = Истина;
		Элементы.ПолеTEXTДокумента.Шрифт = Новый Шрифт(Элементы.ПолеTEXTДокумента.Шрифт, , 10);
		Элементы.ПолеTEXTДокумента.АвтоМаксимальнаяШирина = Ложь;
		Элементы.ПолеTEXTДокумента.Ширина = 0;
	КонецЕсли;
	
	Если Параметры.Свойство("ПечатьРазрешена") И Параметры.ПечатьРазрешена = Ложь Тогда
		Элементы.КнопкаПечать.Видимость = Ложь;
	КонецЕсли;
	
	Если Параметры.Свойство("ВысотаФормы") И ЗначениеЗаполнено(Параметры.ВысотаФормы) Тогда
		Высота = Параметры.ВысотаФормы;
		КлючУникальностиФормы = Параметры.КлючУникальностиФормы;
	КонецЕсли;
	
	Содержимое = Параметры.Содержимое;
	Если ЭтоАдресВременногоХранилища(Содержимое) Тогда
		Содержимое = ПолучитьИзВременногоХранилища(Содержимое);
	КонецЕсли;
	
	ТипСодержимого = ТипЗнч(Содержимое);
	Если ТипСодержимого = Тип("ДвоичныеДанные") Тогда
		ИмяВременногоФайла = ПолучитьИмяВременногоФайла(Параметры.ИмяФайла);
		Содержимое.Записать(ИмяВременногоФайла);
		Если НЕ Параметры.Свойство("КодировкаТекста") ИЛИ НЕ ЗначениеЗаполнено(Параметры.КодировкаТекста) Тогда
			Если ВРЕГ(Лев(Параметры.ИмяФайла, 4)) = "ПФР_" ИЛИ ВРЕГ(Лев(Параметры.ИмяФайла, 4)) = "СФР_" Тогда
				Текст = Новый ЧтениеТекста(ИмяВременногоФайла, "utf-8");
			Иначе
				Текст = КонтекстЭДОСервер.НовыйЧтениеТекстаНаСервере(ИмяВременногоФайла);
			КонецЕсли;
		Иначе
			Текст = Новый ЧтениеТекста(ИмяВременногоФайла, Параметры.КодировкаТекста);
		КонецЕсли;
		ТекстСодержимого = Текст.Прочитать();
		TEXTДокумент = ТекстСодержимого;
		
	ИначеЕсли ТипСодержимого = Тип("ХранилищеЗначения") Тогда
		ИмяВременногоФайла = ПолучитьИмяВременногоФайла(Параметры.ИмяФайла);
		Содержимое.Получить().Записать(ИмяВременногоФайла);
		Если НЕ Параметры.Свойство("КодировкаТекста") ИЛИ НЕ ЗначениеЗаполнено(Параметры.КодировкаТекста) Тогда
			Если ВРЕГ(Лев(Параметры.ИмяФайла, 4)) = "ПФР_" ИЛИ ВРЕГ(Лев(Параметры.ИмяФайла, 4)) = "СФР_" Тогда
				Текст = Новый ЧтениеТекста(ИмяВременногоФайла, "utf-8");
			Иначе
				Текст = Новый ЧтениеТекста(ИмяВременногоФайла, "windows-1251");
			КонецЕсли;
		Иначе
			Текст = Новый ЧтениеТекста(ИмяВременногоФайла, Параметры.КодировкаТекста);
		КонецЕсли;
		ТекстСодержимого = Текст.Прочитать();
		TEXTДокумент = ТекстСодержимого;
		
	ИначеЕсли ТипСодержимого = Тип("Строка") Тогда
		// В качестве значения реквизита формы может выступать навигационная ссылка или текст TEXT-документа
		TEXTДокумент = Содержимое;
		
	ИначеЕсли ЗначениеЗаполнено(Параметры.ИмяФайла) Тогда
		TEXTДокумент = Параметры.ИмяФайла;
	КонецЕсли;
	
	Если Параметры.Свойство("ПолеНастроекПечати") И ЗначениеЗаполнено(Параметры.ПолеНастроекПечати) Тогда
		ЦиклОбмена = Параметры.ЦиклОбмена;
		ФорматДокументооборота = Параметры.ЦиклОбмена.ФорматДокументооборота;
		ПолеНастроекПечати = Параметры.ПолеНастроекПечати;
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ПриОткрытии(Отказ)
	
	Если ЗначениеЗаполнено(КлючУникальностиФормы) Тогда
		КлючУникальности = КлючУникальностиФормы;
	КонецЕсли;
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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