Порядок работы с объектом встроенного языка запрос. Встроенный язык

ЭТО_КЛЮЧЕВОЕ_СЛОВО
<Это конструкция языка>,
<Это конструкция языка>
ЭТО_ФУНКЦИЯ(<Это конструкция языка>)

В правилах, описывающих язык запросов, конструкции языка указываются в угловых скобках. Ключевые слова и названия функций описываются заглавными буквами.

Конструкции языка могут содержать необязательные элементы - ключевые слова и прочее. В правилах, описывающих язык запросов, необязательные элементы заключены в квадратные скобки «[» и «]»:

[ЭТО_НЕОБЯЗАТЕЛЬНОЕ_СЛОВО] [<Это необязательная конструкция>]

В некоторых случаях в конструкции языка может использоваться одна из нескольких альтернативных элементов. Такие элементы в правилах перечисляются через вертикальную черту «|»:

ЛИБО_ЭТО_СЛОВО | ЛИБО_ЭТО_СЛОВО
<Либо эта конструкция> | <Либо эта конструкция>

Описания всех конструкций сопровождаются примерами, поясняющими порядок их использования в языке запросов.

Комментарии в языке запросов

Текст запроса может включать комментарии. Комментарием счи­тается часть строки, начинающаяся с последовательности симво­лов // и продолжающаяся до конца строки:

// Это комментарий.

При выполнении запроса комментарии игнорируются.

Двуязычное представление ключевых слов

Одной из существенных особенностей языка запросов 1C: Предприятия является то, что как и во встроенном языке, все ключевые слова имеют два варианта написания: на русском и английском языках. Далее в этой главе указываются русские ва­рианты написания ключевых слов. Ниже приведена таблица, в которой приведены соответствия русского и английского и вари­антов написания ключевых слов языка запросов...... (пропущено)

Основные секции текста запроса

Текст запроса можно описать следующим правилом:

<Описание запроса>
[<Объединение запросов>]
[<Упорядочивание результатов>]
[АВТОУПОРЯДОЧИВАНИЕ]
[<Описание итогов>]

Как видно из этого правила, текст запроса состоит из нескольких частей, или секций:

В секции <Упорядочивание результатов> можно опреде­лить условия упорядочивания строк в результате запроса. Упоря­дочивание результата запроса рассматривается на стр. 324 .

АВТОУПОРЯДОЧИВАНИЕ позволяет включить режим автомати­ческого упорядочивания строк в результате запроса. Данный ре­жим описывается на стр. 331 .

В секции <Описание итогов> можно указать, какие итоги необходимо рассчитывать в запросе. Описание данной секции приводится на стр. 332 .

Описание запроса

Как уже было сказано, в тексте запроса должна обязательно при­сутствовать секция описания запроса, в которой определяются:

Поля, которые будут содержаться в результате запроса;

Источники данных запроса - исходные таблицы;

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

Порядок группировки результатов запроса.

Секция описания запроса состоит из нескольких взаимосвязан­ных предложений:

ВЫБРАТЬ [РАЗЛИЧНЫЕ] [ПЕРВЫЕ <Количество>]
<Список полей выборки>
[ИЗ <Список источников>]
[ГДЕ <Условие отбора>]
[СГРУППИРОВАТЬ ПО <Поля группировки>]
[ИМЕЮЩИЕ <Условие отбора>]
[ДЛЯ ИЗМЕНЕНИЯ [ <Список таблиц верхнего уровня>]]

Описание запроса начинается с обязательного ключевого слова ВЫБРАТЬ .

Предложение ГДЕ <Условие отбора> позволяет отфильтро­вать результат запроса. В результат попадают только те записи, для которых указанное условие оказывается истинным. Правила описания условий отбора рассматриваются на стр. 315 .

Предложение ДЛЯ ИЗМЕНЕНИЯ предназначено для указания необходимости блокировки считываемых в транзакции данных.

Предложение СГРУППИРОВАТЬ позволяет описать порядок группировки результатов запроса. Подробно группировка рас­сматривается на стр. 316 .

Предложение ИМЕЮЩИЕ позволяет накладывать условия на ре­зультаты группировки. Описано на стр. 318 .

Во всех примерах запросов в данной главе приводится текст за­проса и результат запроса. Подразумевается, что текст запроса передается в качестве параметра методу Выполнить объекта Запрос.

Приведем пример достаточно простого запроса, состоящего из одного оператора ВЫБРАТЬ и списка полей выборки.

//В отчет необходимо вывести список товарных накладных.

Результат запроса:

Использование слова РАЗЛИЧНЫЕ

Во многих ситуациях желательно, чтобы одинаковые строки в отчете не повторялись.

// Необходимо узнать, каким вообще контрагентам
// отгружался товар за период.
Выбрать Документ.РасходнаяНакладная.Контрагент

Результат запроса:

Видно, что в результате запроса много повторяющихся строк, что снижает его наглядность. Чтобы избежать повторений, в описа­нии запроса следует указать ключевое слово РАЗЛИЧНЫЕ.

Выбрать Различные Документ.РасходнаяНакладная.Контрагент

Результат запроса:

Использование слова ПЕРВЫЕ

В некоторых случаях необходимо вывести в отчет ограниченное количество строк. Для этого в описании запроса следует указать ключевое слово ПЕРВЫЕ, и после него - требуемое количество строк.

// Необходимо отобрать пять самых дорогих товаров.
// Выборка должна осуществляться в порядке убывания цены товара.
Выбрать Первые 5
Справочник.Номенклатура.Наименование,
Справочник.Номенклатура.ЗакупочнаяЦена
Упорядочить По Справочник.Номенклатура.ЗахупочнаяЦена Убыв

Результат запроса:

Описание полей выборки

После обязательного ключевого слова ВЫБРАТЬ (и уточняющих слов РАЗЛИЧНЫЕ и ПЕРВЫЕ) в тексте запроса задается список полей выборки. Эти поля будут обрабатываться при выборке дан­ных в запросе. Результат запроса также будет иметь набор полей, определенный в данном списке. Поля выборки описываются по следующим правилам:

<Описание поля> [ [КАК] <Псевдоним поля>]

<Выражение>[.<Группа полей>]

Список полей выборки состоит из одного или нескольких эле­ментов, разделенных запятыми. Каждое <Поле выборки> со­стоит из описания поля выборки и необязательного псевдонима поля.

Вместо перечисления полей в списке выборки можно указать звездочку «*». Это будет означать, что результат запроса должен содержать все поля, которые есть в исходных таблицах - источ­никах данных запроса, описанных в списке источников.

Замечание! При указании звездочки «*» в списке полей вы­борки в результат не включаются виртуальные поля исходных таблиц.

<Описание поля> определяет, каким образом должны форми­роваться значения поля. В простейшем случае поле выборки яв­ляется ссылкой на поле исходной таблицы. Ссылка может зада­ваться с указанием таблицы, содержащей это поле, или без указа­ния самой таблицы. Разыменование полей рассматривается на.

В общем случае поле выборки может представлять собой не толь­ко ссылку на поле исходной таблицы, а некоторое <Выражение>. Подробно выражения рассмотрены на стр. 344 .

Результаты запроса могут быть сгруппированы с помощью агре­гатных функций, указанных в качестве выражений в полях вы­борки. Группировка результатов запроса рассматривается на стр. 316 . Агрегатные функции описаны на стр. 345 .

Каждому полю выборки может быть назначен псевдоним. В даль­нейшем может использоваться для более удобного обращения к данному полю. Применение псевдонимов полей рассмотрено ниже.

<Группа полей> может указываться только тогда, когда поле выборки указывает на вложенную таблицу. В этом случае можно указать, какие поля должны обрабатываться в выборке по вло­женной таблице. Если группа полей не указана, в выборке будут обрабатываться все поля вложенной таблицы. Обращение к вло­женным таблицам описывается на .

Псевдонимы полей в списке выборки

Если полю выборки назначить псевдоним, то в дальнейшем к этому полю можно будет обращаться, используя его псевдоним, в предложениях УПОРЯДОЧИТЬ ПО и ИТОГИ, а также при работе с результатом запроса. Такое обращение может быть более удоб­ным и наглядным, а в некоторых случаях единственно возмож­ным.

Ключевое слово КАК может предшествовать псевдониму поля. Это слово можно не указывать вообще, но если оно указано, по­вышается наглядность и удобочитаемость текста запроса.

Псевдонимы полей задаются в соответствии с правилами назна­чения идентификаторов переменных. Псевдонимы в запросе не могут совпадать.

Назначение псевдонимов полям само по себе никак не влияет на выборку данных в запросе.

// Необходимо выбрать из справочника товаров
// наименования товаров и наименования групп.
Выбрать
Справочник. Номенклатура.Наименование Как Товар,
Справочник. Номенклатура.Родитель.Наименование Как Группа
из
Справочник.Номенклатура

Результат запроса:

Обратите внимание, что поля в результате запроса поля называ­ются «Товар» и «Группа». Если бы псевдонимы полей не были указаны, поля в результате запроса назывались бы «Наименова­ние» и «Наименование1» (названия полей в результате запроса не могут совпадать, поэтому к названию второго поля автоматически добавлено «1»), что гораздо менее наглядно.

Вложенные таблицы в списке полей выборки

Поле в списке выборки может ссылаться на вложенную таблицу источника данных запроса. В этом случае поле результата запроса будет иметь тип РезультатЗапроса, то есть содержать вло­женный результат запроса, сформированный на основе вложен­ной таблицы - источника.

По умолчанию во вложенный результат включаются все поля вложенной таблицы - источника данных. Имеется возможность явно определить группу полей, которые должны содержаться во вложенном результате запроса. Группа полей вложенного резуль­тата описывается по следующему правилу:

(<Список вложенных полей>) | *

<Вложенное поле [, <Вложенное поле>[, ...] ]

<Список вложенных полей> состоит из одного или не­скольких элементов, разделенных запятыми. Если список состоит из одного элемента, его не обязательно заключать в скобки.

Вместо перечисления вложенных полей можно указать звездочку «*»; это будет означать, что во вложенный результат запроса должен содержать все поля, которые есть во вложенной таблице.

<Выражение> [[КАК] <Псевдоним поля>]

<Вложенное поле> может представлять некоторое выражение. В простейшем случае <Выражение> - это ссылка на поле вло­женной таблицы. Подробно выражения рассмотрены на стр. 344 .

Каждому вложенному полю может быть назначен псевдоним. В дальнейшем <Псевдоним поля> может использоваться для более удобного обращения к данному полю, аналогично псевдо­нимам полей списка выборки - см. раздел «Псевдонимы полей в списке выборки» на

Псевдонимы вложенным полям могут быть назначены независи­мо от того, задан ли псевдоним самой вложенной таблице.

//В отчет необходимо вывести спецификацию товарных накладных,
// сам документ, номенклатуру и количество.
Выбрать

Документ.РасходнаяНакладная.Состав.(Номенклатура Как Товар, Количество)

Результат запроса:

Ссылка Состав
Товар Количество
Джинсы женские 4
Джинсы женские 5
Рубашка «Ковбойка» 5
Расходная накладная 00005 от 24.02.2002 0:00:00 Джинсы женские 1
Джинсы женские 1
Мойдодыр «Аквариум» 5
Раковина «Лилия» 8
Смеситель «Ультра» 10

Обратите внимание, что поле «Состав» результата запроса пред­ставляет собой вложенную таблицу, имеющую поля «Номенкла­тура» и «Количество».

//В отчет вывести все поля табличной части накладной.
Выбрать
Документ.РасходнаяНакладная.Ссылка,
Документ.РасходнаяНакладная.Состав.*

Задача предложения ИЗ состоит в том, чтобы обозначить список исходных таблиц - источников данных, используемых в данном операторе ВЫБРАТЬ.

Следует, отметить, что предложение ИЗ в языке запросов являет­ся опциональным. Оно может быть опущено в том случае, если источники данных полностью квалифицированы в описании спи­ска полей выборки, содержащегося в предложении ВЫБРАТЬ. Обратите внимание, что ряд примеров в предыдущих разделах не содержал предложения ИЗ.

После ключевого слова ИЗ указывается список источников. В об­щем случае список источников описывается следующим набором правил:

<Источник>[, <Источник>[, ...]]

Источники данных запроса перечисляются в списке источников через запятую. Каждый <Источник> в списке источников обя­зательно включает в себя описание источника; кроме того, может быть указан <Перечень соединений> - правила соединений источника с другими источниками. Спецификации соединений описываются .

<Описание источника> [ <Перечень соединений> ]

Если в качестве источника данных выступает таблица информа­ционной базы, <Описание источника> содержит <Имя таблицы>.

<Таблица> [ [КАК] <Псевдоним источника>]

Если исходная таблица виртуальная, могут быть указаны <Параметры> ее формирования. Подробно параметры виртуальных таблиц описаны в разделе «Источники данных запросов».

<Имя таблицы> [(<Параметры>)] | <Описание запроса>

В качестве источника данных запроса может выступать также вложенный запрос; в этом случае описание источника содержит <Описание запроса>. Использование вложенных запросов описано на.

В описании источника данных может быть также назначен его псевдоним. В дальнейшем <Псевдоним источника> может использоваться для более удобного обращения к данному источ­нику. Применение псевдонимов источников данных рассмотрено на .

Спецификации соединений

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

Результат запроса:

Контрагент Банк
Поставщики АКБ ИвестБанк
Поставщики АКБ ПромСтройБанк
Трикотажная фабрика «Заря» АКБ ИвестБанк
Трикотажная фабрика «Заря» АКБ ПромСтройБанк
Фабрика джинсовой одежды АКБ ИвестБанк
Фабрика джинсовой одежды АКБ ПромСтройБанк
Покупатели АКБ ИвестБанк
Покупатели АКБ ПромСтройБанк
Ярмарка одежды АКБ ИвестБанк
Ярмарка одежды АКБ ПромСтройБанк
Торговый дом «Буденовский» АКБ ИвестБанк
Торговый дом «Буденовский» АКБ ПромСтройБанк
Павильон 45 на оптовом рынке АКБ ИвестБанк
Павильон 45 на оптовом рынке АКБ ПромСтройБанк
Бавария - фарфор АКБ ИвестБанк
Бавария - фарфор АКБ ПромСтройБанк
Фабрика джинсовой одежды АКБ ИвестБанк
Фабрика джинсовой одежды АКБ ПромСтройБанк
АКБ ПромСтройБанк АКБ ИвестБанк
АКБ ПромСтройБанк АКБ ПромСтройБанк

Результат запроса содержит комбинации всех контрагентов со всеми банками. Как правило, такой результат сам по себе смысла не имеет. Обычно комбинации записей из разных исходных таб­лиц требуется ограничить какими-либо условиями. В языке за­просов имеется возможность описать такое соединение источни­ков, указывая сами источники и определяя условия, в соответст­вии с которыми комбинации записей из этих источников требует­ся включить в результат запроса.

Соединения бывают нескольких видов, они описываются сле­дующими правилами:

<Соединение> [<Перечень соединений>]

В общем случае <Перечень соединений> может содержать и описывать не только одно соединение (двух источников), но и несколько соединений нескольких источников сразу.

[ВНУТРЕННЕЕ] СОЕДИНЕНИЕ <Описание источника> ПО <Условие отбора> |

ЛЕВОЕ [ВНЕШНЕЕ] СОЕДИНЕНИЕ <Описание источника> ПО <Условие отбора> |

ПРАВОЕ [ВНЕШНЕЕ] СОЕДИНЕНИЕ <Описание источника> ПО <Условие отбора> |

ПОЛНОЕ (ВНЕШНЕЕ] СОЕДИНЕНИЕ <Описание источника> ПО <Условие отбора>

<Условие отбора> содержит условия, в соответствии с кото­рыми в выборке необходимо соединить данные из исходных таб­лиц - источников запроса. Правила описания условий в языке запросов рассматриваются на стр. 357 .

Ключевые слова ЛЕВОЕ, ПРАВОЕ и ПОЛНОЕ уточняют характер соединения. Слова ВНУТРЕННЕЕ или ВНЕШНЕЕ можно не указывать вообще, они повышают наглядность и удобочитаемость тек­ста запроса.

Соединяемые источники не равнозначны между собой, и в неко­торых случаях результат зависит от того, какая таблица указана первой, до ключевого слова СОЕДИНЕНИЕ (слева от него), а какая - второй (справа).

[ВНУТРЕННЕЕ] СОЕДИНЕНИЕ означает, что из обеих исходных таблиц - источников данных в результат запроса необходимо включить только те комбинации записей, которые соответствуют указанному условию. Остальные записи в результат не попадают.

// Необходимо выяснить, какие банки является одновременно
// контрагентами (одинаковые наименования присутствует
//и в справочнике Контрагенты, и в справочнике Банки).
Выбрать

Банки.Ссылка Как Банк
Из

Внутреннее Соединение
Справочник.Банки Как Банки
По

Результат запроса:

Контрагент Банк
АКБ ПромСтройБанк АКБ ПромСтройБанк

ЛЕВОЕ [ВНЕШНЕЕ] СОЕДИНЕНИЕ означает, что в результат запроса надо включить комбинации записей из обеих исходных таблиц, которые соответствуют указанному условию. Но, в отли­чие от внутреннего соединения, в результат запроса надо вклю­чить также еще и записи из первого (указанного слева от слова СОЕДИНЕНИЕ) источника, для которых не найдено соответст­вующих условию записей из второго источника.

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

//В отчет необходимо вывести всех контрагентов, а для тех,
// кто является также банком - указать ссылку на банк.
Выбрать
Контрагенты.Ссылка Как Контрагент,
Банки.Ссылка Как Банк
Из
Справочник.Контрагенты Как Контрагенты
Левое Внешнее Соединение
Справочник.Банки Как Банки
По
Контрагенты.Наименование = Банки.Наименование

Результат запроса:

ПРАВОЕ [ВНЕШНЕЕ] СОЕДИНЕНИЕ означает, что в результат запроса надо включить комбинации записей из обеих исходных таблиц, которые соответствуют указанному условию. Кроме того, в результат запроса надо включить также еще и записи из второго (указанного справа от слова СОЕДИНЕНИЕ) источника, для кото­рых не найдено соответствующих условию записей из первого ис­точника.

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

//В отчет необходимо вывести все банки, а для тех,
// кто является также и контрагентом - указать ссылку на контрагента.
ВЫБРАТЬ
Контрагенты.Ссылка Как Контрагент,
Банки.Ссылха Как Банк
ИЗ
Справочник.Контрагенты Как Контрагенты
Правое Внешнее Соединение
Справочник.Банки Как Банки
По
Контрагенты.Наименование = Банки.Наименование

Результат запроса:

Контрагент Банк
NULL АКБ ИвестБанк
АКБ ПромСтройБанк АКБ ПромСтройБанк

ПОЛНОЕ [ВНЕШНЕЕ] СОЕДИНЕНИЕ означает, что в результат запроса надо включить комбинации записей из обеих исходных таблиц, которые соответствуют указанному условию. Кроме того, в результат запроса надо включить также еще и те записи из обо­их источников, для которых не найдено соответствий.

Таким образом, в результат запроса будут включены все записи из обоих источников; они будут соединены друг с другом при вы­полнении указанного условия. Строки результата запроса, для которых не найдено соответствующих условию записей из какого-либо источника, будут содержать NULL в полях, формируемых на основании записей из этого источника.

// В отчет необходимо вывести всех контрагентов и все банки,
// а.тех, кто является и тем, и другим - вывести в одной строке.
Выбрать
Контрагенты.Ссылка Как Контрагент,
Банки.Ссылка Как Банк
Из
Справочник.Контрагенты Как Контрагенты
Полное Внешнее Соединение
Справочник.Банки Как Банки
По
Контрагенты.Наименование = Банки.Наименование

Результат запроса:

Псевдонимы источников данных

Если источнику данных назначить псевдоним, то в дальнейшем к этому источнику можно будет обращаться, используя этот псев­доним (и уже нельзя будет обращаться через указание имени таб­лицы). Такое обращение может быть более удобным и наглядным, а в некоторых случаях единственно возможным.

Псевдоним задается в соответствии с правилами назначения идентификаторов переменных. Псевдонимы в запросе не могут совпадать.

Ключевое слово КАК может предшествовать псевдониму источ­ника. Это слово можно не указывать вообще, но если оно указано, повышается наглядность и удобочитаемость текста запроса.

Назначение псевдонимов источникам само по себе никак не влия­ет на выборку данных в запросе.

// Данный пример демонстрирует использование
// в списке полей выборки псевдонима Товар,
// назначенного исходной таблице Справочник.Номенклатура
Выбрать
Товар.Наименование,
Товар.Родитель
Из
Справочник.Номенклатура.Товар

Вложенные таблицы в списке источников

В списке источников могут фигурировать и вложенные таблицы - табличные части справочников и документов.

//В отчет необходимо вывести спецификацию товарных накладных -
// показать сам документ, номенклатуру и количество.
//В списке источников указана вложенная таблица «Состав» -
// табличная часть накладной.
// Выборка ограничена восемью записями, чтобы не перегружать пример.
Выбрать Первые 8
Ссылка, Номенклатура, Количество
Из
Документ.РасходнаяНакладная.Состав

Результат запроса:

Ссылка Номенклатура Количество
Расходная накладная 00007 от 25.02.2002 21:03:21 Джинсы женские 4
Расходная накладная 00006 от 25.02.2002 0:00:00 Джинсы женские 5
Расходная накладная 00006 от 25.02.2002 0:00:00 Рубашка «Ковбойка» 5
Расходная накладная 00005 от 01.03.2002 20:58:28 Джинсы женские 1
Расходная накладная 00004 от 01.03.2002 20:50:40 Джинсы женские 1
Расходная накладная 00003 от 23.02.2002 0:00:00 Мойдодыр «Аквариум» 5
Расходная накладная 00003 от 23.02.2002 0:00:00 Раковина «Лилия» 8
Расходная накладная 00003 от 23.02.2002 0:00:00 Смеситель «Ультра» 10

Обратите внимание, что при указании вложенной таблицы в спи­ске источников допускается обращение, как к полям самой вло­женной таблицы, так и к полям таблицы верхнего уровня (той, которая содержит вложенную таблицу). В данном случае проис­ходит обращение к полю «Ссылка» самого документа.

Вложенные запросы в списке источников

В списке источников запроса в качестве таблицы-источника мо­жет использоваться вложенный запрос. В этом случае описание источника содержит описание вложенного запроса. Описание вложенного запроса составляется точно так же, как и обычного: см. на

Использование вложенного запроса в качестве источника данных ничем не отличается от использования таблицы информационной базы. В качестве полей такого источника доступны все поля, опи­санные в списке полей выборки вложенного запроса.

Результат будет точно таким же, как и в предыдущем примере.

Наконец-то большое занятие с кучей текста!

Для чего предназначен объект встроенного языка запрос?

Запрос – используется для получения информации, хранящейся в полях базы данных, в виде выборки, сформированной по заданным правилам. Важное уточнение: в запросе мы работает со ссылками. То есть это как взяли, сфоткали витрину магазина и дали фотку вам в руки. По этой фотке можно узнать, какой ассортимент товара, посчитать, сколько, например, апельсинов в углу и т.д. Но, если вы возьмете маркер и нарисуете на фотографии резиновый член, лежащий на прилавке, следует помнить, что от этого действия резиновый член в продаже не появится, следовательно, надо ножками притопать в магазин и положить таки этот важный предмет обихода на прилавок. В случае запросов мы по ссылке должны получить объект.

Для чего предназначена система компоновки данных?

Для создания произвольных отчетов в системе 1С:Предприятие и состоит из нескольких частей; На деле – на мой взгляд, очень неудобная штука. Мейби, дело привычки.

Для чего предназначена схема компоновки данных?

Для получения исходных данных для компоновки отчета;

Схема компоновки данных – штука, описывающая текст запроса, наборы данных, связи между ними, доступные поля, параметры получения данных, первоначальные настройки компоновки;

Для чего предназначены настройки компоновки данных?

Настройки компоновки данных работают вместе со схемой компоновки данных и служат для формирования макета;

В чем отличие между реальными и виртуальными таблицами?

Реальные таблицы содержат данные таблицы, которые (внезапно) реально хранятся в базе данных;

Виртуальные – формируются из данных нескольких таблиц базы данных; Для виртуальных таблиц можно задать ряд параметров, определяющих, какие данные будут включены в эти виртуальные таблицы. Набор таких параметров может быть различным для разных виртуальных таблиц;

Из каких частей состоит текст запроса, какие из них являются обязательными?

Описание запроса (обязательное) – определяет источники данных, поля выборки, группировки;

Объединение запросов – как будут объединены результаты выполнения нескольких запросов;

Упорядочивание результатов – условие упорядочивания строк результатов запроса;

Автоупорядочивание – режим автоматического упорядочивания строк в результате запроса;

Описание итогов – какие итоги нужно рассчитывать в запросе и каким образом группировать результат;

Каковы основные синтаксические конструкции языка запросов?

Выбрать <что> ИЗ <откуда>

УПОРЯДОЧИТЬ <признак>

Что является источником данных запроса?

Источником данных запроса является таблица (реальная или виртуальная);

Что такое псевдонимы в источнике запросов?

Возможность присваивать полю выборки произвольно имени. Например, если мы не просто выбираем, а используем естьнулл, или умножаем прямо в запросе это поле, то в финале оно будет называться по типу «поле1». А так мы его сразу обзовем, как будет удобно;

Что такое параметры запроса?

Параметр обозначается знаком &, служит для передачи определенных данных в запрос (например, даты для регистра какого-нибудь);

Что такое параметры виртуальной таблицы?

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

Что такое левое соединение?

Две таблицы. Условие. Левое соединение – будут включены ВСЕ данные из первой таблицы и только те, что удовлетворяют условию из второй таблицы;

Как использовать конструктор запроса?

Легко. Открываем либо в СхемеКомпоновкиДанных, либо правый клик – конструктор запроса в любой процедуре;

Как выбрать данные в некотором периоде для отчета?

В СхемеКомпоновкиДанных – настройки – в нижнем окне таблицы – параметры.

Как упорядочить данные в отчете?

В конструкторе запросов вкладка «Порядок», выбираешь нужное поле и способ сортировки;

Как использовать в отчете данные нескольких таблиц?

Объедини их с помощью запроса;

Как использовать группировку в структуре отчета?

В Схеме Компоновки Данных вкладка Настройка, правый клик по «Отчет» - выбираешь группировку для вывода информации в виде линейного отчета

Как получить последнее значение регистра сведений?

В параметрах виртуальной таблицы поставить период, и выбирать виртуальную таблицу «ИмяРегистраСведений.СрезПоследних»;

Как вывести в отчет иерархические данные?

Схема Компоновки Данных – настройки – новая группировка – тип – «иерархия»

Как управлять выводом итогов по группировкам и общих итогов?

Система Компоновки Данных – настройки – в нижнем окошке «Другие настройки» - «Расположение итогов»; «Расположение полей группировок», «Расположение общих итогов по вертикали»

Как создать отчет, содержащий диаграмму?

Схема Компоновки Данных – настройки – отчет – правый клик – новая диаграмма

Как использовать параметры в Схеме Компоновки Данных?

Создание отчетов

Работа с запросами

Для работы с запросами используется объект встроенного языка Запрос . Он позволяет получать информацию, хранящуюся в полях базы данных, в виде выборки, сформированной по заданным правилам.

Источники данных запросов

Исходную информацию запрос получает из набора таблиц. Эти таблицы представляют данные реальных таблиц базы данных в удобном для анализа виде. Их можно разделить на две большие группы: реальные и виртуальные.

Реальные таблицы, в свою очередь, могут быть объектными (ссылочными) или не объектными (не ссылочными):

Отличительной особенностью реальных таблиц является то, что они содержат данные какой-либо одной реальной таблицы, хранящейся в базе данных. Например, реальными таблицами являются таблица «Справочник.Клиенты», соответствующая справочнику «Клиенты» или таблица «РегистрНакопления.ОстаткиМатериалов», соответствующая регистру накопления «ОстаткиМатериалов».

Виртуальные таблицы формируются, в основном, из данных нескольких таблиц базы данных. Например, виртуальной таблицей является таблица «РегистрНакопления.ОстаткиМатериалов.ОстаткиИОбороты», формируемая из нескольких таблиц регистра накопления «ОстаткиМатериалов». Иногда виртуальные таблицы могут формироваться и из одной реальной таблицы (например, виртуальная таблица «Цены.СрезПоследних» формируется на основе таблицы регистра сведений «Цены»). Однако общим для всех виртуальных таблиц является то, что им можно задать ряд параметров, которые будут определять, какие данные будут включены в эти виртуальные таблицы. Набор таких параметров может быть различным для разных виртуальных таблиц, и определяется данными, хранящимися в исходных таблицах базы данных.

Реальные таблицы подразделяются на объектные (ссылочные) и не объектные (не ссылочные).

В объектных (ссылочных) таблицах представлена информация ссылочных типов данных (справочники, документы, планы видов характеристик и т.д.). А в не объектных (не ссылочных) - всех остальных типов данных (константы, регистры и т.д.).

Отличительной особенностью объектных (ссылочных) таблиц является то, что они содержат поле «Ссылка», содержащее ссылку на текущую запись. Кроме этого для таких таблиц возможно получение пользовательского представления объекта, эти таблицы могут быть иерархическими и поля таких таблиц могут содержать вложенные таблицы (табличные части).

