|
Запрос: ВЫРАЗИТЬ (составной ресурс у РегистраСведений) | ☑ | ||
---|---|---|---|---|
0
dft2014
11.11.16
✎
17:23
|
Тяну данные из РегистраСведений, у которого ресурс "ВидОтпуска" имеет составной тип (Строка, СправочникСсылка.ВидыОтпусков). Почему не срабатывает конструкция ВЫРАЗИТЬ из запроса ниже? Если пишу просто РеестрОтпусков.ВидОтпуска, то запрос срабатывает, но мне надо выполнить условие в ВЫРАЗИТЬ. Вот запрос:
Запрос.Текст = "ВЫБРАТЬ | РеестрОтпусков.Сотрудник КАК Сотрудник, //если пишу условие ниже, то вообще название ВидаОтпуска не выводит( | ВЫБОР | КОГДА ВЫРАЗИТЬ(РеестрОтпусков.ВидОтпуска КАК Справочник.ВидыОтпусков).НаименованиеПолное = """" | ТОГДА ВЫРАЗИТЬ(РеестрОтпусков.ВидОтпуска КАК Справочник.ВидыОтпусков).Наименование | ИНАЧЕ ВЫРАЗИТЬ(РеестрОтпусков.ВидОтпуска КАК Справочник.ВидыОтпусков).НаименованиеПолное | КОНЕЦ КАК ВидОтпуска, //) | РеестрОтпусков.НачалоПериодаЗаКоторыйПредоставляетсяОтпуск КАК РабочийГодС, | РеестрОтпусков.КонецПериодаЗаКоторыйПредоставляетсяОтпуск КАК РабочийГодПо |ИЗ | РегистрСведений.РеестрОтпусков КАК РеестрОтпусков"; |
|||
1
lxs
11.11.16
✎
17:24
|
через Ссылка Делай
|
|||
2
lxs
11.11.16
✎
17:24
|
а.. нет. чушь сказал.
|
|||
3
zladenuw
11.11.16
✎
17:25
|
Так правильно у тебя составной тип. как ты можешь строку выразить в строка.Наименование ?
|
|||
4
aleks_default
11.11.16
✎
17:26
|
потому что возращает Null а он <> ""
|
|||
5
dft2014
11.11.16
✎
17:28
|
(3), (4) И как это побороть?
|
|||
6
zladenuw
11.11.16
✎
17:28
|
Выбор когда РеестрОтпусков.ВидОтпуска Ссылка Справочник.ВидыОтпусков Тогда КОГДА ВЫРАЗИТЬ(РеестрОтпусков.ВидОтпуска КАК Справочник.ВидыОтпусков).НаименованиеПолное = """"
ТОГДА ВЫРАЗИТЬ(РеестрОтпусков.ВидОтпуска КАК Справочник.ВидыОтпусков).Наименование ИНАЧЕ ВЫРАЗИТЬ(РеестрОтпусков.ВидОтпуска КАК Справочник.ВидыОтпусков).НаименованиеПолное КОНЕЦ ИНАЧЕ РеестрОтпусков.ВидОтпуска КОНЕЦ ВидОтпуска |
|||
7
aleks_default
11.11.16
✎
17:32
|
сначала пытаешься выразить, если получается не null тогда сверяешь и выводишь наименование, если нет - тогда просто РеестрОтпусков.ВидОтпуска
|
|||
8
dft2014
11.11.16
✎
17:39
|
(6) Спасибо, но не поняла почему два раза подряд КОГДА, выдает синтаксическую ошибку:
Запрос.Текст = "ВЫБРАТЬ | РеестрОтпусков.Сотрудник КАК Сотрудник, | ВЫБОР | КОГДА РеестрОтпусков.ВидОтпуска Ссылка Справочник.ВидыОтпусков Тогда | КОГДА ВЫРАЗИТЬ(РеестрОтпусков.ВидОтпуска КАК Справочник.ВидыОтпусков).НаименованиеПолное = """" | ТОГДА ВЫРАЗИТЬ(РеестрОтпусков.ВидОтпуска КАК Справочник.ВидыОтпусков).Наименование | ИНАЧЕ ВЫРАЗИТЬ(РеестрОтпусков.ВидОтпуска КАК Справочник.ВидыОтпусков).НаименованиеПолное | КОНЕЦ КАК ВидОтпуска, | РеестрОтпусков.НачалоПериодаЗаКоторыйПредоставляетсяОтпуск КАК РабочийГодС, | РеестрОтпусков.КонецПериодаЗаКоторыйПредоставляетсяОтпуск КАК РабочийГодПо |ИЗ | РегистрСведений.РеестрОтпусков КАК РеестрОтпусков"; |
|||
9
vicof
11.11.16
✎
17:42
|
(8) ВЫБОР КОГДА ... ТОГДА ВЫБОР КОГДА ... ТОГДА
|
|||
10
aleks_default
11.11.16
✎
17:42
|
(8)потому что условие, даже вложеное, должно начинаться с ВЫБОР
|
|||
11
dft2014
11.11.16
✎
17:47
|
(8) Добавила, все равно выдает синтаксическую ошибку:
Запрос.Текст = "ВЫБРАТЬ | РеестрОтпусков.Сотрудник КАК Сотрудник, | ВЫБОР | КОГДА РеестрОтпусков.ВидОтпуска Ссылка Справочник.ВидыОтпусков Тогда | ВЫБОР | КОГДА ВЫРАЗИТЬ(РеестрОтпусков.ВидОтпуска КАК Справочник.ВидыОтпусков).НаименованиеПолное = """" | ТОГДА ВЫРАЗИТЬ(РеестрОтпусков.ВидОтпуска КАК Справочник.ВидыОтпусков).Наименование | ИНАЧЕ ВЫРАЗИТЬ(РеестрОтпусков.ВидОтпуска КАК Справочник.ВидыОтпусков).НаименованиеПолное | КОНЕЦ КАК ВидОтпуска, | РеестрОтпусков.НачалоПериодаЗаКоторыйПредоставляетсяОтпуск КАК РабочийГодС, | РеестрОтпусков.КонецПериодаЗаКоторыйПредоставляетсяОтпуск КАК РабочийГодПо |ИЗ | РегистрСведений.РеестрОтпусков КАК РеестрОтпусков"; |
|||
12
1sanekmaloi1
11.11.16
✎
17:55
|
"КОНЦОВ" тоже должно быть 2
|
|||
13
1sanekmaloi1
11.11.16
✎
17:56
|
+(12)Ну точнее сколько "ВЫБОРОВ" столько и "КОНЦОВ"
|
|||
14
dft2014
11.11.16
✎
17:59
|
(12), (13) Добавила концы, все равно ошибка синтаксиса:
Запрос.Текст = "ВЫБРАТЬ | РеестрОтпусков.Сотрудник КАК Сотрудник, | ВЫБОР | КОГДА РеестрОтпусков.ВидОтпуска Ссылка Справочник.ВидыОтпусков Тогда | ВЫБОР | КОГДА ВЫРАЗИТЬ(РеестрОтпусков.ВидОтпуска КАК Справочник.ВидыОтпусков).НаименованиеПолное = """" | ТОГДА ВЫРАЗИТЬ(РеестрОтпусков.ВидОтпуска КАК Справочник.ВидыОтпусков).Наименование | ИНАЧЕ ВЫРАЗИТЬ(РеестрОтпусков.ВидОтпуска КАК Справочник.ВидыОтпусков).НаименованиеПолное | КОНЕЦ КАК ВидОтпуска1, | КОНЕЦ КАК ВидОтпуска2, | РеестрОтпусков.НачалоПериодаЗаКоторыйПредоставляетсяОтпуск КАК РабочийГодС, | РеестрОтпусков.КонецПериодаЗаКоторыйПредоставляетсяОтпуск КАК РабочийГодПо |ИЗ | РегистрСведений.РеестрОтпусков КАК РеестрОтпусков"; |
|||
15
Cyberhawk
11.11.16
✎
18:01
|
Сколько платят за решение вопроса?
|
|||
16
dft2014
11.11.16
✎
18:02
|
(15) Б Е З В О З М Е З Д Н О ))
|
|||
17
zladenuw
11.11.16
✎
18:05
|
| КОНЕЦ КАК ВидОтпуска1,
| КОНЕЦ КАК ВидОтпуска2, А это что КОНЕЦ КОНЕЦ КАК ВидОтпуска1 |
|||
18
dft2014
11.11.16
✎
18:07
|
(17) Незнаю, пробую всякие варианты... (((
|
|||
19
zladenuw
11.11.16
✎
18:10
|
"ВЫБРАТЬ
| РеестрОтпусков.Сотрудник КАК Сотрудник, | ВЫБОР | КОГДА РеестрОтпусков.ВидОтпуска Ссылка Справочник.ВидыОтпусков Тогда | ВЫБОР | КОГДА ВЫРАЗИТЬ(РеестрОтпусков.ВидОтпуска КАК Справочник.ВидыОтпусков).НаименованиеПолное = """" | ТОГДА ВЫРАЗИТЬ(РеестрОтпусков.ВидОтпуска КАК Справочник.ВидыОтпусков).Наименование | ИНАЧЕ ВЫРАЗИТЬ(РеестрОтпусков.ВидОтпуска КАК Справочник.ВидыОтпусков).НаименованиеПолное | КОНЕЦ ИНАЧЕ РеестрОтпусков.ВидОтпуска КОНЕЦ КАК ВидОтпуска1, | РеестрОтпусков.НачалоПериодаЗаКоторыйПредоставляетсяОтпуск КАК РабочийГодС, | РеестрОтпусков.КонецПериодаЗаКоторыйПредоставляетсяОтпуск КАК РабочийГодПо |ИЗ | РегистрСведений.РеестрОтпусков КАК РеестрОтпусков" |
|||
20
youalex
11.11.16
✎
19:15
|
(0) вместо выразить - можно использовать явные соединения, т.е.:
ВЫБРАТЬ РеестрОтпусков.Сотрудник КАК Сотрудник, ВЫБОР КОГДА СпрВидыОтпуска.Ссылка is null Тогда РеестрОтпусков.ВидОтпуска // тут может еще левое (левое в смысле кривое) соединение вылезти, если будет представление выводиться КОГДА СпрВидыОтпуска.НаименованиеПолное <> "" Тогда СпрВидыОтпуска.НаименованиеПолное ИНАЧЕ СпрВидыОтпуска.Наименование КОНЕЦ ИЗ РегистрСведений.РеестрОтпусков КАК РеестрОтпусков ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыОтпусков КАК СпрВидыОтпуска ПО РеестрОтпусков.ВидОтпуска = СпрВидыОтпуска.Ссылка |
|||
21
Suricatt
12.11.16
✎
15:07
|
Выразить в таких случаях стоит использовать только после проверки типа. Читатйте справку.
У вас в виде отпусков строка, тогда выражение ВЫРАЗИТЬ(РеестрОтпусков.ВидОтпуска КАК Справочник.ВидыОтпусков).НаименованиеПолное будет равно NULL.НаименованиеПолное |
|||
22
PR
12.11.16
✎
15:11
|
(0) Че за бред?
| ВЫБОР | КОГДА РеестрОтпусков.ВидОтпуска.НаименованиеПолное = """" ИЛИ РеестрОтпусков.ВидОтпуска.НаименованиеПолное ЕСТЬ NULL | ТОГДА РеестрОтпусков.ВидОтпуска КАК Справочник.ВидыОтпусков.Наименование | ИНАЧЕ РеестрОтпусков.ВидОтпуска КАК Справочник.ВидыОтпусков.НаименованиеПолное | КОНЕЦ КАК ВидОтпуска |
|||
23
Лефмихалыч
12.11.16
✎
18:28
|
я бы выкинул наиух полное наименование из запроса, ибо толку от него ноль.
И тогда все становится просто, как мычание: ЕСТЬNUL(РеестрОтпусков.ВидОтпуска.Наименование, РеестрОтпусков.ВидОтпуска) |
|||
24
Лефмихалыч
12.11.16
✎
18:29
|
+(23) т.к. там всего два типа, то и в выразить выразить - это точно такой же лефт джоин, что и в данном естьнул
|
|||
25
dft2014
14.11.16
✎
10:39
|
(19) Чудеса какие-то. Ваш запрос тоже выводит всегда Наименование, а нужно НаименованиеПолное, т.к. в спр.Виды Отпусков у всех отпусков НаименованиеПолное - заполнено. В чем может быть причина?
|
|||
26
dft2014
14.11.16
✎
11:12
|
+(25) Чтобы разобраться, в консоли накидала простой запрос (см. ниже):
ВЫБРАТЬ РеестрОтпусков.Сотрудник, РеестрОтпусков.ВидОтпуска, РеестрОтпусков.ВидОтпуска.Наименование, РеестрОтпусков.ВидОтпуска.НаименованиеПолное ИЗ РегистрСведений.РеестрОтпусков КАК РеестрОтпусков ГДЕ РеестрОтпусков.Сотрудник = &Сотрудник В результате я получила, что РеестрОтпусков.ВидОтпуска.Наименование и РеестрОтпусков.ВидОтпуска.НаименованиеПолное возвращает NULL!!! ПОЧЕМУ ТАК? HELP!!! |
|||
27
youalex
14.11.16
✎
11:29
|
(26) ВидОтпуска - строка?
|
|||
28
vi0
14.11.16
✎
11:47
|
(26) группа?
|
|||
29
dft2014
14.11.16
✎
12:04
|
(27) Тяну данные из РегистраСведений, у которого ресурс "ВидОтпуска" имеет составной тип (Строка, СправочникСсылка.ВидыОтпусков).
|
|||
30
Sammo
14.11.16
✎
12:22
|
(29) Имеется в виду, что в случаях, когда наименование нулл, то чему равен ВидОтпуска?
|
|||
31
h-sp
14.11.16
✎
12:23
|
(29) так и должно быть. Почему вы удивляетесь?
|
|||
32
vi0
14.11.16
✎
12:45
|
Напиши сюда чему равны поля Тип1 и ЭтоГруппа там где есть где null
ВЫБРАТЬ РеестрОтпусков.ВидОтпуска, ТИПЗНАЧЕНИЯ(РеестрОтпусков.ВидОтпуска) КАК Тип1, РеестрОтпусков.ВидОтпуска.ЭтоГруппа КАК ЭтоГруппа, РеестрОтпусков.ВидОтпуска.Наименование, РеестрОтпусков.ВидОтпуска.НаименованиеПолное ИЗ РегистрСведений.РеестрОтпусков КАК РеестрОтпусков ГДЕ РеестрОтпусков.Сотрудник = &Сотрудник |
|||
33
dft2014
14.11.16
✎
12:50
|
(32) Тип1 - Строка. Групп нет.
|
|||
34
Sammo
14.11.16
✎
12:52
|
(33) Если взять .Наименование от типа Строка. то что получится?
|
|||
35
Sammo
14.11.16
✎
12:54
|
+34 Т.е. надо корректно обрабатывать ситуацию, когда .ВидОтпуска имеет тип строка. Например, если это тип строка то выводить его (без проверки на заполненность, т.к. других вариантов особо и нет).
|
|||
36
dft2014
14.11.16
✎
12:55
|
Мне непонятно, почему код ниже не возвращает ПолноеНаименование, хотя оно заполнено в справочнике! Вот код:
ВЫБРАТЬ РеестрОтпусков.Сотрудник КАК Сотрудник, ВЫБОР КОГДА РеестрОтпусков.ВидОтпуска ССЫЛКА Справочник.ВидыОтпусков ТОГДА ВЫБОР КОГДА ВЫРАЗИТЬ(РеестрОтпусков.ВидОтпуска КАК Справочник.ВидыОтпусков).НаименованиеПолное = """" ТОГДА ВЫРАЗИТЬ(РеестрОтпусков.ВидОтпуска КАК Справочник.ВидыОтпусков).Наименование ИНАЧЕ ВЫРАЗИТЬ(РеестрОтпусков.ВидОтпуска КАК Справочник.ВидыОтпусков).НаименованиеПолное КОНЕЦ ИНАЧЕ РеестрОтпусков.ВидОтпуска КОНЕЦ КАК ВидОтпуска1, РеестрОтпусков.НачалоПериодаЗаКоторыйПредоставляетсяОтпуск КАК РабочийГодС, РеестрОтпусков.КонецПериодаЗаКоторыйПредоставляетсяОтпуск КАК РабочийГодПо ИЗ РегистрСведений.РеестрОтпусков КАК РеестрОтпусков ГДЕ РеестрОтпусков.Сотрудник = &Сотрудник В коде же явно я прописала, если НаименованиеПолное = """" то тянуть Наименование, иначе НаименованиеПолное тянуть. А он всегда тянет просто Наименование!!! Предполагаю, что это из-за того, что РегистрСведений имеет ресурс "ВидОтпуска" составной тип (Строка, СправочникСсылка.ВидыОтпусков). Как это побороть??? |
|||
37
h-sp
14.11.16
✎
13:02
|
ВЫБОР
КОГДА РеестрОтпусков.ВидОтпуска.Наименование Есть NULL ТОГДА РеестрОтпусков.ВидОтпуска ИНАЧЕ ВЫБОР КОГДА ВЫРАЗИТЬ(РеестрОтпусков.ВидОтпуска КАК Справочник.ВидыОтпусков).НаименованиеПолное = """" ТОГДА ВЫРАЗИТЬ(РеестрОтпусков.ВидОтпуска КАК Справочник.ВидыОтпусков).Наименование ИНАЧЕ ВЫРАЗИТЬ(РеестрОтпусков.ВидОтпуска КАК Справочник.ВидыОтпусков).НаименованиеПолное КОНЕЦ КОНЕЦ КАК ВидОтпуска1, |
|||
38
youalex
14.11.16
✎
13:09
|
isnull(
ВЫБОР КОГДА ВидОтпуска.Наименование = "" Тогда ВидОтпуска.НаименованиеПолное Иначе ВидОтпуска.Наименование КОНЕЦ выразить(ВидОтпуска.Наименование КАК Строка)) |
|||
39
youalex
14.11.16
✎
13:11
|
(38) вторая строка:
, выразить(ВидОтпуска КАК Строка)) |
|||
40
dft2014
14.11.16
✎
14:12
|
(37) Попробовала, Ваш код тоже тянет всегда только Наименование! А надо НаименованиеПолное!
|
|||
41
dft2014
14.11.16
✎
14:29
|
Уже простой запрос пишу в консоли, все равно выдает NULL в полях ОтпускНаим и ОтпускНаимПолное!!!
ВЫБРАТЬ РеестрОтпусков.Сотрудник, ВЫРАЗИТЬ(РеестрОтпусков.ВидОтпуска КАК Справочник.ВидыОтпусков).Наименование КАК ОтпускНаим, ВЫРАЗИТЬ(РеестрОтпусков.ВидОтпуска КАК Справочник.ВидыОтпусков).НаименованиеПолное КАК ОтпускНаимПолное ИЗ РегистрСведений.РеестрОтпусков КАК РеестрОтпусков ГДЕ РеестрОтпусков.Сотрудник = &Сотрудник И (ВЫРАЗИТЬ(РеестрОтпусков.ВидОтпуска КАК Справочник.ВидыОтпусков) ЕСТЬ НЕ NULL) HELP!!! SOS!!! |
|||
42
kumena
14.11.16
✎
15:15
|
составной тип надо на НЕОПРЕДЕЛЕНО проверять, а не NULL
|
|||
43
kumena
14.11.16
✎
15:16
|
И (ВЫРАЗИТЬ(РеестрОтпусков.ВидОтпуска КАК Справочник.ВидыОтпусков) ЕСТЬ НЕ NULL)
будет так и РеестрОтпусков.ВидОтпуска <> Неопределено |
|||
44
Лефмихалыч
14.11.16
✎
15:19
|
ГДЕ
РеестрОтпусков.Сотрудник = &Сотрудник И (РеестрОтпусков.ВидОтпуска ссылка Справочник.ВидыОтпусков) |
|||
45
Лефмихалыч
14.11.16
✎
15:20
|
(43) там может быть пустая ссылка или строка из пробелов
|
|||
46
dft2014
14.11.16
✎
16:01
|
(45) ТИПЗНАЧЕНИЯ(РеестрОтпусков.ВидОтпуска) КАК Тип1, выдает, что все-таки это строка, а у строки нет наименования!
И как тогда теперь тянуть ПолноеНаименование, ведь РегистрСведений.РеестрОтпусков, у которого ресурс "ВидОтпуска" имеет составной тип (Строка и СправочникСсылка.ВидыОтпусков), хранит как выяснилось, данные в строке, а мне надо вытянуть ПолноеНаименование из Справочник.ВидыОтпусков? |
|||
47
НЕА123
14.11.16
✎
16:03
|
здесь нечестно играют (с)
|
|||
48
Лефмихалыч
14.11.16
✎
16:04
|
(46) >И как тогда теперь тянуть ПолноеНаименование
ни как Составной тип атрибута означает, что в этом атрибуте могут быть значения разных типов в разных записях таблицы. В одной каждой конкретной записи всегда одно значение одного типа. В твоем случае - везде строка, а не справочник. Составной тип не означает, что в одной записи два значения. |
|||
49
h-sp
14.11.16
✎
16:06
|
(46) ВЫБРАТЬ
РеестрОтпусков.Сотрудник КАК Сотрудник, ВидыОтпусков.НаименованиеПолное КАК ВидОтпуска ИЗ РегистрСведений.РеестрОтпусков КАК РеестрОтпусков ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыОтпусков КАК ВидыОтпусков ПО РеестрОтпусков.видОтпуска = ВидыОтпусков.Наименование ГДЕ РеестрОтпусков.Сотрудник = &Сотрудник |
|||
50
Лефмихалыч
14.11.16
✎
16:08
|
(49) а если там не наименования, а какая-нить чудовищная е*банина?
|
|||
51
h-sp
14.11.16
✎
16:32
|
(50) скорее всего так
|
|||
52
youalex
14.11.16
✎
16:39
|
(46) зачем вообще в этом поле строки? Как они заполняются?
|
|||
53
dft2014
14.11.16
✎
17:18
|
(49) С П А С И Б О !!! :*
Все получилось! |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |