Як розбиратися в великих запитах

ВопросКак розбиратися в великих запитах. Консоль запитів. Як подивитися, чим заповнені тимчасові таблиці в запиті?
Відповідь Досить часто в типових конфігураціях 1С зустрічаються дуже великі складні для сприйняття запити. Наприклад, запит автозаповнення документа «Нарахування зарплати» містить в собі близько 3000 рядків. Не дивлячись на те, що завдяки використанню великої кількості тимчасових таблиць він досить структурований і прозорий логічно, розбиратися в ньому досить складно через дуже великої кількості рядків.
Є 2 принципово різних методу розбору таких запитів.

Перший метод - використання консолі запитів.
Стандартну консоль запитів можна взяти на диску ІТС (просто виконайте пошук по диску ІТС слів «Консоль запитів» і у вас з'явиться відразу кілька посилань на неї). Більш зручні версії зустрічаються на різних сторонніх сайтах. Вже не пам'ятаю точно, звідки пропонований тут варіант консолі, але нам він видався найзручнішим.

Тут її можна безкоштовно завантажити: [download id = "2"]

Консоль запитів дозволяє створювати і налагоджувати запити в режимі 1С: Підприємства, без запуску 1С: Конфігуратора. Скачав файл потрібно розпакувати і відкрити через меню 1С: Підприємства "Файл - Відкрити».

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

Другий метод - для читання проміжних результатів запиту використовується функція виду

Запит - це досліджуваний нами запит,

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

Тепер, якщо в табло повідомлень ввести це втІмя і натиснути F2, то відкриється вікно зі значеннями цієї тимчасової таблиці.

Або буває зручніше не вбудовувати в модуль рядок виклику функції, а прямо в табло налагодження написати звернення виду:

Точно так само можна натиснути F2, позиційований в табло на цьому зверненні, відкриється вміст таблиці.

Як в ЗУП вважається годинна тарифна ставка. Розрахунок доплати за нічні години (1С: v8: Зарплата і Управління Персоналом)

Безпосередня швидкий друк з вибором принтера не за замовчуванням (1C: v8: Програмістові: COM-з'єднання зі службою Microsoft WMI)

Питання: Чому б в функцію не передавати не весь запит, а тільки текст запиту? При цьому саму функцію написати так:

При цьому передавати в якості варіанту не сам запит, а тільки його частину тексту.

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

Колишній код функції (але він гірше, тому що може видавати помилку, що така ВТ вже існує):

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

Схожі статті