• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Деинициализация Вариантовской переменно

  • Автор темы Mirage
  • Дата начала
M

Mirage

Есть код соединения с базой 1С

Код:
Set MyApp = CreateObject ( "V81.ComConnector")
Set Base_ = MyApp.Connect ( "Srvr=server02; Ref=Copy;")

в работе при выборке может произойти ошибка (при нормальной работе происходет самостоятельная деинициализация переменной) и, как следствие, сессия остается висеть.
Как правильно деинициализировать вариантовскую переменную при ошибке?
 
M

Mirage

Mirage
а дисконект пробывали?

я не лотусятник, я 1С ник, поэтому если можно кинте пример, :)
пробовали так

Set Base_ =0
Set MyApp =0

говорит что нельзя класу присвоить аргумент. по идее вызов дисконекта не обязателен, т.к. при нормальной работе его не вызываем,
а при выходе из функции видимо все переменные освобождаются, так вот я думаю как их освободить "насильно", в 1С ке скажем, хватило бы присвоения переменной любого другого значения
 
N

nvyush

Есть код соединения с базой 1С

Код:
Set MyApp = CreateObject ( "V81.ComConnector")
Set Base_ = MyApp.Connect ( "Srvr=server02; Ref=Copy;")

в работе при выборке, может произойти ошибка, при нормальной работе,
происходет самостоятельная деинициализация переменной, и как следствие
сессия остается висеть, как правильно деинициализировать вариантовскую переменную,
при ошибке ?
Код:
 On Error Goto ErrOneC
Set MyApp = CreateObject ( "V81.ComConnector")
Set Base_ = MyApp.Connect ( "Srvr=server02; Ref=Copy;")
...
exit sub
ErrOneC:
'код деинициализации
Set Base_ = Nothing
Set MyApp = Nothing

P.S. Вообще-то не по адресу вопрос. Он уместнее где-нибудь в VBA или 1С
 
H

hosm

P.S. Вообще-то не по адресу вопрос. Он уместнее где-нибудь в VBA или 1С
В VBA точно не буду отправлять.
(по секрету) Еще встречаются лотусисты, которые с 1С работают, пусть пока тема живет здесь...
Автор, отпишитесь - если не получится, перекинем в 1С :)
 

ToxaRat

Чёрный маг
Green Team
06.11.2007
3 332
42
BIT
0
говорит что нельзя класу присвоить аргумент. по идее вызов дисконекта не обязателен, т.к. при нормальной работе его не вызываем
а вот это и не правильно!
конект значит делаем а дисконект не хотим, что за прикол?
данный обьект будет висеть в памяти вечно без дисконекта
потом
Код:
delete Base_
delete MyApp
 
A

Akupaka

конект значит делаем а дисконект не хотим, что за прикол?
данный обьект будет висеть в памяти вечно без дисконекта
ты уверен? к примеру, в лотусе ты базу тоже открываешь, но не закрываешь :)
 
K

Klido

это же внутри платформы :)
зато если, например, по jdbc коннект делать к тому же sql-серверу, то всё надо явно закрывать :)
rs.close(); - закрытие резалттсета
pstmt.close(); - закрытие вызова
con.close(); - закрытие коннекта, если вот тут не делать - коннекты на базу висят и плодятся....
 
A

Akupaka

не, ну я ж не знаю, а вдруг не обязательно ))
 
M

Mirage

не, ну я ж не знаю, а вдруг не обязательно ))

Точно не обязательно, при выходе из процедуры "корректном" должны уничтожаться все параметры, а оле2 посторенна так что висит до тех пор пока есть хоть один клиент к ней присоединеный, так что должно взлетать,
посмотрел как народ на VBA делает

Код:
Set Base_ = Nothing
Set MyApp = Nothing

Но не помогает
висит, а метода дисконект у этого объекта нет вроде совсем
 
N

nvyush

Точно не обязательно, при выходе из процедуры "корректном" должны уничтожаться все параметры, а оле2 посторенна так что висит до тех пор пока есть хоть один клиент к ней присоединеный, так что должно взлетать,
посмотрел как народ на VBA делает

Код:
Set Base_ = Nothing
Set MyApp = Nothing

Но не помогает
висит, а метода дисконект у этого объекта нет вроде совсем
Ну, эти строчки просто "зачищают" значения объектных переменных, сами объекты надо как-то дестроить. Подразумевалось, что вместо строки с комментарием " 'код деинициализации " будет собственно код деинициализации.
1С-ной комы не знаю, могу лишь посоветовать попробовать что-то вроде
Код:
 ...
ExitSub:
Exit Sub
ErrOneC:
Delete Base_
MyApp.Close
Resume ExitSub
End Sub
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!