Имя: Пароль:
1C
 
Таблица значений из Динамического списка и программное редактирование набора колонок.
0 Bair
 
22.03.25
19:05
Пытаюсь получить таблицу значений с динамического списка на форме. Рабочий код приведен ниже. Добавить дополнительные отборы программно было не сложно. Но вот включить в тз колонки, которые не были включены пользователем на форме, но доступны к включению оказалось непосильной задачей.

Подскажите, пожалуйста, как программно включить какое нибудь поле? Например в списке не было колонки Ссылка, и соответственно и в таблице значений его не будет. Но если через Изменить форму включить отображение этого реквизита, то и в ТЗ он появится. Но как это сделать программно...

//Получим список
    Схема = Элементы.Список.ПолучитьИсполняемуюСхемуКомпоновкиДанных();
    Настройки = Элементы.Список.ПолучитьИсполняемыеНастройкиКомпоновкиДанных();
    
    // Добавим отбор
    ЭлементОтбора = Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ПометкаУдаления");
    ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
    ЭлементОтбора.ПравоеЗначение = ЛОЖЬ;
    // Добавим отбор
    ЭлементОтбора = Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Проведен");
    ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
    ЭлементОтбора.ПравоеЗначение = ИСТИНА;
    
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных();
    МакетКомпоновки = КомпоновщикМакета.Выполнить(Схема, Настройки, , ,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
    
    ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновки.Инициализировать(МакетКомпоновки);
    
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
    ТаблицаРезультат = ПроцессорВывода.Вывести(ПроцессорКомпоновки);
1 Bair
 
22.03.25
19:10
Пробовал вот так, не работает. видимо, не то.

// Добавим выбранное поле для вывода в отчет.  
    ВыбранноеПоле = Настройки.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
    ВыбранноеПоле.Поле = Новый ПолеКомпоновкиДанных("Ссылка");
2 Bair
 
22.03.25
19:22
Вроде справился, пока добился результата вот так

   ВыбранноеПоле = Настройки.Структура[0].Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
   ВыбранноеПоле.Использование = Истина;
   ВыбранноеПоле.Заголовок = "Ссылка";
   ВыбранноеПоле.Поле = Новый ПолеКомпоновкиДанных("Ссылка");
3 craxx
 
23.03.25
01:04
(0) А цель-то какая? зачем это извращение?
4 PR
 
23.03.25
01:47
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.