|
Вывести ИТОГИ в макете | ☑ | ||
---|---|---|---|---|
0
dft2014
20.01.19
✎
14:39
|
Собираю запросом ведомости на определенную дату. Далее, мне надо их вывести в отчет, с итоговыми суммами по каждой ведомости. Вот так: https://d.radikal.ru/d12/1901/11/85661d54c454.jpg желтым цветом выделила итоги, с выводом которых - возникла проблема, т.к. выводится итог только у последней ведомости.
Вот макет: https://a.radikal.ru/a18/1901/d0/b1ce0944393a.jpg Ниже код, который выводит все как мне нужно, только итоги выводятся у последней ведомости, а надо после каждой ведомости: &НаСервере Функция СформироватьНаСервере() ТабДок = Новый ТабличныйДокумент; Макет = Объект.РеквизитМакетОтчет; ВыборкаВедомостиВБанк = ЗапросВедомостиБанк(Массив); НПП = 0; ИтогСумма = 0; ИтогНДФЛ = 0; СтароеЗначение = ""; ТекущееЗначение = ""; Пока ВыборкаВедомостиВБанк.Следующий() Цикл ТекущееЗначение = ВыборкаВедомостиВБанк.Ссылка.Номер; Если СтароеЗначение <> ТекущееЗначение Тогда НПП = 1; ОбластьМакетаШапка = Макет.ПолучитьОбласть("Шапка"); ОбластьМакетаСтрока = Макет.ПолучитьОбласть("Строка"); ОбластьМакетаИтог = Макет.ПолучитьОбласть("Итог"); ТабДок.Вывести(ОбластьМакетаШапка); ОбластьМакетаСтрока.Параметры.НПП = НПП; ОбластьМакетаСтрока.Параметры.НомерЛицевогоСчета = ВыборкаВедомостиВБанк.НомерЛицевогоСчета; ОбластьМакетаСтрока.Параметры.Физлицо = ВыборкаВедомостиВБанк.Сотрудник.ФизическоеЛицо; ОбластьМакетаСтрока.Параметры.Подразделение = ВыборкаВедомостиВБанк.Подразделение; ОбластьМакетаСтрока.Параметры.КВыплате = ВыборкаВедомостиВБанк.КВыплате; ОбластьМакетаСтрока.Параметры.НДФЛ = ВыборкаВедомостиВБанк.НДФЛ; ТабДок.Вывести(ОбластьМакетаСтрока); ИтогСумма = ИтогСумма + ВыборкаВедомостиВБанк.КВыплате; ИтогНДФЛ = ИтогНДФЛ + ВыборкаВедомостиВБанк.НДФЛ; СтароеЗначение = ТекущееЗначение; Иначе НПП = НПП + 1; ОбластьМакетаСтрока.Параметры.НПП = НПП; ОбластьМакетаСтрока.Параметры.НомерЛицевогоСчета = ВыборкаВедомостиВБанк.НомерЛицевогоСчета; ОбластьМакетаСтрока.Параметры.Физлицо = ВыборкаВедомостиВБанк.Сотрудник.ФизическоеЛицо; ОбластьМакетаСтрока.Параметры.Подразделение = ВыборкаВедомостиВБанк.Подразделение; ОбластьМакетаСтрока.Параметры.КВыплате = ВыборкаВедомостиВБанк.КВыплате; ОбластьМакетаСтрока.Параметры.НДФЛ = ВыборкаВедомостиВБанк.НДФЛ; ТабДок.Вывести(ОбластьМакетаСтрока); КонецЕсли; ИтогСумма = ИтогСумма + ВедБанкКВыплате; ИтогНДФЛ = ИтогНДФЛ + ВедБанкНДФЛ; КонецЦикла; ТабДок.Вывести(ОбластьМакетаИтог); Возврат ТабДок; КонецФункции Функция ЗапросВедомостиБанк(Ведомости) Запрос = Новый Запрос; Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц; Запрос.УстановитьПараметр("Массив", Ведомости); Запрос.Текст = "ВЫБРАТЬ | ВедомостьНаВыплатуЗарплатыВБанкЗарплата.Ссылка КАК Ссылка, | ВедомостьНаВыплатуЗарплатыВБанкЗарплата.Сотрудник КАК Сотрудник, | ВедомостьНаВыплатуЗарплатыВБанкЗарплата.Подразделение КАК Подразделение, | ВедомостьНаВыплатуЗарплатыВБанкЗарплата.КВыплате КАК КВыплате, | ВедомостьНаВыплатуЗарплатыВБанкЗарплата.НомерЛицевогоСчета КАК НомерЛицевогоСчета, | ВедомостьНаВыплатуЗарплатыВБанкЗарплата.Ссылка.Номер КАК Номер, | ВедомостьНаВыплатуЗарплатыВБанкЗарплата.Ссылка.ПериодРегистрации КАК ПериодРегистрации |ПОМЕСТИТЬ ВТ_ТЧЗарплата |ИЗ | Документ.ВедомостьНаВыплатуЗарплатыВБанк.Зарплата КАК ВедомостьНаВыплатуЗарплатыВБанкЗарплата |ГДЕ | ВедомостьНаВыплатуЗарплатыВБанкЗарплата.Ссылка В(&Массив) |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ВТ_ТЧЗарплата.Ссылка КАК Ссылка, | ВТ_ТЧЗарплата.Сотрудник КАК Сотрудник, | ВТ_ТЧЗарплата.Подразделение КАК Подразделение, | СУММА(ВТ_ТЧЗарплата.КВыплате) КАК КВыплате, | ВТ_ТЧЗарплата.НомерЛицевогоСчета КАК НомерЛицевогоСчета, | СУММА(РасчетыНалогоплательщиковСБюджетомПоНДФЛОбороты.СуммаРасход) КАК НДФЛ, | ВТ_ТЧЗарплата.Номер КАК Номер, | ВТ_ТЧЗарплата.ПериодРегистрации КАК ПериодРегистрации |ИЗ | ВТ_ТЧЗарплата КАК ВТ_ТЧЗарплата | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.РасчетыНалогоплательщиковСБюджетомПоНДФЛ.Обороты(, , Регистратор, ) КАК РасчетыНалогоплательщиковСБюджетомПоНДФЛОбороты | ПО ВТ_ТЧЗарплата.Ссылка = РасчетыНалогоплательщиковСБюджетомПоНДФЛОбороты.Регистратор | И ВТ_ТЧЗарплата.Сотрудник.ФизическоеЛицо = РасчетыНалогоплательщиковСБюджетомПоНДФЛОбороты.ФизическоеЛицо | |СГРУППИРОВАТЬ ПО | ВТ_ТЧЗарплата.НомерЛицевогоСчета, | ВТ_ТЧЗарплата.Подразделение, | ВТ_ТЧЗарплата.Ссылка, | ВТ_ТЧЗарплата.Сотрудник, | ВТ_ТЧЗарплата.Номер, | ВТ_ТЧЗарплата.ПериодРегистрации | |УПОРЯДОЧИТЬ ПО | Номер"; Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); Возврат Выборка; КонецФункции &НаКлиенте Процедура Сформировать(Команда) ТабДок = СформироватьНаСервере(); ТабДок.Показать(); КонецПроцедуры |
|||
1
palsergeich
20.01.19
✎
14:41
|
ТабДок.Вывести(ОбластьМакетаИтог); перенести в цикл, не?
|
|||
2
dft2014
20.01.19
✎
14:50
|
(1) Так тоже пробовала - итог стал выводиться после каждой строчки!
|
|||
3
mastodont
20.01.19
✎
15:53
|
(0) ну так ты просто подумай в какой момент тебе выводить итог).
В твоем примере это где-то в районе СтароеЗначение <> ТекущееЗначение надо вставлять. Если закончилась одна ведомость, то выодим итог. А вообще правильнее было итоги в запросе использовать. |
|||
4
dft2014
20.01.19
✎
16:09
|
(3) Пробовала в разных местах вставлять вывод итогов в макете, но результат не тот, который мне нужен. Видимо, что-то еще в коде не хватает...
|
|||
5
hhhh
20.01.19
✎
16:14
|
(4) ну прям перед заголовком следующей таблицы ставьте
|
|||
6
dft2014
20.01.19
✎
16:42
|
Up!
|
|||
7
dft2014
20.01.19
✎
17:01
|
Может быть новую переменную создать: если НоваяВедомость = Истина, то выводить итоги?! Как вообще в подобных случаях итоги выводятся, причем итоги нужны внизу, а не вверху (это если формировать итоги уже в запросе).
|
|||
8
VladZ
20.01.19
✎
17:10
|
(7) Пригласить специалиста.
|
|||
9
dft2014
20.01.19
✎
17:17
|
(8) это я
|
|||
10
VladZ
20.01.19
✎
17:17
|
(9) Ух, беда...
|
|||
11
VladZ
20.01.19
✎
17:19
|
Итоги считаются по группировкам. Есть у тебя нужна группировка в запросе?
Если нет - можно посчитать по определенному критерию через НужныеИтоги = НужныеИтоги + ВыборкаВедомостиВБанк.КВыплате; |
|||
12
dft2014
20.01.19
✎
17:28
|
(11) Сейчас проблема не в том, как посчитать итоги, а как их вывести в макет!
|
|||
13
dft2014
20.01.19
✎
19:39
|
Up!
HELP!!! |
|||
14
palsergeich
20.01.19
✎
22:33
|
(13) Для твоей задачи тебе нужно еще сделать в запросе ИТОГИ по полю Ссылка.
И обходить соответственно. |
|||
15
palsergeich
20.01.19
✎
22:34
|
https://youtu.be/HzEs2WnvAxo Вот кино глянь
|
|||
16
dft2014
21.01.19
✎
01:17
|
(15) Спасибо! Видео как раз по теме, буду смотреть!
|
|||
17
breezee
21.01.19
✎
04:22
|
(0) Используй отладку. Странный вопрос, если честно
|
|||
18
mastodont
21.01.19
✎
16:49
|
(4) зачем вставлять в разных местах?
Надо один раз подумать и вставить там где надо. Ты понимаешь где у тебя в коде заканчивается вывод данных одной ведомости и начинается вывод другой? |
|||
19
spiller26
21.01.19
✎
17:19
|
А обход запроса по группировкам никак?
|
|||
20
palsergeich
21.01.19
✎
18:53
|
(19) именно это и показано в видео.
|
|||
21
mastodont
21.01.19
✎
19:27
|
(19) (14) вы серьезно? Судя по теме для нее это пока слишком сложно. Тут элементарные вещи затруднения вызывают...
|
|||
22
Alexandr_U1982
21.01.19
✎
19:51
|
(0)
"ВыборкаВедомостиВБанк.Ссылка.Номер ВыборкаВедомостиВБанк.Сотрудник.ФизическоеЛицо" Это где так программировать учат? Вместо получения данных через две точки, получайте их в запросе. |
|||
23
Alexandr_U1982
21.01.19
✎
19:53
|
(0)По теме: в запросе не хватает итогов по ведомости.
И соответственно обхода итогов. |
|||
24
catena
22.01.19
✎
05:55
|
(21)Найти в цикле место смены документа проще, чем обход запроса по группировкам? Вы, батенька, садист.
|
|||
25
K1RSAN
22.01.19
✎
08:16
|
Ну если честно, я тоже довольно долго топтался с костылями типа "Если Первый Тогда", пока не решил посмотреть старый отчет сделанный для УПП и увидел обход по группировкам ВыборкаМастер, ВыборкаГруппа, ВыборкаЭлемент. И тогда я познал дзен и переписал свои первые костыльные запросы и процедуры вывода. Количество строк в обработке уменьшилось просто в разы.
(24) я сам такой был так что понимаю. Пока не увидел живой пример - тупил |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |