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