Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

10.01.2017, 14:44. Просмотров 320. Ответов 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             
ИЗ                  
    РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация               
ГДЕ                 
    КонтактнаяИнформация.Вид = &Вид             
    И КонтактнаяИнформация.Объект = &Объект
Далее практическим методом выяснил, когда показывает значение "Пустая строка", если в строке представления первым стоит пробел, а потом идёт текст.
А мне нужно вывести\узнать результат, когда строки вообще нет...
Кучу статей в инете и на данном форуме перекопал - безрезультатно...

Подскажите куда копать?
0
Миниатюры
Проверка в запросе на отсутствующую строку  
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.01.2017, 14:44
Я подобрал для вас темы с готовыми решениями и ответами на вопрос 1C 8.x Проверка в запросе на отсутствующую строку (1С):

Проверка типа параметра в запросе - 1С
Всем привет, имеется условие запроса типа вида где (ИсторияЗаявокНаРасчет.КодТНВЭД = &КодТНВЭД или...

СУММА в запросе складывает 1 строку 2 раза - 1С
Строка суммирования, какое надо условие поставить чтобы ,если только 1 товар то не складывать саму себя 2 раза ...

Что быстрее, проверка на null, или проверка на тип перечисления в запросе? - 1С
вопрос такой. если несколько таблиц. сходных по структуре в запросе. в первой таблице типТовара = перечисление.тратата.набор во...

Отклик сервера на отсутствующую страницу - Web-серверы
Согласно рекомендации Яндекса, при отсутствии запрашиваемой страницы сервер должен выдавать браузеру и поисковой системе отклик 404. Так...

Проверка в запросе - Delphi
Доброго времени суток! Подскажите, пож., как сделать! Использую Делфи + Аксес. Делаю запрос на изменение: из значения поля Ostatok...

Проект требует отсутствующую библиотеку acntBuilderXE2_R.lib - C++ Builder
Вобщем поставил XE2 До этого стояла 2010 далее поставил AlphaControls (5 рас переустанавливал)=-O И при компиляции вылетает Все...

7
Phil
Эксперт 1С
236 / 237 / 70
Регистрация: 28.05.2014
Сообщений: 880
10.01.2017, 16:01 #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 
            ТОГДА "Пустая Строка"
        ИНАЧЕ ВТ_КонтактнаяИнформация.Представление
    КОНЕЦ КАК КонтактнаяИнформация
ИЗ
    Перечисление.ТипыКонтактнойИнформации КАК ТипыКонтактнойИнформации
        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_КонтактнаяИнформация КАК ВТ_КонтактнаяИнформация
        ПО ТипыКонтактнойИнформации.Ссылка = ВТ_КонтактнаяИнформация.Тип
должно работать
1
Neophyte1C
6 / 6 / 5
Регистрация: 18.08.2016
Сообщений: 78
10.01.2017, 16:09  [ТС] #3
Phil, "Пустые строки" по типам показал, дальше буду допиливать, чтобы свою задачу сделать, пасиб)
0
Neophyte1C
6 / 6 / 5
Регистрация: 18.08.2016
Сообщений: 78
11.01.2017, 10:09  [ТС] #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"));                         
    Запрос.УстановитьПараметр("Тип",Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты);
    Запрос.УстановитьПараметр("Объект",СсылкаНаОбъект);
            
    Результат = Запрос.Выполнить();
    Если Результат.Пустой() Тогда       
          Сообщить("Пусто.");                            
    Иначе Выборка = Результат.Выбрать();
        Если Выборка.Следующий() Тогда
            Сообщить(Выборка.Представление);
        КонецЕсли;
   КонецЕсли;
Но только нужно пройтись по всем контрагентам, а не по одному, желательно циклом... Но вроде как в запросе метод проверки Пустой() в цикле не работает?
0
Миниатюры
Проверка в запросе на отсутствующую строку  
Dethmontt
Модератор
Эксперт 1С
2561 / 2369 / 386
Регистрация: 10.03.2011
Сообщений: 8,363
Записей в блоге: 1
Завершенные тесты: 1
11.01.2017, 10:59 #5
Neophyte1C, масло какое-то масляное....

Добавлено через 11 секунд
1C
1
2
3
4
5
6
7
8
9
10
ВЫБРАТЬ
    КонтактнаяИнформация.Объект,
    КонтактнаяИнформация.Тип,
    КонтактнаяИнформация.Вид,
    КонтактнаяИнформация.Представление КАК РеальноеПредставление,
        "Пустая Строка" КАК Представление
ИЗ
    РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
ГДЕ
    ПОДСТРОКА(КонтактнаяИнформация.Представление, 1, 2) = "  "
0
Neophyte1C
6 / 6 / 5
Регистрация: 18.08.2016
Сообщений: 78
11.01.2017, 11:06  [ТС] #6
Dethmontt, суть вопроса моего, мне нужно пройтись по всем контрагентам и проверить, есть ли в них заполненный Email 1 (Справочники.ВидыКонтактнойИнформации.НайтиПоКоду("000000013")), если он не заполнен - сообщить мне об этом.
А у некоторых контрагентов эта строка вообще пустая, не заполнена - соответственно неактивная и вот тут у меня затык и возникает.
Поэтому ковырял консоль запросов со сложным запросом, где практическим методом выяснил, когда показывает значение "Пустая строка", если в строке представления первым стоит пробел, а потом идёт текст.
А мне нужно вывести\узнать результат, когда строки вообще нет...
0
Dethmontt
Модератор
Эксперт 1С
2561 / 2369 / 386
Регистрация: 10.03.2011
Сообщений: 8,363
Записей в блоге: 1
Завершенные тесты: 1
11.01.2017, 12:22 #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 
    И НЕ Контрагенты.ЭтоГруппа
1
Neophyte1C
6 / 6 / 5
Регистрация: 18.08.2016
Сообщений: 78
11.01.2017, 12:41  [ТС] #8
Dethmontt, спасибо, вы гений...)
Осталось мне понять суть вашего запроса...
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.01.2017, 12:41
Привет! Вот еще темы с ответами:

Проверка даты в запросе sql - PHP БД
Сначала спрошу если пользователь выполнил действие, и поставить setTimeout (5 минут) на выполнение ajax запроса к php скрипту и...

Проверка на корректность ввода в запросе - SQL Server
Как в самом запросе проверить:есть ли в базе такое же число,которое вноситься? То есть,у меня есть таблица T |Depo|Stat 12 |35 |1 ...

Проверка переданного параметра в Get запросе - Java EE
Есть сервлет, который слушает урл /test. Get запросом может передаваться параметр ?test=2. Как проверить, был ли передан параметр или нет?...

Проверка результата выражения в sql-запросе - C#
Есть в программе запрос к базе данных select name, tip, sum(kol * ves) as summa from Tovar group by name order by name По этому запросу...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

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