![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
![]() Народ, может кто подскажет...
Создается com-соединение Код:
function TThreadExchange.CreateComConnection(SingleSetting: Settings):Variant; var ConnectionObj: Variant; ConnectionString: String; begin CoInitialize(nil); ConnectionObj:=CreateOleObject('v81.ComConnector'); ConnectionString:='file='+ SingleSetting.DBPath+';'+' usr='+SingleSetting.DBUserName+';'+' pwd='+SingleSetting.DBUserPassword; Result:=ConnectionObj.Connect(ConnectionString); CoUninitialize; end; Все хорошо, все замечательно работает. Вот только одна проблемка...в определенный момент соединение мне нужно разорвать и обновить информационную базу, а сделать это не получается. Может кто сталкивался, как это сделать? Причем, если создать соединение и попробывать его закрыть - то все работает Код:
// Создали Connection := CreateComConnection(SingleSetting); // Закрыли Connection := ''; А если обратится к базе, например вот так... Код:
SetExchange := Connection.Справочники.НастройкиОбмена.НайтиПоКоду(SingleSetting.ExchangeCode); ... и уже потом "обнулить" соединение, Код:
Connection := ''; то перестает работать Последний раз редактировалось Alxd, 03.06.2009 в 17:06. |
#2
|
|||
|
|||
![]() |
#3
|
||||
|
||||
![]() Спасибо большое, много интересного! Вот только проблему решить не помогло
![]() |
#4
|
|||
|
|||
![]() Да вообще-то, я тоже экспериментировал как с 1Cv7, так и с 1Cv8 (правда, 8.0). Таких проблем вроде бы не возникало.
Вернее, когда соединение открывается с использованием COM-соединение - то проблем не было (чтобы закрыть). Пробемы закрытия были, если тип соединения OLE Automation Client/Server. Но закрытие с использованием метода глобального контекста ЗавершитьРаботуСистемы() вроде бы срабатывало. Может проблемы в релизе Вашей 1С (сырая она еще - 8-ка, особенно в контексте OLE). Кстати, это : Connection := ''; не совсем корректно. Лучше так : Connection := UnAssigned; |
#5
|
||||
|
||||
![]() Неее ЗавершитьРаботуСистемы() не работает во внешнем соединении.
Я и сам уже писал подобное и тоже проблем не было. А сейчас все это делается в отдельном потоке и соединение не закрывается почему-то :-( |
#6
|
|||
|
|||
![]() >Неее ЗавершитьРаботуСистемы() не работает во внешнем соединении.
--- Напрямую нет. Это один из многих глюков 8-ки. Но если создать общий модуль : ![]() И там разместить такую функцию : ![]() То такой вызов : ole1C.Execute_OLE('ЗавершитьРаботуСистемы(Ложь)'); работает (во всяком случае, на 8.0 того релиза, что у меня). |
#7
|
||||
|
||||
![]() Да это все понятно, просто делается под типовые конфигурации :-)
|
#8
|
|||
|
|||
![]() Тогда Вам, скорее всего, надо на Кубанский форум "Территория 1С".
http://forums.kuban.ru/forum/viewforum_new.php?f=18 |
#9
|
||||
|
||||
![]() Проблему решил, правда пришлось весь код перекроить и разнести все по разным процедурам.
Но все равно спасибо за желание помочь! |
#10
|
|||
|
|||
![]() Народ, кто знает, как в 1С 8.1 сделать выгрузку из УТ справочник номенклатура и загрузку в БП ,но не в сам справочник номенклатура, а в лежащую в нем папку..... помогите, плиз...
Последний раз редактировалось Olechka, 27.07.2009 в 21:54. |