Центральный Дом Знаний - Работа в 1С 36

Информационный центр "Центральный Дом Знаний"

Заказать учебную работу! Жми!



ЖМИ: ТУТ ТЫСЯЧИ КУРСОВЫХ РАБОТ ДЛЯ ТЕБЯ

      cendomzn@yandex.ru  

Наш опрос

Я учусь (закончил(-а) в
Всего ответов: 2653

Онлайн всего: 1
Гостей: 1
Пользователей: 0


Форма входа

Логин:
Пароль:

Работа в 1С 36

Работа в программе 1С

стр.: 1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30  31  32
33  34  35  36  37  38  39  40  41  42  43  44  45  

Тема 11 Работа с текстовыми файлами

Цель:

  1. познакомится с понятием и областью применения агрегатного типа Текст;

  2. приобрести и закрепить навыки создания текстовых файлов;

  3. приобрести и закрепить навыки загрузки данных из текстовых файлов.

Пояснения к работе

Для работы с текстовыми файлами в системе используется специальный агрегатный тип данных – Текст. Механизм работы с текстами предназначен для формирования отчетов в текстовом виде, а также для обмена информацией с другими программами посредством текстовых файлов. Средства языка имеют возможность не только вывода строк в текстовые файлы, но и считывания имеющихся файлов с последующим разбором его по строкам.

Преимущество использования текстовых файлов в том, что такие файлы имеют небольшой размер и помещаются даже на дискете. Поэтому если информация выгружается не для просмотра, а например для переноса на другой компьютер, то чаще всего используют текстовый файл.

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

Пример:

ТекстДок = СоздатьОбъект("Текст");

ТекстДок.Открыть("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);

ТекстДок.ЗаменитьСтроку(52, "[Услуга.Наименование], арт.[Услуга.Код]–[Услуга.Цена]");

ТекстДок.Шаблон(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

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

Программный модуль примет следующий вид:

Перем ТипСтатуса, ТипГрупп;

Перем Запрос, Признак, Заголовок;

// процедура формирования запроса

Процедура Запросить()

// при отметке элемента из списка с пометками Группировка

// в переменную ТипГрупп кладется:

// 1 – если отмечен Группировать по должностям,

// 2 – если отмечен Группировать по подразделениям,

// 3 (то есть сумма значений списка Группировка) – если отмечены оба

ТипГрупп=0;

Для к=1 По Группировка.РазмерСписка() Цикл

Если Группировка.Пометка(к)=1 Тогда

ТипГрупп=ТипГрупп+Группировка.ПолучитьЗначение(к)

КонецЕсли;

КонецЦикла;

Запрос = СоздатьОбъект("Запрос");

ТекстЗапроса = "

|ФИО = Справочник.Сотрудники.ТекущийЭлемент;

|";

// если группируем по должностям, создаем переменную Долж

// и группировку по Долж

Если (ТипГрупп=1) ИЛИ (ТипГрупп=3) Тогда

ТекстЗапроса=ТекстЗапроса+"Долж = Справочник.Сотрудники.Должности;

|Группировка Долж Упорядочить по Долж.Наименование;

|";

Признак=0;

Иначе

Признак=1;

КонецЕсли;

// Если группируем только по должностям или вообще не группируем, указываем

// Без Групп (в справочнике Сотрудники группы являются подразделениями)

// и в зависимости от переключателя Порядок устанавливаем значение упорядочения

Если (ТипГрупп<=1) Тогда

ТекстЗапроса=ТекстЗапроса+"Группировка ФИО Упорядочить по " + ?(Порядок=1, "ФИО.Наименование", "ФИО.ДатаПриема") + " Без Групп;

|";

Иначе

ТекстЗапроса=ТекстЗапроса+"Группировка ФИО Упорядочить по " + ?(Порядок=1, "ФИО.Наименование","ФИО.ДатаПриема") + ";

|";

КонецЕсли;

// задаем функцию подсчета количества человек

ТекстЗапроса=ТекстЗапроса+"Функция Кол_во=Счётчик();

|";

// формируем условие и заголовок

// Если выбран тип работников Все (ТипСтатуса=1), то условия не накладываем

Если ТипСтатуса=1 Тогда

Заголовок="Список всех сотрудников, когда–либо работавших на предприятии"

// Если выбран тип – Работающие (ТипСтатуса=2), то накладываем условия

// на всех неуволенных работников на указанную дату или период

// (в зависимости от ТипПериода)

ИначеЕсли ТипСтатуса=2 Тогда

Если ТипПериода=1 Тогда

Заголовок="Список всех сотрудников, работавших на предприятии на " +Строка(ВыбДата)+" г.";

ТекстЗапроса=ТекстЗапроса+"Условие ((ФИО.ДатаПриема<=' " + Строка(ВыбДата) +" ') И ((ФИО.ДатаУвольнения>=' " + Строка(ВыбДата)+" ') ИЛИ (Строка(ФИО.ДатаУвольнения)=Строка(' . . '))));

|";

Иначе

Заголовок="Список всех сотрудников, работавших на предприятии в период с "+Строка(ДатаНач)+" г. по " + Строка(ДатаКон)+" г.";

ТекстЗапроса=ТекстЗапроса+"Условие ((ФИО.ДатаПриема<=' " + Строка(ДатаКон)+" ') И ((Строка(ФИО.ДатаУвольнения)=Строка(' . . ')) ИЛИ (ФИО.ДатаУвольнения>=' "+Строка(ДатаНач)+" ')));

|";

КонецЕсли;

// Если выбран тип – Уволенные (ТипСтатуса=3), то накладываем условия

// на всех работников, уволенных на указанную дату или период

// (в зависимости от ТипПериода)

ИначеЕсли ТипСтатуса=3 Тогда

Если ТипПериода=1 Тогда

Заголовок="Список всех сотрудников, уволенных " + Строка(ВыбДата) +" г.";

ТекстЗапроса=ТекстЗапроса+"Условие (ФИО.ДатаУвольнения=' " + Строка(ВыбДата)+" ');

|";

Иначе

Заголовок="Список всех сотрудников, уволенных в период с " + Строка(ДатаНач)+" г. по "+Строка(ДатаКон)+" г.";

ТекстЗапроса=ТекстЗапроса+"Условие ((Строка(ФИО.ДатаУвольнения)<>Строка(' . . ')) И (ФИО.ДатаУвольнения>=' "+Строка(ДатаНач)+" ') И (ФИО.ДатаУвольнения<=' "+Строка(ДатаКон)+" '));

|";

КонецЕсли;

// Если выбран тип – Принятые на работу (ТипСтатуса=4), то накладываем условия

// на всех работников, принятых на указанную дату или период

// (в зависимости от ТипПериода)

ИначеЕсли ТипСтатуса=4 Тогда

Если ТипПериода=1 Тогда

Заголовок="Список всех сотрудников, принятых на работу " + Строка(ВыбДата)+" г.";

ТекстЗапроса=ТекстЗапроса+"Условие (ФИО.ДатаПриема=' " + Строка(ВыбДата)+" ');

|";

Иначе

Заголовок="Список всех сотрудников, принятых на работу в период с " + Строка(ДатаНач)+" г. по "+Строка(ДатаКон)+" г.";

ТекстЗапроса=ТекстЗапроса+"Условие ((ФИО.ДатаПриема>=' " + Строка(ДатаНач)+" ') И (ФИО.ДатаПриема<=' " + Строка(ДатаКон)+" '));

|";

КонецЕсли;

Loading

Календарь

«  Май 2019  »
ПнВтСрЧтПтСбВс
  12345
6789101112
13141516171819
20212223242526
2728293031

Архив записей

Друзья сайта

  • Заказать курсовую работу!
  • Выполнение любых чертежей
  • Новый фриланс 24