HELP! ДоступныеПоляВыбора не добавляются при добавлении програмно в СКД?

1. user817897 2 04.11.20 14:52 Сейчас в теме
Почему не видно в Доступных полях?
        ВыбранноеПоле = КомпоновщикНастроек.Настройки.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
        ВыбранноеПоле.Заголовок = "ПериодГодТ";
        ВыбранноеПоле.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Авто;
        ВыбранноеПоле.Использование = Истина;
        ВыбранноеПоле.Поле = Новый ПолеКомпоновкиДанных("ПериодГодТ");

Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. SeiOkami 3550 04.11.20 15:04 Сейчас в теме
В этом коде добавляется выбранное поле. Оно никак не влияет на доступные поля.
Для того, чтобы поле появилось в доступных, оно должно быть в наборе данных СКД (с соответствующими настройками и ролями у пользователя)
3. user817897 2 04.11.20 15:08 Сейчас в теме
(2) Добавлял программно в набор данных

Поле = СхемаКомпоновкиДанных.НаборыДанных.НаборДанных10.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных"));    
        Поле.Заголовок      = "ПериодГодТ";
        Поле.ПутьКДанным    = "ПериодГодТ";
        Поле.Поле           = "ПериодW_2";
        Поле.ТипЗначения    = Новый ОписаниеТипов("Дата");
tetraren; +1 Ответить
4. user817897 2 04.11.20 15:43 Сейчас в теме
(2) вот расписал с нуля к примеру, по факту должно быть видно в Доступных полях выбора... но их нет
    ИсточникДанных = СхемаКомпоновкиДанных.ИсточникиДанных.Добавить();
    ИсточникДанных.Имя = "ИсточникДанных1";
    ИсточникДанных.ТипИсточникаДанных = "Local";
    
    НаборДанных = СхемаКомпоновкиДанных.НаборыДанных.Добавить(Тип("НаборДанныхОбъектСхемыКомпоновкиДанных"));
    НаборДанных.Имя = "НаборДанных10";
    НаборДанных.ИмяОбъекта = "ДанныеПоВсемАвто";
    НаборДанных.ИсточникДанных = "ИсточникДанных1";
    
    Поле = НаборДанных.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных"));    
    Поле.Заголовок      = "Сотрудник";
    Поле.ПутьКДанным    = "Сотрудник";
    Поле.Поле           = "Сотрудник";
    
    Поле = НаборДанных.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных"));    
    Поле.Заголовок      = "КоличествоЗамеров";
    Поле.ПутьКДанным    = "КоличествоЗамеров";
    Поле.Поле           = "КоличествоЗамеров";
    
    Поле = НаборДанных.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных"));    
    Поле.Заголовок      = "СуммаЗатраченногоТоплива";
    Поле.ПутьКДанным    = "СуммаЗатраченногоТоплива";
    Поле.Поле           = "СуммаЗатраченногоТоплива";
    
    Поле = НаборДанных.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных"));    
    Поле.Заголовок      = "имя";
    Поле.ПутьКДанным    = "имя";
    Поле.Поле           = "имя";
    
    Поле = НаборДанных.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных"));    
    Поле.Заголовок      = "ПериодГодТ";
    Поле.ПутьКДанным    = "ПериодГодТ";
    Поле.ВыражениеПредставления = "ПериодГодТ";
    Поле.Поле           = "ПериодW_2";
    Поле.ТипЗначения    = Новый ОписаниеТипов("Дата");
    
    Поле = НаборДанных.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных"));    
    Поле.Заголовок      = "ПериодМесяцТ";
    Поле.ПутьКДанным    = "ПериодМесяцТ";
    Поле.Поле           = "ПериодW_2";
    Поле.ТипЗначения    = Новый ОписаниеТипов("Дата");
    
    Поле = НаборДанных.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных"));    
    Поле.Заголовок      = "ПериодДеньТ";
    Поле.ПутьКДанным    = "ПериодДеньТ";
    Поле.Поле           = "ПериодW_2";
    Поле.ТипЗначения    = Новый ОписаниеТипов("Дата");
    
    
    
    ПолеРесурса = СхемаКомпоновкиДанных.ПоляИтога.Добавить();   
    ПолеРесурса.ПутьКДанным = "КоличествоЗамеров"; 
    ПолеРесурса.Выражение   = "СУММА(КоличествоЗамеров)";
    
    ПолеРесурса = СхемаКомпоновкиДанных.ПоляИтога.Добавить();   
    ПолеРесурса.ПутьКДанным = "СуммаЗатраченногоТоплива"; 
    ПолеРесурса.Выражение   = "СУММА(СуммаЗатраченногоТоплива)";

Показать
tetraren; +1 Ответить
5. SeiOkami 3550 05.11.20 08:17 Сейчас в теме
(4) скопировал код - у меня работает



В какой момент он выполняется ?
До инициализации компоновщика?
Прикрепленные файлы:
ВнешнийОтчет1.erf
6. user817897 2 05.11.20 09:04 Сейчас в теме
(5)я верю что он работает, даже уверен что работает, но на обычных формах этого не заметно...))
вот продолжение)
    //КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    //МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиКомпоновки);
    //
    //ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
    //ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных);
    //      
    //ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    //ПроцессорВывода.УстановитьДокумент(ДокументРезультат); 
    //ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);

Показать
7. SeiOkami 3550 05.11.20 09:08 Сейчас в теме
(6) А что именно "не заметно" ?
В твоём коде СКД программно создаётся, а потом сразу же выводится?
Не вижу здесь вообще инициализации компоновщика настроек. Именно в нём хранятся доступные поля. И они создаются в момент инициализации.
12. Xershi 1536 18.10.23 13:17 Сейчас в теме
(6) если в запросе не используется конструктор, то в поля данные попадут сами. А с конструктором (код запроса в фигурных скобках) этого автоматически нет. В 11 про это написал.
8. user817897 2 16.11.20 10:29 Сейчас в теме
Всем спасибо, сделал. Тема Закрыта
9. пользователь 27.07.21 17:00
Сообщение было скрыто модератором.
...
10. RomanUzmov 40 13.03.23 10:34 Сейчас в теме
(8) Может всё же описывать, что именно было сделано, и какой правильный код ? Так-то другим тоже интересно решение проблемы, а не просто в конце темы натыкаться на слова "Тема закрыта".
S_Shevkunov; Grania; Hogyoku; +3 Ответить
11. Xershi 1536 16.10.23 23:18 Сейчас в теме
#Вставка
    ПодстрокаПоиска = "ЕСТЬNULL(ИсходныеДанныеПоследнийЗапрос.Номенклатура.ИспользоватьУпаковки, ЛОЖЬ) КАК ИспользоватьУпаковки";
    ПодстрокаЗамены = "ЕСТЬNULL(ИсходныеДанныеПоследнийЗапрос.Номенклатура.ИспользоватьУпаковки, ЛОЖЬ) КАК ИспользоватьУпаковки,
                    |ВЫБОР
                    |    КОГДА ИсходныеДанныеПоследнийЗапрос.Номенклатура.ВесЗнаменатель = 0
                    |        ТОГДА 0
                    |    ИНАЧЕ ИсходныеДанныеПоследнийЗапрос.Номенклатура.КоэффициентЕдиницыДляОтчетов * ИсходныеДанныеПоследнийЗапрос.Номенклатура.ВесЧислитель / ИсходныеДанныеПоследнийЗапрос.Номенклатура.ВесЗнаменатель
                    |КОНЕЦ КАК ВесДляОтчетов,
                    |1 КАК Тест";
    ПодстрокаПоиска2 = "ТекущийПользователь.*}";
    ПодстрокаЗамены2 = "ТекущийПользователь.*,
                        |ВесДляОтчетов,
                        |Тест}";
    Для Каждого НаборСКД Из СхемаКомпоновкиДанных.НаборыДанных Цикл        
        НаборСКД.Запрос = СтрЗаменить(НаборСКД.Запрос, ПодстрокаПоиска, ПодстрокаЗамены);
        НаборСКД.Запрос = СтрЗаменить(НаборСКД.Запрос, ПодстрокаПоиска2, ПодстрокаЗамены2);
        Поле = НаборСКД.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных"));
        Поле.Заголовок     = "Вес для отчетов";
        Поле.ПутьКДанным = "ВесДляОтчетов";
        Поле.Поле         = "ВесДляОтчетов";
        Поле.ТипЗначения = Новый ОписаниеТипов("Число");
        Поле = НаборСКД.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных"));
        Поле.Заголовок     = "Тест";
        Поле.ПутьКДанным = "Тест";
        Поле.Поле         = "Тест";
        Поле.ТипЗначения = Новый ОписаниеТипов("Число");
    КонецЦикла;
    #КонецВставки


Показать

У меня такая же проблема была.
Все решилось, после того как в запросе добавил данные в кусок в фигурных скобках {}!
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот