Имя: Пароль:
1C
 
Как запихнуть дерево значений в компоновку СКД (для группировок)
0 gabd_marat
 
11.07.17
14:44
Как запихнуть дерево значений в компоновку СКД (для группировок). Программное формирование группировки
Реквизит 1
|– Реквизит 2
   |– Реквизит 3
      |– ...
1 Лефмихалыч
 
11.07.17
14:46
если тебе из дерева надо получить источник данных для СКД, то - ни как.
А вот, если надо из СКД получить дерево значений, то варианты есть.
2 gabd_marat
 
11.07.17
14:52
(1) Плохо ориентируюсь в определениях. Как можно вывести отчет остатки товара на складах на скд с программным формированием структуры скд ? Настройкой структуры, которую предоставляет СКД, пользоваться нельзя.
3 gabd_marat
 
11.07.17
14:52
Из СКД дерево значений получать не надо
4 gabd_marat
 
11.07.17
14:53
Нужно программно сформировать структуру скд
5 novichok79
 
11.07.17
14:55
(4) переводи в таблицу значений и скармливай в качестве внешнего источника данных.
6 novichok79
 
11.07.17
14:59
(4) если нужно сформировать структуру СКД, так это не так делается. тут дерево значений не при чем вообще, тут надо в схеме компоновки вручную структуру формировать.
7 Лефмихалыч
 
11.07.17
14:59
(2) переведи на русский это
8 gabd_marat
 
11.07.17
15:00
Я новичок и не знаю всех возможностей СКД.
Типа такого:
нТаблица = РеквизитФормыВЗначение("Отчет.ТабЗначВыбора");
    
    Для Каждого Строка Из нТаблица Цикл
        ГруппировкаПо = ТекНастройкиКомпоновщика.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
        ГруппировкаПо.Имя = Строка.Реквизиты;
        ГруппировкаПо.Использование = Истина;
        
        ПолеГруппировки = ГруппировкаПо.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
        ПолеГруппировки.Использование      = Истина;
        ПолеГруппировки.Поле               = Новый ПолеКомпоновкиДанных(Строка.Реквизиты);
        ПолеГруппировки.ТипГруппировки = ТипГруппировкиКомпоновкиДанных.Иерархия;
        ПолеГруппировки.ТипДополнения      = ТипДополненияПериодаКомпоновкиДанных.БезДополнения;

        //добавить выводимые поля в группировке

        ВыбранноеПоле = ГруппировкаПо.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
        ВыбранноеПоле.Поле = Новый ПолеКомпоновкиДанных(Строка.Реквизиты);
    КонецЦикла;
9 gabd_marat
 
11.07.17
15:01
ДетальныеЗаписи = ГруппировкаПо.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
    ДетальныеЗаписи.Имя = "Детальные";
    ДетальныеЗаписи.Использование = Истина;
    
    //добавить выводимые поля в детальных записях: Номенклатуру и количество остаток

    ВыбранноеПоле = ДетальныеЗаписи.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));  
    ВыбранноеПоле.Поле = Новый ПолеКомпоновкиДанных("Номенклатура");
    ВыбранноеПоле = ДетальныеЗаписи.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));  
    ВыбранноеПоле.Поле = Новый ПолеКомпоновкиДанных("КоличествоОстаток");

    ДанныеРасшифровкиОтчета = Новый ДанныеРасшифровкиКомпоновкиДанных;
//....
10 gabd_marat
 
11.07.17
15:09
Все вопросы исходя из задания:
Создать отчет по остаткам товара на складах со следующими возможностями:
1)    Выбор пользователем любых реквизитов справочника Номенклатура
2)    Формирование отчета с группировкой по выбранным реквизитам в следующем виде:
Реквизит 1
|– Реквизит 2
   |– Реквизит 3
      |– ...
Для реализации данных возможностей пользоваться настройкой структуры, которую предоставляет СКД, нельзя. Необходимо реализовать одним из двух вариантов:
1)    Программно предоставить возможность выбора реквизитов, программно сформировать отчет с использованием макета.
2)    (предпочтительный) Использовать для вывода отчета СКД, но при этом программно предоставить возможность выбора реквизитов, программно произвести настройку структуры СКД. Допускается использование процедур и функций типового механизма печати для программной работы со структурой компоновки данных.
11 MiniMuk
 
11.07.17
15:16
ГруппировкиВывода = таблица где поля представление и полекомпоновщика

&НаСервере
Процедура СформироватьСтруктуруГруппировокНаСервере()
    НастройкиКомпоновщика = Отчет.КомпоновщикНастроек.Настройки;
    НастройкиКомпоновщика.Структура.Очистить();
    УровеньГруппировки  = Отчет.КомпоновщикНастроек.Настройки.Структура;
    Для каждого ЭлементГруппировки Из ГруппировкиВывода Цикл
        //Нашли = КомпоновщикНастроек.Настройки.ДоступныеПоляГруппировок.Элементы.Найти(ЭлементГруппировки.Имя);
        //Если Нашли = Неопределено Тогда Продолжить; КонецЕсли;
        
        МояГруппировка = УровеньГруппировки.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
        МояГруппировка.Имя  = ЭлементГруппировки.Представление;
        МояГруппировка.Использование = Истина;
        МояГруппировка.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));
        
        ДобавляемаяГрупировка = МояГруппировка.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
        ДобавляемаяГрупировка.Использование      = Истина;
        ДобавляемаяГрупировка.Поле               = ЭлементГруппировки.ПолеКомпоновки;//Нашли.Поле;
        ДобавляемаяГрупировка.ТипГруппировки = ТипГруппировкиКомпоновкиДанных.Элементы;
        ДобавляемаяГрупировка.ТипДополнения = ТипДополненияПериодаКомпоновкиДанных.БезДополнения;
        ДобавляемаяГрупировка.ТипДополнения = ТипДополненияПериодаКомпоновкиДанных.БезДополнения;
        УровеньГруппировки = МояГруппировка.Структура;

    
    КонецЦикла;
    МояГруппировка = УровеньГруппировки.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
    //МояГруппировка.Имя  = ЭлементГруппировки.Представление;
    МояГруппировка.Использование = Истина;
    АвтоПоле = МояГруппировка.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));
    АвтоПоле.Использование = Истина;
КонецПроцедуры
12 MiniMuk
 
11.07.17
15:18
ЕСли есть бсп можешь использовать чтото типа

    НастройкиКомпоновки.Структура.Очистить();
    КомпоновкаДанныхКлиентСервер.ДобавитьГруппировку(КомпоновщикНастроек);
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс