Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 8 общая

Не работает ВЫРАЗИТЬ() для выражения с типом, определённым в ПВХ

Не работает ВЫРАЗИТЬ() для выражения с типом, определённым в ПВХ
Я
   ssalikoff
 
10.11.16 - 03:31
Помогите, пожалуйста, решить задачу.
В запросе получаю значение из таблицы ДополнительныеРеквизитыИСведения.
Тип значения определен в соответствующем ПВХ и задан как Булево.
Возвращаемый запросом тип — Характеристика.ДополнительныеРеквизитыИСведения, но я хочу его явно привести к Булеву. Пытаюсь применить ВЫРАЗИТЬ(), но не работает:
«Ошибка в запросе набора данных
по причине:
{(85, 2)}: Несовместимые типы "ВЫРАЗИТЬ"
<<?>>ВЫРАЗИТЬ(ВложенныйЗапрос.Значение КАК БУЛЕВО) КАК Метка»

Для чего мне вообще нужно приводить тип? Дело в том, что этот запрос используется для формирования динамического списка, и требуется для соответствующего поля установить вид «Поле флажка». А поставить его можно лишь в том случае, если ПутьКДанным имеет тип Булево.
 
 
   youalex
 
1 - 10.11.16 - 07:24
(0) скорее всего, "Возвращаемый запросом тип" - это ссылка ПВХ, а не значение характеристики. Текст запроса?
   Лефмихалыч
 
2 - 10.11.16 - 08:57
ВЫБОР
   КОГДА ВложенныйЗапрос.Значение=Истина
      Тогда истина
   ИНАЧЕ Ложь
КОНЕЦ


но я не удивлюсь, если это во всех строках вернет ложь
   ssalikoff
 
3 - 10.11.16 - 16:41
(2) Я именно так и пробовал, но это не работает:
1С ругается на сравнение ВложенныйЗапрос.Значение=Истина и вываливает ошибку

Существуют ли какие-нибудь ещё обходные манёвры?
   DrShad
 
4 - 10.11.16 - 16:44
весь запрос давай
   ssalikoff
 
5 - 10.11.16 - 16:44
(1) «Возвращаемый запросом тип - это ссылка ПВХ». Конечно, так оно и есть.
А значение характеристики возвращается в самом значении ВложенныйЗапрос.Значение
   Лефмихалыч
 
6 - 10.11.16 - 16:47
(3) (5) что-то из этого - наглая ложь. Сравнивать ссылку с булевом в запросе можно.

Чего ты хочешь-то? Ты сознательно пытаешься преобразовать ссылку к булево. Зачем?
   ssalikoff
 
7 - 10.11.16 - 16:48
ВЫБРАТЬ
    ДокументЗаказКлиента.Ссылка КАК Ссылка,
    ...
    ...
    ЗапросДобавленоНаКарту.Значение КАК НаКарте
    
ИЗ
    Документ.ЗаказКлиента КАК ДокументЗаказКлиента

        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            МАКСИМУМ(ЗаказКлиентаДополнительныеРеквизиты.Значение) КАК Значение,
            ЗаказКлиентаДополнительныеРеквизиты.Ссылка КАК Ссылка
        ИЗ
            Документ.ЗаказКлиента.ДополнительныеРеквизиты КАК ЗаказКлиентаДополнительныеРеквизиты
        ГДЕ
            ЗаказКлиентаДополнительныеРеквизиты.Свойство = &СвойствоДобавленоНаКарту
        
        СГРУППИРОВАТЬ ПО
            ЗаказКлиентаДополнительныеРеквизиты.Ссылка) КАК ЗапросДобавленоНаКарту
        ПО ДокументЗаказКлиента.Ссылка = ЗапросДобавленоНаКарту.Ссылка
   ssalikoff
 
8 - 10.11.16 - 16:48
Спрашиваю про ЗапросДобавленоНаКарту.Значение
   ssalikoff
 
9 - 10.11.16 - 16:49
(6) А зачем мне это нужно я в самом первом посте написал

В конечном счете мне нужно иметь возможность установить поле флажка в форме динамического списка
   Мойдодыр
 
10 - 10.11.16 - 16:52
Делай здесь выразить
 
 Рекламное место пустует
   Мойдодыр
 
11 - 10.11.16 - 16:52
МАКСИМУМ(ЗаказКлиентаДополнительныеРеквизиты.Значение)
   ssalikoff
 
12 - 10.11.16 - 16:52
(10) ПРобовал. 1С ругается, пишет ошибка запроса
   DrShad
 
13 - 10.11.16 - 16:54
так у тебя максимум не обязательно будет булево, может и NULL быть
   DrShad
 
14 - 10.11.16 - 16:54
тем более что соединение левое
   ssalikoff
 
15 - 10.11.16 - 16:57
(13) Да, это так
То есть NULL с помощью ВЫРАЗИТЬ к Булеву Ложь не преобразуется?
   DrShad
 
16 - 10.11.16 - 16:58
(15) нет конечно
при любых операциях с NULL получается только NULL и ничего более, хотя есть исключения
   ssalikoff
 
17 - 10.11.16 - 16:59
(6) ЛефМихалыч был прав, конструкция с ВЫБОР 
и сравнением ВложенныйЗапрос.Значение=Истина нормально работает. Первый раз я где-то накосячил и сообщил ложную информацию, что это не работает.
То есть проблема в принципе решена.

Спасибо всем откликнувшимся
   Лефмихалыч
 
18 - 10.11.16 - 17:00
(9) какое может быть поле флажка, если у тебя там ссылка по твоим же собственнывм словам?
   DrShad
 
19 - 10.11.16 - 17:01
(18) там NULL
   ssalikoff
 
20 - 10.11.16 - 17:03
(18) В ДополнительныеРеквизитыИСведения добавлено в пользовательском интерфейсе поле «ДобавленоНаКарту». Для него указан тип Булево.
Все эти дополнительные реквизиты хранятся в ПВХ

Где я ошибся в описании задачи?
   Лефмихалыч
 
21 - 10.11.16 - 17:04
убери наиух вложенный запрос
   ssalikoff
 
22 - 10.11.16 - 17:04
(19) у меня может быть NULL, а может быть Истина, если это допсвойство назначено
   ssalikoff
 
23 - 10.11.16 - 17:05
(21) Вложенный запрос для того, чтобы обезопаситься от того, что несколько значений будет введено.
В принципе через пользовательский интерфейс невозможно, но я подстраховался на всякий случай
   Лефмихалыч
 
24 - 10.11.16 - 17:07
ВЫБРАТЬ
    Док.Ссылка КАК Ссылка, 
    ЕСТЬNULL(ДС.Значение, ЛОЖЬ) КАК НаКарте
ИЗ
   Документ.ЗаказКлиента КАК Док
   ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказКлиента.ДополнительныеРеквизиты как ДС
   ПО Док.Ссылка = ДС.Ссылка
   и ДС.Свойство=&Свойство
   Лефмихалыч
 
25 - 10.11.16 - 17:07
(23) вот это (24) точно так же можно сгруппировать. А соединения с вложенными запросами редко бывают эффективными
   Лефмихалыч
 
26 - 10.11.16 - 17:08
ну и, если это часто будет использоваться, то надо подкинуть индекс по свойству. Иначе это тэйбл скан.
   ssalikoff
 
27 - 10.11.16 - 17:10
(25) Понял. Спасибо за науку. Но пока провала в производительности не заметил. Отрабатывает каждый раз при открытии формы списка документов.
Позже переделаю по совету.
   h-sp
 
28 - 10.11.16 - 17:13
ВЫБРАТЬ
    ДС.Ссылка КАК Ссылка, 
    ЕСТЬNULL(ДС.Значение, ЛОЖЬ) КАК НаКарте
ИЗ

   Документ.ЗаказКлиента.ДополнительныеРеквизиты как ДС

 ГДЕ
   ДС.Свойство=&Свойство
   Лефмихалыч
 
29 - 10.11.16 - 17:17
(28) во-первых, зачем здесь ЕСТЬNULL()? Во-вторых, что вернет запрос, если из всех 100500 документов своство установлено только у трех штук?
   DrShad
 
30 - 10.11.16 - 17:21
(29) вернет три документа ))))
   h-sp
 
31 - 10.11.16 - 17:38
(29) всё оно нормально вернет. Эти два запроса (24) и (28) идентичны, только более короткая запись.
   DrShad
 
32 - 10.11.16 - 17:40
(31) а ты попробуй
   Лефмихалыч
 
33 - 10.11.16 - 17:40
(31) садись, два
 
 
   Лефмихалыч
 
34 - 10.11.16 - 17:41
запрос (28) вернет те и только те документы, у которых свойство = истина, либо те, ук оторых оно когда-то быо истина, но потом его руками установили в ложь. Для всех остальных документов таких записей в ТЧ просто нет.
   h-sp
 
35 - 10.11.16 - 17:45
(33) понял


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует