- Работа в программе 1СКонецЕсли;
- // выдаем текст запроса в окно сообщений для проверки 
- // (в реальной программе это не делается) 
- Сообщить(ТекстЗапроса); 
- Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда - Сообщить("Ошибка в тексте запроса"); 
- Возврат; 
 
- КонецЕсли; 
КонецПроцедуры
Процедура Сформировать()
- // вызов процедуры формирования запроса 
- Запросить(); 
- Таб = СоздатьОбъект("Таблица"); 
- Таб.ИсходнаяТаблица("Сформировать"); 
- Таб.ВывестиСекцию("Шапка"); 
- Таб.Опции(0,0,Таб.ВысотаТаблицы(),0); 
- // если две группировки 
- Если Признак=0 Тогда - Пока Запрос.Группировка("Долж")=1 Цикл - Таб.ВывестиСекцию("Должность"); 
- Нум=0; // для нумерации сотрудников 
- Пока Запрос.Группировка("ФИО")=1 Цикл - Если Запрос.ФИО.ЭтоГруппа()=1 Тогда - Таб.ВывестиСекцию("Подразделение"); 
 
- Иначе - Нум=Нум+1; 
- Таб.ВывестиСекцию("ФИО"); 
 
- КонецЕсли; 
 
- КонецЦикла; 
 
- КонецЦикла; 
 
- Иначе - // если меньше двух группировок 
- Нум=0; 
- Пока Запрос.Группировка("ФИО")=1 Цикл - Если Запрос.ФИО.ЭтоГруппа()=1 Тогда - Таб.ВывестиСекцию("Подразделение"); 
 
- Иначе - Нум=Нум+1; 
- Таб.ВывестиСекцию("ФИО"); 
 
- КонецЕсли; 
 
- КонецЦикла; 
 
- КонецЕсли; 
- Таб.ВывестиСекцию("Подвал"); 
- Таб.ТолькоПросмотр(1); 
- Таб.Показать("Сформировать",""); 
КонецПроцедуры
Процедура Выгрузить()
- // вызов процедуры формирования запроса 
- Запросить(); 
- Текст=СоздатьОбъект("Текст"); 
- Текст.Шаблон(1); 
- Текст.ДобавитьСтроку(Заголовок); 
- Текст.ДобавитьСтроку(""); 
- // если две группировки 
- Если Признак=0 Тогда - Пока Запрос.Группировка("Долж")=1 Цикл - Текст.ДобавитьСтроку(" Всего на должности [Запрос.Долж] – [Запрос.Кол_во] человек"); 
- Нум=0; // для нумерации сотрудников 
- Пока Запрос.Группировка("ФИО")=1 Цикл - Если Запрос.ФИО.ЭтоГруппа()=1 Тогда - Текст.ДобавитьСтроку(" В подразделении [Запрос.ФИО] – [Запрос.Кол_во] человек"); 
 
- Иначе - Нум=Нум+1; - Текст.ДобавитьСтроку("[Нум#Ч2]. [Запрос.ФИО#С50] – [Запрос.ФИО.ДатаПриема] [Запрос.ФИО.ДатаУвольнения]"); 
 
 
- КонецЕсли; 
 
- КонецЦикла; 
- Текст.ДобавитьСтроку(""); 
 
- КонецЦикла; 
 
- Иначе - // если меньше двух группировок 
- Нум=0; 
- Пока Запрос.Группировка("ФИО")=1 Цикл - Если Запрос.ФИО.ЭтоГруппа()=1 Тогда - Текст.ДобавитьСтроку(""); - Текст.ДобавитьСтроку(" В подразделении [Запрос.ФИО] – [Запрос.Кол_во] человек"); 
 
 
- Иначе - Нум=Нум+1; - Текст.ДобавитьСтроку("[Нум#Ч2]. [Запрос.ФИО#С50] – [Запрос.ФИО.ДатаПриема] [Запрос.ФИО.ДатаУвольнения]"); 
 
 
- КонецЕсли; 
 
- КонецЦикла; 
 
- КонецЕсли; 
- Текст.ДобавитьСтроку(" Итого: [Запрос.Кол_во] человек"); 
- Текст.ТолькоПросмотр(1); 
- Текст.Показать("Отчет","Новый.txt"); 
КонецПроцедуры
Процедура ВыборСтатуса()
- ТипСтатуса=Статус.ПолучитьЗначение(Статус.ТекущаяСтрока()); 
КонецПроцедуры
Процедура ВыборПериода()
- Если ТипПериода=1 Тогда - Форма.ВыбДата.Доступность(1); 
- Форма.ДатаНач.Доступность(0); 
- Форма.ДатаКон.Доступность(0); 
 
- Иначе - Форма.ВыбДата.Доступность(0); 
- Форма.ДатаНач.Доступность(1); 
- Форма.ДатаКон.Доступность(1); 
 
- КонецЕсли; 
КонецПроцедуры
ТипСтатуса=1;
ТипГрупп=0;
Порядок=1;
ТипПериода=1;
Статус.ДобавитьЗначение(1,"Все работники");
Статус.ДобавитьЗначение(2,"Работающие");
Статус.ДобавитьЗначение(3,"Уволенные");
Статус.ДобавитьЗначение(4,"Принятые на работу");
Группировка.ДобавитьЗначение(1,"Группировать по должностям");
Группировка.ДобавитьЗначение(2,"Группировать по подразделениям");
ВыбДата=ТекущаяДата();
ДатаНач=ТекущаяДата();
ДатаКон=ТекущаяДата();
Обратите внимание, что в начале процедуры Выгрузить() нет вызова стандартной процедуры открытия файла Открыть(), так как файл не существует и мы его создаем.
Сохраните конфигурацию и запустите 1С в режиме Предприятие. Выгрузите несколько отчетов о сотрудниках в текстовый файл. Откройте и просмотрите этот файл через Far или Norton.
11.3 Загрузка данных из текстового файла
Иногда требуется выполнить противоположную операцию, то есть прочитать данные из тестового файла и по ним внести изменения в конфигурацию. Например, вышестоящая организация разослала список всех существующих должностей в виде текстового файла и требуется загрузить эти данные из файла и поместить в справочник Должности. Создайте через Far или Norton текстовый файл следующего содержания:
Дворник
Директор
Главный бухгалтер
Бухгалтер
Инженер
Конструктор
Менеджер
Начальник отдела
Программист
Рабочий
И сохраните этот файл под именем Долж.txt в тот каталог, где находится конфигурация.
Создадим обработку, которая будет читать данные из указанного файла и, если такой должности в справочнике Должности нет, добавлять в справочник.
Создайте обработку ЗагрузкаДолжностей и включите ее в меню Обработки под именем Загрузить должности. На форме диалога разместите следующие элементы (рисунок 11.3.1):
Рисунок 11.3.1
Элемент Файл имеет следующие свойства: Идентификатор – Файл, Тип – Строка, Длина – 30.
В программном модуле запрограммируем процедуру Выполнить():
Процедура Выполнить()
- Текст=СоздатьОбъект("Текст"); 
- Долж=СоздатьОбъект("Справочник.Должности"); 
- // используем оператор Попытка для того, чтобы 
- // отследить ошибки при работе с файлом, например, 
- // если файл не существует 
- Попытка - // устанавливаем кодовую страницу Windows 
- Текст.КодоваяСтраница(0); 
- // открываем файл 
- Текст.Открыть(Файл); 
- Если Текст.КоличествоСтрок() = 0 Тогда - Предупреждение("Файл пустой!"); 
- Возврат; 
 
- КонецЕсли; 
- Для Ном = 1 по Текст.КоличествоСтрок() Цикл - Стр = Текст.ПолучитьСтроку(Ном); 
- Если СтрДлина(Стр)>0 Тогда - // ищем должность в справочнике Должности 
- Долж.НайтиПоНаименованию(Стр,0,1); 
- // если не найдено добавляем 
- Если Долж.Выбран()=0 Тогда - Долж.Новый(); 
- Долж.Наименование=Стр; 
- Долж.Записать(); 
 
- КонецЕсли; 
 
- КонецЕсли; 
 
- КонецЦикла; 
 
- Исключение - // вывод сообщения об ошибке 
- Предупреждение(ОписаниеОшибки()); 
 
- КонецПопытки; 
КонецПроцедуры
Сохраните конфигурацию и запустите 1С в режиме Предприятие. Запустите созданную обработку с именем файла Долж.txt и убедитесь, что в справочнике Должности появились новые элементы.
Задания:
В конфигурациях, созданных на прошлых занятиях, сделайте следующие изменения и дополнения:
Вариант 1
В отчет по справочнику Картины внесите возможность выгрузки данных в текстовый файл. Создайте обработку для загрузки данных из файла в справочник Художники.
Вариант 2
В отчет по справочнику Склад внесите возможность выгрузки данных в текстовый файл. Создайте обработку для загрузки данных из файла в справочник Товары.
Вариант 3
В отчет по справочнику Абоненты внесите возможность выгрузки данных в текстовый файл. Создайте обработку для загрузки данных из файла в справочник Улицы.
Вариант 4
В отчет по справочнику Каталог внесите возможность выгрузки данных в текстовый файл. Создайте обработку для загрузки данных из файла в справочник Авторы.
Вариант 5
В отчет по справочнику Налоги внесите возможность выгрузки данных в текстовый файл. Создайте обработку для загрузки данных из файла в справочник Улицы.
Вариант 6
В отчет по справочнику Соискатели внесите возможность выгрузки данных в текстовый файл. Создайте обработку для загрузки данных из файла в справочник Профессии.
Вариант 7
В отчет по справочнику Квартиры внесите возможность выгрузки данных в текстовый файл. Создайте обработку для загрузки данных из файла в справочник Улицы.
Вариант 8
В отчет по справочнику Номера внесите возможность выгрузки данных в текстовый файл. Создайте обработку для загрузки данных из файла в справочник ТипНомера.
Вариант 9
В отчет по справочнику Подписка внесите возможность выгрузки данных в текстовый файл. Создайте обработку для загрузки данных из файла в справочник ТипИздания.
Вариант 10
В отчет по справочнику Квартиры внесите возможность выгрузки данных в текстовый файл. Создайте обработку для загрузки данных из файла в справочник Улицы.
Вариант 11
В отчет по справочнику Касса внесите возможность выгрузки данных в текстовый файл. Создайте обработку для загрузки данных из файла в справочник Направления.
Вариант 12
В отчет по справочнику Путевки внесите возможность выгрузки данных в текстовый файл. Создайте обработку для загрузки данных из файла в справочник Города.
Вариант 13
В отчет по справочнику Обувь внесите возможность выгрузки данных в текстовый файл. Создайте обработку для загрузки данных из файла в справочник ТипыОбуви.
Вариант 14
В отчет по справочнику Драгоценности внесите возможность выгрузки данных в текстовый файл. Создайте обработку для загрузки данных из файла в справочник ТипыИзделия.
Вариант 15
В отчет по справочнику Студенты внесите возможность выгрузки данных в текстовый файл. Создайте обработку для загрузки данных из файла в справочник Группы.
Контрольные вопросы:
1. Для чего используется типа данных Текст?
2. В чем преимущество использования текстовых файлов?
3. Как узнать количество строк в текстовом файле?
4. Как открыть текстовый файл?
5. Как прочитать строку из текстового файла?
6. Как добавить строку в текстовый файл?
