Имя: Пароль:
1C
1С v8
Получение сумм в запросе по нескольким документам
,
0 spapin87
 
27.06.13
16:28
Добрый день! помогите советом: Есть несколько документов PI;BO;CI;SK, у которых есть свои суммы, как в запросе получить сумму по каждому документу? В запросе эти документы вытаскиваю из регистра накоплений ЗаказыПоставщикамВЭДОстаткиИОбороты.ЗаказПоставщику
Запрос:
"ВЫБРАТЬ
   |    ЗаказыПоставщикамВЭДОстаткиИОбороты.Контрагент,
   |    ЗаказыПоставщикамВЭДОстаткиИОбороты.ЗаказПоставщику,
   |    ЗаказыПоставщикамВЭДОстаткиИОбороты.СуммаВзаиморасчетовПриход КАК СуммаВзаиморасчетовПриход,
   |    ЗаказыПоставщикамВЭДОстаткиИОбороты.Сделка КАК Сделка,
   |    0 КАК СуммаПеревода,
   |    0 КАК СуммаКонвертация,
   |    0 КАК СуммаТрансфер,
   |    0 КАК СуммаДокумента,
   |    NULL КАК докоплаты,
   |    0 КАК КоэффОчистки
   |ИЗ
   |    РегистрНакопления.ЗаказыПоставщикамВЭД.ОстаткиИОбороты(&ДатаНачала, &ДатаКонца, Период, , ) КАК ЗаказыПоставщикамВЭДОстаткиИОбороты
   |ГДЕ
   |    1 = 1
   |    И 3 = 3
   |
   |ОБЪЕДИНИТЬ ВСЕ
   |
   |ВЫБРАТЬ
   |    ДокументОплатыВЭД.Контрагент,
   |    NULL,
   |    0,
   |    ДокументОплатыВЭД.Сделка,
   |    ДокументОплатыВЭД.СуммаПеревода,
   |    ДокументОплатыВЭД.СуммаКонвертация,
   |    ДокументОплатыВЭД.СуммаТрансфер,
   |    ДокументОплатыВЭД.СуммаДокумента,
   |    ДокументОплатыВЭД.Ссылка,
   |    NULL
   |ИЗ
   |    Документ.ДокументОплатыВЭД КАК ДокументОплатыВЭД
   |ГДЕ
   |    2 = 2
   |    И 4 = 4
   |    И ДокументОплатыВЭД.Дата МЕЖДУ &ДатаНачала И &ДатаКонца
   |
   |СГРУППИРОВАТЬ ПО
   |    ДокументОплатыВЭД.Контрагент,
   |    ДокументОплатыВЭД.Сделка,
   |    ДокументОплатыВЭД.СуммаПеревода,
   |    ДокументОплатыВЭД.СуммаКонвертация,
   |    ДокументОплатыВЭД.СуммаТрансфер,
   |    ДокументОплатыВЭД.СуммаДокумента,
   |    ДокументОплатыВЭД.Ссылка
   |ИТОГИ
   |    СУММА(СуммаВзаиморасчетовПриход),
   |    СУММА(СуммаПеревода),
   |    СУММА(СуммаКонвертация),
   |    СУММА(СуммаТрансфер),
   |    СУММА(СуммаДокумента)
   |ПО
   |    Сделка"
1 olegves
 
27.06.13
16:30
(0) периодичность Регистратор ставь в параметрах ВТ
2 lamesnake
 
27.06.13
16:34
|    1 = 1
   |    И 3 = 3

   |    2 = 2
   |    И 4 = 4
Это к чему вообще?
3 Maxus43
 
27.06.13
16:36
(22) условия динамически вставлять... правда способ конечно кошерный...
4 spapin87
 
27.06.13
16:37
Если ЭлементыФормы.Контрагент.Значение <> Справочники.Контрагенты.ПустаяСсылка() тогда
       Запрос.УстановитьПараметр("Контрагент", Контрагент);
       текстзапроса = СтрЗаменить(текстзапроса,"1 = 1","ЗаказыПоставщикамВЭДОстаткиИОбороты.Контрагент = &Контрагент");
       текстзапроса = СтрЗаменить(текстзапроса,"2 = 2","ДокументОплатыВЭД.Контрагент = &Контрагент");
   КонецЕсли;
   Если ЭлементыФормы.Сделка.Значение <> Справочники.СделкиВЭД.ПустаяСсылка() тогда
       Запрос.УстановитьПараметр("Сделка", Сделка);
       текстзапроса = СтрЗаменить(текстзапроса,"3 = 3","ЗаказыПоставщикамВЭДОстаткиИОбороты.Сделка = &Сделка");
       текстзапроса = СтрЗаменить(текстзапроса,"4 = 4","ДокументОплатыВЭД.Сделка = &Сделка");
   КонецЕсли;
   Запрос.УстановитьПараметр("ДатаКонца", КонецДня(ДатаКонца));
   Запрос.УстановитьПараметр("ДатаНачала", ДатаНачала);
