1С 7.7 Запрос по Ole ! #458316


#0 by 1СМол
Помогите кто может!!! Нужно выполнить такой запрос в базе открываемой по Ole из другой базы Как мне в СписокЗначенийЗапроса[1] занести контрагентов кот-е выбираются в форме "местной" базы, при этом могут быть и группы контрагентов выбраны. Сам запутался, может кто делал такое?
#1 by VoditelKobyly
Пробуй так (может получится): 1. Накидай в местной базе список кодов Контрагентов 2. По этому списку кодов, сделай поиск в базе по которой делаешь запрос и накидай там нужный список элементов. 3. Делай запрос по полученному списку. Лично я бы написал прямой запрос к соседней базе без подключения по OLE.
#2 by VoditelKobyly
+ Или вообще ставь условие не по списку контрагентов, а по списку кодов контрагентов.
#3 by 1СМол
Последнее это как? (Я неочень хорошо знаю 1С)
#4 by VoditelKobyly
Типа: КодКонтрагента      = Регистр.Остатки.Контрагент.Код; ... Условие (КодКонтрагента      в СписокЗначенийКодовКонтрагентов);
#5 by VoditelKobyly
, А другая база 1С или это что-то другое?
#6 by 1СМол
СписокЗначенийКодовКонтрагентов - Как полулучить? Я немогу сообразить как программно это сделать... База другая тоже 1С ("Отрезаны" 2008 и 2009 года)
#7 by VoditelKobyly
Вот это кто писал? "... Как мне в СписокЗначенийЗапроса[1] занести контрагентов кот-е выбираются в форме "местной" базы, при этом могут быть и группы контрагентов выбраны. ..." Или коды в двух базах не совпадают?
#8 by 1СМол
Коды совпадают... Я немогу набранный список в форме местной базы передать в Оле базу, чтобы запрос делался в Оле базе только по этому списку
#9 by VoditelKobyly
А так пробовал: ...
#10 by 1СМол
Кажется стал понимать, спасибо
#11 by Ёпрст
в Оле для условий можно пихать только глобальный массив. элементами которго будет твой список значений. Не будет это работать ..
#12 by VoditelKobyly
А как запрос запускаешшь?
#13 by 1СМол
Непонял.. Как надо?
#14 by VoditelKobyly
Покажи как запрос по OLE запускаешь.
#15 by Ёпрст
Еще раз - не работает условие на список значений в оле запросе.. В условие можно только глобальный массив использовать, где элементом массива будет список значений.
#16 by VoditelKobyly
Не буду спорить с Ёпрстом, он умный, а я давно по Оле ничего не делал. Время тратить не охота.
#17 by 1СМол
я же в написал Запрос = БазаОле.CreateObject("Запрос");
#18 by 1СМол
да у меня это масив, а первый элемент его список который я как раз немогу передать в Оле
#19 by VoditelKobyly
, А если оформить запрос в качестве глобальной функции? А потом вызывать через EvalExpression
#20 by Ёпрст
В оле базе
#21 by Ёпрст
+20 это для примера..
#22 by 1СМол
спасибо буду разбираться
#23 by Ёпрст
да можно что угодно делать :) Один хрен придёшь рано или поздно к тому - что оле гамно и долго.. Лучше прямиком из табличек тащить.. запросиком.
#24 by 1СМол
Где почитать про "Лучше прямиком из табличек тащить.. запросиком." Или это - выгрузить из одной базы в Табл. потом загрузить в другую...?
#25 by VoditelKobyly
Так я к этому давно и пришел. Смотри
#26 by Ёпрст
Ну.. с прямыми запросами работал ? Можно тут почитать, для начала:
#27 by VoditelKobyly
Если время на изучение нет, то лучше делай пока так, как наметил.
#28 by 1СМол
еще раз спасибо
#29 by 1СМол
Вот написал так: В ОлеБазе в Глобальном: Получаю ошибку : Пока СпрК.ПолучитьЭлемент = 1 Цикл {D:ВОЛЕСРАВНИТЕЛЬНАЯ РЕАЛИЗАЦИЯОЛЕ.ERT}: 1С:Предприятие: Не выбран элемент! В чем проблема?
#30 by Ёпрст
а вот это нафига вообще ? + что за нелепое условие ? + ВыбКонтрагенты - Это что ? ЗЫ: в моём примере - просто показ того, как условие сделать - тупо перебор всего справочника, запихивание его в Список и использование в тексте запроса - который выводит этот же список.. Какая цель у вас - хз.
#31 by Ёпрст
+30 а ошибка у вас  - нет ВыбратьЭлементы..
#32 by Ёпрст
+31 хотя, читай .
#33 by 1СМол
Моя цель - я набираю контрагентов в местной базе в ВыбКонтрагены Мне надо сравнить по ним реализацию с оле-базой... Поэтому и запрос должен только по этим контрагентам сделать в олебазе. Про ВыбратьЭлементы да ошибся просто голова уже нета с этим отчетом... Но суть почему у меня нет в СпрК ничего - по вашему примеру написал.?
#34 by aka AMIGO
+ Вот это условие: не выполнится никогда, потому, что СпрК.ТекущийЭлемент= OLE.. и это всё! надо-бы хоть коды сравнивать, если очень нужен этот участок
#35 by DrZombi
Ты хоть в курсе, что "Контрагент" в базе "А" !!НЕ равен!! "Контрагенту" в базе "ОЛЕ"! ;) .... прими это как аксиому!
#36 by 1СМол
КАК быть
#37 by 1СМол
Как прировнять чтоб потом сравнить?
#38 by aka AMIGO
+34 можно просто посмотреть в отладчике, что там видно по оле..
#39 by Ёпрст
да ужж.. Контрагент в Оле базе <> контрагенту в этой базе... ЗЫ: И смотри пример внимательнее - в список подбираются контрагенты !той базы! (оле) , а не откуда вызов обработки.
#40 by 1СМол
Но как мне набрать то в список только нужных контрагентов ??? Только определенный список из оле-базы но сформированный в местной базе ???
#41 by aka AMIGO
по оле передаются: число, дата, строка ограниченной длины. в список выбери коды контрагентов, а не контрагентов
#42 by Ёпрст
Вот ты своих клиентосов по каком принципу идентифицируешь ? По реквизиту, по коду, по инн, еще как.. вот и из этого и исходи, ежели по коду - ищи "там"(в оле базе ) по коду и пихай в список для условия в запросе (создавай там справочник клиентосов и ищи по коду, который в этой базе)
#43 by 1СМол
ребят а может при вызове оле-базы показывать форму для выбора клиентов и в запросе уже этот список использовать???
#44 by 1СМол
так наверное нельзя...
#45 by Ёпрст
можно.. Открыть модальную форму и поиметь клиентосов с неё..
#46 by Ёпрст
А так, ежели клиентосы синхронизированы по какому-либо признаку, показываешь на форме список этой базы, а при запросе - ищешь в той базе по этому признаку.
#47 by 1СМол
Буду плавать, спасибо
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С