Центральный Дом Знаний - Работа в 1С 26

Информационный центр "Центральный Дом Знаний"

Заказать учебную работу! Жми!



ЖМИ: ТУТ ТЫСЯЧИ КУРСОВЫХ РАБОТ ДЛЯ ТЕБЯ

      cendomzn@yandex.ru  

Наш опрос

Как Вы планируете отдохнуть летом?
Всего ответов: 903

Онлайн всего: 1
Гостей: 1
Пользователей: 0


Форма входа

Логин:
Пароль:

Работа в 1С 26

Работа в программе 1С

стр.: 1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30  31  32
33  34  35  36  37  38  39  40  41  42  43  44  45  

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

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

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

|Долж = Справочник.Сотрудники.Должность;

|Группировка Долж Упорядочить по Долж.Наименование;

|Функция Колво = Счётчик();

|";

Условие

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

Условие(<ЛогическоеВыражение>);

Параметры:

<ЛогическоеВыражение> – логическое выражение встроенного языка 1С:Предприятие.

В параметре оператора Условие, в принципе, можно записывать логические выражения любой сложности (по правилам встроенного языка), используя любые логические операторы (>, <, =, >=, <>, И, ИЛИ, НЕ и другие), при этом в качестве операндов могут участвовать как внутренние, так и внешние переменные запроса (если существуют внутренняя и внешняя переменные с одинаковым именем, то использоваться по данному имени будет внутренняя переменная).

Пример:

|Условие(Цена > 23.5);

|Условие((Товар.ПринадлежитГруппе(ВыбТовар) = 1) И (Товар.Розн_Цена = 100));

Если в описании запроса использовано несколько операторов Условие, то они объединяются по логическому И.

Пример:

// Использование двух операторов:

|Условие(Товар.Наименование <> "Стол");

|Условие(Товар.Наименование <> "Шкаф");

// аналогично записи одного оператора:

|Условие((Товар.Наименование <> "Стол") И (Товар.Наименование<> "Шкаф"));

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

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

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

|Сотр = Справочник.Сотрудники.ТекущийЭлемент;

|КодДолж = Справочник.Сотрудники.Должность.Код;

|Группировка Сотр упорядочить по Сотр.Наименование;

|Условие (КодДолж = 7);

|";

В языке запросов имеется еще несколько операторов:

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

ОбрабатыватьДокументы[Непроведенные|Проведенные|Все];

// Назначить условие обработки бухгалтерских операций в запросе.

ОбрабатыватьОперации[Включенные|Выключенные|Все];

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

Обрабатывать[ПомеченныеНаУдаление|НеПомеченныеНаУдаление|Все];

// Не накапливать итоги по группировкам.

Без итогов;

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

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

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

|Сотр = Справочник.Сотрудники.ТекущийЭлемент;

|Долж = Справочник.Сотрудники.Должность;

|Группировка Долж упорядочить по Долж.Наименование;

|Группировка Сотр упорядочить по Сотр.Наименование Без Групп;

|Функция Колво = Счётчик();

|";

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

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



Долж

Сотр

Кол_во


Итог общий по выборке



7

Итог по должности Бухгалтер

Бухгалтер


2

Сотрудники внутри группировки Бухгалтер

Бухгалтер

Иванов

1

Бухгалтер

Петров

1

Итог по должности Программист

Программист


3

Сотрудники внутри группировки Программист

Программист

Сидоров

1

Программист

Мусин

1

Программист

Васин

1

Итог по должности Рабочий

Рабочий


2

Сотрудники внутри группировки Рабочий

Рабочий

Симонов

1

Рабочий

Ершов

1

Рисунок 7.3.1

Методы для работы с запросами

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

Параметры:

<ТекстЗапроса> – строковое выражение, содержащее текст запроса на языке запросов.

Возвращаемое значение: 1 – если запрос выполнен успешно, 0 – если зафиксирована ошибка при выполнении запроса (синтаксическая или времени выполнения).

Пример:

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

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

|Долж = Справочник.Сотрудники.Должность;

|Группировка Долж упорядочить по Долж.Наименование;

|";

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

Сообщить("Ошибка в тексте запроса");

Возврат;

КонецЕсли;

Группировка(<Группировка>, <Направление>) – служит для организации цикла получения данных из выборки, сформированной в результате работы метода Выполнить(). Метод Группировка() позиционирует в выборке очередную строку в порядке, определенном параметром <Группировка>. Нельзя использовать метод Группировка(), задавая в качестве параметра младшие группировки, не использовав предварительно этот метод для позиционирования по старшим группировкам. Старшинство группировок определяется порядком их следования в тексте запроса. Обход группировок по многоуровневым справочникам в порядке убывания не выполняется.

Параметры:

<Группировка> – выражение, содержащее порядковый номер или имя группировки.

<Направление> – необязательный параметр. 1 – выборка значений группировки по возрастанию; –1 (минус единица) – выборка значений группировки по убыванию. Значение по умолчанию: 1.

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

Пример:

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

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

|Сотр = Справочник.Сотрудники.ТекущийЭлемент;

|Долж = Справочник.Сотрудники.Должность;

|Группировка Долж упорядочить по Долж.Наименование;

|Группировка Сотр упорядочить по Сотр.Наименование;

|";

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

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

Сообщить(Запрос.Долж);

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

Сообщить("......" + Запрос.Сотр.Наименование);

КонецЦикла;

КонецЦикла;

ЭтоГруппа(<ИмяГруппировки>) – предназначен для выделения строк временного набора данных, которые являются группой справочника.

Параметры:

<ИмяГруппировки> – выражение, содержащее порядковый номер или имя группировки.

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

Пример:

Пока (Запрос.Группировка("Сотр") = 1) И (Запрос.ЭтоГруппа("Сотр") = 1) Цикл

//...

КонецЦикла;

НачалоПериода() – возвращает дату начала периода запроса.

Возвращаемое значение: значение типа Дата – начало периода формирования запроса.

Пример:

ДатаНачала = Запрос.НачалоПериода();

КонецПериода() – возвращает дату конца периода запроса.

Возвращаемое значение: значение типа Дата – конец периода формирования запроса.

Пример:

ДатаКонца = Запрос.КонецПериода();

Получить(<ЗначениеГруппировки_1>, ..., <ЗначениеГруппировки_n>) – осуществляет прямое позиционирование на запись в выборке по конкретным значениям группировок. Количество параметров метода зависит от количества группировок в запросе. Можно пропускать значения одной или нескольких последних группировок, в этом случае метод позиционируется на запись, которая будет содержать итоговые значения для указанных группировок. Пропускаемые при вызове метода последние значения группировок должны заменяться запятыми. Если при вызове метода опущены все параметры, то выборка позиционируется на самое начало временного набора данных, на строку итогов. После выполнения метода Получить() может осуществляться дальнейший обход выборки вызовами метода Группировка().

Параметры:

<ЗначениеГруппировки_n> – выражение, содержащее значение n–ой группировки запроса.

Возвращаемое значение: 1 – если запись найдена, 0 – если нет.

Пример:

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

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

|Сотр = Справочник.Сотрудники.ТекущийЭлемент;

|Долж = Справочник.Сотрудники.Должность;

|Группировка Долж упорядочить по Долж.Наименование;

|Группировка Сотр упорядочить по Сотр.Наименование;

|";

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

// ВыбДолжн, ВыбСотр – переменные, содержащие значения на которые

// необходимо позиционироваться

Если Запрос.Получить(ВыбДолжн, ВыбСотр) = 0 Тогда

Если Запрос.Получить(ВыбДолжн, ) = 0 Тогда

Сообщить("Сотрудник с данной должность не найден");

КонецЕсли;

КонецЕсли;

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

Возвращаемое значение: 1 – если операция выполнена успешно, 0 – если нет.

Пример:

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

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

|Сотр = Справочник.Сотрудники.ТекущийЭлемент;

|Долж = Справочник.Сотрудники.Должность;

|Группировка Долж упорядочить по Долж.Наименование;

|Группировка Сотр упорядочить по Сотр.Наименование;

|";

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

// ВыбДолжн, ВыбСотр – переменные, содержащие значения на которые

// необходимо позиционироваться

Если Запрос.Получить(ВыбДолжн, ВыбСотр) = 0 Тогда

Если Запрос.Получить(ВыбДолжн, ) = 0 Тогда

Сообщить("Сотрудник с данной должность не найден");

КонецЕсли;

КонецЕсли;

Запрос.ВНачалоВыборки();

// обход по первой группировке в обратном порядке

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

// ...

КонецЦикла;

Выгрузить(<ТаблЗнач>, <Флаг>, <Итоги>) – выгружает результаты запроса в таблицу значений.

Параметры:

<ТаблЗнач> – таблица значений, куда выгружаются результаты запроса.

<Флаг> – необязательный параметр. Число:

0 – значения групп и функций (по умолчанию);

1 – значения групп и функций, дополнительных переменных;

2 – значения упорядочиваний групп и функций;

3 – значения упорядочиваний групп и функций, дополнительных переменных;

Строка – например "Товар(1), Товар(2), Товар, Склад, Приход, Расход", где Товар(1) – значение первого упорядочивания группировки "Товар".

<Итоги> – необязательный параметр. Число:

0 – итоги по группировкам не выводить;

1 – итоги по группировкам выводить сверху (по умолчанию);

2 – итоги по группировкам выводить снизу;

