Форум программистов, компьютерный форум CyberForum.ru

1С: Собственные программы

Войти
Регистрация
Восстановить пароль
 
Neophyte1C
2 / 2 / 4
Регистрация: 18.08.2016
Сообщений: 50
#1

1C 8.x Проверка в запросе на отсутствующую строку - 1С

10.01.2017, 14:44. Просмотров 197. Ответов 7
Метки нет (Все метки)

Здравствуйте гуру 1С, возник вопрос, как в запросе проверить строку, которой нет?

Делаю так, прописал запрос в консоли запросов, но ничего не получаю...

1C
1
2
3
4
5
6
7
8
9
10
11
ВЫБРАТЬ
    ВЫБОР
        КОГДА (ВЫРАЗИТЬ(КонтактнаяИнформация.Представление КАК СТРОКА(100))) = ""
            ТОГДА "Пустая строка"
        ИНАЧЕ "Не пустая строка"
    КОНЕЦ КАК Поле1
ИЗ
    РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
ГДЕ
    КонтактнаяИнформация.Объект = &Объект
    И КонтактнаяИнформация.Вид = &Вид
С таким кодом тоже пустота...

1C
1
2
3
4
5
6
7
8
9
10
11
ВЫБРАТЬ                 
    ВЫБОР               
        КОГДА ПОДСТРОКА(КонтактнаяИнформация.Представление, 0, 100) ЕСТЬ NULL           
            ТОГДА "Пустая строка"
        ИНАЧЕ "Не пустая строка"            
    КОНЕЦ КАК Поле1             
ИЗ                  
    РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация               
ГДЕ                 
    КонтактнаяИнформация.Вид = &Вид             
    И КонтактнаяИнформация.Объект = &Объект
Далее практическим методом выяснил, когда показывает значение "Пустая строка", если в строке представления первым стоит пробел, а потом идёт текст.
А мне нужно вывести\узнать результат, когда строки вообще нет...
Кучу статей в инете и на данном форуме перекопал - безрезультатно...

Подскажите куда копать?
Миниатюры
Проверка в запросе на отсутствующую строку  
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.01.2017, 14:44     1C 8.x Проверка в запросе на отсутствующую строку
Посмотрите здесь:
1С Проверка типа параметра в запросе
1С Что быстрее, проверка на null, или проверка на тип перечисления в запросе?
Отклик сервера на отсутствующую страницу
Проверка в запросе Delphi
C++ Builder Проект требует отсутствующую библиотеку acntBuilderXE2_R.lib
SQL Server Проверка на корректность ввода в запросе
Проверка даты в запросе sql PHP БД
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Phil
Эксперт 1С
192 / 192 / 53
Регистрация: 28.05.2014
Сообщений: 670
10.01.2017, 16:01     1C 8.x Проверка в запросе на отсутствующую строку #2
Neophyte1C,
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
ВЫБРАТЬ
    КонтактнаяИнформация.Объект,
    КонтактнаяИнформация.Представление,
    КонтактнаяИнформация.Тип
ПОМЕСТИТЬ ВТ_КонтактнаяИнформация
ИЗ
    РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
ГДЕ
    КонтактнаяИнформация.Объект = &объект
    И КонтактнаяИнформация.Вид = &Вид
;
 
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ТипыКонтактнойИнформации.Ссылка,
    ВЫБОР
        КОГДА ВТ_КонтактнаяИнформация.Представление ЕСТЬ NULL 
            ТОГДА "Пустая Строка"
        ИНАЧЕ ВТ_КонтактнаяИнформация.Представление
    КОНЕЦ КАК КонтактнаяИнформация
ИЗ
    Перечисление.ТипыКонтактнойИнформации КАК ТипыКонтактнойИнформации
        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_КонтактнаяИнформация КАК ВТ_КонтактнаяИнформация
        ПО ТипыКонтактнойИнформации.Ссылка = ВТ_КонтактнаяИнформация.Тип
должно работать
Neophyte1C
2 / 2 / 4
Регистрация: 18.08.2016
Сообщений: 50
10.01.2017, 16:09  [ТС]     1C 8.x Проверка в запросе на отсутствующую строку #3
Phil, "Пустые строки" по типам показал, дальше буду допиливать, чтобы свою задачу сделать, пасиб)
Neophyte1C
2 / 2 / 4
Регистрация: 18.08.2016
Сообщений: 50
11.01.2017, 10:09  [ТС]     1C 8.x Проверка в запросе на отсутствующую строку #4
Phil, что-то как-то не совсем то получаю, что мне надо... По идее мне надо что-то аналогично этому запросу получать, если строки заполненной с адресом нет.

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
  Запрос = Новый Запрос;                            
    Запрос.Текст = "ВЫБРАТЬ
                   |    ПОДСТРОКА(КонтактнаяИнформация.Представление, 0, 100) КАК Представление
                   |ИЗ
                   |    РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
                   |ГДЕ
                   |    КонтактнаяИнформация.Вид = &Вид
                   |    И КонтактнаяИнформация.Тип = &Тип
                   |    И КонтактнаяИнформация.Объект = &Объект";                                       
    Запрос.УстановитьПараметр("Вид",Справочники.ВидыКонтактнойИнформации.НайтиПоКоду("000000013"));                         
    Запрос.УстановитьПараметр("Тип",Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты);
    Запрос.УстановитьПараметр("Объект",СсылкаНаОбъект);
            
    Результат = Запрос.Выполнить();
    Если Результат.Пустой() Тогда       
          Сообщить("Пусто.");                            
    Иначе Выборка = Результат.Выбрать();
        Если Выборка.Следующий() Тогда
            Сообщить(Выборка.Представление);
        КонецЕсли;
   КонецЕсли;
Но только нужно пройтись по всем контрагентам, а не по одному, желательно циклом... Но вроде как в запросе метод проверки Пустой() в цикле не работает?
Миниатюры
Проверка в запросе на отсутствующую строку  
Dethmontt
Модератор
Эксперт 1С
2473 / 2282 / 352
Регистрация: 10.03.2011
Сообщений: 7,999
Записей в блоге: 1
Завершенные тесты: 1
11.01.2017, 10:59     1C 8.x Проверка в запросе на отсутствующую строку #5
Neophyte1C, масло какое-то масляное....

Добавлено через 11 секунд
1C
1
2
3
4
5
6
7
8
9
10
ВЫБРАТЬ
    КонтактнаяИнформация.Объект,
    КонтактнаяИнформация.Тип,
    КонтактнаяИнформация.Вид,
    КонтактнаяИнформация.Представление КАК РеальноеПредставление,
        "Пустая Строка" КАК Представление
ИЗ
    РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
ГДЕ
    ПОДСТРОКА(КонтактнаяИнформация.Представление, 1, 2) = "  "
Neophyte1C
2 / 2 / 4
Регистрация: 18.08.2016
Сообщений: 50
11.01.2017, 11:06  [ТС]     1C 8.x Проверка в запросе на отсутствующую строку #6
Dethmontt, суть вопроса моего, мне нужно пройтись по всем контрагентам и проверить, есть ли в них заполненный Email 1 (Справочники.ВидыКонтактнойИнформации.НайтиПоКоду("000000013")), если он не заполнен - сообщить мне об этом.
А у некоторых контрагентов эта строка вообще пустая, не заполнена - соответственно неактивная и вот тут у меня затык и возникает.
Поэтому ковырял консоль запросов со сложным запросом, где практическим методом выяснил, когда показывает значение "Пустая строка", если в строке представления первым стоит пробел, а потом идёт текст.
А мне нужно вывести\узнать результат, когда строки вообще нет...
Dethmontt
Модератор
Эксперт 1С
2473 / 2282 / 352
Регистрация: 10.03.2011
Сообщений: 7,999
Записей в блоге: 1
Завершенные тесты: 1
11.01.2017, 12:22     1C 8.x Проверка в запросе на отсутствующую строку #7
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Neophyte1C, Да чо тут думать то

1. Берем таблицу "Контактная информация" с отбором по нужному типу КИ, помещаем результат в ВТ
2. Берем таблицу контрагентов (без групп) к ней левым соединением ВТ полученную на прошлом шаге и ставим условие на NULL на поле из ВТ

Добавлено через 7 минут
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
ВЫБРАТЬ
    КонтактнаяИнформация.Объект
ПОМЕСТИТЬ ВТ
ИЗ
    РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
ГДЕ
    ПОДСТРОКА(КонтактнаяИнформация.Представление, 1, 2) <> "  "
    И КонтактнаяИнформация.Тип = &Тип
;
 
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Контрагенты.Ссылка,
    &Тип,
    "Пустая строка" КАК Представление
ИЗ
    Справочник.Контрагенты КАК Контрагенты
        ЛЕВОЕ СОЕДИНЕНИЕ ВТ КАК ВТ
        ПО Контрагенты.Ссылка = ВТ.Объект
ГДЕ
    ВТ.Объект ЕСТЬ NULL 
    И НЕ Контрагенты.ЭтоГруппа
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.01.2017, 12:41     1C 8.x Проверка в запросе на отсутствующую строку
Еще ссылки по теме:
Проверка результата выражения в sql-запросе C#
Проверка подставляемых переменных при SQL запросе PHP БД
Delphi БД Учёт регистра при запросе и проверка на вводимые данные
Как распарсить строку в запросе? 1С 1C 8.x
C# Как в запросе достать строку с максимальным id?

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Neophyte1C
2 / 2 / 4
Регистрация: 18.08.2016
Сообщений: 50
11.01.2017, 12:41  [ТС]     1C 8.x Проверка в запросе на отсутствующую строку #8
Dethmontt, спасибо, вы гений...)
Осталось мне понять суть вашего запроса...
Yandex
Объявления
11.01.2017, 12:41     1C 8.x Проверка в запросе на отсутствующую строку
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru