Доброго времени суток форумчане. Имею 2(две) ТаблицыЗначений, полученых из запросов: Таб с одной колонкой Наименование и Таб2 с колонками Наименование, Дата, Сумма. В Таб полный перечень Наименований, а в Таб2 только те Наименования, у которых есть Дата и Сумма, причем для одного Наименования может быть несколько строчек Дата и Сумма, а может и вообще не быть. Нужно сформировать Таблицу из полного перечня Наименований и к ней присоединить записи из Дата и Сумма. Для наглядности рисунок: Предполагаю что группировка в ТЗ невозможно, поэтому предполагаю что результирующей таблицей будет ТабличныйДокумент. У меня лично получилось в качестве результирующей таблицы сделать ТаблицуЗначений и с помощью вложеных циклов
Для Каждого Стр2 Из Таб2 Цикл Для Каждого Стр из Таб Цикл Если Строка(Стр.Наименование)=Строка(Стр2.Наименование) Тогда Стр.Дата= Стр2.Дата; Стр.Сумма = Стр2.Сумма; КонецЕсли; КонецЦикла; КонецЦикла;
заполнить её, НО всё хорошо когда Дата и Сумма для Наименования одна запись(на картинке Наименование В и Е), а вот если их 2 и более (Наименования А и Г), то в результирующую таблицу попадает только последнее значение Даты и Суммы. Также нет группировки по Наименованию в силу того что это ТЗ. В общем помогите своими соображениями по этому поводу. Не прошу кодить - буду пробовать сам, мне нужна мысль, алгоритм... пробовал после внутреннего цикла снова проверять Наименование (не то же Нименование снова) но как не мучал Если..Тогда..Иначе так ничего и не добился существенно, лишь только сильнее запутался. Буду признателен за любую подсказку.
logist @ Сегодня, 15:59
, Первый запрос для Таб отбирает Наименования из Справочника, для Таб2 Запрос выдирает Дату и Сумму из ТабличнойЧасти Документа. Мне нужны в конечной таблице ВСЕ Наименования, поэтому если их нет в Документе то и Таб2 их содержать не будет. Данную задачу, точнее её начало я озвучивал вот здесь. Там использовал оборот по счёту, н если оборотов нет то и Наименование не попадало в запрос, поэтому сформировал ВСЕ Наименования в отдельном запросе а к нему пытаюсь присоединить данные из Таб2. Вроде бы устраивает такой подход но возникли трудности, описанные выше - в Таб попадает только одна последняя запись из Таб2 и как сгруппировать их.
Flexy @ Сегодня, 15:58
, Ваша мысль повторяет ответ logist-а. В моём случае всё немного усложнено... ответил ему.
Танцор с Бубном
Группа: Местный
Сообщений: 1121
Из: Днепра
Спасибо сказали: 231 раз
Рейтинг: 0
sanytch @ Сегодня, 16:26
,
Цитата(sanytch @ 09.12.16, 16:26)
Мне нужны в конечной таблице ВСЕ Наименования, поэтому если их нет в Документе то и Таб2 их содержать не будет.
Используйте ЛЕВОЕ СОДИНЕНИЕ в запросе. Как-то так: ВЫБРАТЬ Спр.Наименование, Док.Дата, Док.Сумма ИЗ Справочник... КАК Спр ЛЕВОЕ СОЕДИНЕНИЕ Документ... КАК Док ПО Спр.Наименование = Док.Наименование ИТОГИ ПО Спр.Наименование
Или вариант для заморочкой с двумя ТЗ: ВЫБРАТЬ * ПОМЕСТИТЬ Т1 ИЗ &Таб КАК Т1 ; ВЫБРАТЬ * ПОМЕСТИТЬ Т2 ИЗ &Таб2 КАК Т2 ; ВЫБРАТЬ Т1.Наименование, Т2.Дата, Т2.Сумма ИЗ Т1 ЛЕВОЕ СОЕДИНЕНИЕ Т2 ПО Т1.Наименование = Т2.Наименование ИТОГИ ПО Т1.Наименование ... Запрос.УстановитьПараметр("Т1",Т1); Запрос.УстановитьПараметр("Т2",Т2);
Суть в том что, если в Таб2 следующее А после текущего Наименования тоже А, то в Таб нужно добавить новую строчку где Наименование А, Дата А2 и соответствующая Сумма. если это прояснит ситуацию то вот оба запроса: Запрос для Таб:
Запрос.Текст = "ВЫБРАТЬ | Контрагенты.Наименование КАК ФИОКонтрагент, | Контрагенты.ЭтоГруппа, | Контрагенты.Родитель КАК Родитель |ИЗ | Справочник.Контрагенты КАК Контрагенты |ГДЕ | Контрагенты.ЭтоГруппа = ЛОЖЬ | И Контрагенты.Ссылка В ИЕРАРХИИ(&Группа) | |УПОРЯДОЧИТЬ ПО | Родитель, | ФИОКонтрагент";
Запрос для Таб2:
Запрос.Текст = "ВЫБРАТЬ | ИНАГРО_НачислениеПоПаямТовары.Контрагент.Родитель КАК КонтрагентРодитель, | ИНАГРО_НачислениеПоПаямТовары.Ссылка.Дата КАК ДатаДок, | ИНАГРО_НачислениеПоПаямТовары.Контрагент КАК Контрагент, | ИНАГРО_НачислениеПоПаямТовары.Сумма КАК Сумма, | ИНАГРО_НачислениеПоПаямТовары.Удержано КАК Удержано, | ИНАГРО_НачислениеПоПаямТовары.УдержаноВЗ КАК УдержаноВЗ, | ИНАГРО_НачислениеПоПаямТовары.Алименты КАК Алименты, | ИНАГРО_НачислениеПоПаямТовары.КВыдаче КАК КВыдаче |ИЗ | Документ.ИНАГРО_НачислениеПоПаям.Товары КАК ИНАГРО_НачислениеПоПаямТовары |ГДЕ | ИНАГРО_НачислениеПоПаямТовары.Ссылка.Дата МЕЖДУ &НачПериода И &КонПериода | И ИНАГРО_НачислениеПоПаямТовары.Контрагент.Родитель.Ссылка В ИЕРАРХИИ(&Группа) | И ИНАГРО_НачислениеПоПаямТовары.Ссылка.Проведен = ИСТИНА | |УПОРЯДОЧИТЬ ПО | КонтрагентРодитель, | Контрагент, | ДатаДок";
Может их и можно объединить, но для меня это пока картина не ясная...
Flexy @ Сегодня, 16:35
, Добавил текст запросов, может картина станет яснее...
Flexy @ Сегодня, 16:35
, попробую Ваш вариант с заморочкой с двумя ТЗ
sava1 @ Сегодня, 17:10
, лучше покажу: Это стандартный Отчет "Обороты счета", но в него не попадают контрагенты у которых нет оборотов, точнее ни оборотов ни остатков... а мне они тоже нужны...
sava1 @ Сегодня, 17:31
, ни там ни там ведь нет Контрагентов у которых пусто. скорее все контрагенты и данные по тем, кто фигурирует в документу НачислениеПоПаям. Как то так... Может я в конце пятницы чего-то неправильно формулирую уже. Думаю стоит к этому вернутся завтра на свежую голову
На сегодня спасибо всем за советы, завтра попробую воплотить в жЫсть)
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!