|
v7: Вывод на печать Таблицы значений | ☑ | ||
---|---|---|---|---|
0
Asia2016
24.06.21
✎
14:14
|
Сформировали ТЗ.https://ibb.co/KzZzYRQ
Надо вывести на печать сгруппировав по Расходу и по счету ТЗ.ВыбратьСтроки(); Пока ТЗ.ПолучитьСтроку() = 1 Цикл РасходПоиск = ТЗ.Расходы ; СчетПоиск = ТЗ.СчетСписания; Таб.ВывестиСекцию("Расходы"); Таб.ВывестиСекцию("СчетСписания"); Пока ТЗ.ПолучитьСтроку() = 1 Цикл Если (СчетПоиск <> ТЗ.СчетСписания) Тогда Таб.ВывестиСекцию("ИтогоСчетСписания"); Таб.ВывестиСекцию("СчетСписания"); СчетПоиск = ТЗ.СчетСписания; СуммаПоСчету = СуммаПоСчету +ТЗ.Сумма; ИначеЕсли (РасходПоиск = ТЗ.Расходы) Тогда Таб.ВывестиСекцию("Строка"); СчетПоиск = ТЗ.СчетСписания; СуммаПоСчету = СуммаПоСчету +ТЗ.Сумма; Иначе Таб.ВывестиСекцию("ИтогоРасходы"); Прервать; КонецЕсли; КонецЦикла; КонецЦикла; Таб.ВывестиСекцию("ИтогоСчетСписания"); Таб.ВывестиСекцию("СчетСписания"); Но криво выводит. Понимаю, что во втором цикле начинает считывать со второй записи. Обойти не могу. В итоге получается |
|||
1
Asia2016
24.06.21
✎
14:17
|
||||
2
8 bit
24.06.21
✎
14:20
|
(0) Уж сколько раз твердили миру... Дружочек, что мешает тебе все красиво сделать одним циклом?
|
|||
3
Asia2016
24.06.21
✎
14:24
|
Мозгов хватило только на 2 цикла.
|
|||
4
Asia2016
24.06.21
✎
14:25
|
Подскажите как сделать если уж не красиво, но правильно
|
|||
5
FN
24.06.21
✎
14:50
|
Скопировать ТЗ, свернуть по нужному полю.
обход скопированной ТЗ, в цикле обход оригинальной ТЗ с условием по полю. Еще проще через Индексированную таблицу (1С++). Еще можно без копирования одним циклом - сортировка по нужному полю и обход оригинальной ТЗ. Но тогда теряется оригинальная сортировка таблицы. |
|||
6
Ёпрст
24.06.21
✎
14:51
|
Ща прибежит Чебур и кинет ссылкой на свою нетленку
|
|||
7
Ёпрст
24.06.21
✎
14:54
|
Ладно, пока Чебур спит, на вот
https://infostart.ru/public/14794/ Но проще использовать ИндексированнуюТаблицу, или Класс.ИтогиПоГруппировкам, или взять любой типовой отчет от ТиСа и переделать его на индексированнуюТаблицу и прямой запрос |
|||
8
Arbuz
24.06.21
✎
14:59
|
(0) Чертил в блокноте по памяти:
//ТЗ.Сортировать("Расход,СчетСписания"); //Если ТЗ зарание не отсортированна ТЗ.ВыбратьСтроки(); Если ТЗ.ПолучитьСтроку() = 1 Тогда РасходПоиск = ТЗ.Расход; СчетПоиск = ТЗ.СчетСписания; КонецЕсли; СуммаРасход = 0; //итоговая сумма для секции расход СуммаСчет = 0; //итоговая сумма для секции счет ТЗ.ВыбратьСтроки(); Пока ТЗ.ПолучитьСтроку() = 1 Цикл Таб.ВывестиСекцию("Расходы"); Таб.ВывестиСекцию("СчетСписания"); Таб.ВывестиСекцию("Строка"); СуммаРасход = СуммаРасход + ТЗ.Сумма; СуммаСчет = СуммаСчет + ТЗ.Сумма; Если РасходПоиск <> ТЗ.Расходы Тогда Таб.ВывестиСекцию("ИтогоРасходы"); Таб.ВывестиСекцию("Расходы"); РасходПоиск = ТЗ.Расход; СуммаРасход = 0; КонецЕсли; Если СчетПоиск <> ТЗ.СчетСписания Тогда Таб.ВывестиСекцию("ИтогоСчетСписания"); Таб.ВывестиСекцию("СчетСписания"); СчетПоиск = ТЗ.СчетСписания; СуммаСчет = 0; КонецЕсли; КонецЦикла; Если СуммаСчет <> 0 Тогда Таб.ВывестиСекцию("ИтогоСчетСписания"); КонецЕсли; Если СуммаРасход <> 0 Тогда Таб.ВывестиСекцию("ИтогоРасходы"); КонецЕсли; Таб.ВывестиСекцию("Итого"); |
|||
9
Arbuz
24.06.21
✎
15:04
|
+(8) порядок вывода секций "ИтогоРасходы" и "ИтогоСчетСписания", надеюсь сам догадаешься поменять
|
|||
10
Asia2016
24.06.21
✎
15:09
|
Спасибо всем за участие. Идею поняли. Будем разбираться.
|
|||
11
Arbuz
24.06.21
✎
15:09
|
+(9) А, всё равно не верно... поторопился :(
теперь вроде так //ТЗ.Сортировать("Расход,СчетСписания"); //Если ТЗ зарание не отсортированна ТЗ.ВыбратьСтроки(); Если ТЗ.ПолучитьСтроку() = 1 Тогда РасходПоиск = ТЗ.Расходы; СчетПоиск = ТЗ.СчетСписания; Таб.ВывестиСекцию("Расходы"); Таб.ВывестиСекцию("СчетСписания"); КонецЕсли; СуммаРасход = 0; //итоговая сумма для секции расход СуммаСчет = 0; //итоговая сумма для секции счет ТЗ.ВыбратьСтроки(); Пока ТЗ.ПолучитьСтроку() = 1 Цикл Таб.ВывестиСекцию("Строка"); СуммаРасход = СуммаРасход + ТЗ.Сумма; СуммаСчет = СуммаСчет + ТЗ.Сумма; Если СчетПоиск <> ТЗ.СчетСписания Тогда Таб.ВывестиСекцию("ИтогоСчетСписания"); Таб.ВывестиСекцию("СчетСписания"); СчетПоиск = ТЗ.СчетСписания; СуммаСчет = 0; КонецЕсли; Если РасходПоиск <> ТЗ.Расходы Тогда Таб.ВывестиСекцию("ИтогоРасходы"); Таб.ВывестиСекцию("Расходы"); РасходПоиск = ТЗ.Расходы; СуммаРасход = 0; КонецЕсли; КонецЦикла; Если СуммаСчет <> 0 Тогда Таб.ВывестиСекцию("ИтогоСчетСписания"); КонецЕсли; Если СуммаРасход <> 0 Тогда Таб.ВывестиСекцию("ИтогоРасходы"); КонецЕсли; Таб.ВывестиСекцию("Итого"); |
|||
12
Злопчинский
24.06.21
✎
22:27
|
Чебур не спит. Чебур едет в поезде с родины.
|
|||
13
Mikeware
25.06.21
✎
08:00
|
(12) "Штирлица неудержимо рвало на родину"©
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |