|
v7: Итог по столбцам | ☑ | ||
---|---|---|---|---|
0
pavilion
06.04.15
✎
17:09
|
Добрый день,
Возникла необходимость, вывести строку Итогов, к каждому присоединенному столбцу. Пробовал делать элементарно через счетчик, но выходит итог по одному столбцу. Процедура Сформировать() Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = "//{{ЗАПРОС(Сформировать) |Период с НачДата по КонДата; //|Без Итогов; |Обрабатывать НеПомеченныеНаУдаление; |Контрагент = Регистр.ВзаиморасчетыПокупателей.Контрагент, Регистр.ВзаиморасчетыПоставщиков.Контрагент; |Фирма = Регистр.ВзаиморасчетыПокупателей.Фирма, Регистр.ВзаиморасчетыПоставщиков.Фирма; |ДолгПокуп = Регистр.ВзаиморасчетыПокупателей.Долг; |ДолгПост = Регистр.ВзаиморасчетыПоставщиков.Долг; |Условие (Фирма в ВыбФирма); |Условие (Контрагент в ВыбКлиенты); |Функция КонДолг = КонОст(ДолгПокуп); |Функция КонДолгПост = КонОст(ДолгПост); |Группировка Контрагент без групп; |Группировка Фирма Все ВошедшиеВзапрос; |" ; Если Запрос.Выполнить(ТекстЗапроса)=0 тогда Предупреждение("Запрос по Контрагентам не выполнился!"); Возврат; КонецЕсли; Таб = СоздатьОбъект("Таблица"); н=0; Таб.ИсходнаяТаблица("Взаиморасчеты"); Таб.ВывестиСекцию("Шапка|Список"); Пока Запрос.Группировка(1)=1 Цикл Пока Запрос.Группировка(2)=1 Цикл Таб.ПрисоединитьСекцию("Шапка|Фирм"); КонецЦикла; Прервать; КонецЦикла; // Запрос.вНачалоВыборки(); Пока Запрос.Группировка(1)=1 Цикл н=н+1; Таб.ВывестиСекцию("Строка|Список"); Пока Запрос.Группировка(2)=1 Цикл Таб.ПрисоединитьСекцию("Строка|Фирм"); КонецЦикла; КонецЦикла; Таб.Опции(1,1,10,,,,,); Таб.Показать("Взаиморасчеты", ""); КонецПроцедуры |
|||
1
Ёпрст
06.04.15
✎
17:14
|
Нам отсюда не видно макета, куда выводишь и каков результат
|
|||
2
Ёпрст
06.04.15
✎
17:14
|
и при чем тут вообще счётчик.
|
|||
3
pavilion
06.04.15
✎
17:16
|
Фирма1 фирма2 Фирма3
Клиент1 Клиент2 Клиент3 Итого: 1 2 3 |
|||
4
serpentt
06.04.15
✎
17:17
|
Можно Запрос выгрузить в ТЗ, а дальше
ТЗ.ИТОГ("ДолгПокуп") и ТЗ.ИТОГ("ДолгПост") |
|||
5
serpentt
06.04.15
✎
17:18
|
или Индексированную таблице делать
|
|||
6
Builder
06.04.15
✎
17:33
|
Можно такие итоги в массиве считать.
Только обнулить его не забыть перед суммированием. |
|||
7
ЛюбопытнаяЯ
07.04.15
✎
09:38
|
(6)- Массив??? в 7? Это как? Может я что-то не знаю
|
|||
8
Builder
07.04.15
✎
09:57
|
(7) Как то так:
Перем Итоги[1000]; Для К=1 По 1000 Цикл Итоги[К]=0; КОнецЦикла; Не помню только нумерация с 0 или 1 начинается. |
|||
9
Злопчинский
07.04.15
✎
10:03
|
(8)
- почемиу 20 век начинается с 2001г, а не с 2000? - потому что новый ящик пива начинается с 21-ой бутылки,а на 20-ой заканчивается предыдущий! |
|||
10
ЛюбопытнаяЯ
07.04.15
✎
10:08
|
(7) и (8)
На форуме так интересно... Каждый день что-нить новенькое! Спасибо! Попробую! |
|||
11
Ёпрст
07.04.15
✎
10:10
|
Да уж.. что будет, если узнают про вектор и ассоциативный вектор - это ж радости до потолка будет.
|
|||
12
ЧеловекДуши
07.04.15
✎
10:23
|
(0) Ты не выводишь Итог, что ты хочешь от 1С?
|
|||
13
ЧеловекДуши
07.04.15
✎
10:24
|
(3) А где у тебя в (0), та часть кода, где должен итог выводиться?
|
|||
14
Ёпрст
07.04.15
✎
10:31
|
(13) рано еще о об итогах думать, тут трясти надо сильнее
|
|||
15
varelchik
07.04.15
✎
10:43
|
+(11)И ПоставщикаДанных ТП и вообще про 1С++.
|
|||
16
pavilion
14.04.15
✎
10:38
|
что-то у меня не получается вывести сумму по столбцам..
может кто-то объяснит как можно реализовать |
|||
17
Ёпрст
14.04.15
✎
12:01
|
(16)
на вот, развлекайся |
|||
18
Ёпрст
14.04.15
✎
12:01
|
один из самых неоптимальных способов, зато , простой
|
|||
19
Ёпрст
14.04.15
✎
12:03
|
||||
20
Ёпрст
14.04.15
✎
12:03
|
||||
21
Ёпрст
14.04.15
✎
12:04
|
Ладно, разберешься, как ссылку достать
|
|||
22
pavilion
14.04.15
✎
14:24
|
спасибо огромное
|
|||
23
pavilion
27.04.15
✎
10:27
|
Собственно с итогом по столбцам разобрался с горе пополам..
Как бы теперь подсчитать итог по строкам по контрагентам. Процедура Сформировать() Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = "//{{ЗАПРОС(Сформировать) |Период с НачДата по КонДата; //|Без Итогов; |Обрабатывать НеПомеченныеНаУдаление; |Контрагент = Регистр.ВзаиморасчетыПокупателей.Контрагент, Регистр.ВзаиморасчетыПоставщиков.Контрагент; |Фирма = Регистр.ВзаиморасчетыПокупателей.Фирма, Регистр.ВзаиморасчетыПоставщиков.Фирма; |ДолгПокуп = Регистр.ВзаиморасчетыПокупателей.Долг; |ДолгПост = Регистр.ВзаиморасчетыПоставщиков.Долг; |Условие (Фирма в ВыбФирма); |Условие (Контрагент в ВыбКлиенты); |Функция КонДолг = КонОст(ДолгПокуп); |Функция КонДолгПост = КонОст(ДолгПост); |Группировка Контрагент без групп; |Группировка Фирма Все ВошедшиеВзапрос; |" ; Если Запрос.Выполнить(ТекстЗапроса)=0 тогда Предупреждение("Запрос по Контрагентам не выполнился!"); Возврат; КонецЕсли; Таб = СоздатьОбъект("Таблица"); н=0; ТЗ=СоздатьОбъект("ТаблицаЗначений"); СЗ=СоздатьОбъект("СписокЗначений"); Запрос.Выгрузить(ТЗ); ТЗ.Свернуть("Фирма","КонДолг,КонДолгПост"); Таб.ИсходнаяТаблица("Взаиморасчеты"); Таб.ВывестиСекцию("Шапка|Список"); Пока Запрос.Группировка(1)=1 Цикл Пока Запрос.Группировка(2)=1 Цикл Таб.ПрисоединитьСекцию("Шапка|Фирм"); СЗ.ДобавитьЗначение(Запрос.Фирма); КонецЦикла; Прервать; КонецЦикла; Запрос.вНачалоВыборки(); Пока Запрос.Группировка(1)=1 Цикл н=н+1; Таб.ВывестиСекцию("Строка|Список"); Пока Запрос.Группировка(2)=1 Цикл Таб.ПрисоединитьСекцию("Строка|Фирм"); КонецЦикла; КонецЦикла; Таб.ВывестиСекцию("Дно|Список"); Для в=1 по СЗ.РазмерСписка() Цикл ТЗ.ВыбратьСтроки(); Итог=0; Пока ТЗ.ПолучитьСтроку()=1 Цикл Если ТЗ.Фирма = СЗ.ПолучитьЗначение(в) Тогда Итог = ТЗ.КонДолг+ТЗ.КонДолгПост; КонецЕсли; КонецЦикла; Таб.ПрисоединитьСекцию("Дно|Фирм"); КонецЦикла; Таб.Опции(1,1,10,,,,,); Таб.Показать("Взаиморасчеты", ""); КонецПроцедуры |
|||
24
Ёпрст
27.04.15
✎
10:42
|
(23) Они и так есть, готовые, при обходе первой группировки запроса.
|
|||
25
Ёпрст
27.04.15
✎
10:43
|
И.. ты пример то смотрел ?
Там итоги и по строкам и по столбцам, если че. |
|||
26
pavilion
27.04.15
✎
11:57
|
Всё, спасибо, разобрался)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |