![]() |
![]() |
![]() |
|
УФ и соединение со сторонней базой | ☑ | ||
---|---|---|---|---|
0
ДенисЧ
09.02.11
✎
10:17
|
Продолжаю мучения.
Задача стоит так: есть обработка, которая при открытии должна соединиться со сторонней базой и в ответ на действия пользователя совершать с той базой манипуляции. Разумеется, это всё на УФ. То есть соединение должно быть на стороне сервера. В умной книжке написано, что все переменные &НаСервере уничтожаются после завершения серверного вызова. А в форме ADODB.Connection она не даёт хранить. Дайте совет, что делать... |
|||
1
Axel2009
09.02.11
✎
10:23
|
если только через параметры сеанса попробовать...
|
|||
2
ДенисЧ
09.02.11
✎
10:24
|
(1) Не хотелось бы...
А если так, то какой тип указывать? ХранилищеЗначения? |
|||
3
Axel2009
09.02.11
✎
10:27
|
(2) а больше нельзя хранить переменные на сервере, которые будут передаваться между вызовами.. :(
да, хранилищезначения |
|||
4
mikecool
09.02.11
✎
10:27
|
временное хранилище?
|
|||
5
КнОпка
09.02.11
✎
10:30
|
(0) а в реквизите обработки хранить?
|
|||
6
ДенисЧ
09.02.11
✎
10:32
|
(5) Не даёт. "Тип "COMОбъект" не может использоваться в данных формы"
|
|||
7
ДенисЧ
09.02.11
✎
10:32
|
(4) эээ... А как его применить?
|
|||
8
fly7
09.02.11
✎
10:35
|
(7) Адр = ПоместитьВоВременноеХранилище(ТвояПеременная);
ТвояПеременная = ПолучитьИзВременногоХранилища(Адр); Адр - строка |
|||
9
acsent
09.02.11
✎
10:35
|
ПоместитьВоВременноеХранилище
|
|||
10
ДенисЧ
09.02.11
✎
10:35
|
Почему я не хочу параметры сеанса использовать, так потому, что у меня таких обработок в перспективе будет несколько, и каждая может соединяться (в одном сеансе работы) с несколькими серверами под разными логинами...
|
|||
11
acsent
09.02.11
✎
10:35
|
&НаСервере
Функция БО_ПолучитьCOMОбъект() Если НЕ ЗначениеЗаполнено(АдресКомОбъекта) Тогда V81 = Новый COMОбъект("V81.ComConnector", "1c_app"); БО = V81.Connect("Srvr=""1c_app"";Ref=""backoffice2007"";Usr=""Администратор"";Pwd=""..."""); АдресКомОбъекта = ПоместитьВоВременноеХранилище(БО, УникальныйИдентификатор); Иначе БО = ПолучитьИзВременногоХранилища(АдресКомОбъекта); Если БО = Неопределено Тогда АдресКомОбъекта = ""; БО = БО_ПолучитьCOMОбъект(); КонецЕсли; КонецЕсли; Возврат БО; КонецФункции |
|||
12
acsent
09.02.11
✎
10:36
|
АдресКомОбъекта - реквизит формы типа строка
|
|||
13
Asmody
09.02.11
✎
10:36
|
||||
14
ДенисЧ
09.02.11
✎
10:41
|
&НаКлиенте
Процедура ПриОткрытии(Отказ) стрОракл = ПоместитьВоВременноеХранилище(ОраклБД); ИнициализацияСоединений(стрОракл); ОраклБД = ПолучитьИзВременногоХранилища(стрОракл); //строка 31 КонецПроцедуры &НаСервере Процедура ИнициализацияСоединений(стрСоед) //Процедура ИнициализацияСоединений(_1сСоединение,ОраклБД) _ОраклБД = ПолучитьИзВременногоХранилища(стрСоед); _ОраклБД = Новый COMОбъект("ADODB.Connection"); _ОраклБД.Open("Provider=MSDASQL.1;Data Source=Oracle7;UID=scaner;Password=scaner;"); стрСоед = ПоместитьВоВременноеХранилище(_ОраклБД); КонецПроцедуры {Форма.Форма.Форма(31)}: Ошибка при вызове метода контекста (ПолучитьИзВременногоХранилища) ОраклБД = ПолучитьИзВременногоХранилища(стрОракл); по причине: Ошибка получения значение из временного хранилища по причине: Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа. по причине: Ошибка преобразования данных XDTO: Запись значения свойства 'response': форма: Элемент имя: {http://v8.1c.ru/8.2/mngsrv/ws}response по причине: Ошибка отображения типов: Отсутствует отображение для типа 'COMОбъект' |
|||
15
Axel2009
09.02.11
✎
10:48
|
не надо на клиенте получать серверные переменные. нужно все выполнять в серверных процедурах..
|
|||
16
Asmody
09.02.11
✎
10:48
|
(14) нафиг &НаКлиенте то? всё &НаСервере делается
|
|||
17
ДенисЧ
09.02.11
✎
10:52
|
(16) на клиенте делается ещё инициализация начальных значений...
Или я уже ничего не понимаю... |
|||
18
Axel2009
09.02.11
✎
10:53
|
ну инициализировали, передали в процедуру на сервере и дальше выполнять остаток кода
|
|||
19
ДенисЧ
09.02.11
✎
10:54
|
Всё, кажется, понял. Вроде заработало...
|
|||
20
ДенисЧ
09.02.11
✎
10:54
|
Спасибо за терпение :-)
|
|||
21
fly7
09.02.11
✎
10:54
|
(18) при передачах прощай трафк )
|
|||
22
Axel2009
09.02.11
✎
10:57
|
(21) а что передаем милионы строк на клиента а потом обратно? =0
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |