Доброе утро. Работаю в УТ 10.3. Подскажите пожалуйста, как сгруппировать одинаковые поля в макет?
у меня есть список который я вывел через Запрос,(там я вывел заказы покупателя по параметрам)и записал в новую ТЧМаршруты,
а теперь создал макет через который вывожу все данные этого документа.
Как мне сгруппирвать в макет поле контрагент и сумму его
К примеру:
Вася 25руб
Вася 30руб
вот текст вывожу в макет:
// ТЧМаршруты
Область = Макет.ПолучитьОбласть("ТЧМаршрутыШапка");
ТабДок.Вывести(Область);
ОбластьТЧМаршруты = Макет.ПолучитьОбласть("ТЧМаршруты");
Для Каждого ТекСтрокаТЧМаршруты Из ТЧМаршруты Цикл
ОбластьТЧМаршруты.Параметры.Заполнить(ТекСтрокаТЧМаршруты);
ТабДок.Вывести(ОбластьТЧМаршруты);
КонецЦикла;
А ниже вывожу что выводил себе в запрос:
ТЧМаршруты.Очистить();
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЗаказПокупателя.Ссылка,
| ЗаказПокупателя.Номер,
| ЗаказПокупателя.Дата,
| ЗаказПокупателя.Проведен,
| ЗаказПокупателя.АдресДоставки,
| ЗаказПокупателя.ДатаОтгрузки,
| ЗаказПокупателя.Контрагент КАК Контрагент,
| ЗаказПокупателя.КурсВзаиморасчетов,
| ЗаказПокупателя.Организация,
| ЗаказПокупателя.Подразделение,
| ЗаказПокупателя.Ответственный,
| ЗаказПокупателя.СуммаВключаетНДС,
| ЗаказПокупателя.СуммаДокумента КАК СуммаДокумента,
| ЗаказПокупателя.Статус,
| ЗаказПокупателя.Маршрут,
| ЗаказПокупателя.Комплектовщик,
| ЗаказПокупателя.Город,
| ЗаказПокупателя.Менеджер,
| ЗаказПокупателя.Товары.(
| Ссылка,
| НомерСтроки,
| ЕдиницаИзмерения,
| ЕдиницаИзмеренияМест,
| Количество,
| КоличествоМест,
| Коэффициент,
| Номенклатура,
| ПлановаяСебестоимость,
| ПроцентСкидкиНаценки,
| Размещение,
| СтавкаНДС,
| Сумма,
| СуммаНДС,
| ХарактеристикаНоменклатуры,
| Цена,
| ПроцентАвтоматическихСкидок,
| УсловиеАвтоматическойСкидки,
| ЗначениеУсловияАвтоматическойСкидки,
| КлючСтроки,
| СерияНоменклатуры
| ),
| Контрагенты.ПунктРазгрузки,
| Контрагенты.Город КАК Город1,
| ЗаказПокупателя.ВалютаДокумента,
| ЗаказПокупателя.КолВоГрузМест КАК КолВоГрузМест,
| ЗаказПокупателя.Комментарий
|ИЗ
| Документ.ЗаказПокупателя КАК ЗаказПокупателя
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК Контрагенты
| ПО ЗаказПокупателя.Контрагент = Контрагенты.Ссылка
|ГДЕ
| ЗаказПокупателя.ДатаОтгрузки = &ДатаМаршрута
| И ЗаказПокупателя.Маршрут = &Маршрут
| И ЗаказПокупателя.Ссылка.Проведен
|
|УПОРЯДОЧИТЬ ПО
| ЗаказПокупателя.Дата";
Запрос.УстановитьПараметр("ДатаМаршрута", ДатаМаршрута);
Запрос.УстановитьПараметр("Маршрут", МаршрутГород);
Рез = Запрос.Выполнить();
Выборка = Рез.Выбрать();
Пока Выборка.Следующий() Цикл
СтрокаТабличнойЧасти = ТЧМаршруты.Добавить();
СтрокаТабличнойЧасти.Контрагент = Выборка.контрагент;
СтрокаТабличнойЧасти.ДатаОтгрузки = Выборка.Датаотгрузки;
СтрокаТабличнойЧасти.Товары = Выборка.ссылка;
СтрокаТабличнойЧасти.менеджер = Выборка.менеджер;
СтрокаТабличнойЧасти.Номер = Выборка.номер;
СтрокаТабличнойЧасти.ОтветственныйЗаМаршрут = Выборка.Ответственный;
СтрокаТабличнойЧасти.СуммаДокумента = Выборка.СуммаДокумента;
СтрокаТабличнойЧасти.Статус = Выборка.Статус;
СтрокаТабличнойЧасти.Комплектовщик = Выборка.Комплектовщик;
СтрокаТабличнойЧасти.ПунктРазгрузки = Выборка.ПунктРазгрузки;
СтрокаТабличнойЧасти.ВалютаДокумента = Выборка.ВалютаДокумента;
СтрокаТабличнойЧасти.Телефон = Выборка.Контрагент.ТелЛица;
СтрокаТабличнойЧасти.КолГрузМест = выборка.КолВоГрузМест;
СтрокаТабличнойЧасти.Имя = Выборка.Контрагент.ИмяГрузополуч;
СтрокаТабличнойЧасти.Заявки = 1;
СтрокаТабличнойЧасти.Примечание = Выборка.Комментарий;
Показать
Как мне в макет сгруппировать поле: контрагент, КолГрузМест, СуммаДокумента?
(1)Ну из простого можно попробовать сделать у ячейки тип не "Параметр", а "Шаблон" и вписать туда несколько параметров, например: "[Контрагент] [СуммаДокумента] руб".
Тогда они будут в одной ячейке, а заполняться разными параметрами.
Расчет итогов по нескольким полям
Часто требуется рассчитать итоги результата запроса по значению нескольких полей сразу. Для этого после ключевого слова ПО нужно перечислить через запятую список полей – контрольных точек.
Например, нам нужно вывести все данные из состава приходных накладных, в разрезе товаров и поставщиков, при этом рассчитать итоги по полям Товар и Поставщик. Итоговые строки должны содержать для каждого товара общее количество и сумму его поступления по каждому поставщику, а также показатели поступлений по каждому поставщику в целом. Это можно сделать с помощью следующего запроса (листинг 1.60).
Листинг 1.60. Вывод всех записей из состава приходных накладных с итоговыми данными для каждого товара по каждому поставщику
ВЫБРАТЬ
НакладнаяСостав.Ссылка.Поставщик КАК Поставщик,
НакладнаяСостав.Товар КАК Товар,
НакладнаяСостав.Количество КАК Количество,
НакладнаяСостав.Цена КАК Цена,
НакладнаяСостав.Сумма КАК Сумма
ИЗ
Документ.ПриходнаяНакладная.Состав КАК НакладнаяСостав
ИТОГИ
СУММА(Количество),
СУММА(Сумма)
ПО
Поставщик,
Товар
Показать
Обратите внимание, что в тексте запроса имена итоговых полей и контрольных точек принято располагать на разных строках со смещением относительно ключевых слов ИТОГИ и ПО.
В результате итоговые поля рассчитываются сначала для каждого товара по каждому поставщику и затем отдельно для каждого поставщика по всем товарам в целом (рис. 1.57).
Рис. 1.57. Вывод всех записей из состава приходных накладных с итоговыми данными для каждого товара по каждому поставщику
(10)
я вас понял,но не поняли наверно вы меня,извините что не верно может описал как,мне нужно к примеру:
есть Вася с суммой 25 руб, есть Вася с суммой 20руб, и есть Петя с суммой 10 руб. Так в итоге видеть:
Вася 45руб и второй строкой Петя 10 руб
(13)можете показать что в итоге хотите получить? Просто чтобы сгруппировать как вам нужно надо убрать из запроса таблицу товары, и потом её отдельно подтягивать.
(16) лучше всего получать итоговые данные по заказам контрагента отдельно от выборки товарного состава.
Но можете попробовать сделать примерно так:
Запрос.Текст =
"ВЫБРАТЬ
| ЗаказПокупателяТовары.Ссылка КАК Ссылка,
| ЗаказПокупателяТовары.Ссылка.Номер КАК Номер,
//Укажем что по группировке "Контрагент" мы хотит в этом поле получить минимальную дату заказа
| Минимум(ЗаказПокупателяТовары.Ссылка.Дата) КАК Дата,
| ЗаказПокупателяТовары.Ссылка.Проведен КАК Проведен,
| ЗаказПокупателяТовары.Ссылка.АдресДоставки КАК АдресДоставки,
| ЗаказПокупателяТовары.Ссылка.ДатаОтгрузки КАК ДатаОтгрузки,
| ЗаказПокупателяТовары.Ссылка.Контрагент КАК Контрагент,
| ЗаказПокупателяТовары.Ссылка.КурсВзаиморасчетов КАК КурсВзаиморасчетов,
| ЗаказПокупателяТовары.Ссылка.Организация КАК Организация,
| ЗаказПокупателяТовары.Ссылка.Подразделение КАК Подразделение,
| ЗаказПокупателяТовары.Ссылка.Ответственный КАК Ответственный,
| ЗаказПокупателяТовары.Ссылка.СуммаВключаетНДС КАК СуммаВключаетНДС,
| ЗаказПокупателяТовары.Ссылка.СуммаДокумента КАК СуммаДокумента,
| ЗаказПокупателяТовары.Ссылка.Статус КАК Статус,
| ЗаказПокупателяТовары.Ссылка.Маршрут КАК Маршрут,
| ЗаказПокупателяТовары.Ссылка.Комплектовщик КАК Комплектовщик,
| ЗаказПокупателяТовары.Ссылка.Город КАК Город,
| ЗаказПокупателяТовары.Ссылка.Менеджер КАК Менеджер,
| ЗаказПокупателяТовары.НомерСтроки,
| ЗаказПокупателяТовары.ЕдиницаИзмерения,
| ЗаказПокупателяТовары.ЕдиницаИзмеренияМест,
| ЗаказПокупателяТовары.Количество,
| ЗаказПокупателяТовары.КоличествоМест,
| ЗаказПокупателяТовары.Коэффициент,
| ЗаказПокупателяТовары.Номенклатура,
| ЗаказПокупателяТовары.ПлановаяСебестоимость,
| ЗаказПокупателяТовары.ПроцентСкидкиНаценки,
| ЗаказПокупателяТовары.Размещение,
| ЗаказПокупателяТовары.СтавкаНДС,
//Указали что по группировке контрагент тут мы получим сумму (нужно брать именно сумму строк,
//а не документа. т.к. он ее задвоит, затроит и т.д. по количеству строк в документе при сложении
| Сумма(ЗаказПокупателяТовары.Сумма) КАК Сумма,
| ЗаказПокупателяТовары.СуммаНДС,
| ЗаказПокупателяТовары.ХарактеристикаНоменклатуры,
| ЗаказПокупателяТовары.Цена,
| ЗаказПокупателяТовары.ПроцентАвтоматическихСкидок,
| ЗаказПокупателяТовары.УсловиеАвтоматическойСкидки,
| ЗаказПокупателяТовары.ЗначениеУсловияАвтоматическойСкидки,
| ЗаказПокупателяТовары.КлючСтроки,
| ЗаказПокупателяТовары.СерияНоменклатуры,
| ЗаказПокупателяТовары.Ссылка.Контрагент.ПунктРазгрузки,
| ЗаказПокупателяТовары.Ссылка.Контрагент.Город КАК Город1,
| ЗаказПокупателя.Ссылка.ВалютаДокумента КАК ВалютаДокумента,
| ЗаказПокупателя.Ссылка.КолВоГрузМест КАК КолВоГрузМест,
| ЗаказПокупателя.Ссылка.Комментарий КАК Комментарий
|ИЗ
//Выбираем в запросе ТЧ, а не сам документ
//| Документ.ЗаказПокупателя КАК ЗаказПокупателя
| Документ.ЗаказПокупателя.Товары КАК ЗаказПокупателяТовары
//Соединять справочник контрагенты нет смысла если контрагент есть в документе
//| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК Контрагенты
//| ПО ЗаказПокупателя.Контрагент = Контрагенты.Ссылка
|ГДЕ
| ЗаказПокупателяТовары.Ссылка.ДатаОтгрузки = &ДатаМаршрута
| И ЗаказПокупателяТовары.Ссылка.Маршрут = &Маршрут
| И ЗаказПокупателя.Ссылка.Проведен
|
|УПОРЯДОЧИТЬ ПО
| ЗаказПокупателяТовары.Ссылка.Дата
| ИТОГИ ПО
| Контрагент";
//Выполняем запрос
Запрос.УстановитьПараметр("ДатаМаршрута", ДатаМаршрута);
Запрос.УстановитьПараметр("Маршрут", МаршрутГород);
Рез = Запрос.Выполнить();
//Теперь нужно обойти результат по группировкам
ВыборкаКонтрагент = Рез.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Контрагент");
Пока ВыборкаКонтрагент.Следующий() Цикл
//Тут мы можем получить контрагента и реквизиты которые мы указали для сложения
Контагент = ВыборкаКонтрагент.Контагент;
Сумма = ВыборкаКонтрагент.Сумма;
Дата = ВыборкаКонтрагент.Дата;
//Остальные поля не доступны пока мы не продолжим выборку по группировке
ВыборкаДетальныеЗаписи = ВыборкаКонтрагент.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Товар = ВыборкаДетальныеЗаписи.Номенклатура;
Цена = ВыборкаДетальныеЗаписи.Цена;
//...
//...
//...
КонецЦикла;
КонецЦикла;
(18)Очень круто всё описано,но ругается тут:
{Документ.УстановкаЗаказовВМаршрут.Форма.ФормаДокумента1.Форма(261)}: Ошибка при вызове метода контекста (Выполнить)
Рез = Запрос.Выполнить();
по причине:
{(50, 4)}: Поле не найдено "ЗаказПокупателя.Ссылка.Проведен"
И <<?>>ЗаказПокупателя.Ссылка.Проведен
ВЫБРАТЬ
ЗаказПокупателяТовары.Ссылка.Контрагент,
СУММА(ЗаказПокупателяТовары.КоличествоМест) КАК КоличествоМест,
СУММА(ЗаказПокупателяТовары.Сумма) КАК Сумма
ИЗ
Документ.ЗаказПокупателя.Товары КАК ЗаказПокупателяТовары
СГРУППИРОВАТЬ ПО
ЗаказПокупателяТовары.Ссылка.Контрагент