|
1С менеджер временных таблиц и сом объект. | ☑ | ||
---|---|---|---|---|
0
ИУБиПовиц
19.10.15
✎
11:54
|
День добрый. Можно ли из менеджера ВТ который сом, получить обычный мвт, притом, что в таблице только примитивные типы. т.е. мне нужно получить что то типа этого:
V8 = Новый COMОбъект("V82.ComConnector"); ОТкрыта = V8.Connect("адреса пароли явки"); Запрос = Открыта.NewObject("Запрос"); менеджер = Открыта.NewObject("МенеджерВременныхТаблиц"); ЗАпрос.МенеджерВременныхТаблиц = менеджер; Запрос.Текст = "ВЫБРАТЬ | РаботникиОрганизацийСрезПоследних.Сотрудник КАК СотрудникФИО, | РаботникиОрганизацийСрезПоследних.Сотрудник.Наименование, | РаботникиОрганизацийСрезПоследних.Сотрудник.Код |ПОМЕСТИТЬ СотрудникЦ |ИЗ | РегистрСведений.РаботникиОрганизаций.СрезПоследних(, ) КАК РаботникиОрганизацийСрезПоследних"; Selected = Запрос.Execute().Выгрузить(); Запрос = Новый Запрос; ЗАпрос.МенеджерВременныхТаблиц = менеджер; Запрос.Текст = "ВЫБРАТЬ | СотрудникиЦ.КОД, | СотрудникиЦ.Наименование |ПОМЕСТИТЬ Ц |ИЗ | &СотрудникиЦ КАК СотрудникиЦ |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | РаботникиОрганизацийСрезПоследних.Сотрудник КАК СотрудникФИО, | РаботникиОрганизацийСрезПоследних.Сотрудник.Наименование, | РаботникиОрганизацийСрезПоследних.Сотрудник.Код |ИЗ | РегистрСведений.РаботникиОрганизаций.СрезПоследних(, ) КАК РаботникиОрганизацийСрезПоследних | ЛЕВОЕ СОЕДИНЕНИЕ Ц КАК Ц | ПО РаботникиОрганизацийСрезПоследних.Сотрудник.Код = Ц.КОД |ГДЕ | НЕ (ВЫРАЗИТЬ(РаботникиОрганизацийСрезПоследних.Сотрудник.Наименование КАК СТРОКА(150))) = (ВЫРАЗИТЬ(Ц.Наименование КАК СТРОКА(150)))"; Запрос.Выполнить().Выгрузить(); |
|||
1
hhhh
19.10.15
✎
12:06
|
просто сделайие через пакетный запрос. Нафига здесь менеджер?
|
|||
2
cons74
19.10.15
✎
12:17
|
МенеджерВременныхТаблиц сам по себе - не примитивный тип. Так что нет, не выйдет.
Тут "ЗАпрос.МенеджерВременныхТаблиц = менеджер;" ты пытаешься передать непримитивный тип по СОМу |
|||
3
ptiz
19.10.15
✎
12:18
|
(0) Что значит "получить"?
Использовать временные таблицы этого менеджера в текущей базе? |
|||
4
olegves
19.10.15
✎
12:19
|
(0) нельзя
|
|||
5
hhhh
19.10.15
✎
12:53
|
(3) не получится. Так
Запрос.МенеджерВременныхТаблиц = менеджер в Запрос.МенеджерВременныхТаблиц пытаешься Com-объект зафигачить. Оно это не поймет. |
|||
6
ИУБиПовиц
19.10.15
✎
13:01
|
(5) да я знаю, что не поймет, я ж и спрашиваю как ком вт преобразовать в обычную. вт:)
|
|||
7
ИУБиПовиц
19.10.15
✎
13:58
|
короче выгрузил сом запрос в тз, и скормил обычному запросу.
Запрос.Текст = "ВЫБРАТЬ | РаботникиОрганизацийСрезПоследних.Сотрудник КАК СотрудникФИО, | РаботникиОрганизацийСрезПоследних.Сотрудник.Наименование, | РаботникиОрганизацийСрезПоследних.Сотрудник.Код // |ПОМЕСТИТЬ СотрудникЦ |ИЗ | РегистрСведений.РаботникиОрганизаций.СрезПоследних(, ) КАК РаботникиОрганизацийСрезПоследних"; Selected = Запрос.Execute().Выгрузить(); Запрос = Новый Запрос; // ЗАпрос.МенеджерВременныхТаблиц = менеджер; тз = новый ТаблицаЗначений; тз.Колонки.Добавить("КОД",Новый ОписаниеТипов("Строка",Новый КвалификаторыСтроки(10))); тз.Колонки.Добавить("Наименование",Новый ОписаниеТипов("Строка",Новый КвалификаторыСтроки(100))); // тз.Колонки.Добавить("КОД"); // тз.Колонки.Добавить("Наименование"); для каждого стр из Selected цикл СтрН = тз.Добавить(); СтрН.КОД = СокрЛП(Стр.СотрудникКод); СтрН.Наименование = СокрЛП(Стр.СотрудникНаименование); //СтрН.КОД = "0123456789"; //СтрН.Наименование = "тест"; //прервать; КонецЦикла; Запрос.УстановитьПараметр("СотрудникиЦ", тз); Запрос.Текст = "ВЫБРАТЬ | СотрудникиЦ.Наименование КАК Наименование, | СотрудникиЦ.КОД КАК Код |ПОМЕСТИТЬ Ц |ИЗ | &СотрудникиЦ КАК СотрудникиЦ |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | РаботникиОрганизацийСрезПоследних.Сотрудник КАК СотрудникФИО, | РаботникиОрганизацийСрезПоследних.Сотрудник.Наименование, | РаботникиОрганизацийСрезПоследних.Сотрудник.Код, | Ц.Наименование, | Ц.Код |ИЗ | Ц КАК Ц | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций.СрезПоследних(, ) КАК РаботникиОрганизацийСрезПоследних | ПО (РаботникиОрганизацийСрезПоследних.Сотрудник.Код = Ц.Код) |ГДЕ | НЕ РаботникиОрганизацийСрезПоследних.Сотрудник.Наименование = Ц.Наименование"; тзНЕСовпод = Запрос.Выполнить().Выгрузить(); |
|||
8
cons74
19.10.15
✎
14:01
|
Пока я вспоминал ТС сам написал. Красава.
|
|||
9
nixel2007
19.10.15
✎
16:41
|
По идее может помочь использование одного и того же объекта Запрос без переопределения вторым Новый Запрос();
То есть Запрос = Открыта.NewObject("Запрос"); Запрос.МенеджерВременныхТаблиц = Открыта.NewObject("МенеджерВременныхТаблиц"); Запрос.Текст = "ТекстЗапроса1"; Запрос.Выполнить(); блаблабла Запрос.Текст = "ТекстЗапроса2"; |
|||
10
hhhh
19.10.15
✎
16:53
|
(9) не получится. Второй запрос у него не NewObject("Запрос");
|
|||
11
nixel2007
19.10.15
✎
16:59
|
(10) ааа, вот в чем соль... не углядел.
Тогда да, только через промежуточную ТЗ. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |