|
Не работает ВЫРАЗИТЬ() для выражения с типом, определённым в ПВХ | ☑ | ||
---|---|---|---|---|
0
ssalikoff
10.11.16
✎
03:31
|
Помогите, пожалуйста, решить задачу.
В запросе получаю значение из таблицы ДополнительныеРеквизитыИСведения. Тип значения определен в соответствующем ПВХ и задан как Булево. Возвращаемый запросом тип — Характеристика.ДополнительныеРеквизитыИСведения, но я хочу его явно привести к Булеву. Пытаюсь применить ВЫРАЗИТЬ(), но не работает: «Ошибка в запросе набора данных по причине: {(85, 2)}: Несовместимые типы "ВЫРАЗИТЬ" <<?>>ВЫРАЗИТЬ(ВложенныйЗапрос.Значение КАК БУЛЕВО) КАК Метка» Для чего мне вообще нужно приводить тип? Дело в том, что этот запрос используется для формирования динамического списка, и требуется для соответствующего поля установить вид «Поле флажка». А поставить его можно лишь в том случае, если ПутьКДанным имеет тип Булево. |
|||
1
youalex
10.11.16
✎
07:24
|
(0) скорее всего, "Возвращаемый запросом тип" - это ссылка ПВХ, а не значение характеристики. Текст запроса?
|
|||
2
Лефмихалыч
10.11.16
✎
08:57
|
ВЫБОР
КОГДА ВложенныйЗапрос.Значение=Истина Тогда истина ИНАЧЕ Ложь КОНЕЦ но я не удивлюсь, если это во всех строках вернет ложь |
|||
3
ssalikoff
10.11.16
✎
16:41
|
(2) Я именно так и пробовал, но это не работает:
1С ругается на сравнение ВложенныйЗапрос.Значение=Истина и вываливает ошибку Существуют ли какие-нибудь ещё обходные манёвры? |
|||
4
DrShad
10.11.16
✎
16:44
|
весь запрос давай
|
|||
5
ssalikoff
10.11.16
✎
16:44
|
(1) «Возвращаемый запросом тип - это ссылка ПВХ». Конечно, так оно и есть.
А значение характеристики возвращается в самом значении ВложенныйЗапрос.Значение |
|||
6
Лефмихалыч
10.11.16
✎
16:47
|
(3) (5) что-то из этого - наглая ложь. Сравнивать ссылку с булевом в запросе можно.
Чего ты хочешь-то? Ты сознательно пытаешься преобразовать ссылку к булево. Зачем? |
|||
7
ssalikoff
10.11.16
✎
16:48
|
ВЫБРАТЬ
ДокументЗаказКлиента.Ссылка КАК Ссылка, ... ... ЗапросДобавленоНаКарту.Значение КАК НаКарте ИЗ Документ.ЗаказКлиента КАК ДокументЗаказКлиента ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ МАКСИМУМ(ЗаказКлиентаДополнительныеРеквизиты.Значение) КАК Значение, ЗаказКлиентаДополнительныеРеквизиты.Ссылка КАК Ссылка ИЗ Документ.ЗаказКлиента.ДополнительныеРеквизиты КАК ЗаказКлиентаДополнительныеРеквизиты ГДЕ ЗаказКлиентаДополнительныеРеквизиты.Свойство = &СвойствоДобавленоНаКарту СГРУППИРОВАТЬ ПО ЗаказКлиентаДополнительныеРеквизиты.Ссылка) КАК ЗапросДобавленоНаКарту ПО ДокументЗаказКлиента.Ссылка = ЗапросДобавленоНаКарту.Ссылка |
|||
8
ssalikoff
10.11.16
✎
16:48
|
Спрашиваю про ЗапросДобавленоНаКарту.Значение
|
|||
9
ssalikoff
10.11.16
✎
16:49
|
(6) А зачем мне это нужно я в самом первом посте написал
В конечном счете мне нужно иметь возможность установить поле флажка в форме динамического списка |
|||
10
Мойдодыр
10.11.16
✎
16:52
|
Делай здесь выразить
|
|||
11
Мойдодыр
10.11.16
✎
16:52
|
МАКСИМУМ(ЗаказКлиентаДополнительныеРеквизиты.Значение)
|
|||
12
ssalikoff
10.11.16
✎
16:52
|
(10) ПРобовал. 1С ругается, пишет ошибка запроса
|
|||
13
DrShad
10.11.16
✎
16:54
|
так у тебя максимум не обязательно будет булево, может и NULL быть
|
|||
14
DrShad
10.11.16
✎
16:54
|
тем более что соединение левое
|
|||
15
ssalikoff
10.11.16
✎
16:57
|
(13) Да, это так
То есть NULL с помощью ВЫРАЗИТЬ к Булеву Ложь не преобразуется? |
|||
16
DrShad
10.11.16
✎
16:58
|
(15) нет конечно
при любых операциях с NULL получается только NULL и ничего более, хотя есть исключения |
|||
17
ssalikoff
10.11.16
✎
16:59
|
(6) ЛефМихалыч был прав, конструкция с ВЫБОР
и сравнением ВложенныйЗапрос.Значение=Истина нормально работает. Первый раз я где-то накосячил и сообщил ложную информацию, что это не работает. То есть проблема в принципе решена. Спасибо всем откликнувшимся |
|||
18
Лефмихалыч
10.11.16
✎
17:00
|
(9) какое может быть поле флажка, если у тебя там ссылка по твоим же собственнывм словам?
|
|||
19
DrShad
10.11.16
✎
17:01
|
(18) там NULL
|
|||
20
ssalikoff
10.11.16
✎
17:03
|
(18) В ДополнительныеРеквизитыИСведения добавлено в пользовательском интерфейсе поле «ДобавленоНаКарту». Для него указан тип Булево.
Все эти дополнительные реквизиты хранятся в ПВХ Где я ошибся в описании задачи? |
|||
21
Лефмихалыч
10.11.16
✎
17:04
|
убери наиух вложенный запрос
|
|||
22
ssalikoff
10.11.16
✎
17:04
|
(19) у меня может быть NULL, а может быть Истина, если это допсвойство назначено
|
|||
23
ssalikoff
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
|
ну и, если это часто будет использоваться, то надо подкинуть индекс по свойству. Иначе это тэйбл скан.
|
|||
27
ssalikoff
10.11.16
✎
17:10
|
(25) Понял. Спасибо за науку. Но пока провала в производительности не заметил. Отрабатывает каждый раз при открытии формы списка документов.
Позже переделаю по совету. |
|||
28
h-sp
10.11.16
✎
17:13
|
ВЫБРАТЬ
ДС.Ссылка КАК Ссылка, ЕСТЬNULL(ДС.Значение, ЛОЖЬ) КАК НаКарте ИЗ Документ.ЗаказКлиента.ДополнительныеРеквизиты как ДС ГДЕ ДС.Свойство=&Свойство |
|||
29
Лефмихалыч
10.11.16
✎
17:17
|
(28) во-первых, зачем здесь ЕСТЬNULL()? Во-вторых, что вернет запрос, если из всех 100500 документов своство установлено только у трех штук?
|
|||
30
DrShad
10.11.16
✎
17:21
|
(29) вернет три документа ))))
|
|||
31
h-sp
10.11.16
✎
17:38
|
(29) всё оно нормально вернет. Эти два запроса (24) и (28) идентичны, только более короткая запись.
|
|||
32
DrShad
10.11.16
✎
17:40
|
(31) а ты попробуй
|
|||
33
Лефмихалыч
10.11.16
✎
17:40
|
(31) садись, два
|
|||
34
Лефмихалыч
10.11.16
✎
17:41
|
запрос (28) вернет те и только те документы, у которых свойство = истина, либо те, ук оторых оно когда-то быо истина, но потом его руками установили в ложь. Для всех остальных документов таких записей в ТЧ просто нет.
|
|||
35
h-sp
10.11.16
✎
17:45
|
(33) понял
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |