среда, 23 августа 2017 г.

Проверка на пустоту в запросе


Как обычно проверяют запрос пустой или нет?

Конечно через (Выборка.Количество()<>0), но это не совсем правильно.

Запрос = Новый Запрос;

Запрос.Текст =

"ВЫБРАТЬ Ссылка

|ИЗ Справочник.Контрагенты КАК Контрагенты";

Результат = Запрос.Выполнить();

Если Результат.Пустой() Тогда

Возврат Ложь;

Иначе

Возврат Истина;

КонецЕсли; 
 
 
Проверка на пустоту в самом Запросе

Основноя фишка задач что нужно проверить есть данные или нет в ТЧ справочника .
В запросе мы делаем вложенный запрос и группируем его. В итоговом делаем проверку на НУЛЛ

Совместное решение 2 задач

Практикум №2.4

При отображении списка справочника «_ДемоПартнеры» создайте колонку «ЕстьКонтактнаяИнформация», в колонке должна отображаться флажок, если для данного партнера в базе хранится хоть что-то из контактной информации (телефон, адрес и т.п.)

Практикум №2.5

Усложенение предыдущего задания: в колонке «ЕстьКонтактнаяИнформация» надо отдельными пиктограммами отображать ситуации: полная контактная информация (есть и Телефон и Адрес и Email партнера), частичная контактная информация (есть хоть что-то из вышепривенного списка, но не все), нет контактной информации.

ВЫБРАТЬ
    Справочник_ДемоПартнеры.Ссылка,
    Справочник_ДемоПартнеры.ПометкаУдаления,
    Справочник_ДемоПартнеры.Предопределенный,
    Справочник_ДемоПартнеры.Родитель,
    Справочник_ДемоПартнеры.ЭтоГруппа,
    Справочник_ДемоПартнеры.Код,
    Справочник_ДемоПартнеры.Наименование,
    Справочник_ДемоПартнеры.Клиент,
    Справочник_ДемоПартнеры.Поставщик,
    Справочник_ДемоПартнеры.Конкурент,
    Справочник_ДемоПартнеры.ПрочиеОтношения,
    ВЫБОР
        КОГДА ВложенныйЗапрос.Телефон есть Null
                И ВложенныйЗапрос2.Email есть Null
                И ВложенныйЗапрос3.Адрес есть Null
            ТОГДА 3
        КОГДА НЕ ВложенныйЗапрос.Телефон есть Null

                И НЕ ВложенныйЗапрос2.Email есть Null

                И НЕ ВложенныйЗапрос3.Адрес есть Null
            ТОГДА 2
        ИНАЧЕ 1
    КОНЕЦ КАК ЕстьКИ

ИЗ
    Справочник._ДемоПартнеры КАК Справочник_ДемоПартнеры
        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            _ДемоПартнерыКонтактнаяИнформация.Ссылка КАК Ссылка,
            МАКСИМУМ(_ДемоПартнерыКонтактнаяИнформация.Представление) КАК Телефон
        ИЗ
            Справочник._ДемоПартнеры.КонтактнаяИнформация КАК _ДемоПартнерыКонтактнаяИнформация
        ГДЕ
            _ДемоПартнерыКонтактнаяИнформация.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Телефон)
       
        СГРУППИРОВАТЬ ПО
            _ДемоПартнерыКонтактнаяИнформация.Ссылка
) КАК ВложенныйЗапрос
        ПО Справочник_ДемоПартнеры.Ссылка = ВложенныйЗапрос.Ссылка
        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            _ДемоПартнерыКонтактнаяИнформация.Ссылка КАК Ссылка,
            МАКСИМУМ(_ДемоПартнерыКонтактнаяИнформация.Представление) КАК Email
        ИЗ
            Справочник._ДемоПартнеры.КонтактнаяИнформация КАК _ДемоПартнерыКонтактнаяИнформация
        ГДЕ
            _ДемоПартнерыКонтактнаяИнформация.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.АдресЭлектроннойПочты)
       
        СГРУППИРОВАТЬ ПО
            _ДемоПартнерыКонтактнаяИнформация.Ссылка) КАК ВложенныйЗапрос2
        ПО Справочник_ДемоПартнеры.Ссылка = ВложенныйЗапрос2.Ссылка
        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            _ДемоПартнерыКонтактнаяИнформация.Ссылка КАК Ссылка,
            МАКСИМУМ(_ДемоПартнерыКонтактнаяИнформация.Представление) КАК Адрес
        ИЗ
            Справочник._ДемоПартнеры.КонтактнаяИнформация КАК _ДемоПартнерыКонтактнаяИнформация
        ГДЕ
            _ДемоПартнерыКонтактнаяИнформация.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.АдресЭлектроннойПочты)
       
        СГРУППИРОВАТЬ ПО
            _ДемоПартнерыКонтактнаяИнформация.Ссылка) КАК ВложенныйЗапрос3
        ПО Справочник_ДемоПартнеры.Ссылка = ВложенныйЗапрос3.Ссылка

Комментариев нет:

Отправить комментарий

Печать чека ККМ из драйвера ККМ

Суть проблемы: Пробиваем чек из 1С: Бухгалтерии. Чек пробит не  правильно. Теперь нужно сделать чек коррекции. Но в программе это сделать н...