Имя: Пароль:
1C
1С v8
Написать запрос суммирующий строки
0 Serega103
 
22.02.12
10:13
Здравствуйте, у меня такая проблема: есть документ "заказПокупателя" в котором есть табличная часть "Заказы поставщикам", как написать запрос, результатом которого была бы таблица следующего вида
первое поле Номер заказа покупателя, а во втором через запятую заказы поставщикам?Сразу оговорюсь, что при построении отчета использую СКД поэтому и хочется исполнить это в запросе.
1 butterbean
 
22.02.12
10:15
в запросе заказы через запятую - не получится
2 Serega103
 
22.02.12
10:17
я думал может есть какой то вариант используя Группировки?
3 zelebobi4
 
22.02.12
10:18
А зачем тебе такая таблица?
4 zelebobi4
 
22.02.12
10:19
В смысле зачем тебе такой запрос. Что ты с ним потом будешь делать? Где использовать?
5 Serega103
 
22.02.12
10:20
В пакете запросов это одна из временных таблиц, которая потом будет крепиться к основному запросу
6 zelebobi4
 
22.02.12
10:21
Гм. А сам запрос где тебе результат нужен можешь показать?
7 PuhUfa
 
22.02.12
10:23
(5) а зачем именно через запятую?
8 Serega103
 
22.02.12
10:23
ВЫБРАТЬ
   СУММА(ПрочиеРасходыОбороты.СуммаПриход) КАК СуммаПриход,
   ПрочиеРасходыОбороты.АналитикаРасходов.ЗаказПоставщику
ПОМЕСТИТЬ ПР
ИЗ
   РегистрНакопления.ПрочиеРасходы.Обороты(, , , СтатьяРасходов.Код = "УТ-000026") КАК ПрочиеРасходыОбороты

СГРУППИРОВАТЬ ПО
   ПрочиеРасходыОбороты.АналитикаРасходов.ЗаказПоставщику
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ЗаказКлиентаЗаказыПоставщикам.Ссылка,
   СУММА(ПР.СуммаПриход) КАК СуммаПриход
ПОМЕСТИТЬ ПрочиеРасходыМонтаж
ИЗ
   Документ.ЗаказКлиента.ЗаказыПоставщикам КАК ЗаказКлиентаЗаказыПоставщикам
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ ПР КАК ПР
       ПО ЗаказКлиентаЗаказыПоставщикам.ЗаказПоставщику = ПР.АналитикаРасходовЗаказПоставщику

СГРУППИРОВАТЬ ПО
   ЗаказКлиентаЗаказыПоставщикам.Ссылка
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ЗаказКлиентаТовары.Ссылка,
   СУММА(ЗаказКлиентаТовары.Сумма) КАК Сумма
ПОМЕСТИТЬ ЗаказыК
ИЗ
   Документ.ЗаказКлиента.Товары КАК ЗаказКлиентаТовары
ГДЕ
   ЗаказКлиентаТовары.Номенклатура.Код = "УТ-00000680"

СГРУППИРОВАТЬ ПО
   ЗаказКлиентаТовары.Ссылка
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   Задание.Дата КАК ДатаВыдачиЗадания,
   Задание.Предмет.Партнер КАК Заказчик,
   Задание.Предмет КАК Заказ,
   Задание.Автор КАК Менеджер,
   Задание.ВидРаботы КАК ВидРабот,
   Задание.Предмет.ВидСделки КАК ВидСделки,
   Задание.Исполнитель,
   Задание.ВремяНаРаботу,
   Задание.РезультатВыполнения,
   Задание.Партнер КАК Партнер,
   Задание.Предмет.Партнер КАК Клиент,
   Задание.Предмет.Номер КАК НомерЗаказа,
   Задание.НомерСчета,
   Задание.Маршрут,
   Задание.Сумма,
   Задание.КоличествоМашин,
   Задание.ДатаЗавершения КАК ДатаОкончанияРабот,
   Задание.ЕстьАкт КАК Акт,
   Задание.ЕстьСчетФактура КАК СчетФактура,
   Задание.ЕстьОплата КАК Оплата,
   Задание.ВидЗадания,
   Задание.СрокИсполнения КАК ДатаВыполненияРабот,
   Задание.ДатаВыполненияРаботы,
   Задание.ДатаПроверкиРаботы,
   Задание.ДатаНачалаРаботы,
   Задание.Предмет.ДокументОснование.НомерПоДаннымПоставщика КАК НомерЗаказаЗавода,
   Задание.ПлановаяСумма,
   Задание.Отклонение,
   ЗаказыК.Сумма КАК ПредварительнаяСуммаПоМонтажу,
   ПрочиеРасходыМонтаж.СуммаПриход КАК ФактическаяСуммаМонтажа
ИЗ
   БизнесПроцесс.Задание КАК Задание
       ЛЕВОЕ СОЕДИНЕНИЕ ЗаказыК КАК ЗаказыК
       ПО Задание.Предмет.Ссылка = ЗаказыК.Ссылка
       ЛЕВОЕ СОЕДИНЕНИЕ ПрочиеРасходыМонтаж КАК ПрочиеРасходыМонтаж
       ПО Задание.Предмет = ПрочиеРасходыМонтаж.Ссылка
ГДЕ
   Задание.Завершен = &Выполнено
   И ВЫБОР
           КОГДА &Выполнено = ИСТИНА
               ТОГДА Задание.ДатаЗавершения МЕЖДУ &ДатаНачала И &ДатаКонца
           ИНАЧЕ КОНЕЦПЕРИОДА(Задание.Дата, ДЕНЬ) <= КОНЕЦПЕРИОДА(&ДатаКонца, ДЕНЬ)
       КОНЕЦ
9 Serega103
 
22.02.12
10:24
(7) можно и через тире)))Главное чтобы в одной строке.
10 zelebobi4
 
22.02.12
10:26
Аа. Понял. Сделай так.

ТЗ=Товары.Выгрузить();
ТЗ.Свернуть("Номер,ЗаказПоставщику");

Строка = "";
Для А= 0 По ТЗ.Количество() - 1 Цикл
Строка = Строка  + ТЗ.Получить(А).ЗаказПоставщитку;

КонецЦикла;

Запрос.УстановатьПарметр("Параметр",Строка);
Запрос.УстановатьПарметр("Ссылка",ЭтотОбъект.Ссылка);

Выбрать
ЗаказПокупателяТовары.Номер,
&Параметр
Из ЗаказПокупателя.Товары Как ЗаказПокупателяТовары
Где ЗаказПокупателяТовары.Ссылка = &ссылка
11 Serega103
 
22.02.12
10:29
Спасибо за совет, сейчас попробую передать в запрос временную таблицу.
12 zelebobi4
 
22.02.12
10:32
эээ. Запрос немного кривой получился, н оя думаю идею ты ухватил. :)
13 zelebobi4
 
22.02.12
10:33
Имена переменных только переделай.
14 Serega103
 
22.02.12
10:34
(12) угу, идея как раз и нужна была))
15 DrShad
 
22.02.12
10:35
(10) что за циклы такие? кто так учил писать?
16 kabanoff
 
22.02.12
10:36
(0) Другие настройки -> Расположение реквизитов = "Вместе".
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.