Имя: Пароль:
1C
 
Как управлять схемой компоновки для динамического списка?
0 ssalikoff
 
31.05.24
10:02
Здравствуйте!
На форму выводится динамический список. Текст динамического списка формируется программно, в обработчике события формы «ПриСозданииНаСервере». Хотелось бы программно управлять настройками полей запроса динамического списка. В конфигураторе это выглядит так:

Пробовал такой способ
СхемаКомпоновкиДанных = Элементы.Список.ПолучитьИсполняемуюСхемуКомпоновкиДанных();
Поля = СхемаКомпоновкиДанных.НаборыДанных.НаборДанныхДинамическогоСписка.Поля;

Так вот, в «Поля» нет никаких полей и они не появляются до самого завершения обработчкика «ПриСозданииНаСервере».
Подскажите, кто знает, как до настройки этих полей добраться и где, в какой момент, инициализируется компоновка для динамического списка, если в конце процедуры «ПриСозданииНаСервере» компоновка ещё не готова, а потом, в других обработчиках, уже поздно.
1 youalex
 
31.05.24
10:11
Вот получил ты схему из ПолучитьИсполняемуюСхемуКомпоновкиДанных(), и что дальше с ней делать будешь? Это же не свойство ДС.
Изначальную задачу озвучь
2 Ненавижу 1С
 
31.05.24
10:12
ПриЗагрузкеВариантаНаСервере
ПриЗагрузкеПользовательскихНастроекНаСервере
3 ssalikoff
 
31.05.24
10:21
(2) ПриЗагрузкеПользовательскихНастроекНаСервере
посмотрел этот обработчик. В нём я никак не смог добраться до полей запроса СКД.
4 ssalikoff
 
31.05.24
10:27
(1) Изначальная задача озвучена в стартовом топике.
Есть ДинамическийСписок. У него есть своя СКД. У этой СКД есть НаборыДанных. В каждом НабореДанных есть Поля. А у каждого Поля (тип ПолеНабораДанныхСхемыКомпоновкиДанных) есть куча свойств, например, «ВыражениеПредставления». И вот я хочу программно этими свойствами управлять.
5 FIXXXL
 
31.05.24
10:32
6 ssalikoff
 
31.05.24
10:54
(5) Нет, это порожняк
7 Maxsim24
 
31.05.24
11:10
(0) Для получения настроек компоновки:
НастройкиКомпоновки =Элементы.Список.ПолучитьИсполняемыеНастройкиКомпоновкиДанных();
8 spiller26
 
31.05.24
15:11
Вот примерно где-то здесь будет ответ:
ПолеНабораДанныхСхемыКомпоновкиДанных (DataCompositionSchemaDataSetField)
Свойства:
ВыражениеПредставления (PresentationExpression)
ВыраженияУпорядочивания (OrderExpressions)
Заголовок (Title)
НаборДанныхПроверкиИерархии (HierarchyCheckDataSet)
ОграничениеИспользования (UseRestriction)
ОграничениеИспользованияРеквизитов (AttributeUseRestriction)
Оформление (Appearance)
ПараметрНабораДанныхПроверкиИерархии (HierarchyCheckDataSetParameter)
ПараметрыРедактирования (EditParameters)
Поле (Field)
ПутьКДанным (DataPath)
Роль (Role)
ТипЗначения (ValueType)
9 ssalikoff
 
31.05.24
15:51
(7) Нет. Поля запроса — это не настройки. Там их нет
10 ssalikoff
 
31.05.24
15:52
(8) И чем мне это может помочь? Я знаю, как синтакс-помощник открывается
11 youalex
 
31.05.24
16:30
кмк,  такого нет, схема полученная из ПолучитьИсполняемуюСхемуКомпоновкиДанных() с самим ДС никак не связана, это самостоятельный объект.
все управление полями схемы ДС только через костыльные методы типа УстановитьОбязательноеИспользование() и иже
12 ssalikoff
 
01.06.24
06:20
(11) Странно, потому что в статье на зазеркалье «Представление компоновки данных в динамическом списке»(https://wonderland.v8.1c.ru/blog/predstavlenie-komponovki-dannykh-v-dinamicheskom-spiske/?ysclid=lwu01i8fl2677080017) пишется о том, что
В версии 8.3.20 у полей динамического списка (как из набора данных, так и вычисляемых) появится новое свойство ВыражениеПредставления.
ВыражениеПредставления может быть задано интерактивно в конфигураторе (в редакторе динамического списка) или средствами встроенного языка.

Вот как его средствами языка задать — непонятно.
13 dmt
 
01.06.24
07:51
(0) так пробовал?
Список.Поля[0].ВыражениеПредставления
14 dmt
 
01.06.24
08:18
в общем, если текст списка формируется программно, то и Список.Поля надо заполнять программно
15 youalex
 
01.06.24
10:04
(13) +
16 ssalikoff
 
01.06.24
13:29
(13)(15) Конечно. Я же в первом посте написал, что Поля — пустые.
Список.Поля.Количество() = 0
17 GreenLab
 
01.06.24
13:49
Использую вот такой вариант для модификации текста запроса для списка реализаций и добавления поля в список

&НаСервере
Процедура ra_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
	
	ЧастиЗапроса = СтрРазделить(Список.ТекстЗапроса, ",");
	ЧастиЗапроса.Вставить(1, "
	|ДокументРеализацияТоваровУслуг.ДоговорКонтрагента КАК ДоговорКонтрагента");
	Список.ТекстЗапроса = СтрСоединить(ЧастиЗапроса, ",");
	
	НовыйЭлемент  = Элементы.Вставить("СписокДоговорКонтрагента", Тип("ПолеФормы"), Элементы.Список,Элементы.СуммаДокумента);
	НовыйЭлемент.Вид = ВидПоляФормы.ПолеНадписи;	  
	НовыйЭлемент.ПутьКДанным = "Список.ДоговорКонтрагента";
	
КонецПроцедуры


При этом список полей не пустой.
18 youalex
 
01.06.24
14:22
(16) тогда возможно приоткрытии() можно ловить гарантированно (но это неправильно концептуально) может (2) ?
19 dmt
 
01.06.24
14:33
(16) в (0) ересь какая-то про СКД динамического списка. Изменение исполняемой схемы тебе никто не обещал. Возьми себя в руки и заполни Список.Поля
20 dmt
 
01.06.24
14:34
(17) и там есть добавленное тобой поле?
21 GreenLab
 
01.06.24
15:35
(20) Да
22 ssalikoff
 
01.06.24
18:20
(19) Я не понял. А нахрена мне их заполнять? Система ведь их как-то сама заполняет при исполнении запроса. Вопрос в том, в какой момент происходит эта инициализация и заполнение полей компоновки.
23 ssalikoff
 
01.06.24
18:28
(17) Странно. У меня аналогично сделано. В точно такой же процедуре точно так же переопределён текст запроса. В конце обработчика на точке останова показывает, что Поля пустые.
24 FIXXXL
 
01.06.24
21:59
(6) в башке у тебя порожняк
сформируй с нуля свой СКД для ДС и играйся как угодно
25 DrZombi
 
03.06.24
07:09
(4) Зачем? Зачем вам управлять програмно тем, что не требует вашего управления :)
26 DrZombi
 
03.06.24
07:13
У ТС каша, но вот для ТС, на подумать... что так тоже лучше житЪ...

Подробности

Схема запроса: практические примеры использования
https://infostart.ru/1c/articles/1753707/

27 dmt
 
03.06.24
09:11
(22) ну сиди ной дальше
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн