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

Тема в разделе "Lotus - Программирование", создана пользователем Mirage, 23 дек 2009.

  1. Mirage

    Mirage Гость

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

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

    ToxaRat Чёрный маг
    Lotus team

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.047
    Симпатии:
    18
    Mirage
    а дисконект пробывали?
     
  3. Mirage

    Mirage Гость

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

    Set Base_ =0
    Set MyApp =0

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

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Код (Text):
     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С
     
  5. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    В VBA точно не буду отправлять.
    (по секрету) Еще встречаются лотусисты, которые с 1С работают, пусть пока тема живет здесь...
    Автор, отпишитесь - если не получится, перекинем в 1С :)
     
  6. ToxaRat

    ToxaRat Чёрный маг
    Lotus team

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.047
    Симпатии:
    18
    а вот это и не правильно!
    конект значит делаем а дисконект не хотим, что за прикол?
    данный обьект будет висеть в памяти вечно без дисконекта
    потом
    Код (Text):
    delete Base_
    delete MyApp
     
  7. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    ты уверен? к примеру, в лотусе ты базу тоже открываешь, но не закрываешь :)
     
  8. Klido

    Klido Гость

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

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    не, ну я ж не знаю, а вдруг не обязательно ))
     
  10. Mirage

    Mirage Гость

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

    Код (Text):
    Set Base_ = Nothing
    Set MyApp = Nothing
    Но не помогает
    висит, а метода дисконект у этого объекта нет вроде совсем
     
  11. nvyush

    nvyush Lotus team
    Lotus team

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

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7

Поделиться этой страницей