Имя: Пароль:
1C
1С v8
v8: Ошибка оператора ВЫБОР в 8.2
0 vvp117
 
30.03.12
08:42
Конфигурация: ЛЮБАЯ
Версия конфигурации: НЕ ВАЖНО
Платформа: 8.2.15.294 или 8.2.15.301
Режим совместимости: НЕ ВАЖНО
Суть ошибки: оператор ВЫБОР игнорирует очевидные условия :)

Чтобы проверить, достаточно вот такого кода:

ВЫБРАТЬ
   Организация.ВерсияДанных КАК ВерсияДанных1,
   ВЫБОР
       КОГДА ИСТИНА ТОГДА
           Организация.ВерсияДанных
       ИНАЧЕ
           "TEST"
       КОНЕЦ КАК ВерсияДанных2
ИЗ
   Справочник.Организация КАК Организация

Почему-то в поле [ВерсияДанных2] выводится пустая строка, хотя должно выводится то же, что и в поле [ВерсияДанных1].

Вопрос: что я делаю не так?
1 andrewks
 
30.03.12
08:44
а если так?

КОГДА ЛОЖЬ ТОГДА
           "TEST"
       ИНАЧЕ
           Организация.ВерсияДанных
       КОНЕЦ КАК ВерсияДанных2
2 vvp117
 
30.03.12
08:45
(1) то же
3 vvp117
 
30.03.12
08:52
вообще пробовал уже и так:

ВЫБРАТЬ
   Организация.ВерсияДанных КАК ВерсияДанных1,
   ВЫБОР
       КОГДА ИСТИНА ТОГДА
           ВЫРАЗИТЬ(Организация.ВерсияДанных КАК СТРОКА(50))
       ИНАЧЕ
           "TEST"
       КОНЕЦ КАК ВерсияДанных2
ИЗ
   Справочник.Организация КАК Организация

выдается ошибка несовместимости типа данных

и так:

ВЫБРАТЬ
   Организация.ВерсияДанных КАК ВерсияДанных1,
   ВЫБОР
       КОГДА ИСТИНА ТОГДА
           ПРЕДСТАВЛЕНИЕ(Организация.ВерсияДанных)
       ИНАЧЕ
           "TEST"
       КОНЕЦ КАК ВерсияДанных2
ИЗ
   Справочник.Организация КАК Организация

ничего не помогает (((
4 КМ155
 
30.03.12
08:58
(3) и не поможет,
ты же не можешь для ВерсияДанных сделать примитивное ВЫРАЗИТЬ(Организация.ВерсияДанных КАК СТРОКА(128))
хотя ТипЗнч(Организация.ВерсияДанных) - строка
5 andrewks
 
30.03.12
08:58
проверил на 289-м - всё гуд
6 rs_trade
 
30.03.12
09:01
это касается только поля версия данных. поменяй на наименование и все заработает
7 andrewks
 
30.03.12
09:03
(6) ага, я как раз на нём и проверял :)
8 КМ155
 
30.03.12
09:05
(4) ещё прикольнее следующий код, который вернёт NULL
                           ВЫБРАТЬ
   ВложенныйЗапрос.флаг,
   ВложенныйЗапрос.Ссылка,
   ВложенныйЗапрос.ВерсияДанных
ИЗ
   (ВЫБРАТЬ
       1 КАК флаг,
       Организации.Ссылка КАК Ссылка,
       Организации.ВерсияДанных КАК ВерсияДанных
   ИЗ
       Справочник.Организации КАК Организации
   
   ОБЪЕДИНИТЬ ВСЕ
   
   ВЫБРАТЬ
       2,
       Организации.Ссылка,
       "Нах"
   ИЗ
       Справочник.Организации КАК Организации) КАК ВложенныйЗапрос
ГДЕ
   ВложенныйЗапрос.флаг = 1
9 КМ155
 
30.03.12
09:07
(8) резюме - получить результат можно только разименованием:
ВЫБРАТЬ
   ВложенныйЗапрос.флаг,
   ВложенныйЗапрос.Ссылка,
   ВложенныйЗапрос.ВерсияДанных,
   ВложенныйЗапрос.Наименование,
   Организации.ВерсияДанных КАК ВерсияДанных1
ИЗ
   (ВЫБРАТЬ
       1 КАК флаг,
       Организации.Ссылка КАК Ссылка,
       Организации.ВерсияДанных КАК ВерсияДанных,
       Организации.Наименование КАК Наименование
   ИЗ
       Справочник.Организации КАК Организации
   
   ОБЪЕДИНИТЬ ВСЕ
   
   ВЫБРАТЬ
       2,
       Организации.Ссылка,
       "Нах",
       Организации.Наименование
   ИЗ
       Справочник.Организации КАК Организации) КАК ВложенныйЗапрос
       ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Организации КАК Организации
       ПО ВложенныйЗапрос.Ссылка = Организации.Ссылка
ГДЕ
   ВложенныйЗапрос.флаг = 1
10 vvp117
 
30.03.12
09:08
(6), в том то и фишка, что мне требуется поле [ВерсияДанных], я по нему определяю изменялся ли объект.
(8), у меня такой запрос вернул это:
флаг    Ссылка    ВерсияДанных
1    Тестовая    AAAAAAEAAAA=
11 vvp117
 
30.03.12
09:20
(9), идиотизм... вот так работает корректно:

ВЫБРАТЬ
   ВложенныйЗапрос.флаг,
   ВложенныйЗапрос.Ссылка,
   ВЫБОР
       КОГДА ИСТИНА ТОГДА
           ВложенныйЗапрос.ВерсияДанных
       ИНАЧЕ
           "ПЫЩЬ"
       КОНЕЦ КАК ВерсияДанных
ИЗ
   (ВЫБРАТЬ
       1 КАК флаг,
       Организации.Ссылка КАК Ссылка,
       Организации.ВерсияДанных КАК ВерсияДанных,
       Организации.Наименование КАК Наименование
   ИЗ
       Справочник.Организация КАК Организации
   
   ОБЪЕДИНИТЬ ВСЕ
   
   ВЫБРАТЬ
       2,
       Организации.Ссылка,
       "Нах",
       Организации.Наименование
   ИЗ
       Справочник.Организация КАК Организации
       ) КАК ВложенныйЗапрос
       ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Организация КАК Организации
       ПО ВложенныйЗапрос.Ссылка = Организации.Ссылка
ГДЕ
   ВложенныйЗапрос.флаг = 1

а если второй юнион убрать, то не работает... *facepalm*
12 КМ155
 
30.03.12
09:26
(11) тебе  с шашечками или ехать ?
13 vvp117
 
30.03.12
09:44
(12), пожалуй, поеду))
спасиб за помощь, вопрос закрыт
PS: но косяк в платформе с полем [ВерсияДанных] есть, и это печально...
14 rs_trade
 
30.03.12
10:34
SELECT
T1._Version,
0x06,
'',
0,
0
FROM _Reference68 T1 WITH(NOLOCK)

вот запрос в который превращается исходный запрос.
15 rs_trade
 
30.03.12
10:36
вот запрос, если вместо версии данных в выборе, подставить наименование

SELECT
T1._Version,
T1._Description
FROM _Reference68 T1 WITH(NOLOCK)
Основная теорема систематики: Новые системы плодят новые проблемы.