8.х Интерактивное заполение настроек Построителя отчета

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем ESP Forest GT, 2 окт 2010.

  1. TopicStarter Overlay
    ESP Forest GT
    Offline

    ESP Forest GT

    Регистрация:
    18 июл 2010
    Сообщения:
    17
    Симпатии:
    0
    Баллы:
    1
    Создаю реквизиты формы с типами: Отбор, Порядок, ПоляНастройки
    [​IMG]
    Трем табличным полям присваиваю эти реквизиты:
    [​IMG]

    Код:
     Процедура КнопкаСформироватьНажатие(Кнопка)
    ПостроительОтчета=Новый ПостроительОтчета;
    ПостроительОтчета.Текст="ВЫБРАТЬ
    |	РНОстатки.Материал КАК Материал,
    |	РНОстатки.Склад КАК Склад,
    |	РНОстатки.КоличествоОстаток КАК Остаток
    |{ВЫБРАТЬ
    |	РНОстатки.Материал.* КАК Материал,
    |	РНОстатки.Склад.* КАК Склад,
    |	РНОстатки.КоличествоОстаток КАК Остаток,
    |	РНОбороты.КоличествоОборот КАК Обороты,
    |	РНОбороты.ВыручкаОборот КАК Выручка}
    |ИЗ
    |	РегистрНакопления.ОстаткиМатериалов.Остатки({(&ДатОст)}, ) КАК РНОстатки
    |		{ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.Продажи.Обороты({(&ДатНач)}, {(&ДанКон)}, , ) КАК РНОбороты
    |		ПО РНОстатки.Материал = РНОбороты.Номенклатура}
    |{ГДЕ
    |	РНОстатки.Склад.*,
    |	РНОстатки.Материал.*}
    |АВТОУПОРЯДОЧИТЬ";
    ПостроительОтчета.ЗаполнитьНастройки();
    
    ПоляНастройки=ПостроительОтчета.ДоступныеПоля;
    ЭлементыФОрмы.ТабличноеПоле1.СоздатьКолонки();
    
    Отбор=ПостроительОтчета.Отбор;
    ЭлементыФормы.ТабличноеПоле3.СоздатьКолонки();
    
    Порядок=ПостроительОтчета.Порядок;
    ЭлементыФОрмы.ТабличноеПоле2.СоздатьКолонки();
    КонецПроцедуры 
    
    В модуле присваиваю реквизитам настройки Построителя. Как это сделано в книге "Проф разработка" Габец стр425. После формирования и присваивания Построителю текста запроса, табличные поля с настройками не заполняются.

    Если делать без реквизитов, а присвоить тип значения и значение программно, то поля все равно пустые.
    Код:
    ПолеВыбранныеПоля=ЭлементыФормы.ТабличноеПоле4;
    ПолеВыбранныеПоля.ТипЗначения=Новый ОписаниеТипов("ПоляПостроителяОтчета");
    ПолеВыбранныеПоля.Значение=ПостроительОтчета.ВыбранныеПоля;
    ПолеВыбранныеПоля.СоздатьКолонки();
    
  2. TopicStarter Overlay
    ESP Forest GT
    Offline

    ESP Forest GT

    Регистрация:
    18 июл 2010
    Сообщения:
    17
    Симпатии:
    0
    Баллы:
    1
    Если добавить ЭлементыФОрмы.ТабличноеПоле1.ОбновитьСтроки();
    То строки в табличном поле на несколько секунд появляются, а потом опять исчезают
    Код:
    ПоляНастройки=ПостроительОтчета.ДоступныеПоля;
    ЭлементыФОрмы.ТабличноеПоле1.ОбновитьСтроки();
    ЭлементыФОрмы.ТабличноеПоле1.СоздатьКолонки();
    
  3. TopicStarter Overlay
    ESP Forest GT
    Offline

    ESP Forest GT

    Регистрация:
    18 июл 2010
    Сообщения:
    17
    Симпатии:
    0
    Баллы:
    1
    Реквизиты, данные которых присваиваются ТП для интерактивной настройки, хранят данные только во время во время выполнения кода.

    Код:
    Построитель.Текст=ПостроительОтчета.Текст; //Построитель-реквизит с типом: ПостроительОтчета
    Построитель.ЗаполнитьНастройки();          //ПостроительОтчета-программный объект
    ПостроительОтчета.ЗаполнитьНастройки(); 
    
    //Во время присвоения полей Построителя реквизиту ДоступныеПоля с типом ПоляНастройки система зависает.
    ДоступныеПоля=Построитель.ДоступныеПоля; 
    ЭлементыФормы.ТабличноеПоле1.СоздатьКолонки();
    
    
    //Здесь ТП4 корректно заполняется данными Построителя
    ПолеВыбранныеПоля=ЭлементыФормы.ТабличноеПоле4;
    ПолеВыбранныеПоля.ТипЗначения=Новый ОписаниеТипов("ПоляПостроителяОтчета");
    ПолеВыбранныеПоля.Значение=Построитель.ВыбранныеПоля;
    ПолеВыбранныеПоля.ОбновитьСтроки();
    ПолеВыбранныеПоля.СоздатьКолонки();
    
    
    Помогите. Я задолбался.

    p.s. Проверьте у себя.
    Создайте отчет. В форме определите реквизит ДоступныеПоля с типом ПоляНастройки. В Форму киньте ТабличноеПоле1 с данными ДоступныеПоля.

Поделиться этой страницей