|
Табличная часть в Дерево значений | ☑ | ||
---|---|---|---|---|
0
Faust21
20.04.23
✎
10:59
|
Имеется на форме документа табличная часть "перепись" (заполняю кодом из файла ТСД) и пустое пока ДеревоЗначений "ДЗ" с такими же реквизитами (колонками)
Паллет/Наименование/Коробки/Вес Сгруппировываю по паллет/наименование и суммирую коробки/вес Тк в одном паллете могут быть разные наименования, не получится увидеть сумму коробок и веса по паллету. И потому хочу по красоте из табличной части "Перепись" сделать Дерево значений "ДЗ", где Родителями будут значения из колонки "Паллет". Чтобы можно было увидеть примерно такой результат: +Паллет1 /12/123 .Товар1 /10/111 .Товар2 /2/12 +Паллет2 /3/22 .Товар1 /1/10 .Товар2 /2/12 То что находил в интернете адаптировать не смог. У меня точно известно что у родителя всего один подуровень. Помогите с реализацией задумки. Спасибо Добился результата таким кодом: &НаСервере Процедура ВДЗНаСервере() ЗначениеВРеквизитФормы(ТаблицаЗначенийВДеревоЗначений(РеквизитФормыВЗначение("Перепись"),"Паллет"),"ДЗ"); КонецПроцедуры &НаСервере Функция ТаблицаЗначенийВДеревоЗначений(ТЗ, ГруппировкаКолонка) Экспорт ПЗ = Новый ПостроительЗапроса; ПЗ.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТЗ);//передаем ТЗ ПЗ.ДобавлениеПредставлений = ТипДобавленияПредставлений.НеДобавлять; ПЗ.ИсточникДанных.Колонки[ГруппировкаКолонка].Измерение = Истина;//по этой колонке идет группировка ПЗ.ЗаполнитьНастройки(); ПЗ.Выполнить(); Дерево = ПЗ.Результат.Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией); Возврат Дерево; КонецФункции Но нет суммы колонок в родителе, есть идеи как реализовать? |
|||
1
SleepyHead
20.04.23
✎
10:30
|
(0) Добавить колонку в дерево значений? Да не, бред какой-то ))
|
|||
2
mikecool
20.04.23
✎
10:31
|
(0) какое, Фауст, ты предпочитаешь?
|
|||
3
Faust21
20.04.23
✎
10:56
|
(2) что какое?
|
|||
4
Faust21
20.04.23
✎
10:58
|
(1) В реквизите ДЗ есть все колонки как и в таблице значений, или в переменной "Дерево"?
|
|||
5
Волшебник
20.04.23
✎
10:59
|
(0) >> Но нет суммы колонок в родителе
чего нет? |
|||
6
mikecool
20.04.23
✎
11:09
|
(3) пиво, ессно, или ты рекламу не помнишь?
|
|||
7
Faust21
20.04.23
✎
11:09
|
(5)
Я вижу в таблице ДЗ +Паллет1 /Пусто/Пусто < - Тут мне нужна сумма в родителе Паллет1 по подчиненным .Товар1 /10/111 .Товар2 /2/12 |
|||
8
Faust21
20.04.23
✎
11:12
|
(6) Не пью, тв не смотрю. И тебе не рекомендую. Расслабляюсь задавая вопросы по 1с на форуме
|
|||
9
Волшебник
20.04.23
✎
11:13
|
(7) Вам нужна сумма колонок или колонка с суммой?
|
|||
10
Faust21
20.04.23
✎
11:14
|
(9) Сумма колонок в колонках Коробки и Вес, напротив родителя.
|
|||
11
Faust21
20.04.23
✎
11:17
|
"Тк в одном паллете могут быть разные наименования, не получится увидеть сумму коробок и веса по паллету." Основная задача. Мне удалось только Сгруппировать по Паллету, а сумму я не вижу
|
|||
12
Волшебник
20.04.23
✎
11:20
|
(10) Что будет в сумме? штуки или килограммы?
|
|||
13
Faust21
20.04.23
✎
11:31
|
(12) ДЗ имеет такие колонки: Паллет/Наименование/Коробки/Вес
в сумме должны быть и штуки(коробки) и киллограммы(вес). В итоге строка Родителя должна выглядеть так : Паллет1/(пусто)/12(это коробки)/123 (это киллограммы) |
|||
14
Волшебник
20.04.23
✎
11:34
|
(13) Что означает "(пусто)"? В начальном сообщении не было никакого "(пусто)"
|
|||
15
mikecool
20.04.23
✎
11:35
|
(13) покажи "итоги" запроса
|
|||
16
Волшебник
20.04.23
✎
11:36
|
(0) Вот Вы пишете "Сгруппировываю по паллет/наименование и суммирую коробки/вес"
Что мешает сгруппировать по "паллет" и суммировать "коробки/вес"? |
|||
17
Faust21
20.04.23
✎
11:53
|
https://ibb.co/4m7pGCC - Изначальные данные полученные из ТСД
Далее я их группирую в отдельное табличное поле по Паллету, Наименованию и суммирую коробки и вес паллета и с определенным наименованием (верхняя таблица) https://ibb.co/MgH8THT Получаю в ДЗ (нижняя таблица) группировку по родителю, мне не хватает сумм ДЗ по подчиненным родителю строкам в колонках "Мест" и "Вес" (уж извините что не все наименования колонок совпадают из первого топика, надеялся что так задача будет понятней) |
|||
18
Волшебник
20.04.23
✎
11:56
|
(17) Теперь группируйте данные по паллету, без наименования, суммируя коробки и вес.
Кстати, у Вас на скриншоте нет коробок (или мест) |
|||
19
Faust21
20.04.23
✎
11:56
|
Скриншоты приложил
|
|||
20
Faust21
20.04.23
✎
11:57
|
(18) "(уж извините что не все наименования колонок совпадают из первого топика, надеялся что так задача будет понятней)"
Подскажете как должен выглядеть код? |
|||
21
Волшебник
20.04.23
✎
11:58
|
(19) Вам не нужно дерево значений. Вам нужен отчёт на СКД к табличной части. В запросе нужны итоги по группировкам
|
|||
22
Волшебник
20.04.23
✎
11:58
|
(20) Здесь не нужен программный код вообще.
|
|||
23
Faust21
20.04.23
✎
12:09
|
(21) Я в программировании 1с совсем зеленый. Я раньше такого не делал и с ходу на ум приходит куча вопросов.
1. Как без запроса получить данные для отчета, ведь я данные не сохраняю (все манипуляции должны быть произведены до сохранения) и не умею к ним обращаться без этого "выбрать * из Документ.Тсд где Документ.Тсд.Ссылка = &Ссылка" и тд. 2. Как отчет поместить на форму документа Это пока первое что пришло на ум. Вам виднее, безусловно. Но вместо одного вопроса по пути создания дерева, мне придется задавать кучу других, а все мы знаем как на такие вопросы отвечают на форуме)) Вряд ли найдутся желающие помочь мне в этом разобраться. |
|||
24
Волшебник
20.04.23
✎
12:11
|
(23) Сохраните данные. Потом используйте запрос с итогами или группировками
|
|||
25
Волшебник
20.04.23
✎
12:12
|
Ещё есть метод Свернуть у таблицы значений. Может помочь просуммировать количество и вес.
|
|||
26
Faust21
20.04.23
✎
12:14
|
и я маленько наврал, из табличной части по итогу получить данные для дерева значений у меня не получилось и пришлось создать еще таблицу с типом таблица значений, которую я заполнил аналогично табличной части "перепись". Тк из ТЗ получить ДЗ больше информации в интернете.
|
|||
27
Волшебник
20.04.23
✎
12:15
|
(26) Вы много наврали и много наделали лишнего. Уберите всю эту ерунду и сделайте нормально.
|
|||
28
Faust21
20.04.23
✎
13:07
|
(24) Сохранять не вариант.
(27) Давайте я попробую ввести новые 100% данные. Все предыдущие забыли. В документы на форме присутствуют 2 табличные части: 1. Объект.Перепись (Большая таблица с переписью коробок в первом скриншоте) эта таблица мне нужна для дальнейшей распечатки переписи каждого паллета. Она заполняется из данных ТСД по кнопке. 2. Объект.Заказ (верхняя таблица из второго скриншота) эта таблица формируется на основании первой в ряде случаев, группируя по паллету и названию и суммируя колонки "Мест" и "Вес" в соответвии с группировкой. Эта таблица мне тоже нужна как табличная часть, тк при другом формате считывания данных ТСД сам суммирует коробки и Вес в соответствии со штришкодом, данные из такого считывания заполняют эту таблицу минуя таблицу перепись, тк там уже и не перепись а просуммированные данные, на основании которых я планирую заполнять Документ реализации, именно по этому эта таблица и называется "Заказ". Возвращаясь к нашим баранам с переписью. Мне нужна информативная таблица (В моем случае это дерево значений, которое я назвал "ДеревоПаллет") с переписью паллет, где будет номер "Паллет"а, сумма "Мест", и сумма "Вес", и чтобы была возможность развернуть этот паллет и увидеть из чего он состоит (меня устраивает нижняя таблица значений из второго скриншота, за исключением того что нет суммы "мест" и "Вес"а всего паллета. Теоритически можно не использовать табличную часть "Заказ". И напрямую получать данные из таблицы "перепись", но мне было проще с ней, по шагам, получил одно, из этого другое и тд. В данном случае табличную часть "Заказ" я планировал скрывать и выводить таблицу "ДеревоПаллет". Далее при клике в таблице "Дерево паллет" на строку паллета я хотел распечатывать перепись каждого паллета в отдельности по коробке, данные для которой я буду брать из табличной части "Перепись". Как то так)) Мой рабочий код для заполнения "ДеревоПаллет" такой: &НаСервере Процедура ВДЗНаСервере() ЗначениеВРеквизитФормы(ТаблицаЗначенийВДеревоЗначений(РеквизитФормыВЗначение("ТЗ"),"Паллет"),"ДеревоПаллет"); КонецПроцедуры &НаСервере Функция ТаблицаЗначенийВДеревоЗначений(ТЗ, ГруппировкаКолонка) Экспорт ПЗ = Новый ПостроительЗапроса; ПЗ.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТЗ);//передаем ТЗ ПЗ.ДобавлениеПредставлений = ТипДобавленияПредставлений.НеДобавлять; ПЗ.ИсточникДанных.Колонки[ГруппировкаКолонка].Измерение = Истина;//по этой колонке идет группировка ПЗ.ЗаполнитьНастройки(); ПЗ.Выполнить(); Дерево = ПЗ.Результат.Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией); Возврат Дерево; КонецФункции Минус его в том, что у меня пока не получилось заполнить данные из табличной части "Заказ" и пришлось создать таблицу значений "ТЗ" заполняемую точно также как и табличную часть "Заказ" (тк в интернете больше примеров как и ТЗ сделать ДЗ). Собственно проблема осталась одна: мне нужна сумма каждого паллета в дереве значений "ДеревоПаллет", в строке родителя. Или подскажите как реализовать задуманное иначе. Спасибо |
|||
29
Волшебник
20.04.23
✎
13:09
|
(28) Если нужна сумма по паллетам, то какая строка в Вашем программном коде пытается это сделать?
|
|||
30
Faust21
20.04.23
✎
13:20
|
(29) Пока никакая, я за подсказкой сюда и обратился.
Я не понимаю как работает Построитель запроса. Да и вообще дерево значений. Такие задачи решаю с помощью поиска типовых решений в интернете и адаптирую под себя. |
|||
31
Волшебник
20.04.23
✎
13:28
|
(30) Попробуйте добавить в Ваш программный код запрос с итогами/группировками или Свернуть.
|
|||
32
Волшебник
20.04.23
✎
13:32
|
Может добавить ресурсы?
ПЗ.ИсточникДанных.Колонки[РесурсКолонка].Ресурс = Истина; |
|||
33
Faust21
20.04.23
✎
13:41
|
(32) Увы ПЗ.ИсточникДанных.Колонки["Вес"].Ресурс = Истина; Поле объекта ресурс не найдено.
Я вот думаю, может существует костыль в виде обхода дерева и таким образом как то у родителя вносить в колонки суммы подчиненных значений? |
|||
34
Волшебник
20.04.23
✎
13:42
|
(33) Гляньте отладчиком, что там с колонками.
|
|||
35
azernot
20.04.23
✎
14:49
|
(33)
ПЗ.ИсточникДанных.Колонки["Вес"].Поле = Истина; ПЗ.ИсточникДанных.Колонки["Вес"].Итог = "Сумма(Вес)"; |
|||
36
Faust21
20.04.23
✎
15:19
|
(35) &НаСервере
Процедура ВДЗНаСервере() ЗначениеВРеквизитФормы(ТаблицаЗначенийВДеревоЗначений(РеквизитФормыВЗначение("ТЗ"),"Паллет"),"ДеревоПаллет"); КонецПроцедуры &НаСервере Функция ТаблицаЗначенийВДеревоЗначений(ТЗ, ГруппировкаКолонка) Экспорт ПЗ = Новый ПостроительЗапроса; ПЗ.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТЗ);//передаем ТЗ ПЗ.ДобавлениеПредставлений = ТипДобавленияПредставлений.НеДобавлять; ПЗ.ИсточникДанных.Колонки[ГруппировкаКолонка].Измерение = Истина;//по этой колонке идет группировка ПЗ.ИсточникДанных.Колонки.Мест.Итог = "СУММА(Мест)"; ПЗ.ИсточникДанных.Колонки.Вес.Итог = "СУММА(Вес)"; ПЗ.ЗаполнитьНастройки(); ПЗ.Выполнить(); Дерево = ПЗ.Результат.Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией); Возврат Дерево; КонецФункции заработало!!! https://ibb.co/WG00tj6 Подскажи, как убрать возникшую родительскую строку с общими итогами? (раньше не было) И как в колонке "Название" написать текстом слово "Паллет"? |
|||
37
Волшебник
20.04.23
✎
15:26
|
(36) Вам надо всё это зачеркнуть и сделать отчёт на СКД.
|
|||
38
azernot
20.04.23
✎
15:53
|
(36) Никак через построитель запроса с источником данных. Общие итоги там не отключить.
Сделайте шаг назад. Так ли нужен вам этот построитель? Да и вообще, если то, что вы демонстрируете - это и есть задача, а не упрощённая интерпретация, может и не мудрить, а загнать свою ТЗ в запрос как параметр, вытащить нужные результаты, обойти и заполнить дерево как требуется? |
|||
39
azernot
20.04.23
✎
16:04
|
Что типа этого:
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ТЗ.Паллет КАК Паллет, | ТЗ.Название КАК Название, | ТЗ.Вес КАК Вес, | ТЗ.Мест КАК Мест |ПОМЕСТИТЬ ВТ_ТЗ |ИЗ | &ТЗ КАК ТЗ |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ВТ_ТЗ.Паллет КАК Паллет, | ВТ_ТЗ.Вес КАК Вес, | ВТ_ТЗ.Мест КАК Мест, | ВТ_ТЗ.Название КАК Название |ИЗ | ВТ_ТЗ КАК ВТ_ТЗ |ИТОГИ | СУММА(Вес), | СУММА(Мест), | ""Паллет"" КАК Название |ПО | Паллет"; Запрос.Параметры.Вставить("ТЗ", ТЗ); РезультатЗапроса = Запрос.Выполнить(); Дерево = РезультатЗапроса.Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией); |
|||
40
Faust21
20.04.23
✎
17:35
|
(39)
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ТЗ.Паллет КАК Паллет, | ТЗ.Название КАК Название, | ТЗ.Вес КАК Вес, | ТЗ.Мест КАК Мест |ПОМЕСТИТЬ ВТ_ТЗ |ИЗ | &ТЗ КАК ТЗ |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ВТ_ТЗ.Паллет КАК Паллет, | ВТ_ТЗ.Вес КАК Вес, | ВТ_ТЗ.Мест КАК Мест, | ВТ_ТЗ.Название КАК Название |ИЗ | ВТ_ТЗ КАК ВТ_ТЗ |ИТОГИ | СУММА(Вес), | СУММА(Мест), | ""Паллет"" КАК Название |ПО | Паллет"; Запрос.Параметры.Вставить("ТЗ", ТЗ.Выгрузить()); РезультатЗапроса = Запрос.Выполнить(); Дерево = РезультатЗапроса.Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией); ЗначениеВРеквизитФормы(Дерево, "ДеревоПаллет"); Запустить не смог( В начале была проблема с ТЗ, в инете прочитал что нужно выгрузить. Сделал. Теперь не проходит ЗначениеВРеквизитФормы(Дерево, "ДеревоПаллет"); Ругается на Недопустимое значение параметра (параметр номер '2') я посмотрел, колонки все совпадают и по типу и по названию https://ibb.co/XsmHnh4 |
|||
41
Волшебник
20.04.23
✎
17:36
|
(40) сверху деревоЗначений, снизу таблицаЗначений
|
|||
42
Faust21
20.04.23
✎
17:44
|
(41) Простите, я не понял к чему это
|
|||
43
mikecool
20.04.23
✎
17:47
|
(42) как у тебя реквизит формы называется?
|
|||
44
Faust21
20.04.23
✎
17:50
|
(43) Так на скриншоте видно https://ibb.co/XsmHnh4
|
|||
45
azernot
20.04.23
✎
18:27
|
(40) А нет ли на форме какого-то другого реквизита с именем "Дерево"?
На всякий случай попробуйте так: ДеревоAzernot = РезультатЗапроса.Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией); ЗначениеВРеквизитФормы(ДеревоAzernot , "ДеревоПаллет"); |
|||
46
azernot
20.04.23
✎
18:28
|
И ещё, судя по всему группировка с иерархией не нужна. Достаточно обычной группировки. ОбходРезультатаЗапроса.ПоГруппировкам
|
|||
47
Faust21
20.04.23
✎
18:37
|
(45) Я нашел только что в чем причина.
Стал уже переименовывать колонки копипастом проверяя на каждом этап, и решил нафиг снести колонку номер строки, поскольку она не нужна, и все завелось!!! УРА!!!!! Огромное спасибо. |
|||
48
Волшебник
20.04.23
✎
20:42
|
(47) Вам всё-таки надо пересмотреть концепцию. Для такой задачи не нужно использовать ПостроительЗапроса. Это устаревший объект и он тут вообще не в тему. Вы забиваете гвоздь микроскопом. Суть задачи: просуммировать 2 ресурса по одному измерению. Вы устроили тут конфигурацию.
|
|||
49
mistеr
20.04.23
✎
21:34
|
В УНФ есть отчет ПлатежныйКалендарь. Там как раз данный выводятся в дерево значений с суммированием.
Может поможет. |
|||
50
Волшебник
20.04.23
✎
21:54
|
(49) Там палеты?
|
|||
51
mistеr
20.04.23
✎
21:58
|
(50) Там деньги, но принцип тот же.
|
|||
52
Волшебник
20.04.23
✎
22:01
|
(51) Легко складывать деньги. А как насчёт суммирования весов и мест?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |