Какие типы обработки результата существуют в конструкторе запроса с обработкой результата
Цель лекции: научиться создавать внешние обработки , изучить основные сведения о запросах .
7.1. Основные сведения о запросах
Одна из функций учетной системы - предоставление пользователям различной информации. Как правило, делается это с помощью отчетов. Например, в нашем случае вполне логично было бы иметь отчет, который выводит информацию о поступивших и выбывших материалах по отдельным материально-ответственным лицам (а может быть и по всей организации в целом), а так же - об остатках материалов. Подобная функциональность - то есть - выборка данных, осуществляется в 1С:Предприятии с помощью запросов .
Поэтому, прежде чем говорить об отчетах, да и прежде чем продолжать изложение дальнейших тем, нам необходимо познакомиться с запросами .
Запросы создают с некоторой целью. Например, она может звучать так: "Узнать количество и стоимость материалов, числящихся за Ивановым И.И.". После того, как цель запроса сформулирована, нужно выполнить определенные шаги, которые позволяют получить нужную информацию:
- Подобрать подходящие источники данных для запроса ;
- Составить текст запроса - либо вручную, либо пользуясь конструктором запросов ;
- Выполнить запрос ;
- Обработать результаты запроса .
Прежде чем переходить к практической работе с запросами , обсудим общие положения, важные для дальнейшего понимания материала.
Источники данных для запросов
При работе с запросами возникает такое понятие, как источник данных для запроса . То есть - те места, откуда запрос будет брать данные. Источники данных делятся на две группы. Первая - это так называемые реальные таблицы . Вторая - виртуальные .
Реальные таблицы называются так потому, что они физически хранятся в базе данных. Реальные таблицы , в свою очередь, подразделяются на объектные (ссылочные) и необъектные (не ссылочные).
В объектных таблицах хранятся данные объектов системы, то есть - ссылочных типов данных . Это - документы, справочники. Эти таблицы имеют поле Ссылка, которое содержит ссылку на объект, данные которого представлены в таблице.
В необъектных таблицах хранятся данные других типов - например - записи регистров.
Виртуальные таблицы , в отличие от реальных , нигде специально не хранятся. Система "собирает" эти таблицы из реальных данных, используя одну или несколько реальных таблиц . При создании виртуальных таблиц их можно параметризовать - то есть - задать параметры, которые ограничивают отбор данных в эти таблицы. Если вы пользуетесь виртуальными таблицами (а без них вы вряд ли сможете обойтись, как вы увидите позже), и вам нужно, чтобы они включали в себя данные, ограниченные некоторым отбором, нужно выполнять этот отбор, используя параметры виртуальных таблиц . Есть и другие способы выбора из виртуальных таблиц нужных данных, но они уступают в скорости работы параметризации этих таблиц.
Поля таблицы могут содержать либо какие-то данные, либо - вложенные таблицы . Причем, поле таблицы может иметь какой-то один тип, либо - составной тип данных. Однако, если поле хранит данные, они всегда какого-то одного типа.
Перед созданием запроса , или в процессе создания, нужно определиться с источниками данных для него. После того, как источники данных определены, следует написать текст запроса .
Написание текста запроса
Во встроенном языке системы есть объект Запрос. Именно он используется для работы с запросами . Особенности получения данных определяет текст запроса . Этот текст можно либо написать вручную, используя конструкции языка, либо воспользоваться так называемым конструктором запросов . Конструктор запросов позволяет в наглядном виде настроить запрос , однако, его результатом является точно такой же текст, который пишут вручную. В запрос можно передавать параметры, делать это нужно до выполнения запроса .
Выполнение запроса и обработка результатов запроса
После того, как создан текст запроса и в запрос переданы параметры, запрос выполняют. Результат выполнения запроса выглядит в виде таблицы, содержащей запрошенные данные. Эту таблицу необходимо обработать и применить полученные данные по назначению - вывести их в отчет, использовать для проверки каких-либо ограничений и так далее.
Для того, чтобы начать практическую работу с запросами , мы немного отвлечемся от, собственно, запросов , и создадим небольшую внешнюю обработку , которая позволит нам в максимально наглядном виде освоить основы работы с запросами .
7.2. Создание внешней обработки КонсольЗапросов
Внешние отчеты и обработки удобно использовать для того, чтобы выполнять предусматриваемые ими действия в различных системах. Так же внешние отчеты и обработки обычно используют для того, чтобы добавить в существующую конфигурацию какие-то новые возможности, настроить ее под нужды клиента, но при этом не изменять основную конфигурацию .
Войдем в Конфигуратор и выполним команду Файл > Новый > Внешняя обработка, рис. 7.1.
Введем в поле имя КонсольЗапросов, для начала редактирования формы обработки нажмем на кнопку Открыть в поле Основная форма внешней обработки. Появится окно Конструктор формы обработки, оставим в нем все по умолчанию и нажмем Готово.
Добавим в форму элемент управления Поле текстового документа, зададим ему имя ТекстЗапроса, установим в параметре Расширение значение Язык запросов. Добавим в список реквизитов формы новый реквизит , зададим ему имя ТекстЗапросов и тип Строка.
Это позволит использовать в данном поле , при работе в режиме 1С:Предприятие, конструктор запросов , синтаксические конструкции языка запросов будут автоматически выделяться, рис. 7.2.
Поле ТекстЗапроса будет содержать текст запроса , который мы можем либо написать вручную, либо создать, воспользовавшись конструктором запроса .
Теперь добавим в форму еще один элемент управления - табличное поле . Зададим ему имя - РезультатВыполненияЗапроса. Так же добавим в форму поясняющие надписи: " Введите текст запроса " и " Результат выполнения запроса ", рис. 7.3.
В табличное поле мы будем помещать результат выполнения запроса .
Теперь зададим обработчик нажатия кнопки Выполнить. Для этого откроем окно свойств кнопки и нажмем на кнопку Открыть в поле Действие. Процедура обработчика события нажатия на кнопку будет выглядеть следующим образом:
Поясним ее команды. Они, в основном, связаны с новым для вас объектом Запрос.
Создаем новый объект типа Запрос, записываем ссылку на него в переменную Запрос .
Записываем в свойство запроса Текст данные, которые хранятся в поле текстового документа.
Помещаем в поле табличного документа РезультатВыполненияЗапроса результат выполнения запроса . Этот результат получается, во-первых, после использования метода запроса Выполнить() . Этот метод выполняет запрос , если запрос выбрал какие-то данные из базы, возвращаемое значение имеет тип РезультатЗапроса. Метод Выгрузить() выгружает результат запроса в таблицу значений, которая и попадает в поле табличного документа РезультатВыполненияЗапроса.
Благодаря этой команде в поле РезультатВыполненияЗапроса можно увидеть его содержимое, иначе оно будет выглядеть пустым.
После того, как создание обработки завершено, сохраним ее командой главного меню программы Файл > Сохранить.
Файлы внешних обработок имеют расширение *.EPF, рис. 7.4.
Запустим систему в режиме 1С:Предприятие. Для того, чтобы работать с внешней обработкой , нам сначала нужно открыть ее. Для этого воспользуемся командой главного меню программы Файл > Открыть и с помощью стандартного окна открытия файлов выберем интересующую нас обработку , рис. 7.5.
Предлагаем рассмотреть инструмент, предназначенный для упрощения построения запросов в 1С. Он называется конструктором запросов. Как его запустить? Чем именно он помогает пользователю? Давайте разберемся вместе!
Для запуска конструктора запросов можно щёлкнув правой кнопкой мышь в любое место программного кода и выбрать «Конструктор запроса…».
Так же конструктор запроса используется в схеме компоновки данных при построении отчёта. Рассмотрим конструктор запросов на примере отчёта из статьи про СКД. Для этого в схеме компоновки данных нажимаем «Конструктор запроса…»
Вкладка «Таблицы и поля»
На этой вкладке мы выбираем поля значения которых нам надо получить в запросе. В левой части экрана представлены объекты конфигурации из которых можно получать данные (справочники, документы, регистры и тд.).
В центре расположены таблицы, которые мы выбрали для получения данных. Это могут быть как физические таблицы, так и виртуальные, вложенные запросы, временные таблицы и тд.
В правой части экрана расположены поля, которые мы выбрали в запрос.
Вкладка «Группировка»
На этой вкладке можно выбрать поля которые необходимо сгруппировать или суммировать. Группируемы поля необходимо добавить в поле «Группируемое поле», суммируемые поля в «Суммируемое поле».
Вкладка «Условия»
На данной вкладке мы задаем значения условий. В нашем примере необходимо было выбрать все элементы справочника «Номенклатура» имеющие определённый тип номенклатуры. В левой части экрана расположены поля которые можно выбрать для установления условия. Выбор производится двойным кликом. Или можно нажать кнопку «Добавить».
В правой части располагается конструкция нашего условия — поле, для которого мы задаём условие, вид сравнения (равно, больше или равно, не равно, между и тд.) и значение. В случае, если мы поставим галочку перед условием, его формулировка будет в свободной форме. Это подходит для сложных составных условий.
Вкладка «Дополнительно»
Очень важная вкладка, ведь именно здесь можно установить настройки для выбранных записей. «Первые N» — позволяет задать количество выбираемых нами записей, если флажок установлен, то система выдаст в результате запроса только первые N штук. Флаг «Без повторяющихся» предназначен для отбора только уникальных записей в результат запроса. Флаг «Разрешенные» предназначен для отбора записей с учетом настройки RLS.
«Тип запроса» позволяет установить тип получаемого результата. Доступные варианты «Выборка данных», «Создание временной таблицы», «Уничтожение временной таблицы».
Вкладка «Объединения\псевдонимы»
На данной вкладке можно задать псевдонимы для выбранных нами полей. В случае, если у нас несколько запросов, то здесь же устанавливается объединение.
Вкладка «Порядок»
На данной вкладке можно выбрать порядок, по которому будет проходить сортировка результатов запроса.
Вкладка «Компоновка»
Служебная вкладка, определяющая поля СКД. Подробно её рассмотрим в отдельной статье.
Вкладка «Пакет запросов»
На данной вкладке отображаются все наши пакеты запросов.
Отдельно стоит упомянуть кнопку «Запрос», доступную на всех вкладках «Конструктора запросов». Она предназначена для просмотра и изменения текста запроса.
Конструктор запроса с обработкой результата
Разновидность конструктора запросов, используемая в программном коде.
Когда мы используем «Конструктор запроса», то необходимо самостоятельно записывать программный код для выполнения запроса и действий совершаемых с полученным результатом запроса. Для «Конструктора запроса с обработкой результат» программный код работы с запросом формируется автоматически.
Для запуска конструктора необходимо в любом месте программного кода кликнуть правой кнопкой мыши и выбрать из контекстного меню «Конструктор запроса с обработкой результата».
Первая вкладка «Конструктора запроса с обработкой результата» предназначена для выбора типа обработки. Мы можем выводить результат в табличный документ или диаграмму, или просто добавить код для обхода результата. Чаще всего выбирают значение «Обход результата».
Остальные вкладки «Конструктора запроса с обработкой результата» аналогичны «Конструктору запроса».
После завершения работы конструктора в программном коде появляется часть кода созданная «Конструктором запроса с обработкой результата». Она выделена комментариями «
Решать вопросы самостоятельно или пользоваться услугами специалистов?
Если в вашей компании есть достаточно компетентный человек, вы можете всегда можете поручить ему отвечать на все вопросы, связанные с 1С. Если же такого специалиста нет или ваши сотрудники заняты стратегическими задачами и отвлекать их будет нецелесообразно, лучше обратиться к сторонним специалистам.
Мы предлагаем услуги по сопровождению 1С , в рамках которого наши сотрудники смогут оперативно решать подобные и многие другие проблемы. Большой опыт работ и сертифицированные специалисты позволят обеспечить бесперебойную работу с программой, защиту информации и оптимизацию бизнес-процессов.
Вы еще не внедрили 1С или необходимо установить программу в новый филиал компании? Обратитесь за внедрением и настройкой к нам — вы сэкономите свое время и избежите возможных ошибок и проблем в дальнейшем.
Позвоните по номеру телефона, указанному на сайте или заполните форму обратной связи, чтобы наши сотрудники сориентировали по стоимости работ, подобрали оптимальное решение и рассказали, как начать сотрудничество. Ждем вас!
Конструктор запроса 1С - это один из инструментов разработки, который позволяет:
- составить текст запроса на языке запросов исключительно визуальными средствами;
- отредактировать текст имеющегося запроса.
Программный код обычный конструктор не создает.
Конструктор запроса с обработкой результата - это один из инструментов разработки, который позволяет:
- сформировать текст нового запроса;
- сформировать программный код, содержащий создание объекта встроенного языка "Запрос", текста запроса, получение и обработку результата выполнения запроса (фрагмент программного кода, который исполняет запрос и выводит его результаты в табличный документ или диаграмму - отсюда );
- отредактировать текст имеющегося запроса.
Конструктор запросов может использоваться:
- разработчиком - в конфигураторе (необходимо знание языка запросов);
- пользователем - в режиме 1С:Предприятие (как обработка "Консоль запросов").
Использование в режиме 1С:Предприятие позволяет квалифицированным пользователям самостоятельно получать выборки данных, для которых нет типовых отчетов.
Вызов конструктора текста запроса 1С:
- контекстным меню (правой кнопкой мыши) в нужном месте программного кода;
- с помощью команды "Конструктор запроса. " меню "Текст".
Результатом работы конструктора будет являться синтаксически правильный текст запроса.
Таким образом, разработчик может составить работоспособный запрос, даже не владея синтаксисом языка запросов - необходимые синтаксические конструкции конструктор сгенерирует автоматически. Готовый текст запроса может быть сразу же вставлен в текст модуля или скопирован в буфер обмена.
Кроме этого конструктор запросов позволяет редактировать уже имеющийся в программе текст запроса. Для этого достаточно установить курсор внутри существующего текста запроса и вызвать конструктор. Имеющийся текст запроса будет проанализирован и представлен в конструкторе в виде соответствующих выбранных полей базы данных и набора заданных связей, группировок, условий и т.д.
Текст запроса может содержать описание предопределенных данных конфигурации:
- значения системных перечислений (из определенного перечня);
- предопределенных данных (справочники, перечисления, планы видов характеристик, планов счетов, планов видов расчета);
- пустые ссылки;
- значения точек маршрута бизнес процессов.
Вкладки конструктора запроса 1С
На этой вкладке указывается источник данных и поля, которые необходимо выводить в отчет (по сути описываются конструкции ВЫБРАТЬ … ИЗ).
В качестве источников данных могут служить:
- физическая таблица базы данных;
- виртуальная таблица регистров; ;
- вложенные запросы и т.д.
В контекстном меню виртуальных таблиц можно задать параметры этих таблиц.
На закладке "Таблицы и поля" конструктора запросов задают:
- источники данных запросов, в качестве которых могут выступать реальные и виртуальные таблицы;
- набор полей из таблиц - источников данных запроса;
- поля в виде произвольного выражения.
Закладка "Связи" становится доступна сразу после добавления двух таблиц.
На закладке "Связи" конструктора запросов можно определить соединение таблиц-источников данных и связи между ними.
Язык запросов предоставляет широкие возможности по построчному соединению нескольких таблиц.
Соединение таблиц может быть:
- безусловным ;
- условным (или по ключу ), то есть по заданному условию связи:
- полным - все записи обеих таблиц; для тех, которым не нашлось соответствия, запрос возвращает NULL;
- левым/правым - все записи из соответственно левой/правой таблицы (из противоположной только те, которым есть соответствие), для не найденных запрос возвращает NULL. Примечание : консоль запросов всегда преобразует правое соединение в левое, меняя таблицы местами (в случае, если запрос написать вручную, и потом открыть конструктором);
- внутренним - только совпадающие записи обеих таблиц.
В случае безусловного соединения, в конструкторе запросов достаточно определить выбираемые таблицы, не указывая, по каким полям они будут связаны (то есть не заполняя закладку Связи).
На практике чаще встречаются задачи соединения по определенному полю двух таблиц.
В конструкторе запросов тип условного соединения регулируется флажком "Все" - где он стоит, из той таблицы и выбираются все записи.
Флажок "Все", устанавливаемый у таблицы, выбранной на закладке "Связи" конструктора запросов означает что в результат запроса надо включить все записи этой таблицы.
При соединении таблиц-источников данных в конструкторе запросов можно назначить необходимое количество соединений с указанием необходимого количества условий связи, причем эти условия могут быть как простые, так и произвольные.
На данной вкладке система позволяет группировать и суммировать нужные поля результата таблицы. Описывается использование конструкций СГРУППИРОВАТЬ ПО, СУММА, МИНИМУМ, СРЕДНЕЕ, МАКСИМУМ, КОЛИЧЕСТВО, КОЛИЧЕСТВО РАЗЛИЧНЫХ.
При описании группировки в тексте запроса все поля должны делиться:
- на те, по которым производится группировка;
- на агрегатные функции (рассчитываемые поля);
- на поля вложенных таблиц.
Вложенные таблицы не попадают ни в группируемые, ни в агрегируемые поля.
Количество записей в результате запроса можно узнать с помощью агрегатной функции КОЛИЧЕСТВО(*).
Отвечает за все условия, накладываемые на получаемые данные, т.е. за всё, что идёт в тексте запроса после конструкции ГДЕ.
Вкладка "Дополнительно" включает важные параметры.
Группировка "Выборка записей":
- Первые — параметр, возвращающий в запрос только N записей (оператор ПЕРВЫЕ ); позволяет вывести в отчет первые N записей, которые будут отобраны с учетом правил упорядочивания, настроенных в конструкторе запросов;
- Без повторяющихся — обеспечивает уникальность полученных записей (оператор РАЗЛИЧНЫЕ) и позволяет исключить из результирующей таблицы запроса одинаковые строки (данная операция распространяется только на детальные записи );
- Разрешенные — позволяет выбирать только те записи, которые позволяет выбрать система с учетом настройки RLS (конструкция РАЗРЕШЕННЫЕ).
Группировка "Тип запроса":
- определяет тип запроса:
- Выборка данных;
- Создание временной таблицы;
- Уничтожение временной таблицы.
Флаг "Блокировать получаемые данные для последующего изменения":
- позволяет включить возможность установки блокировки данных, которая обеспечивает сохранность данных от момента их чтения до изменения (актуально только для "Автоматического режима блокировок", конструкция ДЛЯ ИЗМЕНЕНИЯ); позволяет заблокировать данные указанных таблиц-источников на чтение (в рамках транзакции).
- в режиме автоматических транзакционных блокировок) происходят блокировки:
- в варианте файл-сервер - на уровне таблиц базы данных;
- в варианте клиент-сервер - на уровне записей таблиц базы данных.
- Если список "Таблицы для изменения" - пуст, то будут блокироваться данные всех таблиц, задействованных в запросе, иначе - только таблиц, указанных в списке.
Конструктор запросов 1с позволяет создавать объединения запросов. При их помощи можно последовательно выводить в результат данные, полученные из нескольких запросов, не используя при этом связи. Единственной условие для объединения — одинаковый набор полей в каждом отдельном запросе.
На этой закладке устанавливается возможность объединения разных таблиц и псевдонимы (конструкция КАК).
В левой части указываются таблицы, если установить флаги напротив таблицы, будут использоваться конструкции ОБЪЕДИНИТЬ, иначе — ОБЪЕДИНИТЬ ВСЕ (отличия двух способов тут ).
В правой части указываются соответствия полей в разных таблицах, если соответствие не указано, запрос будет возвращать NULL.
Особенности использования закладки "Объединения/Псевдонимы" конструктора запросов:
- На закладке "Объединения/Псевдонимы" конструктора запросов можно:
- Задать список запросов (в результирующую выборку попадут записи всех указанных запросов).
- Задать имена полей результирующей таблицы.
- При создании запросов, участвующих в объединении , с помощью конструктора запросов, он сам добавит в каждый запрос необходимое количество недостающих полей со значением NULL. Настроить соответствие добавленных конструктором полей и полей результата запроса можно на закладке "Объединения/Псевдонимы".
- Настройки, сделанные в разделе "Объединения/Псевдонимы" конструктора запросов, отразятся на информации, отображаемой в других разделах конструктора, следующим образом:
- Если заданы псевдонимы полей результирующей таблицы, то новые названия появляются на закладке "Порядок" в списке полей.
- При объединении запросов на ряде закладок (в том числе "Таблицы и поля") появляется возможность переключения между объединяемыми запросами.
- При объединении двух запросов на закладке "Объединения/Псевдонимы" конструктора запросов условие связи между запросами задать нельзя: в случае объединения связь всегда безусловна.
Используя конструктор запроса, повлиять на порядок записей в результирующей таблице запроса можно:
- на закладке "Порядок";
- на закладке "Объединения/Псевдонимы".
Таблица, полученная в результате запроса, может быть отсортирована по алфавиту по нужному полю:
- по полю, присутствующему в запросе;
- по любому полю таблицы-источника (кроме случаев объединенных запросов).
Помимо указания порядка для конкретного поля, можно воспользоваться опцией "Автоупорядочивание", которая отсортирует список по основному представлению объекта.
Указывается порядок сортировки значений (УПОРЯДОЧИТЬ ПО) — по убыванию (УБЫВ) или возрастанию (ВОЗР).
Флаг "Автоупорядочивание" (в запросе — АВТОУПОРЯДОЧИВАНИЕ):
- если установлен, то система будет сортировать данные (по умолчанию система 1С 8.3 выводит данные в «хаотичном» порядке).
Если на закладке "Порядок" конструктора запросов не заданы настройки, то установка флага "Автозаполнение" обусловит следующее:
- записи в результирующей таблице запроса будут упорядочены по полям сортировки по умолчанию для таблиц-источников данных;
- если заданы настройки на станицах "Группировка" или "Итоги", то порядок записей в результирующей таблице запроса будет определяться этими настройками.
В случае установки флага "Автоупорядочивание" на закладке "Порядок" конструктора запросов записи в результирующей таблице запроса (если эта таблица уже упорядочена по полю, хранящему ссылку на иерархический справочник) будут упорядочены по значению основного представления для этого поля. Т.е. если справочник отсортирован по ссылке (= наименованию), но основное его представление - код, то после включения автоупорядочивания сортировка изменится на сортировку по коду.
В зависимости от иерархии справочника, можно выводить итоги связанных таблиц по иерархии. Для этого предназначена закладка "Итоги" конструктора запросов:
В ней указывается:
- Поле, по которому группируем, и тип его итогов:
- Элементы - итоги только по конечным элементам;
- Элементы и иерархия - итоги по папкам и по конечным элементам;
- Только иерахия - итоги только по папкам.
- Флаг "Общие итоги" - суммирование всех полученных запросом строк;
- Итоговое поле - по которому собственно и считаем итоги.
Таким образом, при использовании секции "ИТОГИ . ПО" количество записей в результате запроса увеличится (по сравнению с их количеством без секции "ИТОГИ . ПО").
Результатом запроса с итогами будет дерево значений:
На этой вкладке можно создавать новые пакеты запросов, а также использовать её для навигации.
В тексте запроса пакеты разделяются символом «;» (точка с запятой).
Особенности использования конструктора запросов 1С
- При сохранении текста запроса, открытого повторно с помощью конструктора запроса, без внесения в этот текст изменений, из первоначального текста будут удалены только комментарии.
- Для создания в конструкторе запросов вложенного запроса необходимо:
- открыть закладку "Таблицы и поля";
- в командной панели над деревом "Таблицы" нажать кнопку "Добавить" или выбрать одноименный пункт контекстного меню.
- открыть закладку "Таблицы и поля";
- в командной панели над деревом " Поля " нажать кнопку "Добавить" или выбрать одноименный пункт контекстного меню.
Укажем в конструкторе одно суммируемое поле:По остальным полям будет произведена группировка в тексте запроса:
При использовании в качестве источника данных для запроса внешнего источника (данные которого передаются через параметр) в качестве такого источника может использоваться:
Объект 1С "Отчеты" - прикладной объект, предназначенный для представления, просмотра и печати накопленных данных в удобном для анализа виде; это специальный объект метаданных, предназначенный для формирования удобного для пользователя представления данных из таблиц базы данных 1С.
На основе информации из базы данных отчеты выдают печатные формы, содержащие всевозможные реестры, детальную и сводную информацию (например, отчеты "Оборотно-сальдовая ведомость", "Список сотрудников", "Анализ продаж").
Отчеты, как и многие другие объекты конфигурации, могут иметь реквизиты и табличные части, но их смысл отличается от реквизитов и табличных частей справочников и документов. Дело в том, что отчет (и обработки) - это объекты, которые не сохраняются в базе данных, а существуют только в определенные периоды времени, пока с ними работает пользователь. Поэтому назначение реквизитов и табличных частей отчетов (обработок) - указание параметров формирования отчетов и выполнения обработок.
Для отладки отчетов в процессе разработки был создан механизм внешних отчетов. Внешний отчет 1С находится не в конфигурации, а сохранен в отдельный файл (обычно с расширением .erf). Его можно просто открыть, как обычный файл, какв Конфигураторе, что в режиме Предприятие (Файл / Открыть).
Отличие внешних отчетов от встроенных:
- нельзя обратиться к внешнему отчету «по имени», в отличие от встроенного отчета.
Отличия отчета от обработки:
- отчеты нужны для отображения информации, а обработки — для изменения информации;
- в отчетах можно указать Основную схему компоновки данных (СКД) и указать настройки для сохранения параметров отчетов.
В общем случае, для разработки отчетов используется конструктор СКД, что позволяет создавать отчеты без программирования. В то же время, отчет может быть построен полностью программно, с использованием объектов встроенного языка.
Создание отчета на основе Системы компоновки данных (СКД)
Система компоновки данных представляет собой механизм, основанный на декларативном описании отчетов и предназначенный:
- для построения отчетов, а также
- вывода информации, имеющей сложную структуру и содержащей произвольный набор таблиц и диаграмм.
Это самый прогрессивный метод создания отчетов в 1С, рекомендованный и самой фирмой 1С. Система компоновки данных интегрирована в объект конфигурации "Отчет", что позволяет создавать отчеты без программирования.
У объекта конфигурации "Отчет" реализовано свойство "Основная схема компоновки данных".
СКД имеет очень гибкий и функциональный конструктор, который позволяет описать :
- исходные данные, которые будет использовать отчет (наборы данных, связи между наборами данных, вычисляемые поля, ресурсы и т.д.);
- настройки компоновки данных, которые будут использоваться по умолчанию (в том случае, если пользователь не задаст собственные настройки).
Настройки компоновки данных могут быть созданы с помощью специального конструктора настроек компоновки данных, или вручную.
Для одного отчета может быть задано несколько вариантов его визуального представления, то есть одна и та же информация может быть по-разному развернута, сгруппирована и т.д.
Предопределенные варианты задаются в конструкторе СКД на закладке "Настройки":
Пожалуй, самый лучший способ изучения языка запросов - это исследование его с помощью конструктора запросов , а так же самостоятельная ручная модификация запросов , полученных после работы конструктора. Когда к вам придет достаточно уверенное понимание языка запросов и его конструкций, от модификации готовых текстов можно перейти к написанию собственных.
Щелкнем правой кнопкой мыши по свободному пространству в поле ввода текста запроса в обработке Консоль запросов. В появившемся контекстном меню выберем пункт Конструктор запроса. Появится соответствующее окно, рис. 7.6.
Конструктором запроса можно пользоваться и в режиме конфигурирования, причем, там он, преимущественно, и используется при составлении запросов .
Окно конструктора запроса имеет несколько вкладок. Вкладка Таблицы и поля служит для указания таблиц ( реальных и виртуальных ), из которых будут отбираться данные, и конкретных полей этих таблиц, которые и попадут в результаты запроса .
Вкладка Таблицы и поля имеет три области. Область, озаглавленная как База данных показывает нам набор таблиц, которые имеются в системе. Можно заметить, что эта область напоминает дерево конфигурации . Группы можно разворачивать, тогда мы получаем доступ к конкретным таблицам. Как видите, здесь представлена база данных конфигурации, над которой мы все это время работаем. Развернем несколько группировок, рис. 7.7.
Среди таблиц есть реальные и виртуальные . Например, реальные таблицы - это таблицы справочников ( ФизическиеЛица, Номенклатура ), документов ( ПоступлениеМатериалов ), регистров накопления ( ОстаткиМатериалов ). Виртуальные таблицы в данный момент имеют отношение к регистру накопления ОстаткиМатериалов. В частности, виртуальная таблица ОстаткиМатериалов.Обороты предназначена для получения информации об оборотах по регистру. Таблица ОстаткиМатериалов.Остатки - для получения данных об остатках, таблица ОстаткиМатериалов.ОстаткиИОбороты, как следует из ее названия, предназначена для получения и информации об остатках и информации об оборотах.
Рабочая область Таблицы окна Конструктор запроса содержит список таблиц, из которых система выбирает данные. Этот список формируется переносом нужных таблиц из рабочей области База данных.
Зададимся следующей целью: нужно сконструировать запрос , который выводит список фамилий сотрудников, работающих в организации.
Очевидно, что данные для такого запроса будут храниться в справочнике Сотрудники. Поэтому перенесем таблицу Сотрудники из области База данных в область Таблицы, рис. и развернем таблицу.
Если вспомнить устройство справочника Сотрудники, то окажется, что один из его реквизитов имеет тип СправочникСсылка.ФизическиеЛица, именно из этого реквизита можно "вытащить" фамилию сотрудника. Развернем группировку ФизическоеЛицо, найдем среди появившихся полей поле Фамилия и перенесем его в рабочую область Поля, рис. 7.8.
Собственно говоря, запрос , который выполняет вышеописанную задачу, готов. Для того, чтобы просмотреть текст полученного запроса , не выходя из конструктора запроса , можно нажать на кнопку Запрос, которая расположена в левом нижнем углу формы конструктора. Нажмем на эту кнопку, рис. 7.9.
Запрос , который отображается в этом окне, можно отредактировать, нажав на кнопку командной панели Редактировать запрос, его можно выполнить и посмотреть на результаты выполнения запроса , нажав на кнопку Выполнить запрос. Команда выполнения запроса доступна лишь при вызове конструктора запроса в режиме 1С:Предприятие.
Закроем окно предварительного просмотра запроса и нажмем на кнопку ОК в окне Конструктор запроса.
Как вы уже могли понять, в поле ТекстЗапроса попадет следующий текст:
Весь этот текст представляет собой описание запроса . Ключевое слово ВЫБРАТЬ обязательно должно присутствовать в начале описания. Оно показывает, какие именно данные должен получать запрос .
Ключевое слово ИЗ позволяет задавать источники данных для запроса . В нашем случае мы видим здесь следующий текст:
Это выражение означает, что источником данных является таблица Справочник.Сотрудники. Для этой таблицы, с помощью ключевого слова КАК задан псевдоним Сотрудники. Именно по этому псевдониму в рамках запроса осуществляется обращение к таблице Справочник.Сотрудники.
Вернемся к пояснениям области ВЫБРАТЬ . Здесь имеется следующая команда :
Этой командой мы обращаемся к таблице ФизическоеЛицо, которая хранится в таблице Сотрудники (напомним, что это - псевдоним ) и выбираем из нее фамилию сотрудника. Полям, которые попадают в выборку данных, создаваемую запросом , так же можно назначать псевдонимы с помощью ключевого слова КАК .
Если попытаться выразить текст рассматриваемого запроса на естественном языке, то получится следующее. Нужно выбрать из таблицы Справочник.Сотрудники (которую в запросе будем называть просто Сотрудники ) фамилию сотрудника, которая хранится в таблице ФизическоеЛицо, соответствующей конкретному сотруднику.
Теперь нажмем на кнопку Выполнить в форме обработки Консоль запросов. Вот, что у нас получилось, рис. 7.10.
Читайте также: