Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 03.06.2009, 16:36
Аватар для Alxd
Alxd Alxd вне форума
Прохожий
 
Регистрация: 19.05.2009
Сообщения: 23
Репутация: 10
По умолчанию Проблема с 1С Предприятие 8.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  
Старый 03.06.2009, 18:45
roamer roamer вне форума
Активный
 
Регистрация: 15.04.2009
Сообщения: 369
Репутация: 93
По умолчанию

см. здесь (по этой теме) :

http://doc-prg.narod.ru/index_1cv8.htm

может быть есть ответ.
Ответить с цитированием
  #3  
Старый 03.06.2009, 20:43
Аватар для Alxd
Alxd Alxd вне форума
Прохожий
 
Регистрация: 19.05.2009
Сообщения: 23
Репутация: 10
По умолчанию

Спасибо большое, много интересного! Вот только проблему решить не помогло
Ответить с цитированием
  #4  
Старый 03.06.2009, 22:32
roamer roamer вне форума
Активный
 
Регистрация: 15.04.2009
Сообщения: 369
Репутация: 93
По умолчанию

Да вообще-то, я тоже экспериментировал как с 1Cv7, так и с 1Cv8 (правда, 8.0). Таких проблем вроде бы не возникало.
Вернее, когда соединение открывается с использованием
COM-соединение - то проблем не было (чтобы закрыть).
Пробемы закрытия были, если тип соединения OLE Automation Client/Server.
Но закрытие с использованием метода глобального контекста ЗавершитьРаботуСистемы() вроде бы срабатывало.

Может проблемы в релизе Вашей 1С (сырая она еще - 8-ка, особенно в контексте OLE).

Кстати, это :
Connection := '';
не совсем корректно.

Лучше так :
Connection := UnAssigned;
Ответить с цитированием
  #5  
Старый 04.06.2009, 08:31
Аватар для Alxd
Alxd Alxd вне форума
Прохожий
 
Регистрация: 19.05.2009
Сообщения: 23
Репутация: 10
По умолчанию

Неее ЗавершитьРаботуСистемы() не работает во внешнем соединении.

Я и сам уже писал подобное и тоже проблем не было. А сейчас все это делается в отдельном потоке и соединение не закрывается почему-то :-(
Ответить с цитированием
  #6  
Старый 04.06.2009, 09:15
roamer roamer вне форума
Активный
 
Регистрация: 15.04.2009
Сообщения: 369
Репутация: 93
По умолчанию

>Неее ЗавершитьРаботуСистемы() не работает во внешнем соединении.

--- Напрямую нет.
Это один из многих глюков 8-ки.

Но если создать общий модуль :



И там разместить такую функцию :



То такой вызов :

ole1C.Execute_OLE('ЗавершитьРаботуСистемы(Ложь)');

работает (во всяком случае, на 8.0 того релиза, что у меня).
Ответить с цитированием
  #7  
Старый 04.06.2009, 09:17
Аватар для Alxd
Alxd Alxd вне форума
Прохожий
 
Регистрация: 19.05.2009
Сообщения: 23
Репутация: 10
По умолчанию

Да это все понятно, просто делается под типовые конфигурации :-)
Ответить с цитированием
  #8  
Старый 04.06.2009, 09:24
roamer roamer вне форума
Активный
 
Регистрация: 15.04.2009
Сообщения: 369
Репутация: 93
По умолчанию

Тогда Вам, скорее всего, надо на Кубанский форум "Территория 1С".

http://forums.kuban.ru/forum/viewforum_new.php?f=18
Ответить с цитированием
  #9  
Старый 04.06.2009, 09:33
Аватар для Alxd
Alxd Alxd вне форума
Прохожий
 
Регистрация: 19.05.2009
Сообщения: 23
Репутация: 10
По умолчанию

Проблему решил, правда пришлось весь код перекроить и разнести все по разным процедурам.
Но все равно спасибо за желание помочь!
Ответить с цитированием
  #10  
Старый 27.07.2009, 20:58
Olechka Olechka вне форума
Прохожий
 
Регистрация: 27.07.2009
Сообщения: 1
Репутация: 10
Печаль Нужна помощь!!!

Народ, кто знает, как в 1С 8.1 сделать выгрузку из УТ справочник номенклатура и загрузку в БП ,но не в сам справочник номенклатура, а в лежащую в нем папку..... помогите, плиз...

Последний раз редактировалось Olechka, 27.07.2009 в 21:54.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 14:23.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter