|
Работа в 1С 36Работа в программе 1С Тема 11 Работа с текстовыми файлами Цель:
Пояснения к работе Для работы с текстовыми файлами в системе используется специальный агрегатный тип данных – Текст. Механизм работы с текстами предназначен для формирования отчетов в текстовом виде, а также для обмена информацией с другими программами посредством текстовых файлов. Средства языка имеют возможность не только вывода строк в текстовые файлы, но и считывания имеющихся файлов с последующим разбором его по строкам. Преимущество использования текстовых файлов в том, что такие файлы имеют небольшой размер и помещаются даже на дискете. Поэтому если информация выгружается не для просмотра, а например для переноса на другой компьютер, то чаще всего используют текстовый файл. Во всех программных модулях вызов методов текста может выполняться только при помощи переменной со ссылкой на объект типа Текст. Объект создается при помощи функции СоздатьОбъект() с ключевым словом Текст, ссылка на который присваивается переменной. Чтобы вызвать метод объекта, имя метода (с указанием необходимых параметров) пишется через точку после идентификатора переменной. Пример: ТекстДок = СоздатьОбъект("Текст"); ТекстДок.Открыть("List.txt"); 11.1 Методы для работы с текстовыми файлами Открыть(<ИмяФайла>) – открывает файл с именем <ИмяФайла>. Параметры: <ИмяФайла> – строковое выражение – имя файла. Пример: ТекстДок = СоздатьОбъект("Текст"); ТекстДок.Открыть("catalog.txt"); КоличествоСтрок() – возвращает количество строк в тексте. Возвращаемое значение: количество строк в тексте. Пример: Текст = СоздатьОбъект("Текст"); Текст.Открыть(ИмяФайла); Если Текст.КоличествоСтрок() = 0 Тогда
КонецЕсли; ПолучитьСтроку(<НомерСтроки>) – возвращает значение строки с номером <НомерСтроки>. Параметры: <НомерСтроки> – номер строки. Возвращаемое значение: требуемая строка текста. Пример: Текст = СоздатьОбъект("Текст"); Текст.Открыть(ИмяФайла); Если Текст.КоличествоСтрок() = 0 Тогда
КонецЕсли; Для Ном = 1 по Текст.КоличествоСтрок() Цикл
КонецЦикла; ВставитьСтроку(<НомерСтроки>, <Строка>) – вставляет в текст строку <Строка> с номером <НомерСтроки>. Параметры: <НомерСтроки> – номер вставляемой строки. <Строка> – строковое выражение. Пример: ТекстДок = СоздатьОбъект("Текст"); ТекстДок.Открыть("catalog.txt"); ТекстДок.ВставитьСтроку(53, "Замена оборудования 5691... "); ДобавитьСтроку(<Строка>) – добавляет в конец текста строку <Строка>. Параметры: <Строка> – строковое выражение. Пример: ТекстДок = СоздатьОбъект("Текст"); ТекстДок.Открыть("catalog.txt"); ТекстДок.ДобавитьСтроку("Работы ..., 3056 ..75 000 руб."); ЗаменитьСтроку(<НомерСтроки>, <Строка>) – замещает строку текста с номером <НомерСтроки> на строку <Строка>. Параметры: <НомерСтроки> – номер замещаемой строки. <Строка> – строковое выражение. Пример: ТекстДок = СоздатьОбъект("Текст"); ТекстДок.Открыть("catalog.txt"); ТекстДок.ЗаменитьСтроку(52, "Работы ..., 3056 ..75 000 руб."); ТекстДок.ТолькоПросмотр(1). Шаблон(<Флаг>) – устанавливает флаг, при котором все добавления строк в текст, выполняются с заменой полей ограниченных квадратными скобками на значения содержащихся в них выражений. Параметры: <Флаг> – необязательный параметр. 1 – установить флаг добавления строк по шаблону, 0 – отменить. Возвращаемое значение: текущее числовое значение флага добавления строк по шаблону (на момент до исполнения метода). Пример: ТекстДок = СоздатьОбъект("Текст"); ТекстДок.Открыть("catalog.txt"); ТекстДок.Шаблон(1);
ТекстДок.Шаблон(0); ТекстДок.ВставитьСтроку(53, "Вывоз мусора, 6321, 58.000"); ФиксШаблон(<Флаг>) – устанавливает флаг при котором все добавления строк в текст выполняются с заменой полей ограниченных квадратными скобками на значения содержащихся в них выражений. В отличие от метода Шаблон(), ограниченные квадратными скобками поля замещаются значениями выражений с сохранением своей длины в символах, то есть обрезаются, если поле короче результата вычисления выражения и дополняются пробелами если длиннее. Если результат числовой, то в границах поля строка прижимается к правой границе. Параметры: <Флаг> – 1 – установить флаг добавления строк по фиксированному шаблону, 0 – снять флаг. Возвращаемое значение: текущее числовое значение флага добавления строк по фиксированному шаблону (на момент до исполнения метода). Пример: ТекстДок = СоздатьОбъект("Текст"); ТекстДок.Открыть("catalog.txt"); ТекстДок.ФиксШаблон(1); ТекстДок.ЗаменитьСтроку(52, "[Услуга.Наименование], арт.[Услуга.Код] – [Услуга.Цена]"); ТекстДок.Шаблон(0); ТекстДок.ВставитьСтроку(53, "Вывоз мусора, 6321, 58.000"); УдалитьСтроку(<НомерСтроки>) – удаляет из текста строку с номером <НомерСтроки>. Параметры: <НомерСтроки> – номер удаляемой строки. Пример: ТекстДок = СоздатьОбъект("Текст"); ТекстДок.Открыть("catalog.txt"); ТекстДок.УдалитьСтроку(53); Показать(<3аголовок>, <ИмяФайла>) – открывает окно с текстом для редактирования и просмотра. Если параметр <ИмяФайла> имеет непустое значение, то при закрытии окна система будет предлагать сохранить данные в указанный файл. Если файла с именем <ИмяФайла> не существует, то будет создан новый файл с таким именем для сохранения текста. Если параметр <ИмяФайла> опущен или имеет пустое значение, то при закрытии окна система не будет предлагать сохранить данные в файл. Это имеет смысл для текстовых документов, которые формируются только для просмотра или печати, и их не обязательно записывать в файл. Разумеется, после открытия окна пользователь в любом случае может записать такой текст в файл, используя команды главного меню Файл. Параметры: <Заголовок> – заголовок окна редактирования. <ИмяФайла> – строковое выражение с именем файла. Пример: ТекстДок = СоздатьОбъект("Текст"); ТекстДок.Открыть("catalog.txt"); ТекстДок.Показать("Редактирование Прайс–листа", "catalog.txt"); ТолькоПросмотр(<Режим>) – позволяет установить режим редактирования текста в окне редактирования. Параметры: <Режим> – необязательный параметр. 1 – запрещено редактирование текста, 0 – разрешено редактирование текста. Возвращаемое значение: текущее числовое значение режима редактирования текста (на момент до исполнения метода). Пример: ТекстДок = СоздатьОбъект("Текст"); ТекстДок.Открыть("catalog.txt"); ТекстДок.ТолькоПросмотр(1); ТекстДок.Показать("Редактирование Прайс–листа", "catalog.txt"); Очистить() – очищает содержимое текстового документа. Его использование позволяет заново заполнить содержимое текстового документа. Пример: ТекстДок = СоздатьОбъект("Текст"); ТекстДок.Открыть("catalog.txt"); ТекстДок.Очистить(); КодоваяСтраница(<Режим>) – позволяет установить режим кодировки для чтения и записи строковых значений в файл. Параметры: <Режим> – необязательный параметр. 0 – Windows–кодировка, 1 – DOS–кодировка. Если параметр не задан, то режим кодировки не меняется (используется для определения текущего режима кодировки без его смены). Возвращаемое значение: текущее числовое значение режима кодировки (на момент до исполнения метода). Пример: ТекстДок = СоздатьОбъект("Текст"); ТекстДок.КодоваяСтраница(0); ТекстДок.Открыть("catalog.txt"); ТекстДок.Показать("Редактирование Прайс–листа", "catalog.txt"); Записать(<ИмяФайла>) – записывает текст в файл с именем <ИмяФайла>. Параметры: <ИмяФайла> – строковое выражение – имя файла. Пример: ТекстДок = СоздатьОбъект("Текст"); ТекстДок.Открыть("catalog.txt"); ТекстДок.Записать("price.txt"); 11.2 Выгрузка данных в текстовый файл Введем новую возможность – отчет о сотрудниках будет выгружать в текстовый файл. Откройте отчет ОСотрудниках и на форму диалога поместите новую кнопку Выгрузить в файл (рисунок 11.2.1), указав в качестве Формулы процедуру Выгрузить(). Рисунок 11.2.1 Данная процедура должна будет выполнять почти те же самые действия, то и процедура Сформировать(), то есть формировать запрос, выполнять его, проходить по строкам выборки запроса, но данные помещать в не таблицу, а текстовый файл. Поэтому логично операторы формирования и выполнения запроса выделить (перенести) в отдельную процедуру Запросить(), а затем в процедурах Сформировать() и Выгрузить() вместо этих операторов поставить вызов процедуры Запросить(). Кроме того, переменные Заголовок, Запрос и Признак необходимо сделать переменными модуля, то есть описать их в начале программного модуля с помощью оператора Перем. Программный модуль примет следующий вид: Перем ТипСтатуса, ТипГрупп; Перем Запрос, Признак, Заголовок; // процедура формирования запроса Процедура Запросить()
|
Loading
|