Имя: Пароль:
1C
1С v8
СКД, вывод дерева значений в СКД
,
0 TeoFrast
 
22.06.13
10:58
Существует дерево значений необходимо вывести его в СКД, возможно ли такое или придется использовать вывод через макет?
1 zippygrill
 
22.06.13
12:57
Через набор-объект?
2 TeoFrast
 
22.06.13
13:38
(1) Да, к примеру через внешний источник данных.
3 GANR
 
23.06.13
00:18
(0) Да возможно. Иерархические отчеты по "самопальной" иерархии описаны в книге Хрусталевой на странице 323 http://padabum.com/x.php?id=18905. Надо будет представить дерево значений в виде ТЗ, ТЗ загнать в набор данных СКД, а затем по книжке построить отчет. Все понятно?
4 К_Дач
 
23.06.13
00:56
5 TeoFrast
 
23.06.13
10:31
(3) Опишу поподробнее:
Производятся детали (спр-к) номенклатура, каждая деталь может производится из других деталей те в свою очередь еще из деталей. Иерархически эти детали не как не связаны между собой в справочнике номенклатуры.
У меня есть ТЗ в которой есть для каждой детали, деталь для которой она изготавливается (еще есть уровень строки в исходном дереве значений) в СКД нужно получить следующее:
Деталь1
 Деталь1.1
   Деталь1.1.1
     Деталь1.1.1.1
   Деталь1.1.2
 Деталь1.2
 Деталь1.3
   Деталь1.3.1
6 К_Дач
 
23.06.13
10:53
Можно попробовать перед тем, как запихивать ТЗ в набор данных СКД - добавить колонку СслыкаНаРодителя, обойти ТЗ рекурсивно и заполнить эту колонку. Вот тебе будет связь между элементами. Потом пиши запрос по ТЗ с выводом иерархии и вперед
7 TeoFrast
 
23.06.13
11:00
(6) У меня в ТЗ уже есть СслыкаНаРодителя (т.е. это то для изготавливания какой детали нужна текущая). Когда выводишь  в СКД с группировкой по СслыкаНаРодителя получается вот такой эффект:
Деталь1
Деталь1.1
Деталь1.1.1
Деталь1.2
Т.е. все становиться первого уровня что Деталь1.1, что Деталь1.1.1.
8 К_Дач
 
23.06.13
11:16
(7) значит, ты неверно заполнил эту колонку. У тебя в ней хранятся ссылки на самого первого родителя, поэтому и выводятся одним уровнем, а ты заполни ссылками на непосредственного родителя
9 TeoFrast
 
23.06.13
12:36
(8)Дак тут как такового родителя нет, тут в качестве родителя выступает продукт для которого нужна текущая деталь...Т.е. в спровочнике номенклатура он не как не связаны.
10 К_Дач
 
23.06.13
16:32
(9) имею ввиду "родитель" - твоя главная деталь. Заполни эту колонку ссылкой на деталь верхнего уровня по тебе известным правилам
11 TeoFrast
 
23.06.13
16:41
(10) Спс за помощь!!! Но что не могу понять как это может помочь...подскажите плз.
12 runoff_runoff
 
23.06.13
18:43
(6) ИЕРАРХИЯ.. а как платформа поймет.. что именно поле СсылкаНаРодителя является родителем?..
13 TeoFrast
 
24.06.13
07:56
Актуально!
14 GANR
 
24.06.13
12:37
(5) Ответ в (3) целиком и полностью. Лично у меня получилось пример из Хрусталевой модифицировать так, чтобы можно было делать отчет по распределению, например - каждая проводочка имеет GUID, выступающий в роли родителя и имеет такой же Идентификатор строки. Кажется, в УПП есть отчеты по спецификациям номенклатуры. Таблицу значений можно загнать в СКД как НаборДанныхОбъект.
15 TeoFrast
 
25.06.13
10:58
(14) По хрусталевой смотрел, но я не могу понять как тут можно задать иерархию деталей? Ведь детали не как не связано между собой иерархически в справочнике номенклатура, а лишь связан иерархически в дереве значений.
Т.е. если использовать метод Хрусталевой, то НаборДанных Иерархия, должен быть некий иерархический справочник где заданы связи для деталей вида:
Деталь1
 Деталь1.1
   Деталь1.1.1
     Деталь1.1.1.1
   Деталь1.1.2
 Деталь1.2
 Деталь1.3
   Деталь1.3.1
прием для каждой другой головной детали, он имеет свою иерархию.
16 GANR
 
25.06.13
15:11
(15) Загнать в СКД таблицу значений, в строках которой содержатся по крайней мере 2 поля - ИдентификаторЭлемента и ИдентификаторРодителя, ну а потом попытаться связать этот набор данных с самим собой так, как указано в Хрусталевой.
17 TeoFrast
 
26.06.13
10:14
(16) Руслан, огромное спасибо!!! Я просто когда изначально делал допустил ошибку)) а так все действительно получилось.
18 GANR
 
26.06.13
11:52
(17) Ура! Искренне рад!
19 TeoFrast
 
27.06.13
10:06
(18) Еще проблема возникла, при таком методе не возникает проблем с итогами?
меня получается как то не очень, на 3 м уровне итоги корректные а вот на втором абсолютно нет, при том число получается вообще какое то левое.
20 GANR
 
27.06.13
12:04
(19) Еще один важный момент - в первый уровень выборки (ОсновнойНабор) должны попадать только элементы дерева, которые не имеют дочерних элементов (в набор Иерархия должны попадать все) - иначе сам элемент попадет в свою же собственную группу и итог по нему примешается к остальному.
21 TeoFrast
 
27.06.13
13:31
(20) Это я поправил но ошибка не ушло итоги также не корректно рассчитываются: вот ссылочка http://files.mail.ru/1B4209ACED8F4D44BB1877F5F2663DF8

Зеленным корректные итоги, красным нет.
22 GANR
 
27.06.13
14:21
(21) Ага - вспомнил, была такая проблема... В моем случае с распределением проводок просто нет ресурсов в СКД - Сумма и СуммаУпр в СКД выступают как обычные поля, а ИТОГИ, как таковые вообще не считаются - они берутся прямо из проводок. Вот что могу тебе предложить: рассчитать итоги в ТЗ, перед тем, как подать ее на вход в СКД, ресурсы в СКД вообще не вводить, а вместо них в таблицу Иерархия добавить поля, по которым тебе нужны итоги - такой подход меня спас.
23 TeoFrast
 
01.07.13
15:26
(22) Что то не получается)))Может быть вы поможете мне не бесплатно конечно)))?
24 GANR
 
01.07.13
15:42
(23) Я и сам копал иерархию в СКД не глубже вас, да и видение задачи у вас лучше. И сам еще не пробовал, если честно, строить иерархию по загнанной в СКД таблице значений. Думаю, вы сами быстрее сделаете. Попробуйте лучше смоделировать (22) на простеньком примере из книжки Хрусталевой, или на своей упрещенном примере - вот моя рекомендация.
25 GANR
 
01.07.13
16:04
http://ximage.ru/data/imgs/1372680096.jpg - вот так понятно, что надо делать? Нужно до того, как загнать ТЗ в СКД рассчитать (делается посредством рекурсий)/получить итоги по иерархии.
26 TeoFrast
 
01.07.13
21:33
(25) Для получения ТЗ я делал просто запрос с итогами.
Нужно до того, как загнать ТЗ в СКД рассчитать (делается посредством рекурсий)/получить итоги по иерархии. - а таком методе я незнаю, где можно описание посмотреть?
27 GANR
 
01.07.13
21:45
(26) Рассчитать итог по иерархии (25) можно посредством рекурсии, которая доходит до конечной детили, видит ее стоимость, а потом на рекурсивном возврате складывает итоги для агрегата. Вот кое-какой пример по рекурсиям в 1С http://forum.infostart.ru/forum24/topic27409/, но вот сам алгоритм я пока себе представляю не четко - подумайте сами.
28 GANR
 
01.07.13
21:50
ЗЫ, возможно, есть способ и попроще (27), но я не догадываюсь о нем.
29 Eugeneer
 
01.07.13
21:55
язык 1С могуч - можно делать почти все.
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс