Имя: Пароль:
1C
 
Непонятная ситуация в запросе
,
0 mikecool
 
19.03.15
17:04
Тестовый запрос:

ВЫБРАТЬ
    Неопределено Как ЗаказКлиента,
    150000 Как Сумма,
    150000 Как КОплате,
    ВЫРАЗИТЬ(&АналитикаУчетаПоПартнерам КАК Справочник.КлючиАналитикиУчетаПоПартнерам) КАК АналитикаУчетаПоПартнерам
ПОМЕСТИТЬ _ВТ_ДанныеДляПроверки
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
выбор когда _ВТ_ДанныеДляПроверки.ЗаказКлиента = Неопределено Тогда
    _ВТ_ДанныеДляПроверки.ЗаказКлиента
иначе
    ВЫБОР
        КОГДА _ВТ_ДанныеДляПроверки.ЗаказКлиента ссылка Документ.ЗаказКлиента
            ТОГДА ВЫРАЗИТЬ(_ВТ_ДанныеДляПроверки.ЗаказКлиента КАК Документ.ЗаказКлиента).Договор
        КОГДА _ВТ_ДанныеДляПроверки.ЗаказКлиента ССЫЛКА Справочник.ДоговорыКонтрагентов
            ТОГДА _ВТ_ДанныеДляПроверки.ЗаказКлиента
        ИНАЧЕ _ВТ_ДанныеДляПроверки.ЗаказКлиента
    КОНЕЦ
конец КАК Договор,
    СУММА(ВЫБОР
            КОГДА _ВТ_ДанныеДляПроверки.Сумма > _ВТ_ДанныеДляПроверки.КОплате
                ТОГДА _ВТ_ДанныеДляПроверки.Сумма
            ИНАЧЕ _ВТ_ДанныеДляПроверки.КОплате
        КОНЕЦ) КАК Сумма,
    _ВТ_ДанныеДляПроверки.АналитикаУчетаПоПартнерам.Контрагент КАК Контрагент
//ПОМЕСТИТЬ _ВТ_Данные
ИЗ
    _ВТ_ДанныеДляПроверки КАК _ВТ_ДанныеДляПроверки

СГРУППИРОВАТЬ ПО
выбор когда _ВТ_ДанныеДляПроверки.ЗаказКлиента = Неопределено Тогда
    _ВТ_ДанныеДляПроверки.ЗаказКлиента
иначе
    ВЫБОР
        КОГДА _ВТ_ДанныеДляПроверки.ЗаказКлиента ССЫЛКА Документ.ЗаказКлиента
            ТОГДА ВЫРАЗИТЬ(_ВТ_ДанныеДляПроверки.ЗаказКлиента КАК Документ.ЗаказКлиента).Договор
        КОГДА _ВТ_ДанныеДляПроверки.ЗаказКлиента ССЫЛКА Справочник.ДоговорыКонтрагентов
            ТОГДА _ВТ_ДанныеДляПроверки.ЗаказКлиента
        ИНАЧЕ _ВТ_ДанныеДляПроверки.ЗаказКлиента
    КОНЕЦ
конец ,
    _ВТ_ДанныеДляПроверки.АналитикаУчетаПоПартнерам.Контрагент


падает с ошибкой: {ВнешняяОбработка.КонсольЗапросов_82.МодульОбъекта(55)}: Ошибка при вызове метода контекста (ВыполнитьПакет): {(15, 44)}: Несовместимые типы "ССЫЛКА"
КОГДА _ВТ_ДанныеДляПроверки.ЗаказКлиента <<?>>ссылка Документ.ЗаказКлиента

однако запрос

Выбрать Неопределено Как Поле
Поместить _ВТ
;

Выбрать Выбор когда _ВТ.Поле = Неопределено Тогда 1 Иначе 0 конец

возвращает 1

что же не так в первом запросе?
1 mikecool
 
19.03.15
17:04
+0 то бишь не проходит условие
выбор когда _ВТ_ДанныеДляПроверки.ЗаказКлиента = Неопределено Тогда
2 n0ther
 
19.03.15
17:10
а в чем хитрость запроса?

ВЫБРАТЬ
    Неопределено Как ЗаказКлиента,
    150000 Как Сумма,
    150000 Как КОплате,
    ВЫРАЗИТЬ(&АналитикаУчетаПоПартнерам КАК Справочник.КлючиАналитикиУчетаПоПартнерам) КАК АналитикаУчетаПоПартнерам
ПОМЕСТИТЬ _ВТ_ДанныеДляПроверки
;
3 mikecool
 
19.03.15
17:12
(2) тестовые данные, в оригинале - таблица значений
4 User_Agronom
 
19.03.15
17:15
(2) Из этой строки что то выбрать
5 Drac0
 
19.03.15
17:16
(0) Тоже пару раз нарывался на такое при использовании ССЫЛКА. Заменял другими конструкциями.
6 Крошка Ру
 
19.03.15
17:18
(3) Поменяй условия на ТИПЗНАЧЕНИЯ() = ТИП()
7 mikecool
 
19.03.15
17:19
(5) заменил на ТипЗначения и сравнение - все равно идет далее и вроде как ТипЗначения = Документ.ЗаказКлиента
совсем перестал понимать )
8 salvator
 
19.03.15
17:20
А обязательно Неопределено? Попробуй на NULL заменить.
9 elCust
 
19.03.15
17:21
Запрос большой я написал,
Там связей кучу я создал,
Я сделал кучу группировок,
Я вывел общие итоги,
Что за таблетки дай еще.
10 mikecool
 
19.03.15
17:21
(8)
пробовал преобразовать тз
    СтрокиНеопределено = ДанныеДляПроверки.НайтиСтроки(Новый Структура("ЗаказКлиента", Неопределено));
    Для Каждого Строка Из СтрокиНеопределено Цикл
        Строка.ЗаказКлиента = NULL;
    КонецЦикла;
в результате тип значения в строках = Неопределено
11 mikecool
 
19.03.15
17:22
12 Aceforg
 
19.03.15
17:29
(10) Зачем неопределено? Используй пустую ссылку
13 salvator
 
19.03.15
17:31
(10) А в цикл-то заходит? Строки реально с неопределено?
14 mikecool
 
19.03.15
17:32
(12) падает аналогично:
ВЫБРАТЬ
    Значение(Справочник.ДоговорыКонтрагентов.ПустаяСсылка) Как ЗаказКлиента,
    150000 Как Сумма,
    150000 Как КОплате,
    ВЫРАЗИТЬ(&АналитикаУчетаПоПартнерам КАК Справочник.КлючиАналитикиУчетаПоПартнерам) КАК АналитикаУчетаПоПартнерам
ПОМЕСТИТЬ _ВТ_ДанныеДляПроверки
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
выбор когда _ВТ_ДанныеДляПроверки.ЗаказКлиента = Значение(Справочник.ДоговорыКонтрагентов.ПустаяСсылка) Тогда
    _ВТ_ДанныеДляПроверки.ЗаказКлиента
иначе
    ВЫБОР
        КОГДА ТипЗначения(_ВТ_ДанныеДляПроверки.ЗаказКлиента) = Тип(Документ.ЗаказКлиента)
            ТОГДА ВЫРАЗИТЬ(_ВТ_ДанныеДляПроверки.ЗаказКлиента КАК Документ.ЗаказКлиента).Договор
        КОГДА _ВТ_ДанныеДляПроверки.ЗаказКлиента ССЫЛКА Справочник.ДоговорыКонтрагентов
            ТОГДА _ВТ_ДанныеДляПроверки.ЗаказКлиента
{ВнешняяОбработка.КонсольЗапросов_82.МодульОбъекта(55)}: Ошибка при вызове метода контекста (ВыполнитьПакет): {(16, 10)}: Несовместимые типы "ВЫРАЗИТЬ"
ТОГДА <<?>>ВЫРАЗИТЬ(_ВТ_ДанныеДляПроверки.ЗаказКлиента КАК Документ.ЗаказКлиента).Договор
15 mikecool
 
