|
8.1 Вывод промежуточных итогов в ТЗ | ☑ | ||
---|---|---|---|---|
0
breezee
25.09.15
✎
18:59
|
Мне нужно для каждого столбца, если у этого реквизита 1 строки этого столбца стоит параметр истина тогда нужно посчитать сумму нижестоящих элементов и вывести в строку с параметроми столбец для котрого посчитана сумма. Написал код на обработчик окончания редактирования строки ТЗ(код ниже). Он выводит сумму общую для всех ячеек ниже строки с параметром в ячейку 1 строки с параметром. Что я сделал не так? Подскажите, пожалуйста.
ш = Колстрок; Для ж = 1 по КолКолонок цикл //со 2 колонки Пока ш>=0 цикл //с последней по первую строки Если НЕ ТабличноеПоле1[ш][0].ЗачетнаяЕдиница тогда //суммируется СуммЗач = СуммЗач + ТабличноеПоле1[ш][ж]; иначе ТабличноеПоле1[ш][ж] = СуммЗач; //выводится СуммЗач = 0; КонецЕсли; ш = ш -1; КонецЦикла; КонецЦикла; |
|||
1
Wobland
25.09.15
✎
19:02
|
придумал какую-то хрень вместо отчёта
|
|||
2
breezee
25.09.15
✎
19:11
|
(1) Это не отчет, это для ТЗ на форме
|
|||
3
Wobland
25.09.15
✎
19:12
|
придумал какую-то херь. так лучше?
|
|||
4
Рэйв
25.09.15
✎
19:12
|
Косноязычие 80 лвл:-)
|
|||
5
breezee
25.09.15
✎
19:13
|
(3) Да) Но почему эта хрень не пашет?
|
|||
6
Wobland
25.09.15
✎
19:17
|
(4) да? человек хочет выборочно видеть итоги по группировкам, причём в ТП. я со второго раза даже понял ;)
зачем именно выборочно, зачем именно в ТП, как это всё внутре устроено, даже думать не хочу |
|||
7
breezee
25.09.15
✎
19:22
|
(6) Вообще не первый раз подобное задание, правда в 1 раз было в печатной форме(комплектующие для котлов, т.е. там идет котел с суммой по нему и ниже комплектующие и суммы по ним), я к тому что много где такое может понадобиться. Сейчас проблема в том что это для динамической тз. Т.е. проблемы вроде и нет, я обхожу сначала для одного столбца, считаю сумму с последней строчки до строчки с параметром и вывожу сумму в строчку с параметром, дальше то же самоедля следущего столбца, я понятия не имею почему это не работает. Может вы поможете?
|
|||
8
Wobland
25.09.15
✎
19:24
|
(7) возьми СКД и показывай все итоги
|
|||
9
breezee
25.09.15
✎
19:27
|
(8) Я не могу взять СКД, это, блин, для таблицы значений на форме нужно сделать, я не понимаю где я ошибся
|
|||
10
Wobland
25.09.15
✎
19:29
|
таблица значений - это такой кусок памяти, есличо. в отсутствии необходимости табдокумента не убедил
|
|||
11
breezee
25.09.15
✎
19:31
|
(10) Простите, я не понимаю, если мне действительно нужно использовать СКД для динамической таблицы значений на форме - то как мне это вообще сделать? Может просто подскажиет где я ошибся в(0)?
|
|||
12
Serginio1
25.09.15
✎
19:31
|
||||
13
Wobland
25.09.15
✎
19:31
|
(11) не дошло. ну и ладно
|
|||
14
breezee
25.09.15
✎
19:41
|
(12) Простите, я не смог понят что оттуда мне поможет.
(13) Можете сказать напрямую, пожалуйста, я не понимаю. Вообще я уже 2 часа бьюсь над этим идиотизмом, я просто не понимаю почему он не работает как надо. |
|||
15
Wobland
25.09.15
✎
19:47
|
(14) я зол, голоден и не люблю мисту. тупо лениво что-то объяснять
|
|||
16
breezee
25.09.15
✎
19:49
|
(15) Ладно, сейчас вечер пятницы, наверное завтра днем пересоздам. А чего злишься - то? Расслабься, время отдыха.
|
|||
17
Wobland
25.09.15
✎
19:57
|
(16) да упоротые вконец охренели. прошлых достоных людей вообще не видно, хоть и не забанены. а бан-лист в целом доставляет ;)
|
|||
18
breezee
25.09.15
✎
20:00
|
(17) Все же расслабься, нужно наслаждаться жизнью)
|
|||
19
Wobland
25.09.15
✎
20:02
|
(18) наслаждаюсь, да. у меня тут "зелёное крыло" на фоне ;) комедийный сериал
|
|||
20
Serginio1
25.09.15
✎
20:04
|
(14) Там есть функция
глСгруппироватьТзПоПолям(Тз,Поля,СуммируемыеПоля,ПоляСортировкиТзПоГруппе="") Посмотри на реализацию |
|||
21
breezee
25.09.15
✎
20:09
|
(20) Да, я её видел, но там обращение по строке, у меня по строке и столбцу , да вообще я просто не понимаю почему мой код не работает он ДОЛЖЕН работать, я думал что меня ткнут там где у меня не правильно, все равно спасибо
(19) Вообще советую Доктора кто посмотреть для полной релаксации. Хотя кто он нём не знает) |
|||
22
Wobland
25.09.15
✎
20:13
|
(21) насколько понимаю, они сильно разные в каждом сезоне. с какого начать, я так и не выбрал ;)
|
|||
23
breezee
25.09.15
✎
20:18
|
(22) Рекомендую с 1 сезона 2005, там уже все воременненько) они вообще все годные, но старые так и не осилил
|
|||
24
breezee
25.09.15
✎
20:20
|
(23) Так все новые что смотрел очень годные, порекомендовал с 1 только потому что он первый
|
|||
25
Serginio1
25.09.15
✎
20:28
|
Для ж = 1 по КолКолонок цикл //со 2 колонки
СуммЗач = 0; //!!!! Если у тебя последняя строка не выводится, то и не обнуляется. |
|||
26
breezee
25.09.15
✎
20:34
|
Так она и не должна обнуляется, она вывелась и сразу обнуляется. Пока не вывелась суммируется по колонке Вот примерно как все выглядит у меня (не знаю, понятно вышло ли)
http://i.imgur.com/ebBj3TD.png |
|||
27
breezee
25.09.15
✎
20:41
|
(25) Я забыл написать, пролема в том что они все выводятся не в своих колонках, а тольо в первой
|
|||
28
Serginio1
25.09.15
✎
20:43
|
У тебя при начале подсчета по колонке нужно обнулить значение.
Если у тебя в первой строке не стоит вывод, то на следующую колонку перейдет значение. Так наверное ТабличноеПоле1[Ж][Ш] = СуммЗач; |
|||
29
Serginio1
25.09.15
✎
20:45
|
Нет прошу прощения.
ТабличноеПоле1[Ш][Ж] = СуммЗач; Но перед циклом по строкам нужно СуммЗач обнулять |
|||
30
Serginio1
25.09.15
✎
20:48
|
Для ж = 1 по КолКолонок цикл //со 2 колонки
СуммЗач = 0; Ш=КоличествоСтрок; |
|||
31
breezee
25.09.15
✎
20:49
|
(29) Спасибо, но все равно выводит не там где надо, все время выводит в первой, может у меня проблема в коде до этого, вот весь код обработчика(ниже) Сумму выводит только в колонке ВсегоЧасов http://i.imgur.com/wzwy7fL.png
СуммаСтроки = 0; СуммЗач = 0; Колстрок = ТабличноеПоле1.Количество()-1; КолКолонок = ТабличноеПоле1.Колонки.Количество()-1; Для ш = 0 По Колстрок цикл для ж = 2 по КолКолонок цикл СуммаСтроки = СуммаСтроки + ТабличноеПоле1[ш][ж]; КонецЦикла; Элемент.ТекущаяСтрока.ВсегоЧасов = СуммаСтроки; СуммаСтроки = 0; КонецЦикла; Если Элемент.ТекущаяСтрока.ВидРаботы.ЗачетнаяЕдиница тогда //добаить строку И ПОФИКСИТЬ 2 РАЗА ДОБАВЛЕНИЕ СДЕЛАТЬ Стро = ТабличноеПоле1.Добавить(); Стро.ВидРаботы = Справочники.ВидыУчебнойРаботы.НайтиПоКоду(1); КонецЕсли; //просчет для не зачетных единиц ш = Колстрок; Для ж = 1 по КолКолонок цикл //со 2 колонки СуммЗач = 0; Пока ш>=0 цикл //с последней по первую строки Если НЕ ТабличноеПоле1[ш][0].ЗачетнаяЕдиница тогда //суммируется СуммЗач = СуммЗач + ТабличноеПоле1[ш][ж]; иначе ТабличноеПоле1[ш][ж] = СуммЗач; //выводится СуммЗач = 0; КонецЕсли; ш = ш -1; КонецЦикла; КонецЦикла; |
|||
32
breezee
25.09.15
✎
20:52
|
Так, стало интересней, закомментив я понял почему выводит только в первой - потому что это сумма по строке изменяется и изменяет знчение в первой. Теперь вопрос почему кроме первой сумма не считатеся
|
|||
33
breezee
25.09.15
✎
20:54
|
В отладичке цикл по колонкам идет
|
|||
34
Serginio1
25.09.15
✎
20:59
|
Еще раз
Для ж = 1 по КолКолонок цикл //со 2 колонки ш = Колстрок; Когда у тебя Ш перед циклом то оно превращается в 0 после первого цикла по колонке. А дальше уже срабатывает условие Пока ш>=0 цикл //с последней по первую строки а ш уже равно 0 |
|||
35
breezee
25.09.15
✎
21:00
|
(34) Понял, спасибо большое
|
|||
36
breezee
25.09.15
✎
21:00
|
(34) ГИГАНТСКОЕ СПАСИБО еще раз)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |