#0
by Bittin
Добрый день. Я на delphi сделал вот такое: -получаю данные из Firebird -подключаюсь по COM к 1с 8.3 -на основании полученных данных из из Firebird в 1с-ке создаю документы Проблема заключается в том что -по окончании формирования документов соединение COM в 1с не завершается,даже после закрытия программы на delphi -после закрытия программы на delphi его процесс остается висеть в памяти, причем сжирая 300 Мб Я так понимаю одно зависит напрямую от другого. Подскажите, как решить проблему. Заранее спасибо! Вот код подключения и отключения .... uses ...., ComObj, ActiveX,V83_TLB var .... var
#2
by H A D G E H O G s
Когда делается Disconnect1c в event log Дельфей видишь upload dll-ок 1Совских ?
#6
by Bittin
нашел насколько я вижу то нет вот: Thread Start: Thread ID: 1776. Process sk_sync_project.exe (1112) Module Load: basic.dll. No Debug Info. Base Address: $17B00000. Process sk_sync_project.exe (1112) Module Load: edb.dll. No Debug Info. Base Address: $20000000. Process sk_sync_project.exe (1112) Module Load: accnt.dll. No Debug Info. Base Address: $1D200000. Process sk_sync_project.exe (1112) Module Load: calc.dll. No Debug Info. Base Address: $1C800000. Process sk_sync_project.exe (1112) Module Load: bp.dll. No Debug Info. Base Address: $1DF00000. Process sk_sync_project.exe (1112) Module Load: scheme.dll. No Debug Info. Base Address: $14F00000. Process sk_sync_project.exe (1112) Module Load: dcs.dll. No Debug Info. Base Address: $1E900000. Process sk_sync_project.exe (1112) Module Load: mngbase.dll. No Debug Info. Base Address: $21600000. Process sk_sync_project.exe (1112) Module Load: mngsrv.dll. No Debug Info. Base Address: $22700000. Process sk_sync_project.exe (1112) Module Load: addin.dll. No Debug Info. Base Address: $15F00000. Process sk_sync_project.exe (1112) Module Load: odata.dll. No Debug Info. Base Address: $20A00000. Process sk_sync_project.exe (1112) Module Load: addncom.dll. No Debug Info. Base Address: $16000000. Process sk_sync_project.exe (1112) Module Load: addncpp.dll. No Debug Info. Base Address: $16100000. Process sk_sync_project.exe (1112) Module Load: drprov.dll. No Debug Info. Base Address: $6F990000. Process sk_sync_project.exe (1112) Module Load: WINSTA.dll. No Debug Info. Base Address: $74480000. Process sk_sync_project.exe (1112) Module Load: NTLANMAN.dll. No Debug Info. Base Address: $6F890000. Process sk_sync_project.exe (1112) Module Load: davclnt.dll. No Debug Info. Base Address: $6BF20000. Process sk_sync_project.exe (1112) Module Load: DAVHLPR.dll. No Debug Info. Base Address: $6BF10000. Process sk_sync_project.exe (1112) Module Load: netutils.dll. No Debug Info. Base Address: $72A10000. Process sk_sync_project.exe (1112) Thread Start: Thread ID: 2064. Process sk_sync_project.exe (1112) Thread Start: Thread ID: 8692. Process sk_sync_project.exe (1112) Source Breakpoint at $0047D7AF: D:appsk_sync_u.pas line 121. Process sk_sync_project.exe (1112)
#8
by H A D G E H O G s
Это лог подключения. Нужен лог, который Дельфи пишет при отключении от 1С, типа:
#10
by Bittin
я поставил точку останова на Com_Object := NIL; и потом пошел по шагам вот что выдал Source Breakpoint at $00481CD5: D:appsk_sync_u.pas line 123. Process sk_sync_project.exe (8784) Thread Start: Thread ID: 8768. Process sk_sync_project.exe (8784) Thread Start: Thread ID: 8692. Process sk_sync_project.exe (8784) Module Unload: MSVCR80.dll. Process sk_sync_project.exe (8784) Module Unload: fbclient.dll. Process sk_sync_project.exe (8784) Thread Exit: Thread ID: 7244. Process sk_sync_project.exe (8784) Thread Exit: Thread ID: 6068. Process sk_sync_project.exe (8784) Thread Exit: Thread ID: 8768. Process sk_sync_project.exe (8784) Thread Exit: Thread ID: 2892. Process sk_sync_project.exe (8784) Thread Exit: Thread ID: 2984. Process sk_sync_project.exe (8784) Thread Exit: Thread ID: 4340. Process sk_sync_project.exe (8784) Thread Exit: Thread ID: 8692. Process sk_sync_project.exe (8784)
#11
by Bittin
а теперь еще почему-то еще ошибку выдает после выхода: access violation at 0x1035e8d3: read of adress 0x000000000
#13
by H A D G E H O G s
Потому что добавил refcount:=idispatch(BaseConnect)._AddRef-1; Это для проверки, надо убрать.
#16
by Torquader
Объясните, а зачем что-то делать в 1С на Delphi, когда к тому же FireBird прекрасно можно подключаться из 1С ?
#18
by Serginio1
Я очень люблю Delphi но уже 6 лет на нем не программирую. По моему лучше изучать C# или Java
#20
by b_ru
Для курсовой для препода, который поощряет некрофилию, такие мелочи, как висящий процесс, не существенны обычно :) И уточни, это процесс твоей программы остается висеть с 300 метрами?
#22
by Стальная Крыса
Проблема с ооочень длинной бородой. Сам несколько лет назад натыкался на такую хрень. Вещь системная, непобеждаемая ... уборщик мусора отрабатывает не моментально, а с каким-то интервалом. Т.е. если подождать - процесс отвалится.
#25
by Bittin
модуля да вы правы отрубается через мин 5-7, но как это ускорить? я пробовал освобождения переменной-типа freеmem не помогает....
#32
by Serginio1
Если тв вызываешь CoInitialize то при завершении потока должен вызвать CoUninitialize При использовании форм связка CoInitialize CoUninitialize вызывается автоматически
#33
by Кирпич
если делаешь CoInitialize, то надо делать и CoUninitialize Delphi автоматом делает CoInitialize и CoUninitialize, если у тебя не консольное приложение. а вообще, для очистки совести, нужно всем переменным, которые из 1с получал, присвоить Unassigned. Com_Object тоже сделать OleVariant Com_Object := CreateOleObject('V83.ComConnector'); ...
#34
by Bittin
Ок, спасибо, добавлю CoUninitialize. BaseConnect := Unassigned - норм, а вот Com_Object := Unassigned; вызывает ошибку: incompatible types: Variant and IV8ComConnector
#37
by Bittin
пропустил... Если я сделаю так, то я уже в делфе буду использовать не COM а Ole, так? Мне нужно использовать в делфе com, так требуется...
#40
by Кирпич
а ну тогда фиг знает чо ты там понаписал. Попробуй сначала чисто подключиться и отключиться.
#43
by Bittin
если все переменные сделать Unassigned то процедура Disconnect1c выполняется 4 минуты, зато после закрытия программы не висит в памяти. Но если оставить как было то процедура Disconnect1c выполняется быстро, зато после закрытия программа висит в процессах теже 4 минуты. Короче равнозначно...что делать что не делать....
#44
by Bittin
если сделать так, то при коннекте вылазиет ошибка "variant does not reference an aitomation object"
#49
by Serginio1
IV8COMConnector это интерфейс с заранее известными методами и свойствами. Idispatch это двойная диспетчеризация. Применяется для позднего связывания.
#51
by Serginio1
Если они являются переменными метода, то при завершении метода им всем автоматически присваивается Unassigned
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
В этой группе 1С
- Ошибка при отправке почты
- Сообщения пользователю при компоновке результата СКД
- Как ограничить доступ к счетам?
- ПакетОтображаемыхДокументов или как объединить файлы
- Как отключить сообщение "Отключить использование аппаратной лицензии"?
- Не отображаются записи в Регистре Накопления
- Пустой результат запроса СКД
- Проверка на тип значения в запросе
- v7: Изменение вида субконто в плане счетов
- Подскажите с лицензиями на сервере
- Попытка выгрузки результата СКД в Таблицу значений
- Ошибка удаления файлов программно
- В оборотах 90.02.1 не соблюдается правило
- Изменение типовых правил обмена универсального формата
- Долгий выбор позиции в Рознице 2.1 в РМК
- обмен в формате EnterpriseData со сторонним приложением
- Сторнирование документа в ERP
- v7: Ошибка при проверке XML по схеме
- Подскажите пжл, как посмотреть остатки с ценам в 1С 8.3 (УТ 11.1.10.131)
- Потерял БД зуп на флешке