Иерархическая группировка в СКД: как получить значение из группы в детальных записях?

1. lmnlmn 69 10.12.18 09:07 Сейчас в теме
Есть отчет с иерархической группировкой. При выводе отчета необходимо при выводе детальных записей количество умножить на коэффициент из группы-родителя. Подскажите как его получить?

Пример отчета во вложении.
Прикрепленные файлы:
МоделированиеОтчетаДинамикаВыполненияЗаказа.erf
+
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
6. oleg-x 26 10.12.18 18:09 Сейчас в теме
(1) 1) Для основного отчета нет выбранных полей, только для группировки.
Не делайте дополнительное поле коф. а добавьте ВычислитьВыражениеСГруппировкойМассив в ресурсы, тогда для каждой группировки у Вас будет выводится свой коэффициент.
+
9. theifx 11.12.18 12:07 Сейчас в теме
(1)Как мне кажется тут проще использовать внешний источник данных и передавать через него уже готовую таблицу.
+
10. lmnlmn 69 17.12.18 08:50 Сейчас в теме
(9) У меня через 2 внешних источника. Проблема в том что я не могу добраться до коэффициента родительской группировки из детальных записей. В детали я не могу сразу засунуть нужный коэффициент так как одна и та же детальная запись может входить в группировки с разным коэффициентом.
+
15. theifx 17.12.18 12:39 Сейчас в теме
(10)Ну так скомпонуйте вашу таблицу из двух ,так как вам удобно кодом и передавайте то что собрали . как пример https://infostart.ru/public/533544/
+
2. ginshou 10.12.18 09:50 Сейчас в теме
Попробуй как-нибудь так, точно не понял задачи, возможно то
Прикрепленные файлы:
МоделированиеОтчетаДинамикаВыполненияЗаказа.erf
+
3. lmnlmn 69 10.12.18 10:01 Сейчас в теме
(2) Надо чтоб у стрелы был коэффициент 0,5 (от Фермы)
+
4. ginshou 10.12.18 11:21 Сейчас в теме
Так название конфигурации даже не было описано в которой выполняешь, я просто скинул пример , в котором в ресурсе берется количество детальной записи и умножается на результат ВычислитьВыражение по группировке . Если вычислить выражение что-то не то возвращает , то может быть поможет ВычислитьВыражениеСГруппировкойВМассив . Ну это надо смотреть на конфе, т.к я не знаю какие данные он возвращает
+
5. lmnlmn 69 10.12.18 11:31 Сейчас в теме
(4) Конфигурация не причем. Специально сделал внешний отчет с примером без привязки к конфе. Надо количество в детальной записи умножить на коэффициент из родителя. Или сделать чтоб в поле "Коэффициент родителя" у детальной записи заполнялся с родительской группировке. "ВычислитьВыражение..." в упор не видит родителей, хотя по родительской иерархии вполне себе считает, но в деталях не берет.
+
7. quNas 6 11.12.18 07:44 Сейчас в теме
А проще сделать не пробовали: виртуальную таблицу с коэффициентами и объединение по родителю, тогда в каждой строке будет нужный коэффициент для вычисления. Подробнее в личку.
+
11. lmnlmn 69 17.12.18 09:23 Сейчас в теме
(7) Не уловил идею. Что такое виртуальная таблица и где объединение делать?
+
8. quNas 6 11.12.18 07:57 Сейчас в теме
Запрос в Модуле сделать и передать в СКД, как Вы делаете.
+
12. quNas 6 17.12.18 11:37 Сейчас в теме
Либо в менеджеретаблиц, либо в запросе. А самый простой вариант запрос! Сейчас накидаю!
+
13. quNas 6 17.12.18 11:52 Сейчас в теме
Запрос = новый Запрос;
Запрос.МенеджерВременныхТаблиц.Таблицы
запрос.УстановитьПараметр("ТЗИерархия",ТЗИерархия);
Запрос.УстановитьПараметр("ТЗДанные",ТЗДанные);
Запрос.Текст="ВЫБРАТЬ
| Данные.КлючДетали,
| Данные.Номенклатура,
| Данные.Количество,
| Данные.Коэффициент,
| Иерархия.Коэффициент КАК КоэффициентИерархии
|ИЗ
| &ТЗИерархия КАК Иерархия
| ЛЕВОЕ СОЕДИНЕНИЕ &ТЗДанные КАК Данные
| ПО Иерархия.КлючДетали = Данные.КлючДетали
| И Иерархия.Номенклатура = Данные.Номенклатура";
ТзДанные = Запрос.Выполнить().Выгрузить();
+
14. lmnlmn 69 17.12.18 12:24 Сейчас в теме
(13) Спасибо за разъяснение, но такой вариант не пройдет так как одна и та же деталь из ТЗДанные может входить в неограниченное количество узлов, а коэффициент задается именно у узла. Если бы не требовалось использовать иерархическую группировку в СКД, то то был бы рабочий вариант. А так по вашему набору при построении иерархии в СКД получаться дубликаты детальных записей кратно их вхождению в узлы. Я нечто подобное уже пробовал делать.
+
16. quNas 6 18.12.18 04:11 Сейчас в теме
Хорошо, последний вариант, у нас была построена группировка на кодах, т.е. у каждого иерархического уровня свой код уникальный, если у Вас иерархия будет таким образом организовано, то это будет работать. Либо думайте и придумывайте, у меня больше мыслей пока нет.
+
17. lmnlmn 69 18.12.18 08:38 Сейчас в теме
(16) Склоняюсь к такому варианту. Есть только одна загвоздка - отчет содержит десятки тысяч записей и при таком подходе количество записей в таблице детальных данных драматически увеличивается что снижает скорость построения отчета в несколько раз.
+
18. olga1512 6 18.12.18 21:50 Сейчас в теме
Попробуйте через Вычисляемые поля СКД - вычислить выражение и т.д. Там очень большой функционал см. https://infostart.ru/public/86764/
+
19. lmnlmn 69 19.12.18 09:57 Сейчас в теме
(18) У меня не получилось по этому и создал тему. "Вычислить выражение" работает если группировка не иерархическая. В моем случае не получается получить значения по родительской группировке.
+
20. herfis 498 19.12.18 10:05 Сейчас в теме
(19) Сам не пробовал, но в мануалах заявлено:
ТипРасчета. Тип Строка.
..........................
Если параметр имеет значение "Иерархия", то выражение нужно вычислять для родительской иерархической записи, если таковая имеется, и для всей группировки, если родительской иерархической записи не имеется.
..........................
+
21. lmnlmn 69 19.12.18 10:06 Сейчас в теме
(20) В теме прикреплен внешний отчет с проблемным примером который можно открыть даже в пустой конфигурации и попробовать.
+
25. herfis 498 19.12.18 11:12 Сейчас в теме
(21) Тут быстро не подскажу, с пользовательскими иерархиями не работал.
+
22. lmnlmn 69 19.12.18 10:12 Сейчас в теме
(20) Прикреплю еще раз с чуть измененными для наглядности данными.

