logo
KompTehn_vNaukTehn_amp_ObrazLekts

В какой то мере аналогичен sql, но в качестве объектов выборки могут быть использованы различные объекты (регистры оперативного учёта, документы, справочники).

Пример текста запроса –

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

Заявка = Документ.Заявка.ТекущийДокумент;// внутренняя перм

Функция ЗаявкаКурсСумма = Сумма(Заявка.Курс);//

Группировка Заявка; ";

Период – Период с ДатаНач [ по КонДата]

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

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

Начальняа

Если начальная дата не указана,

Объекты выборки задаются через внутренние переменные

Пример формирования объекта выборки через переменную Товар

; "..

Товар = Документ.РасходнаяНакладная.Номенклатура,

| Документ.Пермещение.Номенклатура,

| Регистр.ОстаткиТовара.Товар; ; "

Внутренняя переменная – это переменная, объявленная в тексте описания запроса следующим образом:

<ИмяПеременной> = <ОписаниеПеременной>;

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

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

Группировки запроса устанавливают порядок выбора информации. Группировка описывается следующим образом:

Группировка <ИмяГруппировки>

[Упорядочить по <Порядок>][Без Упорядочивания]

[Без Групп]

[Все [ВошедшиеВЗапрос]];

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

Документ

СтрокаДокумента

День

Неделя

Месяц

Квартал

Год

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

Функции запросов позволяют получать нектороые обработки данных.

Формат описания функции

Функция <ИмяФункции> = <ТипФункции> (<Параметр>) [Когда (<Условие>)];

Тип функции – одна из предопределенных функций:

В качестве параметра функции может быть имя внутренней переменной типа «Число», а для функций Сумма, Среднее, Минимум, Максимум может быть арифметическое выражение в терминах встроенного языка 1С:Предприятия.

Функции, определённые в тексте запросе будут доступны как атрибуты запросов.

Условия

Пример условия в запросе

Условие Склад=ВыбСклад;

Если ПустоеЗначение (ВыбСклад<>1) Тогда ТекстЗапроса=ТекстЗапроса+ ".Условие Склад = ВыбСклад";

Обработка результатов запроса.

В результате выполнения запроса.

Зап1.Выполнить(ТекстЗапроса);

Будет сформирован результат структурированный по гриппировкам.

Для просмотра результатов запросов обычно формируется цикл по группировкам по группировкам.

Пока Запрос1.Группировка("Склад"=) <> 0 Цикл

Склад=Запрос1.Склад;

Количество=Запрос1.Количество;

Пока Запрос1.Группировка(Товар)<> 0 Цикл

……

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

    1. Отчёты .

Отчёт позволяет получить в требуемом виде некоторые итоговые данные о деятельности предприятия. Отчёты, как и другие объекты метаданных имеют диалоговую форму, табличную часть. Различают отчёты встроенные в конфигурацию (в дерево метаданных) и внешние отчёты. Внешние отчёты хранятся в виде файлов с расширением *.ert, обычно в каталоге информационной базы ExtForms

Внешние обработки также хранятся в файлах *.ert, но в отличии от обработок отчёты обычно не меняют содержание информационной базы. (об этом ранее говорилось).

Обычно в отчётах выполняются следующие действия.

Для создания отчётов, как и других объектов в конфигураторе 1с предусмотрены конструкторы.

//*******************************************

// Процедура генерации запроса Сформировать.

//

Процедура Сформировать()

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

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

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

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

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

|ПоступлениеТоваров = Документ.ПоступлениеТоваров.ТекущийДокумент;

|Функция ПоступлениеТоваровЗачетНДСприОплатеСумма = Сумма(ПоступлениеТоваров.ЗачетНДСприОплате);

|Группировка ПоступлениеТоваров;

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

;

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

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

Возврат;

КонецЕсли;

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

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

Таб.ИсходнаяТаблица("Сформировать");

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

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

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

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

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

// Заполнение полей ПоступлениеТоваров

Таб.ВывестиСекцию("ПоступлениеТоваров");

КонецЦикла;

// Заполнение полей "Итого"

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

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

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

Таб.Показать("Сформировать", "");

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