- Вывод отчета СКД в коллекцию значений — Дерево Значений
- Вывод отчета СКД в коллекцию значений — Дерево Значений
- Создание дерева в СКД и выгрузка его в дерево значений
- Добавить комментарий Отменить ответ
- Свежие записи
- 1С 8.2 УП : Вывод отчета СКД в коллекцию значений — Дерево Значений
- СКД, вывод дерева значений в СКД
Вывод отчета СКД в коллекцию значений — Дерево Значений
В системе компоновки данных существует возможность выводить отчет не только в табличный документ, но и в коллекции значений (таблица значений, дерево значений).
Для вывода отчета в коллекцию предназначен объект ПроцессорВыводаРезультатаКомпоновкиВКоллекциюЗначений.
Пример вывода отчета в дерево значений:
Код 1C v 8.х
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновкиДанных = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,
КомпоновщикНастроек.Настройки, , , Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновкиДанных);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
ДеревоЗначений = Новый ДеревоЗначений;
ПроцессорВывода.УстановитьОбъект(ДеревоЗначений);
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
В данном примере результат вывода помещается в переменную ДеревоЗначений.
Работа с выводом в таблицу значений аналогична.
Стоит отметить, что при выводе результата компоновки в коллекцию значений существует несколько ограничений:
* В настройках нельзя использовать таблицы, диаграммы и вложенные схемы;
* Не используется условное оформление;
* Игнорируются папки в выбранных полях.
Как отчет на СКД сохранить в таблицу значений, а потом выгрузить в файл?
Источник
Вывод отчета СКД в коллекцию значений — Дерево Значений
В системе компоновки данных существует возможность выводить отчет не только в табличный документ, но и в коллекции значений (таблица значений, дерево значений).
Для вывода отчета в коллекцию предназначен объект ПроцессорВыводаРезультатаКомпоновкиВКоллекциюЗначений.
Пример вывода отчета в дерево значений:
Код 1C v 8.х
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновкиДанных = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,
КомпоновщикНастроек.Настройки, , , Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновкиДанных);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
ДеревоЗначений = Новый ДеревоЗначений;
ПроцессорВывода.УстановитьОбъект(ДеревоЗначений);
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
В данном примере результат вывода помещается в переменную ДеревоЗначений.
Работа с выводом в таблицу значений аналогична.
Стоит отметить, что при выводе результата компоновки в коллекцию значений существует несколько ограничений:
* В настройках нельзя использовать таблицы, диаграммы и вложенные схемы;
* Не используется условное оформление;
* Игнорируются папки в выбранных полях.
also
Как отчет на СКД сохранить в таблицу значений, а потом выгрузить в файл?
Источник
Создание дерева в СКД и выгрузка его в дерево значений
Колонка «Наименование» не является справочником и не позволяет автоматически создать иерархию, конечно ее можно создать программно, но это трудоемко, особенно собирать суммы итогов по иерархии. Итак, нам нужно получить дерево значений без особо трудного кодирования. Для начала, создадим СКД и создадим 2 частично одинаковых выборки с данными, как показано на рисунках ниже:
Первая выборка, задающая иерархию
Вторая выборка, такая же как первая, но содержит больше колонок
Связи между выборками, образующих дерево
Структура итоговых данных — само дерево
Если посмотреть на результат в отчете, он будет выглядеть так
Ниже приведен код, позволяющий получить дерево из СКД в переменную «ДеревоЗначений»:
СхемаКомпоновкиДанных = РеквизитФормыВЗначение ( «Отчет» ). ПолучитьМакет ( «МакетДанные» );
КомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных ;
КомпоновщикНастроек . Инициализировать (Новый ИсточникДоступныхНастроекКомпоновкиДанных ( СхемаКомпоновкиДанных ));
КомпоновщикНастроек . ЗагрузитьНастройки ( СхемаКомпоновкиДанных . НастройкиПоУмолчанию );
НастройкиКомпоновщика = КомпоновщикНастроек . Настройки ;
ПараметрыНастройки = НастройкиКомпоновщика . ПараметрыДанных ;
// если нужны параметры — устанавливаем так
Параметр = ПараметрыНастройки . Элементы . Найти ( «Дата» );
Параметр . Использование = Истина;
Параметр . Значение = Отчет . Дата ;
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных ;
МакетКомпоновкиДанных = КомпоновщикМакета . Выполнить ( СхемаКомпоновкиДанных , НастройкиКомпоновщика , , , Тип ( «ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений» ));
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных ;
ПроцессорКомпоновкиДанных . Инициализировать ( МакетКомпоновкиДанных );
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений ;
ДеревоЗначений = Новый ДеревоЗначений ;
ПроцессорВывода . УстановитьОбъект ( ДеревоЗначений );
ПроцессорВывода . Вывести ( ПроцессорКомпоновкиДанных );
Добавить комментарий Отменить ответ
Свежие записи
Источник
1С 8.2 УП : Вывод отчета СКД в коллекцию значений — Дерево Значений
В системе компоновки данных существует возможность выводить отчет не только в табличный документ, но и в коллекции значений (таблица значений, дерево значений).
Для вывода отчета в коллекцию предназначен объект ПроцессорВыводаРезультатаКомпоновкиВКоллекциюЗначений.
Пример вывода отчета в дерево значений:
Код 1C v 8.х
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновкиДанных = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,
КомпоновщикНастроек.Настройки, , , Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновкиДанных);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
ДеревоЗначений = Новый ДеревоЗначений;
ПроцессорВывода.УстановитьОбъект(ДеревоЗначений);
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
В данном примере результат вывода помещается в переменную ДеревоЗначений.
Работа с выводом в таблицу значений аналогична.
Стоит отметить, что при выводе результата компоновки в коллекцию значений существует несколько ограничений:
* В настройках нельзя использовать таблицы, диаграммы и вложенные схемы;
* Не используется условное оформление;
* Игнорируются папки в выбранных полях.
also
Как отчет на СКД сохранить в таблицу значений, а потом выгрузить в файл?
Источник
СКД, вывод дерева значений в СКД
Существует дерево значений необходимо вывести его в СКД, возможно ли такое или придется использовать вывод через макет?
(0) Да возможно. Иерархические отчеты по «самопальной» иерархии описаны в книге Хрусталевой на странице 323 http://padabum.com/x.php?id=18905. Надо будет представить дерево значений в виде ТЗ, ТЗ загнать в набор данных СКД, а затем по книжке построить отчет. Все понятно?
(3) Опишу поподробнее:
Производятся детали (спр-к) номенклатура, каждая деталь может производится из других деталей те в свою очередь еще из деталей. Иерархически эти детали не как не связаны между собой в справочнике номенклатуры.
У меня есть ТЗ в которой есть для каждой детали, деталь для которой она изготавливается (еще есть уровень строки в исходном дереве значений) в СКД нужно получить следующее:
Деталь1
Деталь1.1
Деталь1.1.1
Деталь1.1.1.1
Деталь1.1.2
Деталь1.2
Деталь1.3
Деталь1.3.1
Можно попробовать перед тем, как запихивать ТЗ в набор данных СКД — добавить колонку СслыкаНаРодителя, обойти ТЗ рекурсивно и заполнить эту колонку. Вот тебе будет связь между элементами. Потом пиши запрос по ТЗ с выводом иерархии и вперед
(6) У меня в ТЗ уже есть СслыкаНаРодителя (т.е. это то для изготавливания какой детали нужна текущая). Когда выводишь в СКД с группировкой по СслыкаНаРодителя получается вот такой эффект:
Деталь1
Деталь1.1
Деталь1.1.1
Деталь1.2
Т.е. все становиться первого уровня что Деталь1.1, что Деталь1.1.1.
(7) значит, ты неверно заполнил эту колонку. У тебя в ней хранятся ссылки на самого первого родителя, поэтому и выводятся одним уровнем, а ты заполни ссылками на непосредственного родителя
(8)Дак тут как такового родителя нет, тут в качестве родителя выступает продукт для которого нужна текущая деталь. Т.е. в спровочнике номенклатура он не как не связаны.
(9) имею ввиду «родитель» — твоя главная деталь. Заполни эту колонку ссылкой на деталь верхнего уровня по тебе известным правилам
(5) Ответ в (3) целиком и полностью. Лично у меня получилось пример из Хрусталевой модифицировать так, чтобы можно было делать отчет по распределению, например — каждая проводочка имеет GUID, выступающий в роли родителя и имеет такой же Идентификатор строки. Кажется, в УПП есть отчеты по спецификациям номенклатуры. Таблицу значений можно загнать в СКД как НаборДанныхОбъект.
(14) По хрусталевой смотрел, но я не могу понять как тут можно задать иерархию деталей? Ведь детали не как не связано между собой иерархически в справочнике номенклатура, а лишь связан иерархически в дереве значений.
Т.е. если использовать метод Хрусталевой, то НаборДанных Иерархия, должен быть некий иерархический справочник где заданы связи для деталей вида:
Деталь1
Деталь1.1
Деталь1.1.1
Деталь1.1.1.1
Деталь1.1.2
Деталь1.2
Деталь1.3
Деталь1.3.1
прием для каждой другой головной детали, он имеет свою иерархию.
(15) Загнать в СКД таблицу значений, в строках которой содержатся по крайней мере 2 поля — ИдентификаторЭлемента и ИдентификаторРодителя, ну а потом попытаться связать этот набор данных с самим собой так, как указано в Хрусталевой.
(16) Руслан, огромное спасибо. Я просто когда изначально делал допустил ошибку)) а так все действительно получилось.
(18) Еще проблема возникла, при таком методе не возникает проблем с итогами?
меня получается как то не очень, на 3 м уровне итоги корректные а вот на втором абсолютно нет, при том число получается вообще какое то левое.
(19) Еще один важный момент — в первый уровень выборки (ОсновнойНабор) должны попадать только элементы дерева, которые не имеют дочерних элементов (в набор Иерархия должны попадать все) — иначе сам элемент попадет в свою же собственную группу и итог по нему примешается к остальному.
(20) Это я поправил но ошибка не ушло итоги также не корректно рассчитываются: вот ссылочка http://files.mail.ru/1B4209ACED8F4D44BB1877F5F2663DF8
Зеленным корректные итоги, красным нет.
(21) Ага — вспомнил, была такая проблема. В моем случае с распределением проводок просто нет ресурсов в СКД — Сумма и СуммаУпр в СКД выступают как обычные поля, а ИТОГИ, как таковые вообще не считаются — они берутся прямо из проводок. Вот что могу тебе предложить: рассчитать итоги в ТЗ, перед тем, как подать ее на вход в СКД, ресурсы в СКД вообще не вводить, а вместо них в таблицу Иерархия добавить поля, по которым тебе нужны итоги — такой подход меня спас.
(23) Я и сам копал иерархию в СКД не глубже вас, да и видение задачи у вас лучше. И сам еще не пробовал, если честно, строить иерархию по загнанной в СКД таблице значений. Думаю, вы сами быстрее сделаете. Попробуйте лучше смоделировать (22) на простеньком примере из книжки Хрусталевой, или на своей упрещенном примере — вот моя рекомендация.
http://ximage.ru/data/imgs/1372680096.jpg — вот так понятно, что надо делать? Нужно до того, как загнать ТЗ в СКД рассчитать (делается посредством рекурсий)/получить итоги по иерархии.
(25) Для получения ТЗ я делал просто запрос с итогами.
Нужно до того, как загнать ТЗ в СКД рассчитать (делается посредством рекурсий)/получить итоги по иерархии. — а таком методе я незнаю, где можно описание посмотреть?
Источник