IT Студия Programmist1C
Услуги
  • Внедрение и сопровождение 1С
    • Маркировка импорта обуви
    • Hастройка 1С
    • Обслуживание 1С
    • Программирование 1С
    • Доработка 1С
    • Автоматизация 1С
    • Сопровождение 1С
    • Внедрение 1С
  • Создание сайтов
    • Посадочные страницы
    • Корпоративные сайты
    • Интернет-магазины
  • Битрикс24
    • Техническая поддержка Битрикс24
    • Внедрение Битрикс24
    • Интеграции Битрикс24
  • Реклама и продвижение
    • Оптимизация сайтов
    • Контекстная реклама
    • SEO для интернет-магазинов
    • Продвижение сайтов
Проекты
  • Внедрение 1С
  • Создание WEB Сайтов
Компания
  • О компании
  • Партнеры
  • Реквизиты
  • Вопрос ответ
Пресс-центр
Контакты
Ещё
    Задать вопрос
    +7 (985) 141-74-63
    info@programmist1c.ru
    Москва, ул. Генерала Кузнецова, 17Б
    +7 (985) 141-74-63
    IT Студия Programmist1C
    Услуги
    • Внедрение и сопровождение 1С
      • Маркировка импорта обуви —
      • Hастройка 1С —
      • Обслуживание 1С —
      • Программирование 1С —
      • Доработка 1С —
      • Автоматизация 1С —
      • Сопровождение 1С —
      • Внедрение 1С
    • Создание сайтов
      Создание сайтов
      • Посадочные страницы —
      • Корпоративные сайты —
      • Интернет-магазины
    • Битрикс24
      Битрикс24
      • Техническая поддержка Битрикс24 —
      • Внедрение Битрикс24 —
      • Интеграции Битрикс24
    • Реклама и продвижение
      Реклама и продвижение
      • Оптимизация сайтов —
      • Контекстная реклама —
      • SEO для интернет-магазинов —
      • Продвижение сайтов
    Проекты
    • Внедрение 1С
    • Создание WEB Сайтов
    Компания
    • О компании
    • Партнеры
    • Реквизиты
    • Вопрос ответ
    Пресс-центр
    Контакты
      IT Студия Programmist1C
      Услуги
      • Внедрение и сопровождение 1С
        • Маркировка импорта обуви —
        • Hастройка 1С —
        • Обслуживание 1С —
        • Программирование 1С —
        • Доработка 1С —
        • Автоматизация 1С —
        • Сопровождение 1С —
        • Внедрение 1С
      • Создание сайтов
        Создание сайтов
        • Посадочные страницы —
        • Корпоративные сайты —
        • Интернет-магазины
      • Битрикс24
        Битрикс24
        • Техническая поддержка Битрикс24 —
        • Внедрение Битрикс24 —
        • Интеграции Битрикс24
      • Реклама и продвижение
        Реклама и продвижение
        • Оптимизация сайтов —
        • Контекстная реклама —
        • SEO для интернет-магазинов —
        • Продвижение сайтов
      Проекты
      • Внедрение 1С
      • Создание WEB Сайтов
      Компания
      • О компании
      • Партнеры
      • Реквизиты
      • Вопрос ответ
      Пресс-центр
      Контакты
        IT Студия Programmist1C
        IT Студия Programmist1C
        • Услуги
          • Назад
          • Услуги
          • Внедрение и сопровождение 1С
            • Назад
            • Внедрение и сопровождение 1С
            • Маркировка импорта обуви
            • Hастройка 1С
            • Обслуживание 1С
            • Программирование 1С
            • Доработка 1С
            • Автоматизация 1С
            • Сопровождение 1С
            • Внедрение 1С
          • Создание сайтов
            • Назад
            • Создание сайтов
            • Посадочные страницы
            • Корпоративные сайты
            • Интернет-магазины
          • Битрикс24
            • Назад
            • Битрикс24
            • Техническая поддержка Битрикс24
            • Внедрение Битрикс24
            • Интеграции Битрикс24
          • Реклама и продвижение
            • Назад
            • Реклама и продвижение
            • Оптимизация сайтов
            • Контекстная реклама
            • SEO для интернет-магазинов
            • Продвижение сайтов
        • Проекты
          • Назад
          • Проекты
          • Внедрение 1С
          • Создание WEB Сайтов
        • Компания
          • Назад
          • Компания
          • О компании
          • Партнеры
          • Реквизиты
          • Вопрос ответ
        • Пресс-центр
        • Контакты
        • +7 (985) 141-74-63
        info@programmist1c.ru
        Москва, ул. Генерала Кузнецова, 17Б
        • Главная
        • Примеры программирования

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

        Мы всегда на связи
        Заказать звонок
        Написать сообщение
        Как в запросе отобрать только табличные части с указанным условием и не заполненные.
        Автор статьи: Гений 1С | Редакторы:
        Последняя редакция №3 от 23.08.06 |


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


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

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

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


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


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

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

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


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

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

        Идем дальше


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

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


        То есть соединить справочник сотрудников с самим собой.
        При этом в поле Дети будут уже не ТаблицаЗначений, а РезультатЗапроса (преобразуется к ТЗ методом Выгрузить). Но зато в тех таблицах, где нет данных, будут пустые таблицы значений.
        Услуги
        Внедрение и сопровождение 1С
        Создание сайтов
        Битрикс24
        Реклама и продвижение
        Компания
        О компании
        Партнеры
        Реквизиты
        Вопрос ответ
        Проекты
        Пресс-центр
        Контакты
        Возможности
        Подписка на рассылку
        +7 (985) 141-74-63
        Заказать звонок
        info@programmist1c.ru
        Москва, ул. Генерала Кузнецова, 17Б
        Версия для печати
        Политика конфиденциальности
        © 2021 Все права защищены.
        Заказать звонок
        Написать сообщение