|
v7: Как перебрать ТЗ и вывести в отчёт. | ☑ | ||
---|---|---|---|---|
0
Trotter
29.12.15
✎
15:12
|
В общем имеем ТЗ:
Дата | наименование | количество Дата | наименование | количество Дата | наименование | количество Дата | наименование | количество В ТЗ всегда разное количество строк Живая ТЗ выглядит так: 27.12.15 | пирог с яблоком | 1 27.12.15 | пирог с яблоком | 2 27.12.15 | пирог с черникой | 3 28.12.15 | пирог с яблоком | 1 28.12.15 | пирог с яблоком | 1 28.12.15 | пирог с черникой | 3 28.12.15 | пирог с черникой | 7 29.12.15 | пирог с яблоком | 1 В отчёте должно быть следующие: 27.12.15 | пирог с яблоком | 1 27.12.15 | пирог с яблоком | 2 27.12.15 | пирог с черникой | 3 27.12.15 | пирог с яблоком | 3 ИТОГ: 27.12.15 | пирог с черникой | 3 28.12.15 | пирог с яблоком | 1 28.12.15 | пирог с яблоком | 1 28.12.15 | пирог с черникой | 3 28.12.15 | пирог с черникой | 7 28.12.15 | пирог с яблоком | 2 ИТОГ: 28.12.15 | пирог с черникой | 10 29.12.15 | пирог с яблоком | 1 ИТОГ: 29.12.15 | пирог с черникой | 1 как бы вы перебрали данную ТЗ и выводили значения в отчёт ? Нужен алгоритм! )) Если, пока, цикл... )) |
|||
1
Trotter
29.12.15
✎
15:13
|
Ну вот "табуляция" немного поплыла... (
|
|||
2
Garykom
гуру
29.12.15
✎
15:15
|
открой для себя ТЗ.Свернуть("","")
|
|||
3
Trotter
29.12.15
✎
15:15
|
(2) Да, это уже конечный результат для поля "ИТОГ"
|
|||
4
Garykom
гуру
29.12.15
✎
15:15
|
(2)+ Свернуть("Дата,Наименование","Количество")
|
|||
5
Trotter
29.12.15
✎
15:15
|
Как разбить по датам ?
|
|||
6
aka AMIGO
29.12.15
✎
15:16
|
(5) по датам - сортировать
|
|||
7
Trotter
29.12.15
✎
15:16
|
(6) Как ? какое условие ?
|
|||
8
Garykom
гуру
29.12.15
✎
15:16
|
(3)+ так сначала свернуть а потом циклу по свернутому и внутри циклу по не свернутому с условием свернутое = начало не свернутое ))
|
|||
9
Chameleon1980
29.12.15
✎
15:17
|
копировать тз для итогов в другую (или считать в переборе)
если копировать - читать сп по свернуть |
|||
10
Trotter
29.12.15
✎
15:21
|
(9) Условие для перебора таблици с учётом меняющихся дат какое должно быть ?
|
|||
11
HawkEye
29.12.15
✎
15:23
|
(0) если типовым механизмом,
сортируешь первую ТЗ по Дата, Наименование выгружаешь в промежуточную ТЗ, сворачиваешь ее по Дата и Наименованию, дальше цикл по первой ТЗ с проверкой значений в текущей строке с предыдущим, как то-то изменилось - лезешь в промежуточную и достаешь итог. или без выгрузки в промежуточную, цикл по первой, нашел дату и номенклатуру в промежуточной - добавил кол-во, не нашел создал новую строку, а по предыдущей вывел итог... |
|||
12
aka AMIGO
29.12.15
✎
15:25
|
(7) ТЗ.Сортировать("Дата,Наименование");
а условие - по какой-нибудь темп-переменной в цикле. тмпДата = ""; Для.. .. Цикл Если ТЗ.дата <> тмпДата Тогда //Печатаешь итог и заголовок Иначе //печать инфостроки КонецЕсли; |
|||
13
aka AMIGO
29.12.15
✎
15:26
|
Вернее, так:
Если ТЗ.дата <> тмпДата Тогда //Печатаешь итог и заголовок тмпДата = ТЗ.Дата; ... |
|||
14
aka AMIGO
29.12.15
✎
15:27
|
В общем - всё, как обычно.
См. типовые печати в конфе |
|||
15
HawkEye
29.12.15
✎
15:31
|
автор пиши свой код, нечего чужими мозгами жить )
|
|||
16
Trotter
29.12.15
✎
15:41
|
НовыйДень = НачДата;
ТЗ.ВыбратьСтроки(); Пока ТЗ.ПолучитьСтроку()=1 Цикл ТекДень = ТЗ.Дата; Если НовыйДень = ТЗ.Дата Тогда Номер = Номер + 1; тНомер = Номер; тДата = ТЗ.Дата; тНаименование = ТЗ.Наименование; тКоличество = ТЗ.Количество; Таб.ВывестиСекцию("Строка"); пТЗ.НоваяСтрока(); пТЗ.Номер = ТЗ.Номер; пТЗ.Дата = ТЗ.Дата; пТЗ.Наименование = ТЗ.Наименование; пТЗ.Количество = ТЗ.Количество; Таб.ВывестиСекцию("Строка"); ИначеЕсли НовыйДень < ТЗ.Дата Тогда пТЗ.Свернуть("Наименование", "Количество"); НовыйДень = ТЗ.Дата; текстИтого = ""; пТЗ.ВыбратьСтроки(); нСтр = 0; Пока пТЗ.ПолучитьСтроку()=1 Цикл нСтр = нСтр + 1; итНаименование = пТЗ.Наименование; итКоличество =пТЗ.Количество; Если нСтр = пТз.КоличествоСтрок() Тогда текстИтого = "ИТОГО:"; КонецЕсли; Таб.ВывестиСекцию("итИтог"); //Таб.ВывестиСекцию("линия"); КонецЦикла; Таб.ВывестиСекцию("линия"); пТЗ.УдалитьСтроки(); // КонецЕсли; КонецЕсли; КонецЦикла; Правдо с выводом "ИТОГ" мне помог друг, хитрости 7ки... )) |
|||
17
Serginio1
29.12.15
✎
15:47
|
||||
18
Serginio1
29.12.15
✎
15:50
|
||||
19
Serginio1
29.12.15
✎
15:50
|
Использую каждый день
|
|||
20
Trotter
29.12.15
✎
15:51
|
(19) Спасибо. гляну.
|
|||
21
Chameleon1980
29.12.15
✎
19:01
|
(или считать в переборе)
ну дык писал жеж. если новые значения опред. полей. вывод итога обнуляем счетчик итогов и далее |
|||
22
Mikeware
29.12.15
✎
19:07
|
или 1с++, ИндексированнаяТаблица, Группировать()
|
|||
23
Chameleon1980
29.12.15
✎
19:15
|
(22) заранее извиняюсь перед ТС.
Но... думаю, что если до такого не додумал... то.... пердоне |
|||
24
MishaD
29.12.15
✎
19:31
|
Посмотрел (16), сворачивание тз в цикле, не проще ли было переменную счетчик завести. А то представляю бешенную скорость работы.
|
|||
25
Mikeware
29.12.15
✎
19:34
|
(23) нифига не понял...
(24) забей. |
|||
26
Chameleon1980
29.12.15
✎
19:36
|
(25)
пропустил "ОН" повторю: ...заранее извиняюсь перед ТС. Но... думаю, что если "ОН" до такого не додумал... то.... врядли осилит ИТ |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |