Запрос по ОЛЕ - условия #114378


#0 by Diter
Добровго всем времени суток. Коллеги, такой вопрос. Возникла необходимость обращаться к другим базам по ОЛЕ и через запрос получать данные (продажи товаров). Расковыряв всё, что нашёл у себя по этому вопросу уяснил, что основные проблемы возникают с передачей значений реквизитов (условий) при формировании запросов. И если с датами (периодом запроса) всё просто, то вот на условии типа "|Условие (Товар в СписокТоваров); я споткнулся. Дело в том, что в найденом примере меняется глобальник базы ОЛЕ. Мне это нежелательно т.к. баз много и не все обслуживаю я. Кроме того, часть баз вообще находится в другом месте - они периодически передаются на компактах в центральный офис. Сломать систему такого "обмена" пока не удаётся. Теперь вопросы : 1. Как можно извернуться и передать этот самый список. 2. База по ОЛЕ открывается в монопольном режиме. Если вдруг обработка выбивает ошибку - процесс зависает. Приходится или снимать в ручную или перегружать тачку. Как "отпустить" базу ОЛЕ если произошла ошибка при выполнении обработки чтения данных из этой базы. Спасибо за внимание
#1 by Груздь
Найди "лишнюю" гл. переменную и используй ее ...
#2 by Diter
ты имеешь в виду в базе ОЛЕ?
#3 by Фокусник
по ОЛЕ можно передать только текст, число и дату :) соотв. СписокТоваров можно только сформировать в самой прицепленной ОЛЕ...
#4 by Diter
А вот такая фишка - в базе ОЛЕ может и не быть того товара, который есть в "центральной". Как тут быть? Т.е. например - группа есть, но её состав "не полный"...
#5 by Груздь
Разумеется ... Наверняка в глобальнике полно дряни, на данный момент ненужной ... Да и на крайняк можно потом переприсвоить ей первоначальное значение ...
#6 by Diter
Во во а как? В текущей базе я его формирую запросом, исходя из установленных условий (списрок групп и элементов в множественном подборе). А в ОЛЕ как?
#7 by Diter
А без этого никак? Глобальники поменяют другие программеры и обработка пойдёт в сад.
#8 by Славко
список нада составлять в ОЛЕ-базе, если это возможно конечно
#9 by Diter
КАК?
#10 by Rovan
В ОЛЕ придется писать функцию в глоб модуле, которая будет восстанавливать там (у себя) этот спискок по переданным в нее ИД объектов
#11 by Diter
Это я знаю (см 0). Меня интересует как обойти этот процесс
#12 by Rovan
(+10) Либо прямо в запросе "Условие( ЗначениеВСтроку = ...
#13 by Diter
Опа, а это интересно..... а по развёрнутее написать не можешь?
#14 by Блудный
Была подобная тема на кубани поищи в архивах.
#15 by Славко
тебе ж уже рассказали как...
#16 by Diter
Можно ли получив список запросом к справочнику базы ОЛЕ в текущей базе передать его в качестве условия к запросу в оле базу? Т.е. если я получу список товаров запросом к базе ОЛЕ будет ли он доступен в запросе к регистрам этой базы?
#17 by Diter
То ли поиск фиговый, то ли у меня что то с руками - не нашёл ничего
#18 by Груздь
О ..., обычный дитеровкий бред пошёл ...
#19 by Diter
Ну и ладно. Я действительно первый раз работаю с ОЛЕ - мне простительно.... Ну не хочется ковырять глобальники других баз. Ну никак..... ОК. Проблему № 2 кто нибудь поможет решить?
#20 by Rovan
Ты мне не виришь ?
#21 by Груздь
Нужно написать обработку без ошибок. А в процессе отладки, это обычное дело ... Отладчиком, когда к данным оле базы обращаешься, вообще лучше не пользоваться ..., почти 100% зависон базы обеспечен ...
#22 by Diter
А как быть с прерываением работы обработки по ESC? Если это сделать до момента запроса или во время его формирования - 100% будет ошибка
#23 by Rovan
(+21) Я отладку вел обычно через присвоение в переменные
#24 by ШтушаКутуша
если не хочется менять глобальник,а нужно то поработай компонентой ActiveMD-добавь нужную переменную и перед выполнением проверь не грохнули ее твои коллеги,а насчет зависания,то поройся на там было што то наподобии и обрати внимание на переменные в которых ипользуются объекты OLE DB, все аккуратно должно быть зачищено,ну а про Попытку КонецПопытки, ты и сам знаешь
#25 by ШтушаКутуша
+24 а если прямой доступ организовать? красиво получилось бы
#26 by Diter
Что ты имеешь в виду? напрямую с файлами работать?
#27 by ШтушаКутуша
ну да,через SQL!
#28 by ШтушаКутуша
можно rainBow прикрутить или 1С++
#29 by Valery
Если список содержит только строковые значения, то можно в одной базе сделать ЗначениеВФайл, а в другой ЗначениеИзФайля.
#30 by ШтушаКутуша
Кстати!
#31 by Diter
Список содержит элементы справочника. База и 1С-ка не SQL мне проще тогда тупо выгружать данные из одной базы в файл а в другую их втягивать
#32 by ШтушаКутуша
работать можно и через ADO c ДБФ
#33 by Diter
привет всем. Значится так - решил всётаки править глобальники баз. Список заполняю, а условие не срабатывает - ругается на ошибку. Вот текст запроса
#34 by Valery
Значения списка строковые?
#35 by Diter
элементы справочника. Список формируется в базе ОЛЕ и там же храниться в глобальной переменной
#36 by Rovan
Как создан и как заполняется СписокДляОле ?
#37 by Valery
Элементы справочника из другой базы не передашь. Можно только значения типа строка, дата, число.
#38 by Груздь
Пока тупил забыл в какой базе хотел выполнить запрос?
#39 by Diter
это я знаю. Я их не передаю. Список формируется в базе ОЛЕ до того, как идёт запрос. В примере было описано именно так как я сделал.
#40 by Diter
Не понял. ты о чём? Я делаю запрос к базе по ОЛЕ
#41 by Груздь
Он обязательно должен чем то отличаться от запроса к текущей базе ..., чтобы 1с-ина могдла узнать к какой базе ты его задумал делать ...
#42 by Diter
Я его создаю в разных местах (по условию). Или ты хочешь сказать, что объекты по разному называться должны? Тогда почему локальный запрос выполняется на ура? и ошибку кидает именно на условии. Причём ошибка явно "олевская". Типа ".... 1С Предприятие Ошибка .....". Локальные без этошл слова "1С Предприятие" вылетают
#43 by HIDDEN MESSAGE
#44 by HIDDEN MESSAGE
#45 by HIDDEN MESSAGE
#46 by Rovan
Давай через асю обчихаем твою проблему
#47 by Valery
Передай из ОЛЕБазы наименования элементов справочника. Затем найди по наименованию элементы справочника в локальной базе и сформируй из них список. Потом этот список можно вставить в запрос.
#48 by Не люблю
не трудись, он всё равно не догонит как...
#49 by Diter
Какого? Он и так у меня в локальной базе есть. Я наоборот трахался, чтобы его в базу по ОЛЕ передать
#50 by Не люблю
видишь, в 49 то самое о чём я говорил в 48 ;-)... Дитер, не переживай сильно, это не всем дано... ПТУ закончил? Я ВМК, к примеру...
#51 by Diter
И всётаки по делу кто нибудь чего нибудь путнее скажет?
#52 by Не люблю
Из этой функции можно понять, как надо делать... ...            Если Выбран1=0 Тогда Выбран1=Нет;Иначе Выбран1=Да;КонецЕсли;            Если Выбран1=0 Тогда Выбран1=Нет;Иначе Выбран1=Да;КонецЕсли;
#53 by Diter
нфига не понятно. Вот какую ошибку пишет 1С ЗапросПоОле.Выполнить(ТекстЗапроса); {F:БАЗЫ КЛИЕНТОВДОМОВОЙМОЛОДЁЖНЫЙЛОГИСТИКА 2EXTFORMSПРОГНОЗИРОВАНИЕ 2.ERT}: 1С:Предприятие: Условие (Товар в СписокДляОле <<?>> ); Запрос[6] : Ошибка в выражении 'СписокДляОле'
#54 by Rovan
;
#55 by Diter
Какие конкретные выражения можно использовать в запросе по ОЛЕ если мне нужно отобрать по списку?
#56 by Rovan
Я тебе писал об этом в самом начале ветки
#57 by Diter
список в ОЛЕ восстанавливается.
#58 by Rovan
Как сделаешь что-то работающее - сообщи сюда
#59 by Diter
обов`язково
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям