Книга знаний

1С:Предприятие / v8 / Приемы программирования

v8: Хитрый прием работы с табличными частями в запросе

Как в запросе отобрать только табличные части с указанным условием и не заполненные.Автор статьи:
Последняя редакция №1 от 26.05.06
URL: http://kb.mista.ru/article.php?id=235

Ключевые слова: табличная часть,запрос


Как то мне довелось править отчет, написанный не мной. Там выдался список всех сотрудников у которых есть дети, родившиеся после указанного года.

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

Исходный запрос был таким:


ВЫБРАТЬ
    Сотрудники.Ссылка КАК Сотрудник,
    Сотрудники.Дети.(
        Пол,
        ГодРождения
    ) КАК Дети
ИЗ
    Справочник.Сотрудники КАК Сотрудники
ГДЕ
    Сотрудники.Дети.ГодРождения > &ГодРождения И Сотрудники.Ссылка В &Список


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

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

ВЫБРАТЬ
    Сотрудники.Ссылка КАК Сотрудник,
    Сотрудники.Дети.(
        Пол,
        ГодРождения
    ) КАК Дети
ИЗ
    Справочник.Сотрудники КАК Сотрудники
ГДЕ
    НЕ (Сотрудники.Дети.ГодРождения <= &ГодРождения) И Сотрудники.Ссылка В &Список


Для пустой табличной части условие в скобках давало ложь, НЕ превращало его в истину. Все нужные данные попадали.

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


Описание | Рубрикатор | Поиск | ТелепатБот | Захваченные статьи | Установки | Форум
© Станислав Митичкин (Волшебник), 2005-2025 | Mista.ru

Яндекс.Метрика