Вопрос: как у кронштейна вывести коэффицент от стрелы составной частью которой он является?
Прикрепленные файлы:
МоделированиеОтчетаДинамикаВыполненияЗаказа.erf
+
23. lmnlmn 69 19.12.18 10:16 Сейчас в теме
(20)
то выражение нужно вычислять для родительской иерархической записи
я так понимаю что речь идет про иерархию элементов а не иерархическую группировку.
+
24. quNas 6 19.12.18 11:06 Сейчас в теме
Посмотреть бы на то, из чего Вы это делаете, может мысли бы и появились)
И еще Вы таблицы руками, которые пишете, выбираете из каких ресурсов? Вернитесь вначал0....
+
26. lmnlmn 69 19.12.18 12:15 Сейчас в теме
(24) Таблицы формируются руками. Основа для них документы "Заказ на производство" в 1С: УПП. Упрощенно, если номенклатура из вкладки "Продукция" одного заказа встречается во вкладке "Материалы" другого, то это означает что одно изделие является составной частью другого. Про коэффициент. Часть изделий может является оснасткой и определен коэффициент ее использования при изготовлении продукции. Причем определен он только для первого изделия в подсборке, а надо чтоб он применялся ко всем дочерним узлам при формировании отчета.
+
27. orilien 12 19.12.18 14:22 Сейчас в теме
В последней, по крайней мере, версии отчета в настройках нет детальных записей, следовательно выражение для вычисляемого поля нужно делать в ресурсе. Там можно попробовать просто Минимум(Коэффициент) и указать расчет по КлючДетали Иерархия. Но по идее бы разделить поля коэффициентов для разных наборов, сделать детальные записи и вычисляемое поле коэффициента родителя.
+
28. quNas 6 20.12.18 04:02 Сейчас в теме
Номенклатурные группы почитайте!!! Есть еще такая вещь как характеристики в свойствах. Упростите, Вы усложняете.
+
29. btr 20.12.18 12:13 Сейчас в теме
Я бы попробовал в деталях для выборки коэффициента использовать поиск коэффициента в ТЗ Иерархия в строке по ключу узла.
+
30. olga1512 6 21.12.18 16:25 Сейчас в теме
Действительно вычисляемые поля в данном случае не сработают, т.к детальные записи у вас в группировке и существуют сами по себе не привязаны к основному набору Иерархия. Если бы данные были в одном наборе то сработала бы след функция

Выбор
Когда Уровень() > 0
Тогда ВычислитьВыражение("Коэффициент", , "Иерархия")
Иначе Null
Конец

Сейчас она вычисляет так только Родительскую главную иерархию. Попробуйте объединить в один набор с помощью начального заполнения иерархического спуска, либо тогда уже программно обрабатывать в модуле объекта. Возможно вам также поможет статья https://start1c.blogspot.com/2017/01/blog-post.html
+
31. timeforlive 15 02.01.19 18:25 Сейчас в теме
Решение для СКД есть. Во вкладке Ресурсы языком запроса можно вывести любые данные. Посмотрите ссылки ниже.
Можно через Ресурсы:

https://forum.infostart.ru/forum9/topic102836/
http://www.sql.ru/forum/959443/1s-8-skd-prosummirovat-znacheniya-po-gruppirovkam

Либо через выражаемые поля, ИТС дает иллюстрации на приведенном примере:
https://its.1c.ru/db/metod8dev/content/1810/hdoc
+
Внимание! Тема сдана в архив

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот