Имя: Пароль:
1C
1С v8
Значение не является значением объектного типа (CreateObject)
0 Огурцы
 
02.04.12
09:22
В обычном интерфейсе все работает без проблем. Пытаюсь переписать обработку  под управляемый интерфейс. Пишет ошибку.

вот код:


&НаСервере
Перем БазаОЛЕ;

&НаКлиенте
Процедура ОткрытьСоединение(Команда)
   СоединениеНаСервере();    
КонецПроцедуры

&НаСервере

Процедура СоединениеНаСервере()
   БазаОЛЕ = Новый COMОбъект("V77S.Application");
   Открыта = БазаОЛЕ.Initialize(БазаОЛЕ.RMTrade, "", "");
   Если Открыта = Ложь Тогда
       Сообщить("------- безутешно -------");
       Возврат;
   Иначе
       Сообщить("------- Соединение прошло успешно -------");
   КонецЕсли;
   
КонецПроцедуры


&НаКлиенте
Процедура ЗагрузитьНоменклатуру(Команда)
   Номенклатура();
КонецПроцедуры


&НаСервере
Процедура Номенклатура()
//вот здесь выдает ошибку
   НомОЛЕ = БазаОЛЕ.CreateObject("Справочник.Номенклатура");
       
КонецПроцедуры

как я понимаю он не видит переменную БазаОЛЕ
1 Рэйв
 
02.04.12
09:23
Вполне возможно Номенклатура() вызывается до СоединениеНаСервере();
2 Огурцы
 
02.04.12
09:24
нет
3 Defender aka LINN
 
02.04.12
09:25
(0) На сервере никаких "постоянных" переменных нет.
4 Рэйв
 
02.04.12
09:27
&НаСервере
Процедура Номенклатура()
  БазаОЛЕ = Новый COMОбъект("V77S.Application");
   Открыта = БазаОЛЕ.Initialize(БазаОЛЕ.RMTrade, "", "");
   Если Открыта = Ложь Тогда
       Возврат;
   КонецЕсли;


   НомОЛЕ = БазаОЛЕ.CreateObject("Справочник.Номенклатура");
       
КонецПроцедуры
5 Огурцы
 
02.04.12
09:28
(4)да, так работает я уже пробовал. Но мне нужно подключиться к базе всего один раз и потом уже нажимать на кнопки и загружать по очереди номенклатуру, цены и т.д.
6 ДенисЧ
 
02.04.12
09:29
(4) храни соединение в хранилище...
7 Огурцы
 
02.04.12
09:29
(6)почему именно так?
8 Огурцы
 
02.04.12
09:40
(6)
ХранилищеЗначения (ValueStorage)
На основании значения
Синтаксис:

Новый ХранилищеЗначения(<Значение>, <АлгоритмСжатияДанных>)
Параметры:

<Значение> (обязательный)

Тип: Произвольный.
Значение, которое должно быть помещено в хранилище.
<АлгоритмСжатияДанных> (необязательный)

Тип: СжатиеДанных.
Задает степень сжатия данных.
Описание:

Создает объект ХранилищеЗначения и помещает в него заданное значение.
Конструктор доступен только в режиме запуска "Толстый клиент", на сервере и внешнем соединении.
9 Огурцы
 
02.04.12
09:41
Конструктор доступен только в режиме запуска "Толстый клиент", на сервере и внешнем соединении.
10 Огурцы
 
02.04.12
09:46
пишет что БазаОЛЕ не может быть помещен в хранилище поскольку не может быть сериализован
11 lxs
 
02.04.12
09:52
(6) эт что-то новое))
12 Огурцы
 
02.04.12
09:53
так все же есть возможность сохранить в переменной и передать указатель на базу БазаОЛЕ
13 Огурцы
 
02.04.12
09:53
?
14 Maxus43
 
02.04.12
09:55
очевидных путей нет... каждый раз нажимая кнопку - надо цепляться по новой
15 Defender aka LINN
 
02.04.12
12:44
Во временном хранилище надо хранить, а не в ХранилищеЗначения
16 lxs
 
02.04.12
12:45
(13) Меняй логику. Управляемые формы не для таких извращений придумывали. Постоянно держать COM глупо, даже с точки зрения производительности.
17 lxs
 
02.04.12
12:45
+(16) даже тут дело в принципе не в УФ.
18 Фауст
 
02.04.12
12:54
Данные получай с сервера на клиент,  соединение создадвай на клиенте и работай с ним тоже на клиенте.