Язык запросов

Алгоритм, по которому данные будут выбраны из исходных таблиц запроса, описывается в тексте запроса на специальном языке - языке запросов. Текст запроса состоит из нескольких частей:

    описание запроса,

    объединение запросов,

    упорядочивание результатов,

    автоупорядочивание,

    описание итогов.

Обязательной частью запроса является только первая - описание запроса. Все остальные присутствуют по необходимости.

Описание запроса определяет источники данных, поля выборки, группировки и т.д.

Объединение запросов определяет, как будут объединены результаты выполнения нескольких запросов.

Упорядочивание результатов определяет условия упорядочивания строк результата запроса.

Автоупорядочивание позволяет включить режим автоматического упорядочивания строк результата запроса.

Описание итогов определяет, какие итоги необходимо рассчитывать в запросе и каким образом группировать результат.

Отчет РеестрДокументовОказаниеУслуги

Первым отчетом, на основе которого мы начнем знакомиться с языком запросов, будет отчет «РеестрДокументовОказаниеУслуги». Этот отчет просто будет выводить список существующих в базе данных документов «ОказаниеУслуги» в порядке их дат и номеров.

Создадим в конфигураторе новый объект конфигурации Отчет «РеестрДокументовОказаниеУслуги». Перейдем на закладку «Макет» и запустим конструктор выходной формы.

В качестве источника данных для запроса выберем объектную (ссылочную) таблицу документов «ОказаниеУслуги». Из этой таблицы выберем следующие поля:

  • «Мастер»,

    «Клиент»:

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

После этого перейдем на закладку «Порядок» и укажем, что результат запроса должен быть сначала упорядочен по значению поля «Дата», а затем - по значению поля «ОказаниеУслуги.Ссылка»:

Перейдем на закладку «Отчет» и сбросим флаг «Использовать построитель отчета»:

Сбросим флаг «Использовать построитель отчета»...

Нажмем «ОК». Конструктор сформирует форму отчета и макет. Откроем модуль формы и найдем в нем процедуру «РеестрДокументовОказаниеУслуги». В этой процедуре как разформируется текст запроса, который будет использован для получения интересующих нас данных:

Запрос.Текст = “ВЫБРАТЬ

ОказаниеУслуги.Дата КАК Дата,

ОказаниеУслуги.Номер КАК Номер,

ОказаниеУслуги.Склад,

ОказаниеУслуги.Склад.Представление,

ОказаниеУслуги.Мастер,

ОказаниеУслуги.Мастер.Представление,

ОказаниеУслуги.Клиент,

ОказаниеУслуги.Клиент.Представление

Документ.ОказаниеУслуги КАК ОказаниеУслуги

УПОРЯДОЧИТЬ ПО

Текст запроса начинается, как мы говорили выше, с части описания запроса:

I ОказаниеУслуги.Дата КАК Дата,

I ОказаниеУслуги.Номер КАК Номер,

I ОказаниеУслуги.Склад,

I ОказаниеУслуги.Склад.Представление,

I ОказаниеУслуги.Мастер,

I ОказаниеУслуги.Мастер.Представление,

I ОказаниеУслуги.Клиент,

1 ОказаниеУслуги.Клиеит.Представление

I Документ.ОказаниеУслуги КАК ОказаниеУслуги

Описание запроса начинается с обязательного ключевого слова ВЫБРАТЬ. Затем следует список полей выборки, в котором описываются поля, которые должны содержаться в результате запроса. Этот список может содержать как собственно поля, так и некоторые выражения, вычисляемые на основе значений полей.

После ключевого слова ИЗ указываются источники данных - исходные таблицы запроса, содержимое которых обрабатывается в запросе. В данном случае это объектная (ссылочная) таблица «Документ.ОказаниеУслуги». После ключевого слова КАК указывается псевдоним источника данных. В нашем случае это «ОказаниеУслуги». В дальнейшем к этому источнику данных можно будет обращаться в тексте запроса, используя псевдоним.

Такое обращение мы видим в описании полей выборки:

| ОказаниеУслуги.Дата КАК Дата,

| ОказаниеУслуги.Номер КАК Номер,

| ОказаниеУслуги.Склад,

| ОказаниеУслуги.Склад.Представление,

| ОказаниеУслуги.Мастер,

| ОказаниеУслуги.Мастер.Представление,

| ОказаниеУслуги.Клиент,

| ОказаниеУслуги.Клиент.Представление

Поля выборки также могут иметь псевдонимы, по которым в дальнейшем в тексте запроса можно обращаться к этому полю. В нашем случае это псевдонимы «Дата» и «Номер».

После части описания запроса в нашем примере следует часть упорядочивания результатов:

|УПОРЯДОЧИТЬ ПО

| Дата, | Номер";

Предложение УПОРЯДОЧИТЬ ПО позволяет сортировать строки в результате запроса. После этого ключевого предложения располагается выражение упорядочивания, которое, в общем случае, представляет собой перечисление полей (выражений) и порядка вывода. В нашем случае упорядочивание будет выполняться сначала По полю выборки, обращение к которому выполняется через псевдоним - «Код», а затем по полю - «Номер». В обоих случаях порядок сортировки будет по возрастанию, который является Порядком сортировки по-умолчанию.

Теперь обратим внимание на то, как выводится результат запроса в табличный документ.

Процедура РеестрДокументовОказаниеУслуги(ТабДок) Экспорт

//{{КОНСТРУКТОР_ВЫХОДНЬК_ФОРМ(РеестрДокументовОказаниеУслугн) // Данный фрагмент построен конструктором. // При повторном использовании конструктора, // внесенные вручную изменения будут утеряны!!!

Макет = ПолучитьМакет("РеестрДокументовОказаниеУслуги"); Запрос = Новый Запрос;

Результат = Запрос.Выполнить();

ОбластъЗаголовок = Макет.ПолучитьОбласть("Заголовок"); ОбластьПодвал =

Макет.ПолучитьОбласть("ПодвалТаблицы"); ОбластьДетальныхЗаписей =

ТабДок.Вывести(ОбластьШапкаТаблицы); ТабДок.НачатьАвтогрутшировкуСтрок();

ВыборкаДетали = Результат.Выбрать();

Пока ВыборкаДетали.Следукнций() Цикл

ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетали);

ТабДок.Вывести(ОбластьДетальньпсЗаписей, ВыборкаДетали.Уровень()); КонецЦикла;

/Л}КОНСТРУКТОР_ВЫХОДНЫХ_ФОРМ КонецПроцедуры

В форме отчета расположен элемент управления ПолеТабличногоДокумента с именем «ТабДок», который заполняется данными на основе макета, сформированного конструктором.

В начале процедуры мы получаем макет отчета, из которого затем получаем существующие в нем области в соответствующие переменные:

ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок"); ОбластьПодвал =

Макет.ПолучитьОбласть("Подвал"); ОбластьШапкаТаблицы =

Макет.ПолучитьОбласть("ШапкаТаблицы"); ОбластьПодвалТаблицы =

Макет.ПолучитьОбласть("ПодвалТаблицы""); ОбластьДетальныхЗаписей =

Макет.ПолучитьОбласть("Детали");

Затем мы очищаем табличный документ и выводим в него те области, которые не содержат данных, получаемых из результата запроса:

ТабДок.Очистить(); ТабДок.Вывести(ОбластьЗаголовок);

ТабДок.Вывести(ОбластьШапкаТаблицы); ТабДок.НачатьАвтогруппировкуСтрок();

В последней строке конструктор добавил начало автогруппировки строк. В данном примере у нас нет строк, которые нужно было бы группировать, но по умолчанию конструктор всегда предлагает выполнить группировку строк в табличном документе. На скорость вывода отчета такой вызов влиять не будет, поэтому оставим текст конструктора без изменений.

После этого мы получаем выборку из результата запроса, которую перебираем в цикле:

В каждой итерации цикла мы заполняем параметры полученной ранее области макета значениями, полученными из очередной записи выборки результата запроса и выводим эту область в табличный документ.

В заключение процедуры, мы выводим в табличный документ завершающие области макета:

ТабДок.ЗакончитьАвтогруппировкуСтрок();

ТабДок.Вывести(ОбластьПодвалТаблицы);

ТабДок.Вывести(ОбластьПодвал);

Теперь запустим 1С:Предприятие в режиме отладки и посмотрим на результат работы нашего отчета:

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

Отчет «Рейтинг услуг» будет содержать информацию о том, выполнение каких услуг принесло OOO «На все руки мастер» наибольшую прибыль в указанном периоде. На примере отчета «Рейтинг услуг» мы проиллюстрируем, как отбирать данные в некотором периоде, как задавать параметры запроса и как использовать в запросе данные из нескольких таблиц и включать в результат запроса все данные одного из источников.

Создадим новый объект конфигурации Отчет «РейтингУслуг». Перейдем на закладку «Макеты» и вызовем конструктор выходной формы.

Выберем объектную (ссылочную) таблицу справочника «Номенклатура» и виртуальную таблицу регистра накопления «Продажи.Обороты». Для того чтобы исключить неоднозначность имен в запросе, переименуем таблицу «Номенклатура» в «СпрНоменклатура» (контекстное меню правой кнопки мыши).

Затем установим курсор на таблицу «ПродажиОбороты» и вызовем диалог ввода параметров виртуальной таблицы:

Откроем диалог ввода параметров виртуальной таблицы

Укажем, что начало и конец периода будут переданы в соответствующих параметрах «ДатаНачала» и «ДатаОкончания» (символ «&» перед именем указывает, что это параметр запроса):

Затем выберем из таблиц поля «СпрНоменклатура.Ссылка» и «ПродажиОбороты.ВыручкаОборот»:

СпрНоменклатура.Представление

ПродажиОборотыВыручкаОборот

Перейдем на закладку «Связи» и увидим, что конструктор уже создал связь между двумя выбранными таблицами - значение изменения регистра «Номенклатура» должно быть равно ссылке на элемент справочника «Номенклатура».

Единственное, что нам останется сделать, это сбросить флаг «Все» у таблицы регистра и установить его у таблицы справочника.

Будем выбирать все элементы из справочника «Номенклатура»

Установка флага «Все» у таблицы справочника будет означать, что из справочника будут выбраны все элементы и этим элементам будет поставлено в соответствие значение оборота выручки из регистра. Таким образом, в результате запроса будут присутствовать все услуги, и для некоторых из них будут указаны обороты выручки. Для тех услуг, которые не оказывались в выбранном периоде, не будет указано ничего.

Перейдем на закладку «Условия» и зададим условия выбора элементов из справочника «Номенклатура». При задании условий выбора мы снова будем использовать параметры запроса. Первым условием должно быть то, что выбранный элемент не является группой (для этого следует переключиться в режим «Произвольное условие»).

Вторым условием должно быть то, что выбранный элемент является услугой (это - «Простое условие»):

В дальнейшем, перед выполнением запроса, мы передадим в параметр «ВидНоменклатуры» - соответствующее значение перечисления.

Перейдем на закладку «Объединения/Псевдонимы» и укажем, что представление элемента справочника будет иметь псевдоним «Услуга», а поле регистра будет иметь псевдоним «Выручка»:

Перейдем на закладку «Порядок» и укажем, что результат запроса должен быть отсортирован по убыванию значения поля «Выручка».

На закладке «Итоги» определим, что нужно выводить общие итоги, и они должны представлять собой сумму значений поля «Выручка»:

На закладке «Отчет» сбросим флаг «Использовать построитель отчета».

Теперь перейдем на закладку «Выходная форма». Укажем, что параметры «ДатаОкончания» и «ДатаНачала» будут редактироваться в форме в полях ввода с типом «Дата». Для параметра «ВидНоменклатуры» мы наоборот снимем признак редактирования в форме:

Нажмем «ОК». Платформа сформирует макет и форму отчета Откроем модуль формы и найдем в нем процедуру «РейтингУслуг».

В этой процедуре, в той части, где выполняется установка параметров запроса, определим значение параметра «ВидНоменклатуры» (исправления выделены жирным шрифтом):

| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Продажи,Обороты(&ДатаНачала,

| &ДатаОкончания,)

| КАК ПродажиОбороты

|УПОРЯДОЧИТЬ ПО | ВыручкаУБЫВ

|ИТОГИ СУММА(Выручка) ПО | ОБЩИЕ";

ЗапросУстановитьПараметрС"ВидНоменклатуры",

Перечисления.ВидыНоменклатуры.Услуга);

Запрос.УстановитьПараметр("ДатаНачала",ДатаНачала); Запрос.УстановитьПараметрС"ДатаОкончания", ДатаОкончания);

Теперь рассмотрим текст запроса, сформированный конструктором:

| СпрНоменклатура.Представление КАК Представление,

|ПродажиОбороты.ВыручкаОборот КАК Выручка

| Справочник.Номенклатура КАК СпрНоменклатура

ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Продажи.Обороты(&ДатаНачала,

| КАК ПродажиОбороты

| ПО ПродажиОбороты.Номенклатура = СпрНоменклатура.Ссылка

| (СпрНоменклатура.ЭтоГруппа = Ложь) И

| СпрНоменклатура.ВидНоменклатуры = &ВидНоменклатуры

|УПОРЯДОЧИТЬ ПО

| ВыручкаУБЫВ

|ИТОГИ СУММА(Выручка) ПО

Сначала, как обычно, идет часть описания запроса и в ней есть новые для нас конструкции.

При описании источников запроса (после ключевого слова ИЗ), использована возможность определения нескольких источников запроса:

| Справочник.Номенклатура КАК СпрНоменклатура

|&ДатаОкончания,)

| КАК ПродажиОбороты

| ПО ПродажиОбороты.Номенклатура = СпрНоменклатура.Ссылка

В данном случае выбираются записи из двух источников: «СпрНоменклатура» и «ПродажиОбороты», причем ключевым предложением ЛЕВОЕ СОЕДИНЕНИЕ ... ПО описан способ, которым будут скомбинированы между собой записи этих двух источников.

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

В описании первого источника и условия соединения нет для нас ничего нового, а вот при описании второго источника, используется возможность задания параметров виртуальной таблицы запроса:

| РегистрНакопления.Продажи.Обороты(&ДатаНачала, &ДатаОкончания,)

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

Если заранее известно, что пользователя не будут интересовать результаты работы отчета в периодах, указанных с точностью до секунд, то следует учесть следующую особенность: по умолчанию время в дате установлено в 00:00:00. Поэтому, если не предпринять специальных мер, получится, что когда пользователь задаст период отчета с 01.03.2004 по 31.03.2004, итоги регистра будут рассчитаны с начала дня 01.03.2004 00:00:00 по начало дня 31.03.2004 00:00:00. Таким образом, данные за 31 число, отличные от начала дня, в расчет не войдут, что сильно удивит пользователя.

Для того чтобы исключить эту ситуацию, следует сделать две вещи.

Во-первых, в форме отчета ограничить пользователя в возможностях ввода даты начала и даты окончания, установив для соответствующих полей ввода состав даты как «Дата»:

Определим состав даты...

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

ПроцедураДействияФормыРейтингУслугСформировать(Кнопка) //{{КОНСТРУКТОР_ВЫХОДНЫХ_ФОРМ_ПРОЦЕДУРА_ВЫЗОВА(РейтингУслуг) //Данный фрагмент построен конструктором. // При повторном использовании конструктора, // внесенные вручную изменения будут утеряны!!!

ТабДок = ЭлементыФормы.ТабличноеПоле;

//}}КОНСТРУКТОР_ВЫХОДНЫХ_ФОРМ_ПРОЦЕДУРА_ВЫЗОВА

КонецПроцедуры

Продолжим рассматривать текст запроса. В части описания запроса есть еще одна новая для нас конструкция - задание условий отбора данных из исходных таблиц:

| СпрНоменклатура.Представление КАК Представление,

| ПродажиОбороты.ВыручкаОборот КАК Выручка

| Справочник.Номенклатура КАК СпрНоменклатура

| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Продажи.Обороты(&ДатаНачала,

| &ДатаОкончания,

| КАК ПродажиОбороты

| ПО ПродажиОбороты.Номенклатура = СпрНоменклатура.Ссьшка

| СпрНоменклатура.ЭтоГруппа = Ложь И

| СпрНоменклатура.ВидНоменклатуры = &ВидНоменклатуры

Условию отбора всегда предшествует ключевое слово ГДЕ. После него описывается само условие. Обратите внимание, что поля исходных таблиц, на которые накладывается условие, могут и не входить в список выборки (как в нашем случае). Кроме того, в нашем условии использован параметр запроса «ВидНоменклатуры».

ИТОГИ СУММА(Выручка) ПО

Она всегда начинается с ключевого слова ИТОГИ, за которым следует описание того, какие итоги будут присутствовать в результате запроса. Сразу после слова ИТОГИ описываются агрегатные функции, которые необходимо рассчитывать в итогах. В нашем случае будет рассчитываться сумма по полю «Выручка». Затем следует ключевое слово ПО, после которого описываются группировки, в которых должны быть рассчитаны итоги. В нашем случае они отсутствуют, и используется только ключевое слово ОБЩИЕ, которое указывает на то, что итоги будут рассчитаны по всей таблице в целом.

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

Зададим период отчета с 01.03.2004 по 30.04.2004. Результат будет выглядеть следующим образом:

Теперь изменим дату окончания на 31.03.2004 и убедимся, что данные за 31 марта попадают в отчет:

В системе 1С:Предприятие?

1. Тексты конфигурации и базы данных хранятся в формате UNICODE

3. Нет правильного ответа

6.75 С какой целью тексты конфигурации и базы данных хранятся в формате UNICODE ?

1. Формат UNICODE обеспечивает неизменность (независимость от программной платформы операционной системы) представления информации

2. Формате UNICODE позволяет поддерживать различные языки в системе 1С:Предприятие

3. Нет правильного ответа

6.76 Механизмы интернационализации, заложены . ..

1. технологическую платформу 1С:Предприятия

2. прикладные решения

3. верны ответы 1 и 2

4. нет правильного ответа

6.77 Что такое код локализации?

1. Строка, состоящая из кода языка и кода страны и идентифицирующая некоторый регион мира

2. Код программного продукта (указывается на регистрационной анкете, документации из комплекта поставки)

3. Параметр форматирования строки для преобразования

4. Her правильного ответа

6.78 Верно ли что в 1С:Предприятие 8 любая текстовая информация может включать одновременно символы различных языков?

1. Да, так как все тексты конфигурации и базы данных хранятся в формате UNICODE

2. В зависимости от настроек, заданных при создании информационной базы

3. Только если это предусмотрено конфигурацией

6.79 Для чего предназначен объект конфигурации "Язык"?

1. Для создания интерфейса программы на разных языках

2. Для создания текстовых документов на разных языках

3. Такого объекта в 1С: Пред приятие 8 не существует

6.80 Каким образом можно сменить язык просмотра (редактирования) конфигурации?

1. С помощью кнопки выбора языка, расположенной в строке состояния справа от кнопки "NUM"

2. Через пункт меню "Конфигурация - Язык редактирования конфигурации"

3. В 1 С:Предприятие такой возможности не существует

4. Верпы ответы 1 и 2

6.81 Какое написание имеют операторы встроенного языка?

1. Только русское написание

3.

6.82 Возможно ли использование в одном исходном тексте операторов встроенного языка в русском и английском написании?

1. Только при специальных настройках конфигуратора

2. Да, для этого не требуется изменения каких-либо настроек конфигуратора

3. Нет, так как вариант встроенного языка задается в свойствах конфигурации

6.83 С какой целью используется встроенный язык?

1. Для определения интерфейса программы по умолчанию

2. Для описания (на стадии разработки конфигурации) алгоритмов функционирования прикладной задачи

3. Нет правильного ответа

6.84 Какое написание имеют функции встроенного языка?

1. Только русское написание

2. Только английское написание

3. Русское и английское написание

4. В зависимости от настроек конфигуратора

6.85 Что обозначает параметр Л (L ) в форматной строке функции форматирования ЧислоПрописью()?

1. Признак "дробную часть выводить числом/прописью"

2. Количество знаков после запятой

3. Код локализации

7. Табличная модель прикладного решения

7.1 При настройке ограничения доступа к данным допускается установка нескольких (по числу полей) ограничений:

1. Для права "Чтение"

2. Для права "Изменение"

3. Для права "Добавление"

4. Для права "Удаление"

5. Для всех вышеперечисленных прав

6. Для всех возможных прав

7.2 При настройке ограничения доступа к данным в качестве значений, по которым производится ограничения доступа к данным, могут использоваться:

1. Только значения параметров сеанса

2. Только данные из таблиц (запросов)

3. Значения параметров сеанса и данные из таблиц (запросов)

4. Только значения имеющие типы: Число, Строка, Булево, Дата

7.3 Каким из вышеперечисленных способов можно воспользоваться, чтобы в разделе "Поля" конструктора запросов появились код и наименование справочника?

1. Сначала заполнить раздел "Таблицы", а потом, выбирая нужные объекты из этого раздела, перенести их в раздел "Поля", используя двойной клик девой клавиши мыши

2. Не заполняя раздел "Таблицы", сразу выбирать нужные объекты из таблиц - источников данных раздела "База данных", перенося их в раздел "Поля", используя технологию Drag & Drop. Раздел "Таблицы" заполняется автоматически

3. Сначала заполнить раздел "Таблицы", а потом, выбирая нужные объекты из этого раздела, перенести их в раздел "Поля", используя кнопки па форме ">" "»"

4. Верны ответы I и 3

5. Верны ответы I, 2 и 3

7.4 Для повышения скорости выполнения запроса необходимо:

1. Задавать параметры большинства реальных таблиц

2. Задавать параметры большинства виртуальных таблиц

3. Вместо задания параметров у реальной или виртуальной таблицы использовать отбор, заданный конструкцией языка запросов "ГДЕ"

4. Верны ответы I и 2

7.5 Можно ли при выборе таблицы-источника в раздел "Таблицы" конструктора запросов задавать для нее новое имя (псевдоним)?

1. Да, можно

2. Да, можно, но только если в качестве источника данных выступает вложенный запрос

3. Да, можно, но только если в качестве источника данных выступает виртуальная таблица

4. Верны ответы 1 и 2

5. Верны ответы 1 и 3

7.6 Вложенный запрос может использоваться:

1. В качестве таблицы-источника данных

2. В качестве операнда операций сравнения "В" или "НЕ В" при задании параметров виртуальной таблицы

3. В качестве операнда операций сравнения "В" или "НЕ В" при задании конструкции языка запросов "ГДЕ"

4. Верпы ответы 1, 2 и 3

7.7 Можно ли, используя конструктор запроса, получить итоги по иерархии?

1. Можно, если для группировочного поля указать тип итогов "Элементы и иерархия"

2. Можно, если для группировочного поля указать тип итогов "Только иерархия"

3. Верпы ответы 1 и 2

7.8 На закладке "Условия" конструктора запросов отдельная строка списка условий может быть сформирована:

1. С помощью двойного клика левой клавишей мыши на нужном поле в списке доступных полей

2. Путем переноса нужного поля в список, используя технологию Drag & Drop

3. Нажать кнопку "Добавить". Если условие произвольное, то текст условия можно ввести "вручную"

4. Вызвав контекстное меню, выбрать в нем пункт "Добавить". Возможно использование произвольного выражения

5. Верны все вышеперечисленные ответы

7.9 На закладке "Связи" конструктора запросов можно определить:

1. Соединение таблиц-источников данных и связи между ними

2. Объединение таблиц-источников данных и связи между ними

3. Связи между полями таблицы, получаемой в результате выполнения запроса

4. Связи между полями таблицы-источника данных и таблицы, получаемой в результате выполнения запроса

7.10 При соединении таблиц-источников данных в конструкторе запросов можно:

1. Назначить соединение без указания условия связи

2. Назначить соединение с указанием условия связи, причем это условие может быть только одно

3. Назначить соединение с указанием условия связи, причем это условие может быть только простое

4. Назначить необходимое количество соединений с указанием необходимого количества условий связи, причем эти условия могут быть как простые, так и произвольные

7.11 Создание соединения таблиц-источников данных в конструкторе запросов допускает:

1. Соединение только двух таблиц-источников данных

2. Соединение необходимого количества таблиц-источников данных

3. Соединение только двух таблиц-источников данных, причем флажок "Все" обязательно должен быть проставлен хотя бы у одной из таблиц

Основные приемы работы с некоторыми объектами встроенного языка «1С:Предприятие»

Встроенный язык системы «1С:Предприятие»

Встроенный язык «1С:Предприятие» позволяет алгоритмически определить поведение объектов системы. Это позволяет пользователю решать многообразные задачи доведения программного обеспечения под конкретные нужды предприятия.

Цель работы: Изучить основные принципы работы с объектами встроенного языка «запрос», «таблица», «справочник».

Для работы с запросами нужно создать переменную функцией «СоздатьОбъект». Атрибуты или методы объекта пишутся через точку после имени переменных. Список доступных методов, а также операторы языка запросов можно найти в справочной системе «1С:Предприятие». См. рис. 1.

Рис.1 Окно справочной системы

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

Процедура РеестрДокументов()

Перем Запрос, ТекстЗапроса, Таб, ном;

//Создание объекта типа Запрос

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

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

"//{{ЗАПРОС(Сформировать)

|Период с НачДата по КонДата;

|Номер = Документ.ПриходныйОрдер.НомерДок;

|Дат1 = Документ.ПриходныйОрдер.ДатаДок;

|Всего = Документ.ПриходныйОрдер.Сумма;

|ОтКого = Документ.ПриходныйОрдер.ПринятоОт;

|Функция Сум = Сумма(Всего);

|Группировка Номер;

|"//}}ЗАПРОС

// Если ошибка в запросе, то выход из процедуры

Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда

Возврат;

КонецЕсли;

// Подготовка к заполнению выходных форм данными запроса

Таб = СоздатьОбъект("Таблица");

Таб.ИсходнаяТаблица("Таблица");

// Заполнение полей "Заголовок"

Таб.ВывестиСекцию("Заголовок");

Состояние("Заполнение выходной таблицы...");

Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);

