|
Как обратиться в выражении языка компоновки данных к реквизиту параметра?
TormozIT, sikuda, Timon1405, d4rkmesa, kihawi, , bmitkin, Fish, Шурик71, ДобрыйПутник, novichok79, SleepyHead, dimanikko, Homer, v8i1c, zenik, mikecool, segn, Многолетний Апельсин, denk32, tir654, Мультук, Somebody, АгентБезопаснойНацио, piter3, Масянька, ALCAPONA, bnlymrxpptd8, ReaLg, Хряк, Kigo_Kigo, DiMel_77, Eiffil123, alexxx961503, PLUT, Bad_Aleks, СвинТуз, ads55, Умный Слоненок, Жеглофф, roman383, Caesar, Asmody, Дмитрий, Ager, Dzenn, программистище, PR, okmail, МаленькийВопросик, АнализДанных, serpentt, banco, nick86, Бычье сердце, Amfiaray, toypaul, elka302, dergreche, s_newbi, maxar, olegves, Konst1k, shuhard, Ватт, Mankubus, boozin, 2S, sergeev-ag-1977, LevelUP, DimR_71, NorthWind, Гипервизор, dva1c, formista2000, RVN, chelentano
| ☑ |
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) уже пригодна, если функции модулей разрешены.
|
|