Имя: Пароль:
1C
1С v8
Отдать результат запроса построителю
0 Snik_666
 
13.06.12
20:36
Добрый день!  Подскажите можно ли отдать результат запроса построителю?

Идут запросы потом таблица значений обрабатывается, потом через менеджер временных таблиц еще запрос-вот тут бы и хотелось наложить итоги группировки, сортировки так как удобно это типа построителем.
1 AlexNew
 
13.06.12
21:28
СКД возьми, построитель уже забыли.
2 Feanor
 
13.06.12
21:34
(0) можно, покури свойство "ИсточникДанных"

(1) он не забыт
3 AlexNew
 
13.06.12
21:35
(2) Ничто не забыто, зачем?
4 Feanor
 
13.06.12
21:37
(2) хотя менеджера у него нет, можно ТЗ подсунуть, или в запросе построителя читать из ТЗ

(3) группировки, отборы, сортировки
5 AlexNew
 
13.06.12
21:42
(4) В СКД отменили?
6 Feanor
 
13.06.12
21:46
(5) ну вот пишу я обработку, где мне нужно пользователю дать отбор, потом с результатом запроса что-то сделать. В чем профит СКД в данном случае?
7 AlexNew
 
13.06.12
21:49
Это смотря как у тебя остальные отчеты написаны, но СКД помощнее построителя будет.
8 Feanor
 
13.06.12
21:50
(7) нахрена мне эта мощь, если мне нужен простой запрос и просто отбор к нему?
9 Feanor
 
13.06.12
21:50
+(8) и какие отчеты? речь про обработку.
10 AlexNew
 
13.06.12
21:51
(9) А разница? Печатаем или обрабатываем?
11 Feanor
 
13.06.12
21:52
(10) обрабатываем
12 Feanor
 
13.06.12
21:53
+(11) сравни, скока времени у тебя уйдет на построитель, и скока с СКД.
13 AlexNew
 
13.06.12
21:55
Зачем? Не пользуюсь построителем.
14 Feanor
 
13.06.12
22:00
(13) ПроцессорКомпоновкиДанных и ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений?
15 AlexNew
 
13.06.12
22:03
Что смутило?
16 Feanor
 
13.06.12
22:03
(15) непонятно немного, как из первого второй получить
17 Feanor
 
13.06.12
22:05
+(16) вроде понятно, нада попробовать)
18 Snik_666
 
13.06.12
22:10
Запрос = Новый Запрос;
   Запрос.Текст =
   
   "ВЫБРАТЬ
   |    ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Организация КАК Организация,
   |    ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента.ВалютаВзаиморасчетов КАК ВалютаВзаиморасчетов,
   |    ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента.ВидДоговора КАК ВидДоговора,
   |    ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Период КАК Период,
   |    ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Регистратор,
   |    ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Контрагент КАК Контрагент,
   |    ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента КАК Договор,
   |    ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовНачальныйОстаток КАК НачальныйОстаток,
   |    ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовПриход КАК Приход,
   |    ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовРасход КАК Расход,
   |    ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовКонечныйОстаток КАК КонечныйОстаток,
   |    ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Подразделение,
   |    ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Контрагент.Отсрочка КАК Отсрочка
   |ИЗ
   |    РегистрНакопления.ВзаиморасчетыСКонтрагентами.ОстаткиИОбороты(, &КонПериода, Регистратор, Движения, ) КАК ВзаиморасчетыСКонтрагентамиОстаткиИОбороты
   |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ВзаиморасчетыСКонтрагентами.Остатки КАК ВзаиморасчетыСКонтрагентамиОстатки
   |        ПО ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента = ВзаиморасчетыСКонтрагентамиОстатки.ДоговорКонтрагента
   |ГДЕ
   |    ВзаиморасчетыСКонтрагентамиОстатки.СуммаУпрОстаток <> 0
   |
   |СГРУППИРОВАТЬ ПО
   |    ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Контрагент,
   |    ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента,
   |    ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Период,
   |    ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Регистратор,
   |    ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Организация,
   |    ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента.ВалютаВзаиморасчетов,
   |    ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента.ВидДоговора,
   |    ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовНачальныйОстаток,
   |    ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовПриход,
   |    ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовРасход,
   |    ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовКонечныйОстаток,
   |    ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Подразделение,
   |    ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Контрагент.Отсрочка
   |
   |УПОРЯДОЧИТЬ ПО
   |    Период УБЫВ";
   Запрос.УстановитьПараметр("КонПериода",КонПериода);    
   ТЗ_Все = Запрос.Выполнить().Выгрузить();//.ВыбратьСтроку();
   //
   //ОБРАБОТКА ТЗ
   //
   //
   МВТ = Новый МенеджерВременныхТаблиц;
   Запрос.МенеджерВременныхТаблиц = МВТ;
   Запрос.Текст =
     "ВЫБРАТЬ
     |    ТЗ_Все.Организация,
     |    ТЗ_Все.ВалютаВзаиморасчетов,
     |    ТЗ_Все.ВидДоговора,
     |    ТЗ_Все.Период,
     |    ТЗ_Все.Регистратор,
     |    ТЗ_Все.Контрагент,
     |    ТЗ_Все.Договор,
     |    ТЗ_Все.НачальныйОстаток,
     |    ТЗ_Все.Приход,
     |    ТЗ_Все.Расход,
     |    ТЗ_Все.КонечныйОстаток,
     |    ТЗ_Все.Подразделение,
     |    ТЗ_Все.Отсрочка
     |ПОМЕСТИТЬ ВремРезультатДокументы
     |ИЗ
     |    &ТЗ_Все КАК ТЗ_Все";
     Запрос.УстановитьПараметр("ТЗ_Все", ТЗ_Все );
     Запрос.Выполнить();
     
     
     
     //вот этот запрос отдать построителю можно ?
     Запрос.Текст =
     "ВЫБРАТЬ
     |    ВремРезультатДокументы.Организация КАК Организация,
     |    ВремРезультатДокументы.ВалютаВзаиморасчетов КАК ВалютаВзаиморасчетов,
     |    ВремРезультатДокументы.ВидДоговора КАК ВидДоговора,
     |    ВремРезультатДокументы.Период,
     |    ВремРезультатДокументы.Регистратор,
     |    ВремРезультатДокументы.Контрагент КАК Контрагент,
     |    ВремРезультатДокументы.Договор КАК Договор,
     |    ВремРезультатДокументы.Подразделение КАК Подразделение,
     |    ВремРезультатДокументы.Отсрочка,
     |    СУММА(ВзаиморасчетыСКонтрагентамиОстатки.СуммаВзаиморасчетовОстаток) КАК СуммаВзаиморасчетовОстаток
     |ИЗ
     |    ВремРезультатДокументы КАК ВремРезультатДокументы
     |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ВзаиморасчетыСКонтрагентами.Остатки(&КонПериода, ) КАК ВзаиморасчетыСКонтрагентамиОстатки
     |        ПО ВремРезультатДокументы.Договор = ВзаиморасчетыСКонтрагентамиОстатки.ДоговорКонтрагента
     |
     |СГРУППИРОВАТЬ ПО
     |    ВремРезультатДокументы.Организация,
     |    ВремРезультатДокументы.ВалютаВзаиморасчетов,
     |    ВремРезультатДокументы.ВидДоговора,
     |    ВремРезультатДокументы.Период,
     |    ВремРезультатДокументы.Регистратор,
     |    ВремРезультатДокументы.Контрагент,
     |    ВремРезультатДокументы.Договор,
     |    ВремРезультатДокументы.Подразделение,
     |    ВремРезультатДокументы.Отсрочка
     |ИТОГИ
     |    СУММА(СуммаВзаиморасчетовОстаток)
     |ПО
     |    ОБЩИЕ,
     |    Подразделение,
     |    Организация,
     |    ВалютаВзаиморасчетов,
     |    ВидДоговора,
     |    Контрагент,
     |    Договор";
     
     Запрос.УстановитьПараметр("КонПериода",КонецДня(КонПериода));
     
     ТЗ = Запрос.Выполнить().Выгрузить();
     ТЗ.ВыбратьСтроку();
     //Интересует итоги в построителе настроить и потом вывести
     //