3 – итоги по группировкам выводить сверху и снизу.

Возвращаемое значение: 1 – если выгрузка произошла успешно, иначе – 0.

Пример:

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

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

|Сотр = Справочник.Сотрудники.ТекущийЭлемент;

|Долж = Справочник.Сотрудники.Должность;

|Группировка Долж упорядочить по Долж.Наименование;

|Группировка Сотр упорядочить по Сотр.Наименование;

|";

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

ТаблЗнач = Создать("ТаблицаЗначений");

Запрос.Выгрузить(ТаблЗнач, 0, 0);

ЗначениеУпорядочивания(<Группировка>, <Упорядочив>) – возвращает значение поля упорядочивания, выбирая его из временной выборки запроса, не обращаясь к базе данных. Если в тексте запроса для данной группировки не используется конструкция "Упорядочить по", то в этом случае действует упорядочивание по умолчанию:

  • для справочников – зависит от основного представления при описании справочника в конфигураторе (код или наименование).

  • для документов – дата и время создания документа.

Параметры:

<Группировка> – выражение, содержащее значение номера или имени группировки (номер работает быстрее).

<Упорядочив> – необязательный параметр. Порядковый номер параметра упорядочивания указанной группировки. Значение по умолчанию: 1.

Возвращаемое значение: значение поля упорядочивания.

Пример:

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

|ВидРаб = Документ.Наряд.ВидРаботы;

|Сотр = Документ.Наряд.Сотрудник;

|Группировка ВидРаб Упорядочить По ВидРаб.Код, ВидРаб.Стоимость;

|Группировка Сотр;

|";

//...

// Фрагмент заполнения таблицы

// Выбираем значение ВидРаб.Стоимость

Запрос.ЗначениеУпорядочивания("ВидРаб", 2);

// Выбираем имя сотрудника

Запрос.ЗначениеУпорядочивания(2, 1);

ПолучитьАтрибут(<ИмяАтрибута>) – возвращает значение атрибута запроса по его имени.

Параметры:

<ИмяАтрибута> – строковое выражение, содержащее значение любого атрибута запроса.

Возвращаемое значение: значение атрибута запроса.

Пример:

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

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

|Сотр = Справочник.Сотрудники.ТекущийЭлемент;

|Долж = Справочник.Сотрудники.Должность;

|Группировка Долж упорядочить по Долж.Наименование;

|Группировка Сотр упорядочить по Сотр.Наименование;

|";

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

Запрос.ПолучитьАтрибут("Долж");

// Выбираем сотрудника

Запрос.ПолучитьАтрибут("Сотр");


Рассмотрим подробнее, как происходит позиционирование по строкам выборки на примере выборки на рисунке 7.3.1. После выполнения метода Выполнить() текущей является первая строка выборки, содержащая итог по всей выборке. Поэтому общие итоги можно использовать сразу же. Далее в выборке можно пройти только по внешней группировке Долж или по обеим Долж+Сотр в цикле, но нельзя пройти только по вложенной группировке Сотр.

Рассмотрим порядок обхода выборки по внешней группировке Долж (рисунок 7.3.2):



Долж

Сотр

Кол_во


// Итог общий

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

// Итог по Должности

КонецЦикла;

// Итог общий




7

Бухгалтер


2

Бухгалтер

Иванов

1

Бухгалтер

Петров

1

Программист


3

Программист

Сидоров

1

Программист

Мусин

1

Программист

Васин

1

Рабочий


2

Рабочий

Симонов

1

Рабочий

Ершов

1

Рисунок 7.3.2

То есть после выполнения метода Выполнить(), указатель становится на строку общих итогов. Затем в цикле проходит по значениям группировки Долж (сначала Бухгалтер, затем Программист и наконец Рабочий). При выходе из цикла указатель автоматически устанавливается на строку общих итогов.

Теперь рассмотрим порядок обхода выборки по обеим группировкам Долж+Сотр (рисунок 7.3.3):



Долж

Сотр

Кол_во


// Итог общий

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

// Итог по Должности

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

// строка по Сотруднику

КонецЦикла;

// Итог по Должности

КонецЦикла;

// Итог общий




7

Бухгалтер


2

Бухгалтер

Иванов

1

Бухгалтер

Петров

1

Программист


3

Программист

Сидоров

1

Программист

Мусин

1

Программист

Васин

1

Рабочий


2

Рабочий

Симонов

1

Рабочий

Ершов

1

Рисунок 7.3.3

Loading

Календарь

«  Май 2019  »
ПнВтСрЧтПтСбВс
  12345
6789101112
13141516171819
20212223242526
2728293031

Архив записей

Друзья сайта

  • Заказать курсовую работу!
  • Выполнение любых чертежей
  • Новый фриланс 24