Имя: Пароль:
1C
1С v8
Сложный Выбор когда в запросе
, ,
0 1С-ница
 
30.05.13
11:59
Документооборот 1.2.8.1
Нужно через запрос получить нужный адрес корреспондента
Корреспонденты.КонтактнаяИнформация.(
       ВЫБОР
           КОГДА Корреспонденты.ЮрФизЛицо = ЗНАЧЕНИЕ(Перечисление.ЮрФизЛицо.ЮрЛицо)
                   ИЛИ Корреспонденты.ЮрФизЛицо = ЗНАЧЕНИЕ(Перечисление.ЮрФизЛицо.ИндивидуальныйПредприниматель)
               ТОГДА ВЫБОР
                       КОГДА Корреспонденты.КонтактнаяИнформация.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.ПочтовыйАдресКорреспондента)
                           ТОГДА Корреспонденты.КонтактнаяИнформация.Представление
                       ИНАЧЕ ВЫБОР
                               КОГДА Корреспонденты.КонтактнаяИнформация.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.ФактическийАдресКорреспондента)
                                   ТОГДА Корреспонденты.КонтактнаяИнформация.Представление
                               ИНАЧЕ ""
                           КОНЕЦ
                   КОНЕЦ
           ИНАЧЕ ВЫБОР
                   КОГДА Корреспонденты.ЮрФизЛицо = ЗНАЧЕНИЕ(Перечисление.ЮрФизЛицо.ФизЛицо)
                       ТОГДА ВЫБОР
                               КОГДА Корреспонденты.КонтактнаяИнформация.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.ДомашнийАдресФизическогоЛица)
                                   ТОГДА Корреспонденты.КонтактнаяИнформация.Представление
                               ИНАЧЕ ""
                           КОНЕЦ
               КОНЕЦ
       КОНЕЦ КАК Адрес


Почему то это условие не корректно срабатывает, т е выдает ни один адрес, а пустые строки.
1 salvator
 
30.05.13
12:05
Ну видимо сюда заходит:
ИНАЧЕ ""
Не?
2 Wobland
 
30.05.13
12:08
или просто девушка видит ТЗ, а думает, что строку
3 mikecool
 
30.05.13
12:10
(1) +1
4 Maxus43
 
30.05.13
12:10
ИНАЧЕ ВЫБОР писать не обязательно, если позволяет логика.
Когда ... Тогда...
Когда ... Тогда...
5 Лефмихалыч
 
30.05.13
12:10
а почему нелья просто вывести просто вид контактной информации, какой он там в таблице записан без этих извращений?
6 1С-ница
 
30.05.13
12:44
(2) выводится ТЗ, а нужно строку
7 1С-ница
 
30.05.13
12:45
(4) если не писать Иначе 1С ругается
8 1С-ница
 
30.05.13
12:46
(5) потому что почтовый адрес может отличаться от фактического, но если почтовый адрес не заполнен то нужно выводить фактический
9 Cube
 
30.05.13
12:47
(7) Ну ё-моё...

Выбор Когда А = 1 Тогда "Адин"
Когда А = 2 Тогда "Два"
Когда А = 3 Тогда "Три!"
Иначе "Многа"
Конец
10 1С-ница
 
30.05.13
12:51
(9)если написать Иначе "Многа" то строка с этим значением и будет выведена, а мне этого не нужно!
11 salvator
 
30.05.13
12:52
(6) Так выводи поле, а не таблицу значений.
12 Wobland
 
30.05.13
12:52
(10) вот это ты сейчас про ГДЕ говоришь
13 Любопытная
 
30.05.13
12:53
(10) А что надо?
14 1С-ница
 
30.05.13
12:54
Если писать Выбор когда в условии Где ругается что нельзя там такое писать...
15 vicof
 
30.05.13
12:55
(14) епрст, убери уже эту вложенную выборку.
16 Wobland
 
30.05.13
12:56
(14) или включи голову, или сформулируй задачу
17 1С-ница
 
30.05.13
13:06
Есть справочник Корреспонденты:
Если вид коррреспондента Юр лицо, то выводить почтовый адрес (если заполнен), если почтовый не заполнен - то выводить фактический, если не заполнен - не выводить ничего
18 1С-ница
 
30.05.13
13:13
(11) Нужно вывести только то что удовлетворяет условию, иначе не выводить НИЧЕГО!
19 Wobland
 
30.05.13
13:14
это ж не обязательно в запросе делать?
20 1С-ница
 
30.05.13
13:16
(19) Сам отчет сделан в СКД, моя задача была дополнительно выводить адреса
21 Светлый Гений
 
30.05.13
13:19
(0)много лишнего наворотила, попробуй оптимизировать
22 1С-ница
 
30.05.13
13:20
(21)который день пробую...
23 Светлый Гений
 
30.05.13
13:20
Корреспонденты.КонтактнаяИнформация.Вид кроме как "почтовый адрес" и "фактический адрес" может иметь еще какие-то значения?
24 Светлый Гений
 
30.05.13
13:21
+(23) для юрика и ИП
25 1С-ница
 
30.05.13
13:23
(23) может иметь юрид адрес, телефон, e-mail
26 Wobland
 
30.05.13
13:25
выбор когда ЮрЛицо и ПочтовыйАдрес тогда Адрес
когда ЮрЛицо и ФактическийАдрес тогда Адрес
иначе ""
конец
27 Светлый Гений
 
30.05.13
13:31
попробуй для начала вывести такую конструкцию:


Корреспонденты.КонтактнаяИнформация.(
       ВЫБОР
           КОГДА Корреспонденты.КонтактнаяИнформация.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.ПочтовыйАдресКорреспондента) ИЛИ ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.ФактическийАдресКорреспондента) ТОГДА Корреспонденты.КонтактнаяИнформация.Представление
ИНАЧЕ "" КОНЕЦ


И посмотри, что выведет
28 RomanYS
 
30.05.13
13:42
(0) Если хочешь получить получить адрес просто в колонку (а не таблицей), надо явно делать соединения с табличной частью, а не обращаться к ней через точку. Если надо выводить адреса в зависимости от наличия, то придется делать 2 соединения и использовать
ЕСТЬNULL(ПочтАдреса.Представление, ФактАдреса.Представления)
29 Светлый Гений
 
30.05.13
13:53
+(27) небольшая ошибочка есть, но думаю, разберешься
30 Ненавижу 1С
 
гуру
30.05.13
13:55
я бы убивал всех тех, кто использует вложенные ТЧ в запросах
31 RomanYS
 
30.05.13
14:04
(30) +1 - ни разу не встречал ситуацию, где бы это было полезно
32 RomanYS
 
30.05.13
14:11
+(28) скинь кусок запроса после выражения ИЗ
33 1С-ница
 
30.05.13
16:07
ВЫБРАТЬ
   ВЫБОР
       КОГДА КорреспондентыКонтактнаяИнформация.Ссылка.ЮрФизЛицо = ЗНАЧЕНИЕ(Перечисление.ЮрФизЛицо.ЮрЛицо)
           ТОГДА ВЫБОР
                   КОГДА КорреспондентыКонтактнаяИнформация.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.ПочтовыйАдресКорреспондента)
                       ТОГДА КорреспондентыКонтактнаяИнформация.Представление
                   ИНАЧЕ ВЫБОР
                           КОГДА КорреспондентыКонтактнаяИнформация.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.ФактическийАдресКорреспондента)
                               ТОГДА КорреспондентыКонтактнаяИнформация.Представление
                       КОНЕЦ
               КОНЕЦ
   КОНЕЦ КАК Поле1
ИЗ
   Справочник.Корреспонденты.КонтактнаяИнформация КАК КорреспондентыКонтактнаяИнформация
ГДЕ
   КорреспондентыКонтактнаяИнформация.Ссылка = &Ссылка
34 1С-ница
 
30.05.13
16:08
В такой ситуации выводит ТЗ из 3-х строк, одна из них заполнена, остальные нулы
Независимо от того, куда вы едете — это в гору и против ветра!