Передача параметров в запрос к базе, подключенной через OLE #403710


#0 by kolobroder
Имеем: 1. Текущюю базу Бух 7.7 2. Другую базу Бух 7.7, открытую из п. 1. через OLE. Надо: В 1. выполнить запрос по данным 2.. Условие: в запрос надо передать рядо параметров. Как я делаю: ... последняя строка выдает ошибку: Запрос[21] : Ошибка в выражении 'олеБазаОАО' КАК правильно передать параметр олеБазаОАО в OLE запрос?
#1 by Cthulhu
1) по значению реквизита примитивного типа; 2) по внутреннему представлению
#2 by ZDenis
В контексте данного запроса не проще ИБ.ВыбратьДокументы(...), Пока ПолучитьДокумент? И не совсем ясно оле база у тебя олеИБ или ИБ?
#3 by GreyK
Перечисление в олешной базе ищи по примитиву, то-есть по идинтификатору или порядковому номеру.
#4 by Cthulhu
|Условие(База = ЗначениеИзСтрокиВнутр("+олеБазаОАО+")); -- как-то так... не получится - эксперементируй...
#5 by kolobroder
конечно там. не ИБ, а олеИБ. я текст не копировал, а примерно набрал. На самом деле текст запроса значительно более сложный и просто Док.ВыбратьДокументы - не получится. Я просто привел гипотетический пример.
#6 by EuVod
передать в оле-базу можно только примитивные типы данных (чтрока, число, дата) (Кстати а что со ссылочными, типа СЗ, ТЗ - видимо тоже низзя). Поэтому ежели у тебя объекты синхронизованы например по коду, то необходимо передать этот код, а в базе ОЛЕ преобразовать его уже в объект через НайтиПокоду.
#7 by EuVod
или как в тока лучше сначала ЗначениеИзСтрокиВнутр, а имя переменной куда занесем результат уже в запрос. Но если базы слишком разные, то это может неправильно по смыслу срабатывать... то бишь нужный тебе элемент в ОЛЕ базе может иметь другое внутренне представление чем в исходной базе.
#8 by kolobroder
Мне надо также передавать в OLE запрос СписокЗначений с номенклатурой (ном-ру ищу по кодам в OLE базе)
#9 by EuVod
про спиок - не знаю, думаю что не передасться даже список простых типов - преобразую в строку с разделителями, разбирай строку на коду, выковыривай по коду объекты.
#10 by Cthulhu
: в ОЛЕ-базу можно передавать и объекты ОЛЕ-базы (полученные "на этой стороне" с использованием (через точку) контекста ОЛЕ-базы) а также предавать и использовать объекты глобального контекста ОЛЕ-базы, так что глупость говоришь... В использовании запроса всё ухудшается из-за того, что сам текст запроса компилируется в контексте ОЛЕ-базы, поэтому в нем могут быть использованы только доступные объекты глобального контекста ОЛЕ-базы.
#11 by Cthulhu
+: про запрос пояснение наверно нужно: использование в тексте запроса любых переменных "местного" контектста недопустимо, потому что текст запроса передается в ОЛЕ-базу as is, и уже в ОЛЕ-базе компилируется - а в том контексте переменные, имена(!) которых используются в запросе и де-факто описаны в этой базе, просто не понимаются (даже если "тут" в этих переменных содержатся объекты ОЛЕ-базы)..
#12 by Cthulhu
: "передавать в запросе список значений" -- это использовать в тексте запроса имя(!) переменной "тутошнего" контектста, содержащей СЗ?.. тогда нельзя, см.выше.. потому что ты НЕ "список значений" передвешь, а ТЕКСТ запроса, содержащий имя переменной... которая должна быть доступна (по имени!) в глобальном контексте ОЛЕ-базы.. Для того, чтобы означенным образом передавать СЗ в тексте запроса - есть "обходной маневр".. использовать в тесте запроса имя глобальной переменной ОЛЕ-базы, в которую поместить предварительно СЗ с объектами ОЛЕ-базы...
#13 by КонецЦикла
Все есть в факах, не надо рекомендовать :)
#14 by Cthulhu
: а ты меня забань... или не лезь с указаниями...
#15 by КонецЦикла
Чего нервный такой, а? Автор просто нажал в БЗню
#16 by kolobroder
дайте ссылку на фак плиз!
#17 by kolobroder
(10, 11, 12) дайте же пример передачи СЗ в OLE запрос.
#18 by Ёпрст
В запросе через олю будет работать только массив... элементами которго может быть СЗ.. А сам СЗ - обломись.
#19 by Cthulhu
: не будет.
#20 by Cthulhu
: тебе всю необходимую для решения задачи информацию предоставили.. наморщить за тебя ум и сделать твою работу?..
#21 by Ёпрст
не будет что ? Скунки тут давеча пытался меня переубедить, что в оле-запросе можно запихать СЗ .. но примеров так и не привёл. А с массивом всё работает. Причем пофиг, что СЗ будет глобальным СЗ оле-базы - один фиг не работает.
#22 by Cthulhu
: не будет работать массив в запросе - если только для хранения этого массива не используется переменная глобального контекста ОЛЕ-базы (каковая переменная и фигурирует в тексте запроса)... так таким образом и СХ работает.. запихать в запрос СЗ - можно, в виде внутреннего представления, но небольшие СЗ (а то длина текста запроса "зашкалит"). "Причем пофиг, что СЗ будет глобальным СЗ оле-базы - один фиг не работает." -- при желании и таким образом может не работать, согласен.. при желании ))))
#23 by Ёпрст
В том то и дело, что глобальный оле-массив будет работать, а вот СЗ - нет.
#24 by kolobroder
пример приведите плиз. с глобальным массивом
#25 by Cthulhu
: у мееня - работает СЗ.. что я делаю не так?..
#26 by Ёпрст
не вопрос... напиши аналог вот этого, чтоб работал: В оле базе
#27 by Ёпрст
+ 26 там в тексте запроса нужно тока |Спр = Справочник.Контрагенты.ТекущийЭлемент;
#28 by kolobroder
Пишет: Сервер занят. Действие не может быть завершено так как другая программа занята. Для перехода к этой программе воспользуйтесь кнопкой "Переключиться". Жму "Переключиться" .. и опять это сообщение Шо за напасть?
#29 by Ёпрст
таймаут 2 минуты.. переписывай запрос или жди...
#30 by Ёпрст
+29 есть даже шняга, которая "сама" на кнопки нажимает.. толи на проклабе, толи на инфостарте валяется..
#31 by kolobroder
вроде получилось. всем спасибо. использовал глобальный массив
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

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