Вход | Регистрация


1С:Предприятие ::

Метки: 

СКД: передача ВТ или Тз в СКД

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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



Список тем форума
Рекламное место пустует Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует