|
Не работает ВЫРАЗИТЬ() для выражения с типом, определённым в ПВХ
|
Я
|
|
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 | |
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 | |
Лефмихалыч 33 - 10.11.16 - 17:40 | |
Лефмихалыч 34 - 10.11.16 - 17:41 | запрос ( 28) вернет те и только те документы, у которых свойство = истина, либо те, ук оторых оно когда-то быо истина, но потом его руками установили в ложь. Для всех остальных документов таких записей в ТЧ просто нет. |
h-sp 35 - 10.11.16 - 17:45 | |