Пакетні запити 1с підприємство

Історія розвитку запитів

прості запити

Розглянемо, як змінювався (правильніше сказати, доповнювався) синтаксис запитів на наступному прикладі: Проводиться документ Видаткова, яка містить в табличній частині Товари список реалізованої продукції і її кількість. Для проведення цього документа необхідно контролювати негативні залишки, записані в регістр накопичення залишків ОстаткіТоваров.







На малюнку показана структура конфігурації.

Пакетні запити 1с підприємство

Створимо запит до віртуальної таблиці Залишки регістра накопичення і табличній частині документа. Для обліку можливих повторень рядків в документі, зробимо угруповання записів.

Пакетні запити 1с підприємство

Звичайно, наведений вище запит недостатньо неоптимальна. Оптимізуємо його, використовуючи вкладені запити: згрупуємо табличну частину до з'єднання з таблицею залишків документа, передамо в параметри віртуальної таблиці список одиниць продукції в якості умови для обчислення залишків. В результаті запит буде виглядати наступним чином:

Пакетні запити 1с підприємство

Якщо в запиті потрібно отримати дані із залишків різних регістрів, то значення фільтра і другий вкладений запит буде повторюватися в кожному параметрі віртуальних таблиць, при цьому система при кожному вкладеному запиті буде звертається для отримання даних до інформаційної бази.

тимчасові таблиці

З деякого часу в запитах з'явилася можливість використання тимчасових табліцх, для чого служить об'єкт «Менеджер тимчасових таблиць». По суті справи, менеджер тимчасових таблиць містить опис простору імен тимчасових таблиць і забезпечує їх створення і видалення з бази даних.







Тимчасові таблиці фізично зберігаються в базі, тому слід використовувати їх обережно, тому що дискова підсистема - це сама низькопродуктивною частина техніки, а швидкість створення і видалення таблиць залежить безпосередньо від неї.

Змінимо запит з урахуванням використання тимчасових таблиць. Тимчасові таблиці будуть містити табличну частину документа в сгруппированном вигляді і список продукції для фільтрації віртуальних таблиць:

Пакетні запити 1с підприємство

Застосування тимчасових таблиць в запиті вимагає використання інструкції Помістити для формування нової тимчасової таблиці, при цьому в результат запиту передається не вміст таблиці. а число записів, які були поміщені в тимчасову таблицю.

Крім того можна використовувати інструкцію Знищити - при цьому тимчасова таблиця віддаляється, інакше тимчасові таблиці будуть знищений об'єкт менеджер тимчасових таблиць разом з таблицями.

В основному запиті назви тимчасових таблиць використовувалося як вказівки на джерело даних (їм повинен бути призначений синонім). Використовувати тимчасові таблиці в якості джерела можна неоднакратно, що при правильному їх застосуванні дозволяє скоротити текст запиту і підвищити швидкість (при використанні тимчасової таблиці в різних місцях запиту).

пакетні запити

Пакетні запити значно розширюють функціонал тимчасових таблиць і надають нові можливості при роботі з запитами.

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

Пакетні запити в тексті запиту повинні бути розділені символом «;». Простір імен віртуальних таблиць у окремого пакетного запиту одне. У використанні менеджера тимчасових таблиць немає необхідності, але можливо якщо вам потрібно передати тимчасові таблиці в інший пакетний запит.

Змінимо процедуру з урахуванням пакетних запитів:

Пакетні запити 1с підприємство

Фактично було видалено визначення об'єкта запит і не був використаний менеджер тимчасових таблиць, об'єдналися тексти запитів. У підсумку, текст запиту придбав більш Новомосковскбельний вид.

Після виконання запиту, змінна МассівРезультатов буде містити 3 елементи. Два перших - це кількість вміщених в тимчасові таблиці записів ДокТЧ і СпісокТоваров, в третьому буде знаходитися вибірка з полями Док_Колічество, Номенклатура і Рег_Колічество.

Мінлива РезультатЗапроса містить тільки вибірку.

Таким чином, пакетні запити - дуже зручний інструмент як для написання, так і для читання складних запитів.