19 DrShad
 
13.06.12
22:11
(17) кстати отборы СКД не в пример построителю копируются и назначаются
20 Feanor
 
13.06.12
22:13
(19) дак в построителе тоже вроде копируются, добавляются и т.п. или не об этом спич?
21 DrShad
 
13.06.12
22:15
(20) копируются или отбор только для чтения?
22 Feanor
 
13.06.12
22:19
(21)
ПолучитьНастройки(<Отбор>, <Порядок>, <Измерения>, <ВыбранныеПоля>, <УсловноеОформление>)

УстановитьНастройки(<Настройки>, <Отбор>, <Порядок>, <Измерения>, <ВыбранныеПоля>, <УсловноеОформление>)

отбор точно не только для чтения.
23 DrShad
 
13.06.12
22:28
(22) ты решил блеснуть знанием СП? во втором методе методе Отбор какое значение имеет?
24 Feanor
 
13.06.12
22:30
(23) ща ещё раз блесну :) Истина или Ложь, не?
25 DrShad
 
13.06.12
22:30
правильно! Булево
26 DrShad
 
13.06.12
22:31
где здесь копирование отбора из других источников?
27 Feanor
 
13.06.12
22:31
(26) из других нету, тока из другого построителя
28 DrShad
 
13.06.12
22:33
(27) пример кода копирования из другого построителя в студию
29 Feanor
 
13.06.12
22:33
+(27) кажись, догнал, нельзя написать "Построитель.Отбор = МойОтбор" )
30 DrShad
 
13.06.12
22:34
(29) ну наконец-то! почти
31 Feanor
 
13.06.12
22:36
(28)

Настройки = Построитель1.ПолучитьНастройки(Истина, Ложь, Ложь, Ложь, Ложь);
Построитель2.УстановитьНастройки(Настройки, Истина, Ложь, Ложь, Ложь, Ложь);

(30) не всё потеряно :)
32 DrShad
 
13.06.12
22:39
это при совпадении доступных полей
33 DrShad
 
13.06.12
22:39
иначе критическая ошибка
34 Feanor
 
13.06.12
22:40
угу, в общем не очень удобно
35 DrShad
 
13.06.12
22:41
(34) продолжаем обсуждение построителя?
36 Feanor
 
13.06.12
22:47
(35) нада пробовать СКД )
37 DrShad
 
13.06.12
22:48
(36) хех ))) а я ведь про СКД ничего не сказал хорошего ))))
38 DrShad
 
13.06.12
22:56
(36) а СКД таки нужно изучать уже давно, ибо на УФ демонические списки на нем построены
39 Feanor
 
13.06.12
22:59
(38) да с УФ и ДС как раз проблем вроде не было, а вот процессоры щупать не приходилось как-то ещё.