5 zippygrill
 
27.06.13
16:43
я пишу иногда так:

ГДЕ
Выбор Когда &ОтборКонтрагент = Справочник.Контрагенты.ПустаяСсылка() Тогда
     Истина
     Иначе Документ.Контрагент = &ОтборКонтрагент
Конец
6 zippygrill
 
27.06.13
16:44
Я к тому что в этом случае необязательно динамически менять текст запроса. Можно использовать Выбор Когда ...
7 zippygrill
 
27.06.13
16:45
+ (5)
Запрос.УстановитьПараметр(ОтборКонтрагент, ЭлементыФормы.Контрагент.Значение);
8 spapin87
 
27.06.13
16:45
Мне нужно именно в запросе определить тип документа и сумма, потому что нужна группировка по документам ...
в коде я могу поставить условие типа:
Если ТипЗнч(ВыборкаСделка.ДокументДвижения) = Тип("ДокументСсылка.ЗаказПоставщику_PI") Тогда
                   ВремСуммаPIBO = ВыборкаСделка.СуммаВзаиморасчетовПриход;
9 spapin87
 
27.06.13
16:47
Выбор Когда

(ЗаказыПоставщикамВЭДОстаткиИОбороты.ЗаказПоставщику ССЫЛКА Документ.ЗаказПоставщику_PI) Тогда СуммаВзаиморасчетовПриход Конец
 
Так?
10 zippygrill
 
27.06.13
16:48
(8) почему не можешь? есть конструкция Выбор Когда Документ.Ссылка ссылка Документ.РеализацияТоваровУслуг Тогда "делаи что хочешь"
Иначе "опять делаи что хочешь"
Конец
11 zippygrill
 
27.06.13
16:48
(9) ну да.
12 spapin87
 
27.06.13
16:55
(11) Так и сделал, теперь буду делать группировку по документам )))

   |    ВЫБОР
   |        КОГДА ЗаказыПоставщикамВЭДОстаткиИОбороты.ЗаказПоставщику ССЫЛКА Документ.ЗаказПоставщику_PI
   |            ТОГДА ЗаказыПоставщикамВЭДОстаткиИОбороты.СуммаВзаиморасчетовПриход
   |    КОНЕЦ КАК ЗаказПоставщикуPI,
   |    ВЫБОР
   |        КОГДА ЗаказыПоставщикамВЭДОстаткиИОбороты.ЗаказПоставщику ССЫЛКА Документ.ЗаказПоставщику_BO
   |            ТОГДА ЗаказыПоставщикамВЭДОстаткиИОбороты.СуммаВзаиморасчетовПриход
   |    КОНЕЦ КАК ЗаказПоставщикуBO,
   |    ВЫБОР
   |        КОГДА ЗаказыПоставщикамВЭДОстаткиИОбороты.ЗаказПоставщику ССЫЛКА Документ.ЗаказПоставщику_CI
   |            ТОГДА ЗаказыПоставщикамВЭДОстаткиИОбороты.СуммаВзаиморасчетовПриход
   |    КОНЕЦ КАК ЗаказПоставщикуCI,
   |    ВЫБОР
   |        КОГДА ЗаказыПоставщикамВЭДОстаткиИОбороты.ЗаказПоставщику ССЫЛКА Документ.ЗаказПоставщику_SK
   |            ТОГДА ЗаказыПоставщикамВЭДОстаткиИОбороты.СуммаВзаиморасчетовПриход
   |    КОНЕЦ КАК ЗаказПоставщикуSK
13 spapin87
 
27.06.13
17:08
Можно ли в макете установить вывод по двум документам? ЗаказПоставщикуPI+ЗаказПоставщикуBO, нужно чтобы в столбец выводились эти два значения
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.