СКД, вывод дерева значений в СКД #670187


#0 by TeoFrast
Существует дерево значений необходимо вывести его в СКД, возможно ли такое или придется использовать вывод через макет?
#1 by zippygrill
Через набор-объект?
#2 by TeoFrast
Да, к примеру через внешний источник данных.
#3 by GANR
Да возможно. Иерархические отчеты по "самопальной" иерархии описаны в книге Хрусталевой на странице 323 . Надо будет представить дерево значений в виде ТЗ, ТЗ загнать в набор данных СКД, а затем по книжке построить отчет. Все понятно?
#4 by К_Дач
На ИС есть статейки
#5 by TeoFrast
Опишу поподробнее: Производятся детали (спр-к) номенклатура, каждая деталь может производится из других деталей те в свою очередь еще из деталей. Иерархически эти детали не как не связаны между собой в справочнике номенклатуры. У меня есть ТЗ в которой есть для каждой детали, деталь для которой она изготавливается (еще есть уровень строки в исходном дереве значений) в СКД нужно получить следующее: Деталь1  Деталь1.1    Деталь1.3.1
#6 by К_Дач
Можно попробовать перед тем, как запихивать ТЗ в набор данных СКД - добавить колонку СслыкаНаРодителя, обойти ТЗ рекурсивно и заполнить эту колонку. Вот тебе будет связь между элементами. Потом пиши запрос по ТЗ с выводом иерархии и вперед
#7 by TeoFrast
У меня в ТЗ уже есть СслыкаНаРодителя (т.е. это то для изготавливания какой детали нужна текущая). Когда выводишь  в СКД с группировкой по СслыкаНаРодителя получается вот такой эффект: Деталь1 Деталь1.1 Деталь1.1.1 Деталь1.2 Т.е. все становиться первого уровня что Деталь1.1, что Деталь1.1.1.
#8 by К_Дач
значит, ты неверно заполнил эту колонку. У тебя в ней хранятся ссылки на самого первого родителя, поэтому и выводятся одним уровнем, а ты заполни ссылками на непосредственного родителя
#9 by TeoFrast
Дак тут как такового родителя нет, тут в качестве родителя выступает продукт для которого нужна текущая деталь...Т.е. в спровочнике номенклатура он не как не связаны.
#10 by К_Дач
имею ввиду "родитель" - твоя главная деталь. Заполни эту колонку ссылкой на деталь верхнего уровня по тебе известным правилам
#11 by TeoFrast
Спс за помощь!!! Но что не могу понять как это может помочь...подскажите плз.
#12 by runoff_runoff
ИЕРАРХИЯ.. а как платформа поймет.. что именно поле СсылкаНаРодителя является родителем?..
#13 by TeoFrast
Актуально!
#14 by GANR
Ответ в целиком и полностью. Лично у меня получилось пример из Хрусталевой модифицировать так, чтобы можно было делать отчет по распределению, например - каждая проводочка имеет GUID, выступающий в роли родителя и имеет такой же Идентификатор строки. Кажется, в УПП есть отчеты по спецификациям номенклатуры. Таблицу значений можно загнать в СКД как НаборДанныхОбъект.
#15 by TeoFrast
По хрусталевой смотрел, но я не могу понять как тут можно задать иерархию деталей? Ведь детали не как не связано между собой иерархически в справочнике номенклатура, а лишь связан иерархически в дереве значений. Т.е. если использовать метод Хрусталевой, то НаборДанных Иерархия, должен быть некий иерархический справочник где заданы связи для деталей вида: Деталь1  Деталь1.1    Деталь1.3.1 прием для каждой другой головной детали, он имеет свою иерархию.
#16 by GANR
Загнать в СКД таблицу значений, в строках которой содержатся по крайней мере 2 поля - ИдентификаторЭлемента и ИдентификаторРодителя, ну а потом попытаться связать этот набор данных с самим собой так, как указано в Хрусталевой.
#17 by TeoFrast
Руслан, огромное спасибо!!! Я просто когда изначально делал допустил ошибку)) а так все действительно получилось.
#18 by GANR
Ура! Искренне рад!
#19 by TeoFrast
Еще проблема возникла, при таком методе не возникает проблем с итогами? меня получается как то не очень, на 3 м уровне итоги корректные а вот на втором абсолютно нет, при том число получается вообще какое то левое.
#20 by GANR
Еще один важный момент - в первый уровень выборки (ОсновнойНабор) должны попадать только элементы дерева, которые не имеют дочерних элементов (в набор Иерархия должны попадать все) - иначе сам элемент попадет в свою же собственную группу и итог по нему примешается к остальному.
#21 by TeoFrast
Это я поправил но ошибка не ушло итоги также не корректно рассчитываются: вот ссылочка Зеленным корректные итоги, красным нет.
#22 by GANR
Ага - вспомнил, была такая проблема... В моем случае с распределением проводок просто нет ресурсов в СКД - Сумма и СуммаУпр в СКД выступают как обычные поля, а ИТОГИ, как таковые вообще не считаются - они берутся прямо из проводок. Вот что могу тебе предложить: рассчитать итоги в ТЗ, перед тем, как подать ее на вход в СКД, ресурсы в СКД вообще не вводить, а вместо них в таблицу Иерархия добавить поля, по которым тебе нужны итоги - такой подход меня спас.
#23 by TeoFrast
Что то не получается)))Может быть вы поможете мне не бесплатно конечно)))?
#24 by GANR
Я и сам копал иерархию в СКД не глубже вас, да и видение задачи у вас лучше. И сам еще не пробовал, если честно, строить иерархию по загнанной в СКД таблице значений. Думаю, вы сами быстрее сделаете. Попробуйте лучше смоделировать на простеньком примере из книжки Хрусталевой, или на своей упрещенном примере - вот моя рекомендация.
#25 by GANR
- вот так понятно, что надо делать? Нужно до того, как загнать ТЗ в СКД рассчитать (делается посредством рекурсий)/получить итоги по иерархии.
#26 by TeoFrast
Для получения ТЗ я делал просто запрос с итогами. Нужно до того, как загнать ТЗ в СКД рассчитать (делается посредством рекурсий)/получить итоги по иерархии. - а таком методе я незнаю, где можно описание посмотреть?
#27 by GANR
Рассчитать итог по иерархии можно посредством рекурсии, которая доходит до конечной детили, видит ее стоимость, а потом на рекурсивном возврате складывает итоги для агрегата. Вот кое-какой пример по рекурсиям в 1С , но вот сам алгоритм я пока себе представляю не четко - подумайте сами.
#28 by GANR
ЗЫ, возможно, есть способ и попроще , но я не догадываюсь о нем.
#29 by Eugeneer
язык 1С могуч - можно делать почти все.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С