Встроенный язык системы «1С: Предприятие. Табличная модель прикладного решения

Windows

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

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

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

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

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

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

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

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

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

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

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

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

Одной из существенных особенностей языка запросов 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С 8.

    Подготовка к занятию :

      По указанной литературе изучить тему рассмотренную в данной технологической карте

    Литература :

4.1 Игнатов А.С. учебно – методическое пособие «1С программирование», 2014

4.2 Игнатов. А.С. конспект лекций по дисциплине «1С программирование» 2014.

    Перечень оборудования :

5.1 Персональный IBM PC.

5.2 1С версии 8.

    Задание :

6.1 Изучить порядок доступа к данным.

6.2 Изучить работу с запросами.

6.3 Изучить настройки в конфигураторе и в режиме 1С:Предприятие.

    Порядок выполнения работы:

7.1 Создать отчет Реестр документов.

7.3 Изменить параметры отчета.

8.1 Титульный лист

      Наименование и цель работы

      Выполненное задание

      Ответы на контрольные вопросы

      Вывод о проделанной работе

    Контрольные вопросы :

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

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

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

9.4 Что такое псевдонимы в языке запросов.

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

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

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

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

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

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

Приложение:

ТЕОРЕТИЧЕСКАЯ ЧАСТЬ

Способы доступа к данным

Система 1С:Предприятие 8 поддерживает два способа доступа к данным, хранящимся в базе данных:

    объектный (для чтения и записи),

    табличный (для чтения).

Объектный способ доступа к данным реализован посредством использования объектов встроенного языка. Важной особенностью объектного способа доступа к данным является то, что, обращаясь к какому-либо объекту встроенного языка, мы обращаемся к некоторой совокупности данных, находя­щихся в базе данных, как к единому целому. Объектная техника обеспечивает сохранение целостности объектов, кеширование объектов, вызов соответствующих обработчиков событий и т. д. Табличный доступ к данным в 1С: Предприятии 8 реализован с помощью запросов к базе данных, которые составляются на языке запросов. В этой технике разработчик получает возможность оперировать отдельными полями таблиц базы данных, в которых хранятся те или иные данные. Табличная техника предназначена для получения информации из базы данных по некоторым условиям (отбор, группировка, сорти­ровка, объединение нескольких выборок, расчет итогов и т.д.). Табличная техника оптимизирована для обработки больших объемов информации, расположенной в базе данных, и получения данных, отвечающих заданным критериям.

ПРАКТИЧЕСКАЯ ЧАСТЬ

Выбор данных из одной таблицы

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

    В режиме Конфигуратор

Добавим в конфигураторе объект конфигурации Отчет.

На закладке Основные : имя отчета – РеестрДокументовОказаниеУслуги; расширенное представление - Список оказан­ных услуг для представления отчета в интерфейсе программы. Создадим схему компоновки данных для отчета, нажмем кнопку Открыть схему компоновки данных. В открывшемся диалоговом окне конструктора макета нажмем Готово. В конструкторе схемы компоновки данных создадим Набор данных – запрос.

Рис. 13.1. Проведение приходной накладной по двум регистрам

После чего нажмем кнопку Конструктор запроса, в качестве источника данных для запроса выберем объектную таблицу документа ОказаниеУслуги. Из этой таблицы выберем следующие поля:

На закладке Объединения/Псевдонимы укажем, что поле Ссылка будет иметь псевдоним Документ . На закладке Порядок укажем, что результат запроса должен быть упорядочен по значению поля Документ .

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

Иерархическая структура отчета может содержать в различных соче­таниях три основных элемента:

    Группировка - для вывода информации в виде обычного линей­ного отчета.

    Таблица - для вывода информации в виде таблицы.

    Диаграмма - для вывода информации в виде диаграммы.

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

    Документ,

В результате окно настроек отчета должно иметь вид. На этом создание отчета закончено.

Рис. 13.2. Создание отчета

    В окне редак­тирования объекта конфигурации Отчет РеестрДокументовОказаниеУслуги перейдем на закладку Подсистемы.

Отметим в списке подсистему Оказание услуг.

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

Запустим 1С: Предприятие в режиме отладки.

В открывшемся окне 1С: Предприятия можно наблюдать, что в панели действий раздела Оказание услуг в группе команд для выполнения отчетов появилась команда для формирования отчета Реестр документов оказание услуги. Причем если подвести к ней мышь, то появится всплывающая подсказка Список оказанных услуг, которая определяется свойством Расширенное представление.

    Выполним команду Реестр доку­ментов оказание услуги.

Перед нами откроется форма отчета, автоматически сформированная системой.

    Нажмем кнопку Сформировать.

Рис. 13.3. Форма отчета, автоматически сформированная системой

Перед вам появится отчет содержащий реестр документов Оказание услуги.

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

ТЕОРЕТИЧЕСКАЯ ЧАСТЬ

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

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

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

Рис. 97. Таблицы запроса

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

Виртуальные таблицы формируются в основном из данных нескольких таблиц базы данных. Например, виртуальной является таблица РегистрНакопления.ОстаткиМатериалов.ОстаткиИОбороты, формируемая из нескольких таблиц регистра накопления ОстаткиМатериалов.

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

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

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

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

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

· описание запроса;

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

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

· АВТОУПОРЯДОЧИВАНИЕ;

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

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

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

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

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

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

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

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

Система компоновки данных предназначена для создания произвольных отчетов в системе 1С:Предприятие 8.1 и состоит из нескольких основных частей.

Исходные данные для компоновки отчета содержит в себе схема компоновки данных – это наборы данных и методы работы с ними (рис. 98).

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

Например, схема компоновки может содержать следующий набор данных (рис. 99).

Рис. 98. Общая схема работы с системой компоновки данных

Рис. 99. Пример схемы компоновки (набор данных и запрос, его использующий)

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

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

Например, может быть задана такая структура отчета (рис. 100):

Рис. 100. Структура возможного отчета

Сформированный отчет может иметь следующий вид (рис. 101).

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

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

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

Рис. 101. Пример отчета

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

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

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

Последовательность работы системы компоновки можно представить в виде следующей схемы (рис. 102):

Рис. 102. Схема работы системы компоновки

3.12.1. Создание отчета "Реестр документов Оказание услуги"

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

Отчет . Присвойте ему имя РеестрДокументовОказаниеУслуги . На закладке Основные нажмите кнопку "Готово ". В конструкторе схемы компоновки данных добавьте Набор данных – запрос Конструктор запроса ".

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

Дата; Номер; Склад; Мастер; Клиент.

Рис. 103. Выбранные поля

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

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

Нажмите кнопку "ОK " и посмотрите, какой запрос сформировал конструктор запроса.

Перейдите на закладку Настройки и добавьте новую группировку в структуру отчета (рис. 105).

Рис. 105. Командная панель закладки Настройки

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

Дата; Номер; Склад; Мастер; Клиент (рис. 106).

Рис. 106. Настройка структуры отчета

Реестр документов оказание услуги . Нажмите кнопку "Сформировать " и посмотрите на результат работы отчета (рис. 107).

Рис. 107. Отчет Реестр документов оказание услуги

Отчет . Назовите его РейтингУслуг . На закладке Основные нажмите кнопку "Открыть схему компоновки данных ". В открывшемся диалоговом окне конструктора макета нажмите кнопку "Готово ".

В конструкторе схемы компоновки данных создайте Набор данных – запрос (НаборДанных1) и нажмите кнопку "Конструктор запроса ".

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

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

Рис. 108. Выбранные поля

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

Единственное, что необходимо сделать, это сбросить флаг Все у таблицы регистра и установить его у таблицы справочника СпрНоменклатура (рис. 109).

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

Рис. 109. Установка связей таблиц

Перейдите на закладку Условия и задайте условия выбора элементов из справочника Номенклатура (рис. 110). При задании условий выбора необходимо будет использовать параметры запроса. Первым условием должно быть то, что выбранный элемент не является группой (для этого следует переключиться в режим Произвольное условие – установить флаг Произвольное ). Затем в поле условие введите следующий текст:

СпрНоменклатура.ЭтоГруппа = ЛОЖЬ

Вторым условием должно быть то, что выбранный элемент является услугой (это – Простое условие ) (рис. 110).

Рис. 110. Условия выбора элементов

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

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

Рис. 111. Объединения/Псевдонимы

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

Перейдите на закладку Ресурсы и нажмите кнопку ">> ", чтобы конструктор выбрал все доступные ресурсы, по которым можно вычислять итоги. В вашем случае – это единственный ресурс Выручка (рис. 112).

Рис. 112. Ресурсы схемы компоновки данных

Перейдите на закладку Параметры (рис. 113).

Рис. 113. Параметры компоновки данных

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

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

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

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

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

Нажмите кнопку "ОK ".

Вторая особенность заключается в том, что по умолчанию время в дате установлено 00:00:00. Поэтому, если пользователь задаст период отчета с 01.10.2009 по 31.10.2009, итоги регистра будут рассчитаны с начала дня 01.10.2009 00:00:00 по начало дня 31.10.2009 00:00:00. Таким образом, данные за 31 число, отличные от начала дня, в расчет не войдут, что сильно удивит пользователя. Для того чтобы исключить эту ситуацию, добавьте еще один параметр, в который пользователь будет вводить дату окончания. Значение параметра КонецПериода будет рассчитываться автоматически таким образом, чтобы оно указывало на конец дня даты, введенной пользователем. Поэтому для параметра КонецПериода установите флаг Ограничение доступности .

Рис. 114. Редактирование состава даты

С помощью кнопки командной панели добавьте новый параметр с именем ДатаОкончания (рис. 115).

Рис. 115. Добавление параметра ДатаОкончания

Для этого параметра платформа автоматически сформирует заголовок – Дата окончания . Оставьте его без изменений. Задайте тип значения параметра – Дата . При этом, как и для параметра НачалоПериода , укажите состав даты – Дата .

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

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

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

В ячейке Выражение задайте для параметра КонецПериода следующее выражение:

В результате перечисленных действий параметры компоновки будут иметь следующий вид (рис. 116):

Рис. 116. Параметры системы компоновки

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

Рис. 117. Установка значения параметра ВидНоменклатуры

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

Затем перейдите на закладку Другие настройки и задайте заголовок отчета – РейтингУслуг (рис. 119).

Рис. 119. Установка заголовка отчета

Запустите 1С:Предприятие в режиме отладки.

Выберите отчет Рейтинг услуг , но перед тем, как нажать кнопку "Сформировать ", откройте Настройки и на закладке Параметры данных задайте период отчета с 01.03.2004 по 30.04.2004 (рис. 120). Если даты создания ваших документов отличаются от приведенных в примере, то период отчета следует задавать другим.

Рис. 120. Настройки отчета

Нажмите кнопку "OK " и сформируйте отчет. Результат будет выглядеть следующим образом (рис. 121):

Рис. 121. Результат выполнения отчета

Теперь измените дату окончания на 31.03.2004. Данные за 31 марта попадают в отчет (рис. 122).

Рис. 122. Результат выполнения отчета

3.12.3. Создание отчета "Выручка мастеров"

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

Создайте новый объект конфигурации Отчет . Назовите его ВыручкаМастеров и запустите конструктор основной схемы компоновки данных.

Добавьте Набор данных – запрос (НаборДанных1) и нажмите кнопку "Конструктор запроса ". Выберите виртуальную таблицу регистра накопления Продажи.Обороты .

Задайте один из параметров этой виртуальной таблицы – Периодичность . Для этого перейдите в поле Таблицы и нажмите кнопку "Параметры виртуальной таблицы " (рис. 123).

Рис. 123. Изменение параметров виртуальной таблицы

В открывшемся окне параметров задайте значение параметра Периодичность – День (рис. 124). Нажмем кнопку "OK ".

Рис. 124. Параметры виртуальной таблицы

После этого выберите из таблицы следующие поля:

· ПродажиОбороты.Мастер;

· ПродажиОбороты.Период;

· ПродажиОбороты.Клиент;

· ПродажиОбороты.ВыручкаОборот (рис. 125).

Рис. 125. Выбранные поля

Теперь перейдите на закладку Объединения/Псевдонимы и задайте псевдоним Выручка для поля ПродажиОбороты.ВыручкаОборот (рис. 126).

Рис. 126. Объединения/Псевдонимы

На закладке Группировка определите, что группировка будет проводиться по полям Мастер , Период и Клиент , а значения поля ВыручкаОборот будут суммироваться (рис. 127).

Рис. 127. Поля группировок

На закладке Порядок укажите, что результат запроса будет отсортирован по возрастанию значения поля Период . Нажмите кнопку "ОK ". Рассмотрите текст запроса, сформированный конструктором.

Теперь перейдите к редактированию схемы компоновки данных. На закладке Ресурсы нажмите кнопку ">> " и убедитесь, что конструктор выбрал единственный имеющийся ресурс – Выручка .

На закладке Параметры выполните те же действия, что и при создании предыдущего отчета.

Для параметра НачалоПериода задайте заголовок Дата начала . В поле Доступные типы задайте состав даты – Дата .

Для параметра КонецПериода задайте выражение:

КонецПериода(&ДатаОкончания, "День")

В поле Ограничение доступности установите флаг ограничения доступности.

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

В результате перечисленных действий параметры компоновки данных будут иметь следующий вид (рис. 128):

Рис. 128. Параметры компоновки данных

Теперь необходимо создать структуру отчета. На закладке Настройки последовательно создайте две вложенные группировки: верхнего уровня – по полю Мастер , вложенная в нее – по полю Период . Затем добавьте еще одну группировку, вложенную в группировку по полю Период , – Детальные записи (без указания группировочного поля) (рис. 129).

Рис. 129. Структура отчета

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

В заключение, с уровня глобального отчета перейдите на закладку Другие настройки и измените следующие параметры. Для параметра установите значение Отдельно и только в итогах ; для параметра задайте значение Начало и для параметра Заголовок задайте значение Выручка мастеров (рис. 130).

Рис. 130. Установка вывода общих итогов в начало

Запустите 1С:Предприятие в режиме отладки и посмотрите на результат работы отчета Выручка мастеров за период с 01.03.2004 по 30.04.2004 (рис. 131).

Рис. 131. Результат выполнения отчета

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

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

Вам потребуется изменить настройку группировки Период . Для того чтобы перейти к настройкам именно этой группировки, в поле структуры установите курсор на эту группировку, а затем нажмите кнопку "Период " в командной панели (рис. 132).

Рис. 132. Настройки группировки Период

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

Перейдите на закладку Поля группировки . Для поля Период установите Тип дополнения – День (рис. 133).

Рис. 133. Установка типа дополнения периода

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

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

Для того чтобы обеспечить именно такую работу отчета, войдите в режим редактирования первого поля (например, дважды кликнув на нем) и нажмите на кнопку очистки "Х ". После этого, нажав на кнопку "Т ", вы сможете выбрать тип данных, отображаемых в этом поле. Выберите Поле компоновки данных (рис. 134).

Рис. 134. Выбор типа данных

Нажмите кнопку "OK ". Теперь нажмите в поле ввода кнопку выбора "" и в открывшемся окне выбора поля отметьте параметр НачалоПериода (рис. 135). Нажмите кнопку "OK ".

Рис. 135. Выбор поля

Для второго поля ввода аналогичным образом укажите, что дата окончания периода будет получена из параметра ДатаОкончания (рис. 136).

Рис. 136. Настройки группировки Период

Запустите 1С:Предприятие в режиме отладки и выполните отчет Выручка мастеров за период с 20.03.2004 по 20.04.2004 (рис. 137).

Рис. 137. Результат выполнения отчета

3.12.4. Создание отчета "Перечень услуг"

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

Создайте новый объект конфигурации Отчет . Назовите его ПереченьУслуг и запустите конструктор схемы компоновки данных. Создайте новый Набор данных – запрос (НаборДанных1) и вызовите конструктор запроса.

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

Вызовите диалог ввода параметров виртуальной таблицы ЦеныСрезПоследних и укажите, что период будет передан в параметре ДатаОтчета (рис. 138).

Рис. 138. Параметры виртуальной таблицы

Затем выберите из таблиц следующие поля:

· СпрНоменклатура.Родитель;

· ЦеныСрезПоследних.Цена (рис. 139).

Рис. 139. Выбранные поля

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

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

Рис. 140. Условия выбора элементов

На закладке Объединения/Псевдонимы укажите, что поле Родитель будет иметь псевдоним ГруппаУслуг , а поле Ссылка – Услуга (рис. 141).

Рис. 141. Объединения/Псевдонимы

Перейдите на закладку Группировка и укажите, что группировка будет производиться по полю СпрНоменклатура.Родитель . Значения суммируемых полей задавать не надо (рис. 142).

Рис.142. Поля группировки

Нажмите кнопку "OK ". Посмотрите текст запроса.

Перейдите к редактированию схемы компоновки данных. На закладке Ресурсы нажатием кнопки ">> " выберите единственный доступный ресурс Цена .

На закладке Параметры задайте значение параметра ВидНоменклатуры как Перечисление.ВидыНоменклатуры.Услуга . Кроме этого снимите ограничение доступности для параметра ДатаОтчета и задайте ему заголовок – Дата отчета . В поле Доступные типы задайте состав даты – Дата . Для параметра Период , наоборот, установите ограничение доступности (рис. 143).

Рис. 143. Параметры схемы компоновки

Перейдите к формированию структуры отчета. Перейдите на закладку Настройки и создайте группировку по полю ГруппаУслуг , указав тип группировки Иерархия . Внутри этой группировки создайте еще одну группировку без указания группового поля. Она будет содержать детальные записи отчета (рис. 144).

Рис. 144. Структура и выделенные поля отчета

Перейдите на закладку Выбранные поля и укажите, что в отчет будут выводиться поля Услуга и Цена (рис. 145).

Рис. 145. Структура отчета

И в заключение настройте внешний вид отчета на закладке Другие настройки . Так как отчет будет представлять собой просто список оказываемых услуг, в котором интересны цены на конкретные услуги, выводить значения ресурса Цена для каждой из группировок и для всего отчета в целом не имеет смысла.

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

Затем перейдите к настройкам конкретной группировки – ГруппаУслуг . Для параметра Расположение итогов этой группировки укажите значение Нет . Вернитесь к настройкам всего отчета в целом.

Для параметра Расположение полей группировок укажите значение Отдельно и только в итогах (так отчет будет лучше "читаться"). Напоследок задайте заголовок отчета – Перечень услуг .

Запустите 1С:Предприятие в режиме отладки и прежде всего откройте периодический регистр Цены .

Добавьте в него еще одно значение для услуги Диагностика : новая цена услуги на 01.04.2004 – 350 (рис. 146). Это позволит протестировать отчет.

Рис. 146. Записи регистра "Цены"

Теперь выполните отчет Перечень услуг по состоянию на 31.03.2004 (рис. 147).

Рис. 147. Результат выполнения отчета

Ваш отчет правильно отражает цену услуги Диагностика на 31.03.2004 – 200 руб.

Еще раз выполните отчет, но теперь уже на другую дату - 01.04.2004 (рис. 148).

Рис. 148. Результат выполнения отчета

Как видите, показана новая цена услуги Диагностика - 350 руб.

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

Диаграмма является элементом управления, предназначенным для размещения в таблицах и формах диаграмм и графиков различного вида системы 1С:Предприятие .

Логически диаграмма является совокупностью точек, серий и значений серий в точке (рис. 149).

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

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

Диаграмма как объект встроенного языка имеет три области, которые позволяют управлять оформлением диаграммы: область построения, область заголовка и область легенды (рис. 150).

Диаграмма может быть вставлена в структуру отчета как отдельный элемент. При создании отчета Рейтинг клиентов диаграмма будет использоваться в структуре настроек схемы компоновки данных.

Рис. 149. Пример диаграммы

Рис. 150. Области диаграммы

Создайте в конфигураторе новый объект конфигурации Отчет . Назовите его РейтингКлиентов , откройте его основную схему компоновки данных.

Создайте набор данных – запрос (НаборДанных1) и вызовите конструктор запроса. Выберите виртуальную таблицу регистра накопления Продажи.Обороты и из нее одно поле – ПродажиОбороты.Клиент .

Затем добавьте новое поле (значок Добавить в командной панели над списком полей) и при помощи построителя выражений определите его как разность между выручкой и стоимостью (рис. 151).

Рис. 151. Редактор произвольного выражения поля

В результате список выбранных полей будет иметь следующий вид (рис. 152):

Рис. 152. Выбранные поля

На закладке Объединения/Псевдонимы укажите, что вычисляемое поле будет иметь псевдоним Доход (рис. 153).

Рис. 153. Объединения/Псевдонимы

На закладке Порядок укажите, что строки результата нужно упорядочивать по убыванию значения поля Доход . Нажмите кнопку "OK " и посмотрите, какой текст сформировал конструктор запроса.

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

В отличие от всех предыдущих отчетов, структура которых содержала группировки, в этот раз добавьте в структуру отчета диаграмму (рис. 154).

Рис. 154. Структура отчета

В точки диаграммы добавьте группировку по полю Клиент . Серии диаграммы оставьте без изменений.

Теперь перейдите на закладку Выбранные поля и выберите поле Доход для вывода в отчет. Структура отчета должна принять следующий вид (рис. 155):

Рис. 155. Структура отчета и настройки диаграммы

На закладке Другие настройки задайте заголовок отчета – Рейтинг клиентов , а также выберите тип диаграммы – Круговая объемная .

Запустите 1С:Предприятие в режиме отладки и откройте отчет Рейтинг клиентов (рис. 156).

Рис. 156. Круговая объемная диаграмма в отчете

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

Откройте настройки отчета и измените тип диаграммы на Измерительная . Заново сформируйте отчет (рис. 157).

Основные приемы работы с некоторыми объектами встроенного языка «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С:Предприятие». Табличный редактор»

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