|
Получение дерева значений через OLE | ☑ | ||
---|---|---|---|---|
0
Mihailov Alexandr
08.10.14
✎
08:23
|
Доброго всем дня!
Прошу помощи в решении такой задачи: Необходимо чтобы База1 сходила в Базу2, спросила справочник номенклатуры и показала у себя на форме в виде дерева значений. За основу взял код: Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Номенклатура.Наименование, | Номенклатура.Код |ИЗ | Справочник.Номенклатура КАК Номенклатура | |УПОРЯДОЧИТЬ ПО | Номенклатура.Ссылка ИЕРАРХИЯ"; ДеревоЗначенийОбработка = Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией); ЭлементыФормы.ДеревоЗначенийОбработка.СоздатьКолонки(); Он нормально работает, я доработал его: База = Новый COMObject("V82.Application"); Результат = База.Connect("File=D:\1C\1CBases\Trade;Usr=Администратор;"); Запрос = База.NewObject("Запрос"); Запрос.Текст = "ВЫБРАТЬ | Номенклатура.Наименование, | Номенклатура.Код |ИЗ | Справочник.Номенклатура КАК Номенклатура | |УПОРЯДОЧИТЬ ПО | Номенклатура.Ссылка ИЕРАРХИЯ"; ДеревоЗначенийОбработка = Запрос.Выполнить().Выгрузить(База.ОбходРезультатаЗапроса.ПоГруппировкамСИерархией); ЭлементыФормы.ДеревоЗначенийОбработка.СоздатьКолонки(); Этот уже не работает, т.к. тут ДеревоЗначенийОбработка - это уже не дерево значений, а COMОбъект. Как мне его в дерево значений преобразовать? |
|||
1
Ненавижу 1С
гуру
08.10.14
✎
08:28
|
обойти это дерево, создав такое же у себя в процессе
|
|||
2
dk
08.10.14
✎
08:42
|
ЗначениеВСтрокуВнутр
ЗначениеИзСтрокиВнутр |
|||
3
Mihailov Alexandr
08.10.14
✎
08:42
|
(1) а есть примеры кода?
|
|||
4
Mihailov Alexandr
08.10.14
✎
08:44
|
(2) т.е. COMОбъект поместить в ЗначениеВСтрокуВнутр, а потом у себя восстановить ЗначениеИзСтрокиВнутр? А это идея, шас попробую.
|
|||
5
Banned
08.10.14
✎
08:45
|
(4) Это плохая идея, потому что не заработает.
|
|||
6
Banned
08.10.14
✎
08:45
|
Хотя, если у тебя только наименование и код - может, и взлетит
|
|||
7
dk
08.10.14
✎
08:56
|
(0) совет: отделяй в идентификаторах переменных объекты родной базы от объектов OLE базы иначе бардак в коде
|
|||
8
Mihailov Alexandr
08.10.14
✎
08:57
|
(2) Попробовал как Вы подсказали:
ДеревоЗначенийОбработка = ЗначениеИзСтрокиВнутр(ЗначениеВСтрокуВнутр(Запрос.Выполнить().Выгрузить(База.ОбходРезультатаЗапроса.ПоГруппировкамСИерархией))); ЭлементыФормы.ДеревоЗначенийОбработка.СоздатьКолонки(); Не помогло, дерево вернулось пустое. |
|||
9
Mihailov Alexandr
08.10.14
✎
08:58
|
(7) ОК, спасибо! С OLE впервые столкнулся.
|
|||
10
dk
08.10.14
✎
09:00
|
надо немного иначе
ДеревоЗначенийОбработка = ЗначениеИзСтрокиВнутр(База.ЗначениеВСтрокуВнутр(Запрос.Выполнить().Выгрузить(База.ОбходРезультатаЗапроса.ПоГруппировкамСИерархией))); |
|||
11
Mihailov Alexandr
08.10.14
✎
09:14
|
(10) Спасибо, заработало! Вот окончательная версия рабочего кода:
База = Новый COMObject("V82.Application"); Результат = База.Connect("File=D:\1C\1CBases\Тele2RarusTrade;Usr=Администратор;"); Запрос = База.NewObject("Запрос"); Запрос.Текст = "ВЫБРАТЬ | Номенклатура.Наименование, | Номенклатура.Код |ИЗ | Справочник.Номенклатура КАК Номенклатура | |УПОРЯДОЧИТЬ ПО | Номенклатура.Ссылка ИЕРАРХИЯ"; ДеревоЗначенийОбработка = ЗначениеИзСтрокиВнутр(База.ЗначениеВСтрокуВнутр(Запрос.Выполнить().Выгрузить(База.ОбходРезультатаЗапроса.ПоГруппировкамСИерархией))); ЭлементыФормы.ДеревоЗначенийОбработка.СоздатьКолонки(); |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |