Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
KompTehn_vNaukTehn_amp_ObrazLekts.docx
Скачиваний:
11
Добавлен:
18.12.2018
Размер:
3.65 Mб
Скачать
    1. Запросы 1с

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

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

      1. Создать запрос с помощью универсального конструктора (так как запрос, это объект, вернее экземпляр объект, предопределённого в среде)

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

      1. Сформировать текст запроса на основе специального языка запросов 1с. Текст запроса формируется в виде значения текстовой переменной (константы).

ТекстЗапроса=" Период с ДатаНач по КонДата;

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

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

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

      1. Выполнить запрос

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

  1. Обработать результаты запроса.

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

Выгрузить()

      1. Язык запросов. Используется для формирования текста запросов.

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

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

  • Обычно текст запроса задаёт

  • период, за который производится выборка данных.

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

  • Определяет гуппировку данных (аналог group by)

  • Используемые функции преобразования данных (нахождение максимума, минимума,

  • Дополнительные условия (аналог Where)

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

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

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

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

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

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

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

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

Начальняа

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

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

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

; "..

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

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

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

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

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

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

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

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

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

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

[Без Групп]

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

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

Документ

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

День

Неделя

Месяц

Квартал

Год

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

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

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

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

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

  • Сумма

  • Среднее

  • Минимум

  • Максимум

  • СчЁтчик (пишется через букву Ё).

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

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

Условия

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

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

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

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

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

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

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

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

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

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

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

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

……

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

    1. Отчёты .

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

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

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

  • Выбирается требуемый диапазон объектов, по которым будет выполнятся расчёт (это могут быть регистры, документы, справочники, журналы документов). Для задания диапазона дат, типа выбираемых объектов, их групп обычно используется диалоговая форма.

  • Формируется временный набор данных, который представляет выбранные данные данные в удобном для обработке виде. В качестве временного набора может использоваться запрос 1с (о них позже), таблица значений. Может последовательно исопльзовать запрос, который затем выгружается в таблицу значений.

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

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

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

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

//

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

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

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

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

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

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

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

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

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

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

;

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

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

Возврат;

КонецЕсли;

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

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

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

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

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

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

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

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

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

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

КонецЦикла;

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

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

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

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

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

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]