Здравствуйте,
Есть наверно простой вопрос для многих, но я немного запутался в группировках, как можно сделать, чтобы выводя в макет Табличного документа, у меня свернулись одинаковые контрагенты, а накладные по нему записались в строке все которые были за период по нему
МойОбъект = РеквизитФормыВЗначение("Объект");
Макет = МойОбъект.ПолучитьМакет("Макет");
ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("Шапка");
ТабличныйДокумент.Вывести(ОбластьШапкаТаблицы);
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| СУММА(ПоступлениеТоваровУслугТовары.СуммаНДС) КАК СуммаНДС,
| ПоступлениеТоваровУслугТовары.Ссылка КАК Ссылка
|ПОМЕСТИТЬ вт1
|ИЗ
| Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
|
|СГРУППИРОВАТЬ ПО
| ПоступлениеТоваровУслугТовары.Ссылка
|;
|
|//////////////////////////////////////////////////////////// ////////////////////
|ВЫБРАТЬ
| ПоступлениеТоваровУслуг.Ссылка КАК Ссылка,
| ПоступлениеТоваровУслуг.Номер КАК Номер,
| ПоступлениеТоваровУслуг.Дата КАК Дата,
| ПоступлениеТоваровУслуг.Организация КАК Организация,
| ПоступлениеТоваровУслуг.СчетНаОплатуПоставщика КАК СчетНаОплатуПоставщика,
| ПоступлениеТоваровУслуг.НомерВходящегоДокумента КАК НомерВходящегоДокумента,
| ПоступлениеТоваровУслуг.ДатаВходящегоДокумента КАК ДатаВходящегоДокумента,
| ПоступлениеТоваровУслуг.СуммаВключаетНДС КАК СуммаВключаетНДС,
| ПоступлениеТоваровУслуг.СуммаДокумента КАК СуммаДокумента,
| ПоступлениеТоваровУслуг.НДСНеВыделять КАК НДСНеВыделять,
| ПоступлениеТоваровУслуг.ДокументОснование КАК ДокументОснование,
| СчетФактураПолученный.Ссылка КАК Ссылка1,
| СчетФактураПолученный.Номер КАК Номер1,
| СчетФактураПолученный.Дата КАК Дата1,
| СчетФактураПолученный.НомерВходящегоДокумента КАК НомерВходящегоДокумента1,
| СчетФактураПолученный.ДатаВходящегоДокумента КАК ДатаВходящегоДокумента1,
| вт1.СуммаНДС КАК СуммаНДС,
| ПоступлениеТоваровУслуг.Контрагент КАК Контрагент,
| ПоступлениеТоваровУслуг.ДоговорКонтрагента КАК ДоговорКонтрагента1
|ИЗ
| Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.СчетФактураПолученный КАК СчетФактураПолученный
| ПО (СчетФактураПолученный.ДокументОснование = ПоступлениеТоваровУслуг.Ссылка)
| ЛЕВОЕ СОЕДИНЕНИЕ вт1 КАК вт1
| ПО (вт1.Ссылка = ПоступлениеТоваровУслуг.Ссылка)
|ГДЕ
| ПоступлениеТоваровУслуг.Проведен
| И ПоступлениеТоваровУслуг.Дата МЕЖДУ &НачалоПериода И &КонецПериода
| И ПоступлениеТоваровУслуг.Организация = &Организация
| И (ПоступлениеТоваровУслуг.Контрагент = &Контрагент
| ИЛИ &Контрагент = ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка))
|ИТОГИ
| СУММА(СуммаДокумента),
| СУММА(СуммаНДС)
|ПО
| ОБЩИЕ";
Запрос.УстановитьПараметр("НачалоПериода", Период.ДатаНачала);
Запрос.УстановитьПараметр("КонецПериода", Период.ДатаОкончания);
Запрос.УстановитьПараметр("Организация", Объект.Организация);
Запрос.УстановитьПараметр("Контрагент", Объект.Контрагент);
РезультатЗапроса = Запрос.Выполнить().Выбрать();
Есть наверно простой вопрос для многих, но я немного запутался в группировках, как можно сделать, чтобы выводя в макет Табличного документа, у меня свернулись одинаковые контрагенты, а накладные по нему записались в строке все которые были за период по нему
МойОбъект = РеквизитФормыВЗначение("Объект");
Макет = МойОбъект.ПолучитьМакет("Макет");
ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("Шапка");
ТабличныйДокумент.Вывести(ОбластьШапкаТаблицы);
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| СУММА(ПоступлениеТоваровУслугТовары.СуммаНДС) КАК СуммаНДС,
| ПоступлениеТоваровУслугТовары.Ссылка КАК Ссылка
|ПОМЕСТИТЬ вт1
|ИЗ
| Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
|
|СГРУППИРОВАТЬ ПО
| ПоступлениеТоваровУслугТовары.Ссылка
|;
|
|////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ПоступлениеТоваровУслуг.Ссылка КАК Ссылка,
| ПоступлениеТоваровУслуг.Номер КАК Номер,
| ПоступлениеТоваровУслуг.Дата КАК Дата,
| ПоступлениеТоваровУслуг.Организация КАК Организация,
| ПоступлениеТоваровУслуг.СчетНаОплатуПоставщика КАК СчетНаОплатуПоставщика,
| ПоступлениеТоваровУслуг.НомерВходящегоДокумента КАК НомерВходящегоДокумента,
| ПоступлениеТоваровУслуг.ДатаВходящегоДокумента КАК ДатаВходящегоДокумента,
| ПоступлениеТоваровУслуг.СуммаВключаетНДС КАК СуммаВключаетНДС,
| ПоступлениеТоваровУслуг.СуммаДокумента КАК СуммаДокумента,
| ПоступлениеТоваровУслуг.НДСНеВыделять КАК НДСНеВыделять,
| ПоступлениеТоваровУслуг.ДокументОснование КАК ДокументОснование,
| СчетФактураПолученный.Ссылка КАК Ссылка1,
| СчетФактураПолученный.Номер КАК Номер1,
| СчетФактураПолученный.Дата КАК Дата1,
| СчетФактураПолученный.НомерВходящегоДокумента КАК НомерВходящегоДокумента1,
| СчетФактураПолученный.ДатаВходящегоДокумента КАК ДатаВходящегоДокумента1,
| вт1.СуммаНДС КАК СуммаНДС,
| ПоступлениеТоваровУслуг.Контрагент КАК Контрагент,
| ПоступлениеТоваровУслуг.ДоговорКонтрагента КАК ДоговорКонтрагента1
|ИЗ
| Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.СчетФактураПолученный КАК СчетФактураПолученный
| ПО (СчетФактураПолученный.ДокументОснование = ПоступлениеТоваровУслуг.Ссылка)
| ЛЕВОЕ СОЕДИНЕНИЕ вт1 КАК вт1
| ПО (вт1.Ссылка = ПоступлениеТоваровУслуг.Ссылка)
|ГДЕ
| ПоступлениеТоваровУслуг.Проведен
| И ПоступлениеТоваровУслуг.Дата МЕЖДУ &НачалоПериода И &КонецПериода
| И ПоступлениеТоваровУслуг.Организация = &Организация
| И (ПоступлениеТоваровУслуг.Контрагент = &Контрагент
| ИЛИ &Контрагент = ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка))
|ИТОГИ
| СУММА(СуммаДокумента),
| СУММА(СуммаНДС)
|ПО
| ОБЩИЕ";
Запрос.УстановитьПараметр("НачалоПериода", Период.ДатаНачала);
Запрос.УстановитьПараметр("КонецПериода", Период.ДатаОкончания);
Запрос.УстановитьПараметр("Организация", Объект.Организация);
Запрос.УстановитьПараметр("Контрагент", Объект.Контрагент);
РезультатЗапроса = Запрос.Выполнить().Выбрать();
По теме из базы знаний
- Группировка по подразделению в "Задачи мне" (расширение для 1С:Документооборот)
- Группировка номенклатуры в отгрузочных документах УНФ на основании заказа покупателя
- Пользовательские настройки отчетов 1С. Часть 2. Группировки и варианты
- Динамическая группировка в СКД или "Закат солнца вручную"
- Ответственные менеджеры по контрагентам в разрезе документов (3 группировки: Ответственный, Контрагент, Документ)
Найденные решения
(10) попробуйте так
ВыборкаДоговор = ВыборкаОбщая.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаДоговор.Следующий() Цикл
К=К+1;
ОбластьТаблицы.Параметры.Номер = К;
ОбластьТаблицы.Параметры.Контрагент = ВыборкаДоговор.ДоговорКонтрагента.Владелец;
ОбластьТаблицы.Параметры.СуммаДокумента = ВыборкаДоговор.СуммаДокумента;
ОбластьТаблицы.Параметры.ДоговорКонтрагента = ВыборкаДоговор.ДоговорКонтрагента;
ОбластьТаблицы.Параметры.НДС = ВыборкаДоговор.СуммаНДС;
Сообщить("ВыборкаДоговор.ДоговорКонтрагента = " + ВыборкаДоговор.ДоговорКонтрагента);
Сообщить("ВыборкаДоговор.ДоговорКонтрагента.Владелец = " + ВыборкаДоговор.ДоговорКонтрагента.Владелец);
Выборка = ВыборкаДоговор.Выбрать();
СтрокаДокументов = ""; //строка для списка документов
Пока Выборка.Следующий() Цикл
СтрокаДокументов = СтрокаДокументов + Выборка.Ссылка + ", "; //где у вас ссылка на счетфактуру?
//ОбластьТаблицы.Параметры.НомерВходящегоДокумента = Выборка.Номер1;
//ОбластьТаблицы.Параметры.ДатаВходящегоДокумента = Формат(Выборка.ДатаВходящегоДокумента1,"ДФ=dd.MM.yyyy");
//ОбластьТаблицы.параметры.НомерВходящегоДокумента1 = Выборка.НомерВходящегоДокумента1;
//ОбластьТаблицы.Параметры.ДатаВходящегоДокумента1 = Формат(Выборка.ДатаВходящегоДокумента1, "ДФ=dd.MM.yyyy");
Сообщить("Выборка.Ссылка = " + Выборка.Ссылка);
Сообщить("Выборка.Ссылка1 = " + Выборка.Ссылка1);
КонецЦикла;
ОбластьТаблицы.Параметры.НомерВходящегоДокумента = СтрокаДокументов;
ТабличныйДокумент.Вывести(ОбластьТаблицы);
КонецЦикла;
КонецЕсли;
КонецЦикла;
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(2)
(2) я так пробовал, в итоге выдает отдельной строкой. а следом весь список, что-то вроде этого
Контрагент ООО,03.7/23-172 договор от 07.06.2023 Поставка продуктов от , от 315 843,91 33 341,01
Контрагент ООО,03.7/23-172 договор от 07.06.2023 Поставка продуктов БП-15946 от 05.12.2023, БП-15946 от 05.12.2023 37 046,9 3 367,9
а хотелось бы, чтобы он все номера накладной записал в одной строке по контрагенту, а не просто сложил суммы и не создавал строки по каждому контрагенту, если сработала группировка
(2) я так пробовал, в итоге выдает отдельной строкой. а следом весь список, что-то вроде этого
Контрагент ООО,03.7/23-172 договор от 07.06.2023 Поставка продуктов от , от 315 843,91 33 341,01
Контрагент ООО,03.7/23-172 договор от 07.06.2023 Поставка продуктов БП-15946 от 05.12.2023, БП-15946 от 05.12.2023 37 046,9 3 367,9
а хотелось бы, чтобы он все номера накладной записал в одной строке по контрагенту, а не просто сложил суммы и не создавал строки по каждому контрагенту, если сработала группировка
может так (просто пример)
лкРезультат = лкЗапрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока лкРезультат.Следующий() Цикл //обход группировок по Контрагентам
Сообщить(лкРезультат.Контрагент);
лкДетали = лкРезультат.Выбрать();
Пока лкДетали.Следующий() Цикл //детальные записи по каждому Контрагенту
Сообщить(" " + лкДетали.Ссылка); //здесь можно сформировать общую строку
КонецЦикла;
КонецЦикла;
Показать
(6) Я тут сделал и вроде бы все получается с обходом, но единственный косяк, он не засовывает в строку все счета фактуры по контрагенту, что я упустил
ВыборкаДоговор = ВыборкаОбщая.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаДоговор.Следующий() Цикл
К=К+1;
ОбластьТаблицы.Параметры.Номер = К;
ОбластьТаблицы.Параметры.Контрагент = ВыборкаДоговор.ДоговорКонтрагента.Владелец;
ОбластьТаблицы.Параметры.СуммаДокумента = ВыборкаДоговор.СуммаДокумента;
ОбластьТаблицы.Параметры.ДоговорКонтрагента = ВыборкаДоговор.ДоговорКонтрагента;
ОбластьТаблицы.Параметры.НДС = ВыборкаДоговор.СуммаНДС;
Сообщить("ВыборкаДоговор.ДоговорКонтрагента = " + ВыборкаДоговор.ДоговорКонтрагента);
Сообщить("ВыборкаДоговор.ДоговорКонтрагента.Владелец = " + ВыборкаДоговор.ДоговорКонтрагента.Владелец);
Выборка = ВыборкаДоговор.Выбрать();
Пока Выборка.Следующий() Цикл
ОбластьТаблицы.Параметры.НомерВходящегоДокумента = Выборка.Номер1;
ОбластьТаблицы.Параметры.ДатаВходящегоДокумента = Формат(Выборка.ДатаВходящегоДокумента1,"ДФ=dd.MM.yyyy");
//ОбластьТаблицы.параметры.НомерВходящегоДокумента1 = Выборка.НомерВходящегоДокумента1;
//ОбластьТаблицы.Параметры.ДатаВходящегоДокумента1 = Формат(Выборка.ДатаВходящегоДокумента1, "ДФ=dd.MM.yyyy");
Сообщить("Выборка.Ссылка = " + Выборка.Ссылка);
Сообщить("Выборка.Ссылка1 = " + Выборка.Ссылка1);
КонецЦикла;
ТабличныйДокумент.Вывести(ОбластьТаблицы);
КонецЦикла;
КонецЕсли;
КонецЦикла;
ВыборкаДоговор = ВыборкаОбщая.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаДоговор.Следующий() Цикл
К=К+1;
ОбластьТаблицы.Параметры.Номер = К;
ОбластьТаблицы.Параметры.Контрагент = ВыборкаДоговор.ДоговорКонтрагента.Владелец;
ОбластьТаблицы.Параметры.СуммаДокумента = ВыборкаДоговор.СуммаДокумента;
ОбластьТаблицы.Параметры.ДоговорКонтрагента = ВыборкаДоговор.ДоговорКонтрагента;
ОбластьТаблицы.Параметры.НДС = ВыборкаДоговор.СуммаНДС;
Сообщить("ВыборкаДоговор.ДоговорКонтрагента = " + ВыборкаДоговор.ДоговорКонтрагента);
Сообщить("ВыборкаДоговор.ДоговорКонтрагента.Владелец = " + ВыборкаДоговор.ДоговорКонтрагента.Владелец);
Выборка = ВыборкаДоговор.Выбрать();
Пока Выборка.Следующий() Цикл
ОбластьТаблицы.Параметры.НомерВходящегоДокумента = Выборка.Номер1;
ОбластьТаблицы.Параметры.ДатаВходящегоДокумента = Формат(Выборка.ДатаВходящегоДокумента1,"ДФ=dd.MM.yyyy");
//ОбластьТаблицы.параметры.НомерВходящегоДокумента1 = Выборка.НомерВходящегоДокумента1;
//ОбластьТаблицы.Параметры.ДатаВходящегоДокумента1 = Формат(Выборка.ДатаВходящегоДокумента1, "ДФ=dd.MM.yyyy");
Сообщить("Выборка.Ссылка = " + Выборка.Ссылка);
Сообщить("Выборка.Ссылка1 = " + Выборка.Ссылка1);
КонецЦикла;
ТабличныйДокумент.Вывести(ОбластьТаблицы);
КонецЦикла;
КонецЕсли;
КонецЦикла;
он не засовывает в строку все счета фактуры
в какую строку? имя параметра?
как вы себе представляете "ВСЕ счета" ?
просто строка, через запятую, пример: "ДокСчФ1 от 01.02.2023,ДокСчФ2 от 01.02.2023,ДокСчФ3 от 01.02.2023"
так?
(10) попробуйте так
ВыборкаДоговор = ВыборкаОбщая.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаДоговор.Следующий() Цикл
К=К+1;
ОбластьТаблицы.Параметры.Номер = К;
ОбластьТаблицы.Параметры.Контрагент = ВыборкаДоговор.ДоговорКонтрагента.Владелец;
ОбластьТаблицы.Параметры.СуммаДокумента = ВыборкаДоговор.СуммаДокумента;
ОбластьТаблицы.Параметры.ДоговорКонтрагента = ВыборкаДоговор.ДоговорКонтрагента;
ОбластьТаблицы.Параметры.НДС = ВыборкаДоговор.СуммаНДС;
Сообщить("ВыборкаДоговор.ДоговорКонтрагента = " + ВыборкаДоговор.ДоговорКонтрагента);
Сообщить("ВыборкаДоговор.ДоговорКонтрагента.Владелец = " + ВыборкаДоговор.ДоговорКонтрагента.Владелец);
Выборка = ВыборкаДоговор.Выбрать();
СтрокаДокументов = ""; //строка для списка документов
Пока Выборка.Следующий() Цикл
СтрокаДокументов = СтрокаДокументов + Выборка.Ссылка + ", "; //где у вас ссылка на счетфактуру?
//ОбластьТаблицы.Параметры.НомерВходящегоДокумента = Выборка.Номер1;
//ОбластьТаблицы.Параметры.ДатаВходящегоДокумента = Формат(Выборка.ДатаВходящегоДокумента1,"ДФ=dd.MM.yyyy");
//ОбластьТаблицы.параметры.НомерВходящегоДокумента1 = Выборка.НомерВходящегоДокумента1;
//ОбластьТаблицы.Параметры.ДатаВходящегоДокумента1 = Формат(Выборка.ДатаВходящегоДокумента1, "ДФ=dd.MM.yyyy");
Сообщить("Выборка.Ссылка = " + Выборка.Ссылка);
Сообщить("Выборка.Ссылка1 = " + Выборка.Ссылка1);
КонецЦикла;
ОбластьТаблицы.Параметры.НомерВходящегоДокумента = СтрокаДокументов;
ТабличныйДокумент.Вывести(ОбластьТаблицы);
КонецЦикла;
КонецЕсли;
КонецЦикла;
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот