![]() |
|
Как обратиться в выражении языка компоновки данных к реквизиту параметра? | ☑ | ||
---|---|---|---|---|
0
TormozIT
гуру
19.05.25
✎
19:03
|
Чтобы обратиться в выражении языка компоновки данных к реквизиту параметра без функций модулей пробовал на 8.3.27 следующие способы:
Способ 1 ВЫРАЗИТЬ(&ЧасовойПояс, "Справочник.ЧасовыеПояса").Смещение Выдает синтаксическую ошибку без конкретики Способ 2 &ЧасовойПояс.Смещение Синтаксическую проверку проходит, но при выводе результата компоновки странная ошибка [ОшибкаВоВремяВыполненияВстроенногоЯзыка] по причине: Ошибка исполнения отчета по причине: Ошибка при выполнении обработчика - 'ПриКомпоновкеРезультата' по причине: Ошибка при вызове метода контекста (Вывести) [ОшибкаВоВремяВыполненияВстроенногоЯзыка] по причине: Ошибка вывода результата по причине: Ошибка при выводе результата по причине: Ошибка получения данных по причине: Не установлено значение параметра "ЧасовойПояс.Смещение" [ОшибкаНастроекКомпоновкиДанных] Это вообще возможно? |
|||
1
Мультук
гуру
19.05.25
✎
19:18
|
(0)
"Типовые" функции тоже нельзя ? ОбщегоНазначения.ЗначениеРеквизитаОбъекта(..) |
|||
2
АнализДанных
19.05.25
✎
20:46
|
(0) разве в выразить не должно быть "КАК", или в компановке другой синтаксис?
|
|||
3
d4rkmesa
гуру
19.05.25
✎
21:55
|
(0) Похоже, так не получится. ВЫРАЗИТЬ в выражении СКД не позволяет обращаться к реквизитам, даже если указать явно Тип значения для вычисляемого поля (поэкспериментировал немного, без реквизита функция верно работает для параметра произвольного типа). Только в наборе данных.
|
|||
4
PR
19.05.25
✎
23:14
|
(0) (&ЧасовойПояс).Смещение
|
|||
5
TormozIT
гуру
19.05.25
✎
23:31
|
(4) У тебя это работает?
|
|||
6
Asmody
19.05.25
✎
23:42
|
в источнике
ВЫБРАТЬ &Параметр КАК Параметр; и дальше всё как обычно |
|||
7
PR
19.05.25
✎
23:52
|
(5) Когда я столкнулся с такой же проблемой, то да, решил так, работало
Только "маленький" нюанс, работало в тексте запроса Про обращение в выражении языка компоновки данных (что бы это не значило) так не делал и не пробовал |
|||
8
TormozIT
гуру
20.05.25
✎
00:00
|
(6) Запроса нет. Ради такой мелочи не хочется отдельный набор данных запрос добавлять. Но да, так работает.
|
|||
9
Asmody
20.05.25
✎
00:03
|
(8) а как по другому? точнее, с какого перепоя СКД должна узнать, что у тебя там какой-то UUID должен во что-то развернуться? От колонки ТЗ в объектном источнике тоже реквизит взять не получится (вроде как)
|
|||
10
PR
20.05.25
✎
00:18
|
Что-то я уже потерялся, что и где делается, но добавлю еще пять копеек
Если обращение к реквизиту ТЗ, полученной примерно как "ИЗ &ТЗ", то сначала нужно все выбрать во временную таблицу, а потом уже лазить через точку |
|||
11
TormozIT
гуру
20.05.25
✎
06:34
|
(9) Придумываешь. В выражении компоновки от любого ссылочного поля реквизит через точку без проблем получается.
|
|||
12
Asmody
20.05.25
✎
07:08
|
(11) от ссылочного поля чего?
|
|||
13
TormozIT
гуру
20.05.25
✎
07:41
|
(12) Любого набора данных - объединения, запроса, объекта.
|
|||
14
Fish
гуру
20.05.25
✎
09:13
|
(10) "сначала нужно все выбрать во временную таблицу, а потом уже лазить через точку"
Выбрать мало, надо ещё и выразить. |
|||
15
TormozIT
гуру
20.05.25
✎
09:45
|
(1) Если у тебя в таблице набора данных компоновки 1000 строк, то в вычисляемом поле с таким выражением сколько раз вызовется ОбщегоНазначения.ЗначениеРеквизитаОбъекта(..)?
|
|||
16
Мультук
гуру
20.05.25
✎
09:55
|
(15)
Я считал, что если это выражение параметра - то один раз. Но вероятно "всё совсем по другому" |
|||
17
Eiffil123
20.05.25
✎
10:12
|
(0) а если сделать еще один параметр (скрытый) и в выражении его прописать получение реквизита через функцию БСП?
|
|||
18
Asmody
20.05.25
✎
10:15
|
Вот такая картина получается:
![]() где: Номенклатура - поле набора данных - объект Товар - параметр &Товар ТоварВП - выч.поле с выражением &Товар ТоварВПОМ - выч.поле с выражением __.Э(&Товар) ТоварЗ - из источника данных - запрос ВЫБРАТЬ &Товар ТоварЗВ - из источника данных - запрос ВЫБРАТЬ ВЫРАЗИТЬ(&Товар КАК Справочник.Номенклатура) ТоварП - Пользовательское поле &Товар тип значения у всех полей стоит, где это доступно по "плюсикам" видно, что тип определяется только у поля источника данных - объект и явно типизированного поля запроса. |
|||
19
Asmody
20.05.25
✎
10:24
|
++
при выводе реквизита в отчет в XMLке для источника данных запрос добавляется строка: ВЫРАЗИТЬ(&Товар КАК Справочник.Номенклатура) КАК ТоварЗВ, ПРЕДСТАВЛЕНИЕССЫЛКИ(ВЫРАЗИТЬ(&Товар КАК Справочник.Номенклатура)) КАК ТоварЗВПредставление, ВЫРАЗИТЬ(&Товар КАК Справочник.Номенклатура).Код КАК Поле1 а источник данных - объект превращается в объединение, где к исходному источнику - объекту добавляется запрос: ВЫБРАТЬ РАЗРЕШЕННЫЕ СправочникНоменклатура.Ссылка КАК Ссылка, СправочникНоменклатура.Код КАК Код ИЗ Справочник.Номенклатура КАК СправочникНоменклатура ГДЕ СправочникНоменклатура.Ссылка В(&Ссылка) |
|||
20
d4rkmesa
гуру
20.05.25
✎
10:41
|
(11) Точно ли? Если в источнике данных без автозаполнения выбрано это поле без галочки "использовать дочерние", то по идее ошибку выдает при попытке прочитать реквизит в выражении.
|
|||
21
TormozIT
гуру
20.05.25
✎
11:55
|
(17) Такая модификация способа (1) уже пригодна, если функции модулей разрешены.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |