Вопрос № 166962: 1с 7.7 Как сгруппировать в отчете(макет) дублирующие строки? Контрагенты повторяються несколько раз, если убрать цикл по торговым агентам цифры выходят другие...
Вопрос № 166.962
1с 7.7 Как сгруппировать в отчете(макет) дублирующие строки? Контрагенты повторяються несколько раз, если убрать цикл по торговым агентам цифры выходят другие
Приложение:
Отправлен: 11.05.2009, 15:34
Вопрос задал: Mansur manas
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: Владимир Лазурко
Здравствуйте, Mansur manas!
Я вижу такое решение: сформируйте таблицу значений со структурой запроса, и вместо вывода ячейки таблицы записывайте данные в таблицу значений. В каждой группировке запроса вместо вывода секции таблицы, создавайте новую строку таблицы. Затем сверните по нужным колонкам и потом выведите на печать уже из таблицы значений:
ТЗ.ВыбратьСтроки(); Пока ТЗ.ПолучитьСтроку()=1 Цикл Если ПечАгент<>ТЗ.Агент Тогда // сменилась группировка по агенту - выводим строку с новым агентом, сбрасываем счетчик стро
к ПечАгент = ТЗ.Агент; Таб.ВывестиСекцию("Агент"); ПП=0; Продолжить; КонецЕсли; Если ПечКонтрагент<>ТЗ.Контрагент Тогда // сменилась группировка по контрагента - выводим строку с новым контрагентом ПечКонтрагент = ТЗ.Контрагент; Таб.ВывестиСекцию("Контрагент"); Продолжить; КонецЕсли; // а теперь осталось только вывести строку ПП=ПП+1; Таб.ВывестиСекцию("Строка"); КонецЦикла; Таб.Показать();
Если
Вам необходимо в таблице показать и промежуточные итоги по Агенту или Контрагенту, то в той строке ТЗ, которая формируется в начале обхода группировки, прописывайте значений суммы:
Код:
... Пока Ит.ПолучитьСубконто(ВидыСубконто.То
рговыеАгенты) = 1 Цикл ТекАгент=Ит.Субконто(ВидыСубконто.ТорговыеАгенты) ; ТЗ.НоваяСтрока(); ТЗ.Агент = ТекАгент; ТЗ.СуммаДолга = Ит.СНД()-Ит.СНК() ...
Это лишь пример. Если Вам необходимо подсчитать всю сумму задолженности - можете использовать метод таблицы значений Итог.
Успехов! С уважением, Владимир.
--------- И как хотите, чтобы с вами поступали люди, так и вы поступайте с ними. (Евангелие от Луки, 6:31, совр. перевод)
Ответ отправил: Владимир Лазурко (статус: Практикант)
Ответ отправлен: 11.05.2009, 17:38
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 248949 на номер 1151 (Россия) | Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Оценка за ответ: 5 Комментарий оценки: Спасибо
Отвечает: Piter
Здравствуйте, Mansur manas!
Вринципе технология моего решения ничем не отличается, кроме универсальности. Для себя я написал универсальную функцию СгруппироватьТаблицу и испльзую ее по мере надобности (Простенький пример ее использования есть в комментариях)
Приложение:
Ответ отправил: Piter (статус: 3-й класс)
Ответ отправлен: 13.05.2009, 09:36
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 249073 на номер 1151 (Россия) | Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Скажите "спасибо" эксперту, который помог Вам!
Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
на короткий номер 1151 (Россия)
Номер ответа и конкретный текст СМС указан внизу каждого ответа.
* Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи.
(полный список тарифов)
** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
*** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.