Имя: Пароль:
1C
1С v8
Проведение документа и COMобъект в управляемом приложении
0 ks-78
 
23.03.13
20:00
Есть следующая задача. При проведении документа нужно подключиться к определенной базе на Oracle, выполнить там определенные процедуры, и если все хорошо, документ проводится. Так сейчас сделано на 7.7. Теперь задача сотворить тоже самое на управляемом приложении 8.2.
На 7.7 все просто. В конце процедуры ОбработкаПроведения вызываем необходимую функцию из глобальника, делаем что нужно в оракле, если все хорошо, документ проводим. Иначе - отменяем проведение.
Подскажите, как это лучше решить на управляемом приложении. Ведь COMОбъект живет только на клиенте, а проведение на сервере. Можно конечно инициировать это действо ПередЗаписью на форме, но проблема в том, что отказ в проведении может возникнуть позже уже на сервере. И как  это победить?..
1 rs_trade
 
23.03.13
20:02
(0) Так сейчас сделано на 7.7

представляю тормоза в этой базе
2 rs_trade
 
23.03.13
20:02
там и так доки еле проводятся. а тут еще подключение черт-знает куда в транзакции
3 pumbaEO
 
23.03.13
20:03
(1) почему? Если соединение не сбрасывается и ораклисты с хранимкой не запороли, почему должно тормозить?
4 rs_trade
 
23.03.13
20:04
COMОбъект и на сервере вполне себе живет
5 ks-78
 
23.03.13
20:05
при попытке его туда передать - ошибку выдает
6 rs_trade
 
23.03.13
20:05
(3) про _1SJOURN помнишь? один долбанный документ блокирует все что только можно.
7 ks-78
 
23.03.13
20:06
а про семерку - соединение не сбрасывается. и работает проведение весьма шустро.
8 rs_trade
 
23.03.13
20:06
(5) правильно. ты его на сервере и создавай. зачем его туда сюда гонять. он не сериализуется.
9 ks-78
 
23.03.13
20:08
(8) тут как раз и будет сбрасываться соединение после каждого проведения документа. а это уже действительно тормоза вызовет.
10 rs_trade
 
23.03.13
20:08
а при чем тут ком вообще? почему через адо не шустрить в оракловской базе?
11 rs_trade
 
23.03.13
20:10
или это конект к базе 1с на оракле?
12 ks-78
 
23.03.13
20:13
(11) 1с конектится к базе на оракле. по поводу адо - разве 1с это не как ком объект воспринимает?
13 rs_trade
 
23.03.13
20:18
(12) создается да, как ком. но ком-ы они разные же бывают. а что в чужой базе надо делать? только читать, или писать еще надо?
14 ks-78
 
23.03.13
20:20
(13) и читать и писать
15 rs_trade
 
23.03.13
20:25
(14) я к тому, что если прицепить таблицы оракла к 1с как внешн. источники, а таблицы 1с прилинковать к ораклу, и по содержимому выполнять определенные действия и там и там. пусть немного позже, не он-лайн в обработке проведени. так не пойдет?
16 ks-78
 
23.03.13
20:29
(15) Нет, задача именно он-лайн писать.
17 rs_trade
 
23.03.13
20:30
(16) повесь триггер на субд 1с. шустро будет.
18 ks-78
 
23.03.13
20:32
(17) проблема в том, что еще и сроки поджимают. самое быстрое по реализации - повторить то, что есть в семерке. Так что актуален вопрос из стартового топика.
19 ДенисЧ
 
23.03.13
21:36
чото хрень какая-то...
а) кто мешает ком создавать на сервере?
б) при групповом проведении что делать будешь?
20 ks-78
 
23.03.13
21:41
(19) а)  на сервере переменные живут на время вызова. получается, что каждый раз надо будет заново устанавливать соединение.
б) проводиться документы будут только интерактивно. при групповом перепроведении в оракл стучаться не нужно.
21 rs_trade
 
23.03.13
21:42
(20) а на разных клиентах как они живут? запили триггер. имхо лучшее решение.
22 ДенисЧ
 
23.03.13
21:44
(20) в общем отказывайся от этой идеи. Она дурная.
23 ks-78
 
26.03.13
01:20
в общем сделал все на сервере. По поводу хранения комобъекта на сервере, может пригодится кому Книга знаний: Хранение COM Объектов на Сервере ТонкогоКлиента
24 ks-78
 
15.04.13
05:54
В общем с работой на сервере COMОбъекта проблем нет. Теперь новое препятствие. Нужно передать этот самый COMОбъект в фоновое задание. Пытаюсь передать в параметрах, не получается. Создать комобъект заново, не вариант, поскольку у пользователей есть права только на одно соединение с базой oracle, к которой и подключается ComОбъект.
Подскажите, можно каким-либо образом передать COMОбъект в фоновое задание?
25 Hmster
 
15.04.13
06:23
(24) никак. он либо хранится на сервере либо по требованию создается в фоновом.
если хочешь извращений сделай так чтобы фоновое не завершалось, было подобие ожидания, и наладь взаимодействие сеанса с фоном, например через РС
Программист всегда исправляет последнюю ошибку.