Имя: Пароль:
1C
1С v8
СКД: передача ВТ или Тз в СКД
0 Snork
 
09.01.13
22:29
Как передать в СКД ВТ или Тз?
1 ДенисЧ
 
09.01.13
22:30
Там есть источник данных объект. В книжке описано.
2 Snork
 
09.01.13
22:34
(1) Смотрел, если передам как объект, то данные этой Тз сразу попадают с результирующие поля СКД. Но у меня ВТ/Тз исключительно вспомогательная, результирующие данные принципиально другие.
3 Snork
 
10.01.13
13:14
up
4 Snork
 
10.01.13
13:33
ап
5 evorle145
 
10.01.13
13:35
Запрос1=Новый запрос;
   Запрос1.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
   МенеджерТаблицыДанных1 = Запрос1.МенеджерВременныхТаблиц;
   Запрос1.Текст="ВЫБРАТЬ
   |*
   |ПОМЕСТИТЬ ВТ_ТаблицаДанных1
   |ИЗ
   |&таб КАК таб";
   Запрос1.УстановитьПараметр("таб",Таб1);
   Запрос1.Выполнить();
   
   ЗапросКбазеДанных = Новый Запрос;
   ЗапросКбазеДанных.МенеджерВременныхТаблиц = МенеджерТаблицыДанных1;


   ЗапросКбазеДанных.Текст =
   

   "ВЫБРАТЬ
   |    ВТ_ТаблицаДанных1.КомНомер,
   |    ВТ_ТаблицаДанных1.Модель,
   |    Номенклатура.Ссылка,
   |    Номенклатура.ЖобНомер
   |ПОМЕСТИТЬ ДляПустых
   |ИЗ
   |    ВТ_ТаблицаДанных1 КАК ВТ_ТаблицаДанных1
   |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенклатура
   |        ПО ВТ_ТаблицаДанных1.КомНомер = Номенклатура.ЖобНомер
   |;
   |
   |////////////////////////////////////////////////////////////////////////////////
   |ВЫБРАТЬ
   |    ДляПустых.Ссылка,
   |    ДляПустых.ЖобНомер,
   |    ДляПустых.КомНомер,
   |    ДляПустых.Модель
   |ИЗ
   |    ДляПустых КАК ДляПустых
   |ГДЕ
   |    ДляПустых.ЖобНомер ЕСТЬ NULL ";
       //ЗапросКбазеДанных.УстановитьПараметр("ВидНоменклатуры",Справочники.ВидыНоменклатуры.НайтиПоКоду("000000008"));
       //ПоложениеАМ = новый массив;
       //ПоложениеАм.Добавить(перечисления.ПоложениеАМ.Удален);
       //ПоложениеАМ.Добавить(перечисления.ПоложениеАМ.Продан);
       //ЗапросКбазеДанных.УстановитьПараметр("ПоложениеАМ",ПоложениеАМ);
   Рез = ЗапросКбазеДанных.Выполнить();
6 evorle145
 
10.01.13
13:35
как-то так
7 evorle145
 
10.01.13
13:39
Э, ошибся наверное. Это я скопировал для вставки ВТ в запрос
8 Snork
 
10.01.13
13:49
(5) не то
9 alex-pro
 
10.01.13
13:55
ВЫБРАТЬ
   ВходящаяТЗ.Поле1
ПОМЕСТИТЬ ДанныеИзВходящейТЗ
ИЗ
   &ВходящаяТЗ КАК ВходящаяТЗ
;

////////////////////////////////////////////////////////////////////////////////
УНИЧТОЖИТЬ ДанныеИзВходящейТЗ
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ДанныеИзВходящейТЗ.Поле1
ИЗ
   ДанныеИзВходящейТЗ КАК ДанныеИзВходящейТЗ
10 DexterMorgan
 
10.01.13
13:57
(0) Никак нельзя, через источник объект или никак
11 Snork
 
10.01.13
13:58
(9) ты это пробовал в СКД?
12 DexterMorgan
 
10.01.13
13:59
(11) Я пробовал)
13 DexterMorgan
 
10.01.13
13:59
(11) Так низзя!)
14 alex-pro
 
10.01.13
14:02
Да, действительно, нельзя.
Получается, только (10)
15 Snork
 
10.01.13
14:23
(14) не подходит (10), см. (2)
16 alex-pro
 
10.01.13
14:25
(15) А ограничить доступ к полям этой ТЗ не вариант?
17 ИС-2
 
naïve
10.01.13
14:25
(0) насколько помню, но ТЗ корме как объектом передать в СКД нельзя. Я формировал результирующую ТЗ и передавал ее как объект.
18 DexterMorgan
 
10.01.13
14:26
(15) Так я же и написал в (10) про источник объект
19 wowik
 
10.01.13
14:28
20 Гений 1С
 
гуру
10.01.13
14:56
тупой совет - закодировать данные текстом запроса.. но это извра
21 Snork
 
10.01.13
15:48
(19) опять не то. там переданный файл xml и является результирующей таблицей, СКД ее крутит-вертит. А у меня ВТ/Тз является вспомогательной таблицей, отличной от результирующей.
22 Гений 1С
 
гуру
10.01.13
16:19
(21) я ковырял, ковырял и в итоге забил.
может поковырять на тему вложенных СКД?
23 pessok
 
10.01.13
16:22
хм... а если обычным пакетом, а перед инициализацией запроса вручную подпихнуть параметр?
24 pessok
 
10.01.13
16:23
или СКД не жрет

ИЗ
   &ВходящаяТЗ КАК ВходящаяТЗ
25 eklmn
 
гуру
10.01.13
16:37
Не верю что ТЗ нельзя получить в том же СКД, че за извраты?
26 pessok
 
10.01.13
17:03
да вот мне имхается, что можно ее обычным параметром передать, как в любом пакетном запросе, но тестить ленииииво
27 GANR
 
10.01.13
17:13
(0) Никак, только (1) как обходной путь использовать можно.
28 Snork
 
10.01.13
19:01
up
29 Snork
 
10.01.13
19:12
(25) ты не понял проблемы
(27) см. (2)
(22) чтобы использовать вложенные СКД надо вначале мои вспомогательные Тз/ВТ как то закинуть в СКД
--
итого: получается, для СКД надо данные хранить где то в конфигурации, чтобы их запросом получать, а не через ТЗ.
А это особенно печально когда конфигурация типовая и на полной поддержке - хотелось бы ее такой и оставить.

С другой стороны: если кодом получить результирующую Тз, то это потеря производительности, т.к. все фильтр СКД будут накладывать после получения данных.
30 ilpar
 
10.01.13
21:05
(29) "С другой стороны: если кодом получить результирующую Тз, то это потеря производительности, т.к. все фильтр СКД будут накладывать после получения данных."

чего?
31 eklmn
 
гуру
10.01.13
21:07
(29) Да ну? Данные откуда в ТЗ?
32 ilpar
 
10.01.13
21:10
а, он другое имел ввиду )
33 ilpar
 
10.01.13
21:10
типа прочитал Эксель, отдал все в СКД, и типа отборы потом.

Непроизводительно ))
34 Snork
 
10.01.13
22:12
(33) у меня данные получаются не из Excel, а из БД 1С. Там десятки тысяч исходных строк, которые надо свернуть в pivot
35 DexterMorgan
 
11.01.13
09:22
<<<итого: получается, для СКД надо данные хранить где то в конфигурации, чтобы их запросом получать, а не через ТЗ.
А это особенно печально когда конфигурация типовая и на полной поддержке - хотелось бы ее такой и оставить.

С другой стороны: если кодом получить результирующую Тз, то это потеря производительности, т.к. все фильтр СКД будут накладывать после получения данных.

Решение твоей проблемы есть, это формировать результирующую ТЗ и передавать ее в скд. Передать параметром ТЗ нельзя. Что ты хочешь?
36 bootini
 
11.01.13
10:12
Я делал несколько макетов в СКД, туда передавал ТЗ их вертел как надо, результат получал тоже в виде ТЗ, а потом эти данные передавал в ОсновнуюСхемуКомпоновки им выводил в макет.
37 Snork
 
11.01.13
19:41
(35) Допустим в исходной тз 100000 строк данных. Пользователь наложил в СКД фильтр, который выводи всего 500 строк. Если делать как ты пишешь, то система отработает так: вначале получит всю тз со 100000 строк, потом потом передаем ее в скд и накладывает фильтр скд получаю 500 строк результата. Я же хочу сразу получать 500 строк результата, ибо важно производительность.
38 Snork
 
11.01.13
20:54
ап
39 ilpar
 
11.01.13
21:14
(37)

фигня, СКД по разному работает.

Отборы и параметры
40 ilpar
 
11.01.13
21:16
постановка все равно кривая, непонятно - консоль СКД в зубы и вперед.
Может поможет, раз более внятно постановки нет )))
41 ilpar
 
11.01.13
21:18
и курс Гилева по СКД еще раз пересмотреть ))

Мы с помощью СКД ведь можем, достать необходимые нам данные из 1С?
Или что-то мешает?
42 Snork
 
11.01.13
22:00
(41) мешает, вспомогательных исходных данных просто нет. по идее нужно добавить нов регистр, но конфа на полной поддержке, снимать из за 1 отчета не хочется.
43 eklmn
 
гуру
11.01.13
22:31
Чушь какая-то.
Получай свои 500 в СКД в чем проблема? Или автор до конца не говорит...

СКД прекрасно справляется с большими объемами, просто СКД знать надо..
44 y22-k
 
12.01.13
04:41
(37) я иногда извращался читал отбор в cкд и писал функцию которая переводила crl отбор в отбор запроса для внешних данных это как вариант
45 Snork
 
12.01.13
07:27
(44) это как вариант остается