// Вывод заполненной формы

Ном=0;

Пока Запрос.Группировка(1) = 1 Цикл

//Заполнение полей РасходнаяНакладная

Ном=Ном+1;

Таб.ВывестиСекцию("Документ");

КонецЦикла;

Таб.ВывестиСекцию("Итого");

Таб.ТолькоПросмотр(1);

Таб.Показать("Таблица", "");

КонецПроцедуры

Для визуального просмотра данных запроса формируется печатная форма с помощью объекта «Таблица». Наиболее типичным способом заполнения табличного документа является включение в него секций. Для этого используется исходный табличный документ, который может располагаться в той же форме. Кроме того, исходная таблица может располагаться и в общих таблицах конфигурации и во внешнем файле. Назначение исходного табличного документа выполняется методом объекта»Таблица» - ИсходнаяТаблица. Метод ВывестиСекцию позволяет включить выделенный фрагмент исходной таблицы в формируемый табличный документ.

Рис.2. Исходная таблица

Подробнее с табличным редактором можно познакомится в методическом пособие .

«Справочник» -это агрегатный тип данных, средство для работы со списками однородных элементов . Справочники могут быть многоуровневыми. Элементы справочника могут быть периодическми, т.е. сохранять значение на определенную дату. Для справочников можно указывать подчиненность другим справочникам, т.е. образовывать связи типа «один-ко многим».

Обращение к атрибутам, вызов методов справочника зависит от контекста выполнения программного модуля. Здесь могут быть следующие варианты:

1)имеем непосредственный доступ к текущему элементу справочника, если например, находимся в форме редактирования элемента справочника. Здесь можем непосредственно обращаться к атрибутам справочника.

F_name = «Петров» ; где F_name – реквизит справочника, заданный в конфигураторе.

2) значение элемента можно получить из других источников, например как реквизит какого-нибудь документа. Чтобы получить доступ к атрибуту, нужно вызвать метод такой переменной со значением типа «Справочник».

КолДетей=Док.Сотрудники.Дети;

3) вызов метода конкретного элемента происходит при помощи переменной со ссылкой на объект типа «Справочник». Объект создается функцией «СоздатьОбъект ».

Методы справочников также можно найти в справочной системе «1С:Предприятие».

Задание к лабораторной работе по вариантам

№ варианта Работа с объектом Задание
Запрос, таблица Вывести информацию об операциях с клиентом (выбор клиента в диалоговом режиме) по приходным и расходным накладным.
Справочник, таблица Вывести информацию о сотрудниках (ФИО, Адрес, кол-во детей)
Справочник, таблица Вывести информацию о сотрудниках (ФИО, Адрес,Страна, Номер свидетельства в ПФР)
Справочник, таблица Вывести информацию из справочника номенклатура (Товар, цена, страна происхождения)
Справочник, таблица Вывести информацию из справочника номенклатура (Товар, единица измерения, ставка НДС)
Запрос, таблица Вывести информацию по всем проведенным счетам-фактурам за период.
Запрос, таблица Вывести информацию по товару (указать приходные накладные на поступление и расходные накладные на расход)

Литература

1. Документация к программе «1С:Предприятие»

2. Стукалина Е.Ф. –Методическое пособие. «Основные понятия и термины программной среды «1С:Предприятие». Табличный редактор»

| следующая лекция ==>