Книга: Технологии интеграции "1С:Предприятия 8.3""
Назад: Текстовый документ, поле текстового документа
Дальше: Модель последовательного доступа

Отображение текстового документа

Для чтения и отображения в форме обработки содержимого текстового документа добавим команду ПросмотрТД. Обработчик команды заполним следующим образом (листинг 6.34).

Листинг 6.34. Обработчик команды «ПросмотрТД»

&НаКлиенте

Процедура ПросмотрТД(Команда)

 

ТД.Очистить();

ТД.НачатьЧтение(Новый ОписаниеОповещения("ПросмотрТДЗавершение", ЭтотОбъект), "c:\temp\doc_text.txt");

 

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

В этом обработчике мы начинаем чтение из записанного ранее текстового файла методом НачатьЧтение() объекта ТекстовыйДокумент. В результате содержимое текстового файла полностью загружается в реквизит ТД, находящийся в нашей демонстрационной обработке. В метод НачатьЧтение() первым параметром мы передаем имя процедуры-обработчика оповещения ПросмотрТДЗавершение(), которая будет выполнена, после того как текстовый файл будет прочитан (листинг 6.35).

Листинг 6.35. Процедура «ПросмотрТДЗавершение()»

&НаКлиенте

Процедура ПросмотрТДЗавершение(Дополнительно) Экспорт

 

ТД.ВставитьСтроку(1, "Показывается в оригинальном виде");

 

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

Перед выводом текстового документа реквизит ПолеТД типа ТекстовыйДокумент очищается, после чтения в качестве первой вставляется строка «Показывается в оригинальном виде» (она «сдвигает» ранее загруженные строки).

Пользователь может производить любые корректировки текста, представленного в поле формы, отражающем текстовый документ. Чтобы записать результат работы в файл, добавим команду ЗаписьТД. Обработчик команды заполним следующим образом (листинг 6.36).

Листинг 6.36. Обработчик команды «ЗаписьТД»

&НаКлиенте

Процедура ЗаписьТД(Команда)

 

ТД.НачатьЗапись(Новый ОписаниеОповещения("ЗаписьТДЗавершение", ЭтотОбъект), "c:\temp\doc_text2.txt");

 

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

 

В этом обработчике методом НачатьЗапись() объекта ТекстовыйДокумент мы начинаем запись содержимого текстового документа, отображаемого в форме, в указанный вторым параметром текстовый файл. Первым параметром в этот метод мы передаем имя процедуры-обработчика оповещения ЗаписьТДЗавершение(), которая будет выполнена, после того как текстовый файл будет записан (листинг 6.37).

Листинг 6.37. Процедура «ЗаписьТДЗавершение()»

&НаКлиенте

Процедура ЗаписьТДЗавершение(Результат, Дополнительно) Экспорт

 

Если Результат Тогда

ТД.Очистить();

КонецЕсли;

 

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

После записи реквизит, содержащий данные текстового документа, очищается. Этого можно и не делать, в этом случае обработчик оповещения в методе НачатьЗапись() можно не указывать.

При работе с текстовыми файлами в «1С:Предприятии» следует учитывать особенности представления разделителей строк в файлах Windows и в тексте, используемом для обработки внутри «1С:Предприятия». Для целей внутренней обработки текста используется разделитель, состоящий из одного символа, в то время как в файлах Windows в качестве разделителя строк используется комбинация из двух последовательных символов.

Внутри «1С:Предприятия» разделителем строк является символ Символы.ПС, он же LF (Line Feed, Перевод Строки), который имеет шестнадцатеричный код ОА. В то же время в кодировке текстовых файлов для Windows принято, что разделителем строк является пара символов – «CR-LF». CR (Carriage Return, Возврат Каретки) имеет шестнадцатеричный код 0D.

При записи и чтении текстовых файлов «1С:Предприятие» производит преобразование внутренних разделителей строк в представление, принятое в текстовых файлах Windows. То есть при записи символ «ПС» (LF) преобразуется в пару символов «ВК-ПС» («CR-LF»). При чтении происходит обратное преобразование, то есть пара «ВК-ПС» («CR-LF») преобразуется в одиночный символ ПС (LF).

Символ «ВК» («CR») при записи файла не преобразуется и не выбрасывается, то есть попадает в файл как есть. При чтении файла символы «ВК» («CR») и «ПС» («LF»), не образующие пару, также считываются без преобразований.

Назад: Текстовый документ, поле текстового документа
Дальше: Модель последовательного доступа