19.03.15
17:33
(13) заходит, подменяет
16 mikecool
 
19.03.15
17:35
условие выбор когда _ВТ_ДанныеДляПроверки.ЗаказКлиента = Значение(Справочник.ДоговорыКонтрагентов.ПустаяСсылка) Тогда

не отрабатывает и в этом случае
17 salvator
 
19.03.15
17:38
Вот так попробуй:

выбор когда ТИПЗНАЧЕНИЯ(_ВТ_ДанныеДляПроверки.ЗаказКлиента) = ТИПЗНАЧЕНИЯ(Неопределено) Тогда
    _ВТ_ДанныеДляПроверки.ЗаказКлиента
иначе
    ВЫБОР
        КОГДА ТИПЗНАЧЕНИЯ(_ВТ_ДанныеДляПроверки.ЗаказКлиента) = ТИП(Документ.ЗаказКлиента)
            ТОГДА ВЫРАЗИТЬ(_ВТ_ДанныеДляПроверки.ЗаказКлиента КАК Документ.ЗаказКлиента).Договор
        КОГДА ТИПЗНАЧЕНИЯ(_ВТ_ДанныеДляПроверки.ЗаказКлиента) = ТИП(Справочник.ДоговорыКонтрагентов)
            ТОГДА _ВТ_ДанныеДляПроверки.ЗаказКлиента
        ИНАЧЕ _ВТ_ДанныеДляПроверки.ЗаказКлиента
    КОНЕЦ
конец КАК Договор,
18 mikecool
 
19.03.15
17:39
(17) пробовал, результат аналогичный
19 mikecool
 
19.03.15
17:39
+18 тут уже как бы и с пустой ссылкой не сравнивает )
20 mikecool
 
19.03.15
17:42
как будто предкомпиляция всего запроса идет
21 Aceforg
 
19.03.15
17:55
(17)

ВЫБРАТЬ
    Значение(Справочник.ДоговорыКонтрагентов.ПустаяСсылка) Как ЗаказКлиента,
    150000 Как Сумма,
    150000 Как КОплате,
    ВЫРАЗИТЬ(&АналитикаУчетаПоПартнерам КАК Справочник.КлючиАналитикиУчетаПоПартнерам) КАК АналитикаУчетаПоПартнерам
ПОМЕСТИТЬ _ВТ_ДанныеДляПроверки

Объединить все
ВЫБРАТЬ
    Значение(Документ.ЗаказКлиента.ПустаяСсылка) Как ЗаказКлиента,
    150000 Как Сумма,
    150000 Как КОплате,
    ВЫРАЗИТЬ(&АналитикаУчетаПоПартнерам КАК Справочник.КлючиАналитикиУчетаПоПартнерам) КАК АналитикаУчетаПоПартнерам
22 Aceforg
 
19.03.15
17:59
+ (21) Объединение критично, можно добавить
Объединить все
ВЫБРАТЬ
    Значение(Документ.ЗаказКлиента.ПустаяСсылка) Как ЗаказКлиента
Где Ложь
23 mikecool
 
19.03.15
18:01
(21) фишка в том, что запрос рабочий
проблема составила, когда в него в качестве заказа стало попадать Неопределено и он просто не выбирал данные
решил в консоли его потестить и понеслась (
24 Aceforg
 
19.03.15
18:12
(22) Так сравнивай с Типзначения(НЕОПРЕДЕЛЕНО)
25 Ёпрст
 
19.03.15
18:13
а так че ?


ВЫБРАТЬ
    NULL КАК ЗаказКлиента
ПОМЕСТИТЬ _ВТ_ДанныеДляПроверки
;

ВЫБРАТЬ
    ВЫБОР
        КОГДА _ВТ_ДанныеДляПроверки.ЗаказКлиента ЕСТЬ NULL Тогда ....
26 Aceforg
 
19.03.15
18:17
(25) Какбы NULL не равно Неопределно

ВЫБРАТЬ
    Выбор Когда NULL = Неопределено
        Тогда
            1
        Иначе
        0
    Конец    
выведет 0
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.