2.59M

Занятие_№9_Виртуальные_таблицы__вложенные_запросы

1.

Виртуальные таблицы,
вложенные запросы

2.

План занятия
1
2
3
4
Применение программирования К СКД
Получение данных из регистров
Виртуальные таблицы
Параметры виртуальных таблиц

3.

Применение программирования к СКД
| Задача. Необходимо вывести отчет вида:
Транспортное средство
Начало рейса
Окончание рейса
Время в пути
Автобус 1
01.12.2020 06:30:00 01.12.2020 15:40:00
09ч.10м.
Автобус 2
01.12.2020 09:30:00 01.12.2020 18:20:00
08ч.50м.
Автобус 3
02.12.2020 18:30:00 02.12.2020 21:40:00
03ч.10м.
Автобус 4
02.12.2020 20:00:00 02.12.2020 23:40:00
03ч.40м.
Автобус 5
03.12.2020 06:00:00 03.12.2020 17:10:00
11ч.10м.

4.

Применение программирования к СКД
| Дополним нашу систему необходимыми объектами учета:
| Справочник «Транспортные средства»
| Документ «Лист учета времени ТС»

5.

Применение программирования к СКД
| Создадим отчет “Учет времени ТС”

6.

Применение программирования к СКД
| Создадим отчет “Учет времени ТС”

7.

Применение программирования к СКД
| Создадим отчет “Учет времени ТС”

8.

Применение программирования к СКД
| Возьмем данные из табличной части нашего нового документа
Важно! Данный пример сделан исключительно для ознакомления с
конструктором отчет. Все отчеты, всегда, строятся на регистрах. Если в
ДЗ, при построении отчета, вы будете использовать документы вместо
регистров, это будет считаться ошибкой.

9.

Применение программирования к СКД
| Настроим отчет

10.

Применение программирования к СКД
| Запустим пользовательский режим и посмотрим промежуточный
результат

11.

Применение программирования к СКД
| Запустим пользовательский режим и посмотрим промежуточный
результат

12.

Применение программирования к СКД
| Чтобы добавить свое поле, необходимо перейти на закладку
«Вычисляемые поля»

13.

Применение программирования к СКД
| Добавим свое поле

14.

Применение программирования к СКД
| Далее необходимо заполнить поле Выражение.
| Заполнить его можно серверной функцией из общего модуля

15.

Применение программирования к СКД
| Создадим такую функцию. Добавим общий модуль и функцию:

16.

Применение программирования к СКД
| Обратимся к функции в выражении:

17.

Применение программирования к СКД
| Выведем поле в отчет:

18.

Применение программирования к СКД
| Протестируем:

19.

Задача
| Вывести отчета вида:
Сотрудник
Задача
Время начала
Время окончания
Потраченное время
Иванов
Написание отчета
01.12.2020 12:00:00
01.12.2020 17:00:00
5ч. 00м.
Петров
Написание обработки
01.12.2020 10:00:00
01.12.2020 18:30:00
8ч. 30м.

20.

Получение информации из БД
| Чтение остатков из регистров.
| Выведем отчет по данным регистра накопления Взаиморасчеты.

21.

Получение информации из БД
| У РН вида остатки есть 3 виртуальные таблицы.
| Виртуальная таблица остатков не хранится в базе данных (как
физическая), а строится в момент обращения к ней.
| Виртуальная таблица может строиться по-разному, в зависимости от
переданных неё параметров. Например: отборы и уровень
детализации.

22.

Получение информации из БД
| При работе с регистрами, в 98% случаев нужно использовать
виртуальные таблицы.
| Виртуальные таблицы являются в каком-то смысле интерфейсом
работы с регистром. Т.е. виртуальная таблица остатков будет
возвращать остатки, а оборотов - обороты.
| Получить остатки из физической таблицы возможно, но гораздо
сложнее, что очень часто приводит к ошибкам.
| Кроме того, виртуальные таблицы оптимизированы для получения
остатков и оборотов с помощью специальных табл гов и таблиц
агрегат. (о них - позже)

23.

Получение информации из БД
| Но виртуальные таблицы оптимизированы не только для получения
данных остатков или оборотов, но и также для получения данных по
определенным параметрам.
| Отличие накладываемых условий на виртуальную таблицу в секции
ГДЕ и накладываемых условий через параметры заключается в том,
что в первом случае СУБД возьмёт все записи таблицы и только потом
наложит на них ограничения, в то время как во втором СУБД сразу же
будет получать только те записи таблицы, которые удовлетворяют
условиям параметров. Второй вариант куда более предпочтительнее
при работе с большим объёмом.

24.

Получение информации из БД
| Также, при работе с запросом можно устанавливать условия отбора во
вкладке «Компоновка данных». Условия там задаются строками и являются
необязательными к выполнению.

25.

Получение информации из БД
| В данной задаче нас интересуют остатки:

26.

Получение информации из БД
| Поле Долг сделаем ресурсом (Долг это переименованное поле
СуммаОстаток):

27.

Получение информации из БД
| Зададим настройки отчета

28.

Получение информации из БД
| Зададим настройки отчета

29.

Получение информации из БД
| Добавим отбор по контрагенту через настройки отчета:

30.

Получение информации из БД
| Включим этот отбор в пользовательские настройки:

31.

Получение информации из БД
| Посмотрим в пользовательском режиме:

32.

Получение информации из БД
| Добавим параметр отчета Период.
У виртуальных таблиц РН есть параметры:

33.

Получение информации из БД
| Система уже знает о параметре период, поэтому мы его видим в
настройках отчета, включим его в пользовательский режим:

34.

Получение информации из БД
| Приведем наш параметр к концу дня:

35.

Получение информации из БД
| Особенность системы 1С в регистрах накопления вида остатки
Система получает данные на конкретный момент времени t, но все
записи с этим моментом времени для нее находятся во времени
позже, поэтому нам необходимо прибавить секунду к нашему периоду
12.11.2020 23:59:59
Остаток находится тут (между секундами)
13.11.2020 0:00:00

36.

Получение информации из БД
| Особенность системы 1С в регистрах накопления вида остатки
Добавление секунды:

37.

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

38.

Получение информации из БД
| Выведем данные из регистра сведений ЦеныТоваров. Создадим
отчет Прайс

39.

Получение информации из БД
| Выведем данные из регистра сведений ЦеныТоваров. Создадим
отчет Прайс

40.

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

41.

Получение информации из БД
| Срез последних позволяет получить последнюю запись регистра
сведений на указанную дату в разрезе измерений. Выберем данные
для отчета:

42.

Получение информации из БД
| У виртуальной таблицы РС Срез последних/первых так же есть
параметры виртуальной таблицы, и среди них есть период:

43.

Получение информации из БД
| Вот так выглядит наш запрос к базе:

44.

Получение информации из БД
| Зададим настройки отчета:

45.

Получение информации из БД
| Зададим настройки отчета:

46.

Получение информации из БД
| Зададим настройки отчета:

47.

Получение информации из БД
| Посмотрим пользовательский режим:

48.

Получение информации из БД
| Оформить отчет можно в Настройках отчета на закладке Другие
настройки:

49.

Получение информации из БД
| Оформить отчет можно в Настройках отчета на закладке Другие
настройки:

50.

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

51.

Получение информации из БД
| Задача.
| Получить продажи только по тем контрагентам, которые есть в
выбранном пользователем документе

52.

Получение информации из БД
| Создадим новый отчет:

53.

Получение информации из БД
| Создадим новый отчет:

54.

Получение информации из БД
| Переходим в параметры виртуальной таблиц ПродажиОбороты

55.

Получение информации из БД
| Как мы видим, условие можно наложить только на Измерение:

56.

Получение информации из БД
| Чтобы описать конструкцию выбора из какого-то списка, мы
используем «В»

57.

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

58.

Получение информации из БД
| Создадим новый запрос:

59.

Получение информации из БД
| Создадим новый запрос:

60.

Получение информации из БД
| Создадим новый запрос:

61.

Получение информации из БД
| Создадим новый запрос:

62.

Получение информации из БД
| Настроим ресурсы:

63.

Получение информации из БД
| Настроим отчет:

64.

Получение информации из БД
| Настроим отчет:

65.

Получение информации из БД
| Настроим отчет:

66.

Получение информации из БД
| Проверим отчет:

67.

Получение информации из БД
| ВАЖНО
| Все условия, которые мы хотим наложить на измерение – мы
указываем в параметрах виртуальной таблицы (!)

68.

Задача
| БД «На уроке»
Вывести данные о взаиморасчетах с сотрудниками на дату
Вывести данные о начисленной за период зарплате сотрудника,
используя стандартный период
| БД «Ресторан»
Создать отчет меню с использованием данных из регистра сведений,
оформить меню
English     Русский Правила