|
Как выбрать COMОбъект из ТЗ в запросе? | ☑ | ||
---|---|---|---|---|
0
s-n-a-y
03.03.15
✎
08:13
|
Пишу такой код:
тз = новый ТаблицаЗначений; Описание = Новый ОписаниеТипов("COMОбъект"); тз.Колонки.Добавить("Данные", Описание); Запрос.Текст = "ВЫБРАТЬ | Таблица.Данные |ПОМЕСТИТЬ Таблица |ИЗ | &Таблица КАК Таблица |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | Таблица.Данные |ИЗ | Таблица КАК Таблица |; | |//////////////////////////////////////////////////////////////////////////////// |УНИЧТОЖИТЬ Таблица"; Запрос.УстановитьПараметр("Таблица", тз); ТабличнаяЧасть = Запрос.Выполнить().Выгрузить(); пишет: "Тип не может быть выбран в запросе" А как надо? |
|||
1
s-n-a-y
03.03.15
✎
08:15
|
пишет: "Тип не может быть выбран в запросе"
А как надо? |
|||
2
Wobland
03.03.15
✎
08:16
|
а чего ты с ним в запросе собрался делать?
|
|||
3
ShoGUN
03.03.15
✎
08:17
|
(0) Что это за чудеса? О_О
Может тебе внешние источники данных нужны? |
|||
4
s-n-a-y
03.03.15
✎
08:18
|
(2) я для наглядности привел упрощенный код. А вообще в тз есть еще колонки, и по одной из них мне нужно сгруппировать.
|
|||
5
Wobland
03.03.15
✎
08:19
|
(4) ну сгруппируешь. дальше?
|
|||
6
ShoGUN
03.03.15
✎
08:22
|
(5) Он видимо какие-то данные из COM-объекта хочет достать. Вопрос - почему не через (3) или не через таблицу значений на худой конец...
|
|||
7
s-n-a-y
03.03.15
✎
08:22
|
(5) дальше буду выгружать и использовать COMОбъект как ссылку на объект из другой базы (справочник Контрагенты из Бухгалтерии).
|
|||
8
zulu_mix
03.03.15
✎
08:23
|
Собирай данные из сом в локальную таблицу циклом. Локальную суй в запрос
|
|||
9
s-n-a-y
03.03.15
✎
08:23
|
вот полный код:
тз = новый ТаблицаЗначений; КвалификаторыДаты = Новый КвалификаторыДаты(ЧастиДаты.ДатаВремя); ОписаниеДаты = Новый ОписаниеТипов("Дата", , ,КвалификаторыДаты); тз.Колонки.Добавить("Дата", ОписаниеДаты); КвалификаторыСтроки = Новый КвалификаторыСтроки(255); ОписаниеСтроки = Новый ОписаниеТипов("Строка", ,КвалификаторыСтроки); тз.Колонки.Добавить("ПредставлениеДанных", ОписаниеСтроки); Описание = Новый ОписаниеТипов("COMОбъект"); тз.Колонки.Добавить("Данные", Описание); Для Каждого стр из ВыгруженныйЖурнал цикл эл = тз.Добавить(); эл.Дата = стр.Дата; эл.ПредставлениеДанных = стр.ПредставлениеДанных; эл.Данные = стр.Данные; КонецЦикла; Запрос = Новый Запрос; Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц; Запрос.Текст = "ВЫБРАТЬ | Таблица.Дата, | Таблица.ПредставлениеДанных, | Таблица.Данные |ПОМЕСТИТЬ Таблица |ИЗ | &Таблица КАК Таблица |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | МАКСИМУМ(Таблица.Дата) КАК Дата, | Таблица.ПредставлениеДанных, | Таблица.Данные |ИЗ | Таблица КАК Таблица | |СГРУППИРОВАТЬ ПО | Таблица.ПредставлениеДанных |; | |//////////////////////////////////////////////////////////////////////////////// |УНИЧТОЖИТЬ Таблица"; Запрос.УстановитьПараметр("Таблица", тз); ТабличнаяЧасть = Запрос.Выполнить().Выгрузить(); |
|||
10
ShoGUN
03.03.15
✎
08:24
|
(7) Фиг тебе. Добавлю к этому, что вы извращенец, батенька.
|
|||
11
s-n-a-y
03.03.15
✎
08:25
|
(8) так и делаю, вроде, см (9)
|
|||
12
ShoGUN
03.03.15
✎
08:26
|
(11) Из COM-объекта можно достать только примитивные типы, ссылка тебе нафиг не нужна. Если нужен идентификатор - передавай его как строку.
|
|||
13
Wobland
03.03.15
✎
08:28
|
я чего-то не понял. автор хочет использовать поле в запросе для того, чтобы вытягивать данные из соседней базы? вот так вот Результат.КОМ.Контрагент?
|
|||
14
s-n-a-y
03.03.15
✎
08:29
|
(12) К счастью, Мне нужны только строки и числа. Они успешно извлекаются из COMОбъекта.
|
|||
15
ShoGUN
03.03.15
✎
08:30
|
(14) Почему бы их не извлечь ДО запроса? Не думал об этом?
|
|||
16
ShoGUN
03.03.15
✎
08:30
|
Если очень хочется запросом - можно запрос во внешней базе сделать.
|
|||
17
ShoGUN
03.03.15
✎
08:31
|
(13) У автора просто руки вперёд головы работают.
|
|||
18
Wobland
03.03.15
✎
08:32
|
(17) но каков полёт мысли!
|
|||
19
s-n-a-y
03.03.15
✎
08:35
|
(13) примерно так:
пусть ОбъектКонтрагентыБух - ComОбъект Наименование = ОбъектКонтрагентыБух.Наименование; ПолноеНаименование = ОбъектКонтрагентыБух.НаименованиеПолное; ИНН = ОбъектКонтрагентыБух.ИНН; КПП = ОбъектКонтрагентыБух.КПП; КодПоОКПО = ОбъектКонтрагентыБух.КодПоОКПО; ЮрФизЛицо = ОбъектКонтрагентыБух.ЮрФизЛицо; Комментарий = ОбъектКонтрагентыБух.Комментарий; Элемент = Справочники.Корреспонденты.СоздатьЭлемент(); Элемент.Наименование = Наименование; Элемент.ПолноеНаименование = ПолноеНаименование; Элемент.ИНН = ИНН; Элемент.КПП = КПП; Элемент.КодПоОКПО = КодПоОКПО; Если ЮрФизЛицо = "ЮрЛицо" Тогда Элемент.ЮрФизЛицо = Перечисления.ЮрФизЛицо.ЮрЛицо; ИначеЕсли ЮрФизЛицо = "ФизЛицо" Тогда Элемент.ЮрФизЛицо = Перечисления.ЮрФизЛицо.ФизЛицо; КонецЕсли; Элемент.Комментарий = Комментарий; Элемент.Записать(); |
|||
20
Wobland
03.03.15
✎
08:37
|
пусть ОбъектКонтрагентыБух - это не КОМ-подключение, а некий объект, выдающий реквизиты какого-то элемента?
|
|||
21
s-n-a-y
03.03.15
✎
08:38
|
(16) не додумался(
|
|||
22
ShoGUN
03.03.15
✎
08:39
|
(19) Достань это всё запросом во внешней базе, передай через COMSafeArray или через ЗаполнитьЗначенияСвойств, и не мучай *опу.
|
|||
23
s-n-a-y
03.03.15
✎
08:39
|
(20) ну да это объект из внешней базы, просто в отладчике это ComОбъект
|
|||
24
s-n-a-y
03.03.15
✎
08:41
|
(22) буду пробовать
|
|||
25
s-n-a-y
03.03.15
✎
09:03
|
(22) если можно, скажите заодно, как мне это определить в другой базе?
КвалификаторыСтроки = Новый КвалификаторыСтроки(255); ОписаниеСтроки = Новый ОписаниеТипов("Строка", ,КвалификаторыСтроки); В СП написано, что NewObject() принимает только один параметр т.е. я пишу V8_Бух.NewObject("ОписаниеТипов"), а как мне передать параметр в конструктор? |
|||
26
ShoGUN
03.03.15
✎
09:07
|
(25) Хреновая документация у 1С :( Через запятую, после первого параметра.
NewObject("КвалификаторыСтроки", 255), и т.д. |
|||
27
s-n-a-y
03.03.15
✎
09:08
|
(26) ок
|
|||
28
Wobland
03.03.15
✎
09:09
|
двоечник
Примечание: Последующие параметры метода те же, что у конструктора объекта, имя которого указано в качестве значения первого параметра. |
|||
29
ShoGUN
03.03.15
✎
09:11
|
(28) Это не он виноват, это документация подкачала.
|
|||
30
Wobland
03.03.15
✎
09:18
|
(29) что, не сказали про другие параметры?
|
|||
31
ShoGUN
03.03.15
✎
09:20
|
(30) В сигнатуре не указали, что они вообще есть.
|
|||
32
Wobland
03.03.15
✎
09:20
|
(31) ну да, недочёт
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |