Имя: Пароль:
1C
 
УФ и соединение со сторонней базой
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
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn