Здравствуйте. Интересует возможность получения диплома( https://intuit.ru/sites/default/files/diploma/examples/P/955/Nekommerch-2-1-PRF-example.jpg ). Курс пройден. Сертификат не подходит. В сертификате ошибка, указано по датам время прохождения около 14 дней, хотя написано 576 часов. |
Запросы, обработки
Цель лекции: научиться создавать внешние обработки, изучить основные сведения о запросах.
7.1. Основные сведения о запросах
Одна из функций учетной системы - предоставление пользователям различной информации. Как правило, делается это с помощью отчетов. Например, в нашем случае вполне логично было бы иметь отчет, который выводит информацию о поступивших и выбывших материалах по отдельным материально-ответственным лицам (а может быть и по всей организации в целом), а так же - об остатках материалов. Подобная функциональность - то есть - выборка данных, осуществляется в 1С:Предприятии с помощью запросов.
Поэтому, прежде чем говорить об отчетах, да и прежде чем продолжать изложение дальнейших тем, нам необходимо познакомиться с запросами.
Запросы создают с некоторой целью. Например, она может звучать так: "Узнать количество и стоимость материалов, числящихся за Ивановым И.И.". После того, как цель запроса сформулирована, нужно выполнить определенные шаги, которые позволяют получить нужную информацию:
- Подобрать подходящие источники данных для запроса ;
- Составить текст запроса - либо вручную, либо пользуясь конструктором запросов ;
- Выполнить запрос ;
- Обработать результаты запроса.
Прежде чем переходить к практической работе с запросами, обсудим общие положения, важные для дальнейшего понимания материала.
Источники данных для запросов
При работе с запросами возникает такое понятие, как источник данных для запроса. То есть - те места, откуда запрос будет брать данные. Источники данных делятся на две группы. Первая - это так называемые реальные таблицы. Вторая - виртуальные.
Реальные таблицы называются так потому, что они физически хранятся в базе данных. Реальные таблицы, в свою очередь, подразделяются на объектные (ссылочные) и необъектные (не ссылочные).
В объектных таблицах хранятся данные объектов системы, то есть - ссылочных типов данных. Это - документы, справочники. Эти таблицы имеют поле Ссылка, которое содержит ссылку на объект, данные которого представлены в таблице.
В необъектных таблицах хранятся данные других типов - например - записи регистров.
Виртуальные таблицы, в отличие от реальных, нигде специально не хранятся. Система "собирает" эти таблицы из реальных данных, используя одну или несколько реальных таблиц. При создании виртуальных таблиц их можно параметризовать - то есть - задать параметры, которые ограничивают отбор данных в эти таблицы. Если вы пользуетесь виртуальными таблицами (а без них вы вряд ли сможете обойтись, как вы увидите позже), и вам нужно, чтобы они включали в себя данные, ограниченные некоторым отбором, нужно выполнять этот отбор, используя параметры виртуальных таблиц. Есть и другие способы выбора из виртуальных таблиц нужных данных, но они уступают в скорости работы параметризации этих таблиц.
Поля таблицы могут содержать либо какие-то данные, либо - вложенные таблицы. Причем, поле таблицы может иметь какой-то один тип, либо - составной тип данных. Однако, если поле хранит данные, они всегда какого-то одного типа.
Перед созданием запроса, или в процессе создания, нужно определиться с источниками данных для него. После того, как источники данных определены, следует написать текст запроса.
Написание текста запроса
Во встроенном языке системы есть объект Запрос. Именно он используется для работы с запросами. Особенности получения данных определяет текст запроса. Этот текст можно либо написать вручную, используя конструкции языка, либо воспользоваться так называемым конструктором запросов. Конструктор запросов позволяет в наглядном виде настроить запрос, однако, его результатом является точно такой же текст, который пишут вручную. В запрос можно передавать параметры, делать это нужно до выполнения запроса.
Выполнение запроса и обработка результатов запроса
После того, как создан текст запроса и в запрос переданы параметры, запрос выполняют. Результат выполнения запроса выглядит в виде таблицы, содержащей запрошенные данные. Эту таблицу необходимо обработать и применить полученные данные по назначению - вывести их в отчет, использовать для проверки каких-либо ограничений и так далее.
Для того, чтобы начать практическую работу с запросами, мы немного отвлечемся от, собственно, запросов, и создадим небольшую внешнюю обработку, которая позволит нам в максимально наглядном виде освоить основы работы с запросами.
7.2. Создание внешней обработки КонсольЗапросов
Внешние отчеты и обработки удобно использовать для того, чтобы выполнять предусматриваемые ими действия в различных системах. Так же внешние отчеты и обработки обычно используют для того, чтобы добавить в существующую конфигурацию какие-то новые возможности, настроить ее под нужды клиента, но при этом не изменять основную конфигурацию.
Войдем в Конфигуратор и выполним команду Файл > Новый > Внешняя обработка, рис. 7.1.
Введем в поле имя КонсольЗапросов, для начала редактирования формы обработки нажмем на кнопку Открыть в поле Основная форма внешней обработки. Появится окно Конструктор формы обработки, оставим в нем все по умолчанию и нажмем Готово.
Добавим в форму элемент управления Поле текстового документа, зададим ему имя ТекстЗапроса, установим в параметре Расширение значение Язык запросов. Добавим в список реквизитов формы новый реквизит, зададим ему имя ТекстЗапросов и тип Строка.
Это позволит использовать в данном поле, при работе в режиме 1С:Предприятие, конструктор запросов, синтаксические конструкции языка запросов будут автоматически выделяться, рис. 7.2.
Поле ТекстЗапроса будет содержать текст запроса, который мы можем либо написать вручную, либо создать, воспользовавшись конструктором запроса.
Теперь добавим в форму еще один элемент управления - табличное поле. Зададим ему имя - РезультатВыполненияЗапроса. Так же добавим в форму поясняющие надписи: " Введите текст запроса " и " Результат выполнения запроса ", рис. 7.3.
В табличное поле мы будем помещать результат выполнения запроса.
Теперь зададим обработчик нажатия кнопки Выполнить. Для этого откроем окно свойств кнопки и нажмем на кнопку Открыть в поле Действие. Процедура обработчика события нажатия на кнопку будет выглядеть следующим образом:
Процедура КнопкаВыполнитьНажатие(Кнопка) Запрос = Новый Запрос; Запрос.Текст=ЭлементыФормы.ТекстЗапроса.ПолучитьТекст(); РезультатВыполненияЗапроса = Запрос.Выполнить().Выгрузить(); ЭлементыФормы.РезультатВыполненияЗапроса.СоздатьКолонки(); КонецПроцедуры
Поясним ее команды. Они, в основном, связаны с новым для вас объектом Запрос.
Запрос = Новый Запрос;
Создаем новый объект типа Запрос, записываем ссылку на него в переменную Запрос.
Запрос.Текст=ЭлементыФормы.ТекстЗапроса.ПолучитьТекст();
Записываем в свойство запроса Текст данные, которые хранятся в поле текстового документа.
РезультатВыполненияЗапроса = Запрос.Выполнить().Выгрузить();
Помещаем в поле табличного документа РезультатВыполненияЗапроса результат выполнения запроса. Этот результат получается, во-первых, после использования метода запроса Выполнить(). Этот метод выполняет запрос, если запрос выбрал какие-то данные из базы, возвращаемое значение имеет тип РезультатЗапроса. Метод Выгрузить() выгружает результат запроса в таблицу значений, которая и попадает в поле табличного документа РезультатВыполненияЗапроса.
ЭлементыФормы.РезультатВыполненияЗапроса.СоздатьКолонки();
Благодаря этой команде в поле РезультатВыполненияЗапроса можно увидеть его содержимое, иначе оно будет выглядеть пустым.
После того, как создание обработки завершено, сохраним ее командой главного меню программы Файл > Сохранить.
Файлы внешних обработок имеют расширение *.EPF, рис. 7.4.
Запустим систему в режиме 1С:Предприятие. Для того, чтобы работать с внешней обработкой, нам сначала нужно открыть ее. Для этого воспользуемся командой главного меню программы Файл > Открыть и с помощью стандартного окна открытия файлов выберем интересующую нас обработку, рис. 7.5.
Сейчас все готово для ваших первых экспериментов с запросами.