Работа с текстовым документом в языке 1С 8.3, 8.2 (в примерах)

Вступайте в мою группу помощник программиста.
В ней мы обсуждаем программирование в 1С.

<<< XML ZIP WORD DBF HTTP FTP ТекстовыйДокумент ТабличныйДокумент

Скачать эти примеры в виде тестовой базы (как загрузить, как исследовать)
Как создать текстовый макет в 1С.

/// Как записать текстовый файл в 1с 8.3, 8.2
 
&НаКлиенте
Процедура КакЗаписатьТекстовыйФайл(Команда)
 
    КаталогДляЭкспериментов = КаталогДокументов() + "\helpme1s.ru";
    СоздатьКаталог(КаталогДляЭкспериментов);
 
    ТекстовыйФайл = Новый ТекстовыйДокумент;
 
    // Устанавливаем содержимое файла.
    ТекстовыйФайл.УстановитьТекст("
    |Как прекрасен
    |этот мир!");
 
    // Очищаем содержимое файла.
    ТекстовыйФайл.Очистить();
 
    // Добавляем первую ...
    ТекстовыйФайл.ДобавитьСтроку("Первая строчка файла");
    // ... и вторую строчку файла.
    ТекстовыйФайл.ДобавитьСтроку("Вторая строчка файла");
 
    // Меняем первую строчку на "Привет"
    ТекстовыйФайл.ЗаменитьСтроку(
        1, // номер строки в файле, нумеруется с 1
        "Привет"
    );
 
    // Вставляем новую строчку сразу после первой,
    // то есть на место второй.
    ТекстовыйФайл.ВставитьСтроку(
        2, // номер строки, на место которой вставляем новую
        "Владимир"
    );
 
    // Удаляем вторую строчку ("Владимир")
    ТекстовыйФайл.УдалитьСтроку(2);
 
    // Записываем файл на диск.
    // Если такой файл уже существует - он будет перезаписан.
    ТекстовыйФайл.Записать(
        КаталогДляЭкспериментов + "\out.txt", // путь для сохранения
        КодировкаТекста.UTF8, // кодировка
        Символы.ВК + Символы.ПС // разделитель строк
    );
 
    // Открываем созданный файл в блокноте.
    ЗапуститьПриложение(КаталогДляЭкспериментов + "\out.txt");
 
КонецПроцедуры
 
/// Как прочитать текстовый файл в 1с 8.3, 8.2
 
&НаКлиенте
Процедура КакПрочитатьТекстовыйФайл(Команда)
 
    ОчиститьСообщения();
 
    КаталогДляЭкспериментов = КаталогДокументов() + "\helpme1s.ru";
    СоздатьКаталог(КаталогДляЭкспериментов);
 
    ПутьКФайлу = КаталогДляЭкспериментов + "\in.txt";
 
    // Создаем случайный текстовый файл.
    Служебный.СоздатьПроизвольныйТекстовыйФайл(ПутьКФайлу);
 
    ТекстовыйФайл = Новый ТекстовыйДокумент;
 
    ТекстовыйФайл.Прочитать(
        ПутьКФайлу,
        // Если не указать кодировку напрямую, то она
        // по возможности определится автоматически.
        КодировкаТекста.UTF8, 
        // К этом значению будут приведены разделители
        // строк из файла. Если ничего не указывать -
        // останутся родные.
        Символы.ВК + Символы.ПС
    );
 
    // Выводим весь текст целиком.
    Сообщить(ТекстовыйФайл.ПолучитьТекст());
 
    // Выводим текст по строкам.
    Для Индекс = 1 По ТекстовыйФайл.КоличествоСтрок() Цикл
        Сообщить(ТекстовыйФайл.ПолучитьСтроку(Индекс));
    КонецЦикла;
 
КонецПроцедуры
 
/// Как использовать текстовый макет для формирования
/// печатной формы в 1с 8.3, 8.2
 
&НаКлиенте
Процедура КакВывестиТекстовыйМакетПростейший(Команда)
 
    ОчиститьСообщения();
 
    // Рассмотрим простейший случай.
 
    // Нам требуется сделать печатную форму, в которой
    // в шапке будет выводиться номер и дата документа,
    // а в табличной части: список и количество,
    // заказанных товаров.
 
    // Вызываем функцию, которая сформирует на сервере
    // печатную форму и вернёт её обратно на клиент.
    ПечатнаяФорма = СформироватьПростейшуюПечатнуюФорму();
    // Выводим её пользователю, а он уже отправит её на печать.
    ПечатнаяФорма.Показать("Заказ №1");
 
КонецПроцедуры
 
&НаСервере
Функция СформироватьПростейшуюПечатнуюФорму()
 
    // Если никаких особых требований к оформлению такой
    // формы нет - милое (и главное очень быстрое) дело
    // сделать её через текстовый макет.    
 
    // О том, как создать текстовый макет - читайте по адресу
    // helpme1s.ru/kak-sozdavat-tekstovyj-maket-v-1s
    // В нашем случае такой макет я уже создал и добавил
    // в эту обработку под именем "ПростейшийТекстовыйМакет"
 
    ПечатнаяФорма = Новый ТекстовыйДокумент;
 
    Макет = Обработки.ОбработкаДляИспытаний.ПолучитьМакет(
        "ПростейшийТекстовыйМакет");
 
    // Получаем область и макета по имени.
    Шапка = Макет.ПолучитьОбласть("Шапка");
    // Заполняем её параметры.
    Шапка.Параметры.Дата = ТекущаяДата();
    Шапка.Параметры.Номер = 1;
    // Выводим её в документ.
    ПечатнаяФорма.Вывести(Шапка);
 
    // Заголовок табличной части.
    ТабличнаяЧастьЗаголовок = Макет.ПолучитьОбласть("ТабличнаяЧастьЗаголовок");
    ПечатнаяФорма.Вывести(ТабличнаяЧастьЗаголовок);
 
    // Обычно в цикле выводятся строки табличной части.
    ТабличнаяЧастьСтрока = Макет.ПолучитьОбласть("ТабличнаяЧастьСтрока");
 
    // Строка 1
    ТабличнаяЧастьСтрока.Параметры.Номенклатура = "Банан";
    ТабличнаяЧастьСтрока.Параметры.Количество = 10;
    ПечатнаяФорма.Вывести(ТабличнаяЧастьСтрока);
 
    // Строка 2
    ТабличнаяЧастьСтрока.Параметры.Номенклатура = "Помидор";
    ТабличнаяЧастьСтрока.Параметры.Количество = 5;
    ПечатнаяФорма.Вывести(ТабличнаяЧастьСтрока);
 
    // Завершаем табличную часть подвалом.
    ТабличнаяЧастьСтрока = Макет.ПолучитьОбласть("ТабличнаяЧастьПодвал");
    ТабличнаяЧастьСтрока.Параметры.ИтогоКоличество = 15;
    ПечатнаяФорма.Вывести(ТабличнаяЧастьСтрока);
 
    // Возвращаем печатную форму обратно на клиент.
    Возврат ПечатнаяФорма;
 
КонецФункции
 
/// Как использовать параметры полей при оформлении
/// текстового макета в 1с 8.3, 8.2
 
&НаКлиенте
Процедура КакВывестиТекстовыйМакетПоСложнее(Команда)
 
    ОчиститьСообщения();
 
    // Рассмотрим тот же случай, что и выше.
 
    // Нам требуется сделать печатную форму, в которой
    // в шапке будет выводиться номер и дата документа,
    // а в табличной части: список и количество,
    // заказанных товаров.
 
    // Вызываем функцию, которая сформирует на сервере
    // печатную форму и вернёт её обратно на клиент.
    ПечатнаяФорма = СформироватьПечатнуюФормуПосложнее();
    // Выводим её пользователю, а он уже отправит её на печать.
    ПечатнаяФорма.Показать("Заказ №2");
 
КонецПроцедуры
 
&НаСервере
Функция СформироватьПечатнуюФормуПосложнее()
 
    // Если никаких особых требований к оформлению такой
    // формы нет - милое (и главное очень быстрое) дело
    // сделать её через текстовый макет.    
 
    // О том, как создать текстовый макет - читайте по адресу
    // helpme1s.ru/kak-sozdavat-tekstovyj-maket-v-1s
    // В нашем случае такой макет я уже создал и добавил
    // в эту обработку под именем "ТекстовыйМакетПосложнее"
 
    // Обратите внимание - этот текстовый макет уже содержит
    // форматирование отдельных полей.
 
    // К примеру, мы задали свой формат для поле Дата;
    // указали, что если поле Номенклатура не помещается
    // на одной строке - нужно переносить его на следующие;
    // задали размер дробной части (2) для поля Количество;
    // переопределили выравнивание поля Номенклатура и т.д.
 
    ПечатнаяФорма = Новый ТекстовыйДокумент;
 
    Макет = Обработки.ОбработкаДляИспытаний.ПолучитьМакет(
        "ТекстовыйМакетПосложнее");
 
    // Получаем область и макета по имени.
    Шапка = Макет.ПолучитьОбласть("Шапка");
    // Заполняем её параметры.
    Шапка.Параметры.Дата = ТекущаяДата();
    Шапка.Параметры.Номер = 2;
    // Выводим её в документ.
    ПечатнаяФорма.Вывести(Шапка);
 
    // Заголовок табличной части.
    ТабличнаяЧастьЗаголовок = Макет.ПолучитьОбласть("ТабличнаяЧастьЗаголовок");
    ПечатнаяФорма.Вывести(ТабличнаяЧастьЗаголовок);
 
    // Обычно в цикле выводятся строки табличной части.
    ТабличнаяЧастьСтрока = Макет.ПолучитьОбласть("ТабличнаяЧастьСтрока");
 
    // Строка 1
    ТабличнаяЧастьСтрока.Параметры.Номенклатура =
        "Очень очень длинное название товара, много строк.";
    ТабличнаяЧастьСтрока.Параметры.Количество = 100.234234;
    ПечатнаяФорма.Вывести(ТабличнаяЧастьСтрока);
 
    // Строка 2
    ТабличнаяЧастьСтрока.Параметры.Номенклатура =
        "Короткое название товара, одна строка.";
    ТабличнаяЧастьСтрока.Параметры.Количество = 30.56757;
    ПечатнаяФорма.Вывести(ТабличнаяЧастьСтрока);
 
    // Завершаем табличную часть подвалом.
    ТабличнаяЧастьСтрока = Макет.ПолучитьОбласть("ТабличнаяЧастьПодвал");
    ТабличнаяЧастьСтрока.Параметры.ИтогоКоличество = 130.801804;
    ПечатнаяФорма.Вывести(ТабличнаяЧастьСтрока);
 
    // Возвращаем печатную форму обратно на клиент.
    Возврат ПечатнаяФорма;
 
КонецФункции
 
/// Скачать и выполнить эти примеры на компьютере

Скачать эти примеры в виде тестовой базы (как загрузить, как исследовать)
Как создать текстовый макет в 1С.

Работа с текстовым документом в языке 1С 8.3, 8.2 (в примерах)

<<< XML ZIP WORD DBF HTTP FTP ТекстовыйДокумент ТабличныйДокумент

С уважением, (преподаватель школы 1С программистов и разработчик обновлятора).



Владимир Милькин
Как помочь сайту: расскажите (кнопки поделиться ниже) о нём своим друзьям и коллегам. Сделайте это один раз и вы внесете существенный вклад в развитие сайта. На сайте нет рекламы, но чем больше людей им пользуются, тем больше сил у меня для его поддержки.

Нажмите одну из кнопок, чтобы поделиться: