|
Com соединение в регламентном задании
| ☑ |
0
СЕсин
06.12.14
✎
21:12
|
Всем доброго времени суток! Помогите пожалуйста, не знаю как победить. Есть регламентное задание в самописной конфигурации, которое запускается, подсоединяется к другой базе через com, вытаскивает данные и отправляет их.
Вот проблема в том, что задание срабатывает раза 2 или 3 (всегда по-разному). А потом перестает выполняться и при попытке создания com объекта выдает такую ошибку:
Ошибка при вызове конструктора (COMObject)
по причине:
по причине:
-2147221008(0x800401F0): Не был произведен вызов CoInitialize.
Помогает перезагрузка сервера. Перезапуск 1С не помогает.
|
|
1
Casey1984
07.12.14
✎
05:11
|
Ком-объект уничтожаешь при выходе из процедуры рег. задания?
|
|
2
СЕсин
08.12.14
✎
02:26
|
(1) Я переменной, в которой был Com объект присваиваю Неопределено. Это считается уничтожением? Или как-то по-особенному надо уничтожать?
И ещё забавный момент. Если этот код не из регламентного задания вызывается, а из обработки внешней, например. То все ок. Т.е. видимо, в сеансе регламентного задания какие-то вещи происходят.
|
|
3
Wobland
08.12.14
✎
04:59
|
оно, конечно, считается уничтожением, но я в своей практике встречал ситуации опровергающие. пусть меня поправят более бородатые
|
|
4
goleaff2006
08.12.14
✎
05:11
|
ком объект создается на сервере если через регламентное задание, а там не все так просто.
|
|
5
DrZombi
гуру
08.12.14
✎
07:50
|
(2) А БД закрываешь? "V8_ОЛЕ.Exit();"
|
|
6
DrZombi
гуру
08.12.14
✎
07:51
|
(3) Это 1С, от создателей этой платформы, можно и нужно ожидать всего :)
|
|
7
СЕсин
08.12.14
✎
15:13
|
(5) нет, так не закрываю командой Exit. А у меня же не ОЛЕ, а Comconnector. Когда обнуляю переменную, подключение к базе теряется, не?
|
|
8
DrZombi
гуру
08.12.14
✎
15:20
|
(7) Сомнения меня терзают :)
|
|
9
DrZombi
гуру
08.12.14
✎
15:24
|
(7) А ты все сторонние ветви переменных ты тоже очищаешь?
Ну там, то что ты на создавал, от Документов до Запросов.
Особенно уделить внимание какой-либо ТЗ в ТЗ :)
|
|
10
СЕсин
08.12.14
✎
22:44
|
(9) ну идея интересная. Добавил:
Результат = Неопределено;
ИтогиТЗ = Неопределено;
База = Неопределено;
ТоргЗапрос = Неопределено;
cntr = Неопределено;
Сейчас перезапущу, посмотрим, что получится.
Подключение у меня выглядит так:
cntr = Новый COMObject("V83.COMConnector");
База = cntr.Connect("File="""+ПутьКБазе+"""; Usr="""+ИмяПользователя+"""; Pwd="""+Пароль+""";");
А кстати, есть метод обратный? Что-то типа Disconnect. Дело в том, что я раньше не парился. Обнуляю переменную, смотрю: соединение разорвано.
|
|
11
СЕсин
10.12.14
✎
11:22
|
Нифига... та же самая ошибка. Уже и разные платформы пробовал, пока не ясно в чем дело.
|
|
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший