Имя: Пароль:
1C
1С v8
Перегрузка через Оле для УФ
0 Мисти
 
26.11.13
00:07
Подключение = Новый COMОбъект("V82.COMConnector");
БазаОле = Подключение.Connect("File=""" + СокрЛП(Объект.ПутьКФайловойБД) + """; Usr=""" + СокрЛП(Объект.Логин) + """; Pwd=""" + СокрЛП(Объект.Пароль) + """");
КонтрТорг =  БазаОле.Справочники.Контрагенты.Выбрать();
Не работает!
А не в УФ - вроде, работало!
1 Мисти
 
26.11.13
00:09
БазаОле = Новый COMОбъект("v82.Application"); - там, правда, так было.
Как правильно и что от этого зависит?
2 Мисти
 
26.11.13
00:14
ага, если v82.Application - то база прям запускается!
3 Мисти
 
26.11.13
00:17
{Форма.Форма.Форма(304)}: Значение не является значением объектного типа (Справочники)
    КонтрТорг =  БазаОле.Справочники.Контрагенты.Выбрать
Всё равно ругается!
4 Мисти
 
26.11.13
00:23
БазаОле = Новый COMОбъект("v81.Application");
    Попытка  
        Состояние("Идет подключение к базе, подождите...");
        БазаОле.Connect("File=""G:\ЮЛЯ\Восьмерка\БАЗЫ под 8.2...""; Usr=""Шап""; Pwd="""  + """;");
5 hhhh
 
26.11.13
00:27
на клиенте недоступно "Справочники". делайте на сервере
6 Мисти
 
26.11.13
00:28
&НаСервере
Процедура   ЗагрузитьКонтрагентовНаСервере()
    КонтрТорг =  БазаОле.Справочники.Контрагенты.Выбрать();
7 Мисти
 
26.11.13
00:30
Я так и делаю!
Подключение = Новый COMОбъект("V82.COMConnector");
БазаОле = Подкл...

или так?

БазаОле = Новый COMОбъект("V82.COMConnector");  //COMConnectorApplication
        Если Объект.ИспользуетсяСервер1С = Истина тогда
            Соединение = БазаОле.Connec

Если я потом БазаОле использую?
8 Мисти
 
26.11.13
00:32
В форме? Или обязательно в модуль обработки переходить?
9 Конфигуратор1с
 
26.11.13
00:37
(5) по оле пофигу)
10 Мисти
 
26.11.13
00:38
Тогда что не по фигу? Для УФ первый раз делаю перегрузку, а раньше работало и так и эдак.
11 Мисти
 
26.11.13
00:41
К чему потом к базе обращаться? Смотрю, у меня 2 разных варианта -
            Подключение = Новый COMОбъект("V82.COMConnector");
            Если ВыборкаБаз.ИспользуетсяСервер1С = Истина тогда
                БазаОткрыта = Подключение.Connect("Srv...

И потом обращение к БазаОткрыта
и как в (4)
12 Мисти
 
26.11.13
01:01
Очень надо!!!
13 GreyK
 
26.11.13
01:02
(11) Можешь в отладчике посмотреть, можешь поверить мне на слово и обращаться к "Подключение".
14 Мисти
 
26.11.13
01:03
У меня тут уже мильон вариантов описан.
Можно последовательно - что к чему подключать?
Я уже по-всякому пробовала.
15 Мисти
 
26.11.13
01:21
ау?
16 H A D G E H O G s
 
26.11.13
01:31
(15) могу подключиться и глянуть
17 Мисти
 
26.11.13
01:33
Да я всё уже выложила!
У меня одновременно 2 задачки - зависает компьютер, в тимвьере - вообще ничего не видно будет.
18 Мисти
 
26.11.13
01:52
может, надо процедуры в модуль объекта перенести?
19 Мисти
 
26.11.13
02:31
Наверное, дело в том, что базаОле я определила как переменную в модуле формы.
Так не делают? До этого пыталась сделать реквизит формы - тоже не получилось.
20 Мисти
 
26.11.13
02:34
Точно. Все дело в переменной базаОле.
Объект.БазаОле?
21 Мисти
 
26.11.13
13:48
Что с переменной-то делать?
У меня такая структура:
Перем БазаОле;
НаСервере
подключение()
БазаОле = Подключение.Connect("File=""" + СокрЛП(Объ....

НаСервере
ПерегрузитьТо()
КонтрТорг =  БазаОле.Справочники.Контрагенты.Выбрать ...
НаСервере
ПерегрузитьСЁ()
НоменТорг =  БазаОле.Справочники.......
22 Мисти
 
26.11.13
14:09
ау?
23 User_Agronom
 
26.11.13
14:13
Я выборочно читал.
Директива
&НаСервере
перед процедурой есть?
24 Мисти
 
26.11.13
14:14
Сделать Базаоле реквизитом обработки?
Перенести все действия из формы в модуль?
Последнее свариант - переделать не для УФ и открывать базу специально в другом режиме для перегрузки.
(23) Да!
25 Мисти
 
26.11.13
14:15
Если это идет в той же процедуре, то всё срабатывает!
КонтрТорг =  БазаОле.Справочники.Контрагенты.Выбрать ...
А если в другой, то нет.
26 User_Agronom
 
26.11.13
14:16
(25) В УФ должна быть.
27 H A D G E H O G s
 
26.11.13
14:16
Давай я подключусь
28 acsent
 
26.11.13
14:16
зачем на клиенте делать, лучше на сервере
29 acsent
 
26.11.13
14:18
Нигде не увидел текста ошибки
30 Мисти
 
26.11.13
14:21
Форма.Форма.Форма(304)}: Значение не является значением объектного типа (Справочники)
    КонтрТорг =  БазаОле.Справочники.Контрагенты.Выбрать  - в п. 3 было!
31 Мисти
 
26.11.13
14:23
(27) Давай! [email protected] напишу адрес-пароль.
32 H A D G E H O G s
 
26.11.13
14:27
написал
33 Мисти
 
26.11.13
14:33
Написала!
34 ProxyInspector
 
26.11.13
15:12
Если у тебя тонкий клиент, тогда есть несколько тонкостей при подключении по ОЛЕ.
1. Ты можешь запускать ОЛЕ на клиенте.
2. На компьютере, который является Сервером 1с предприятия (тонкий клиент)
  В первом случае все более менее понятно, во втором случае требуется несколько магических заклинаний.
  а. Необходимо дать права пользователю, под которым работает Сервер1СПредприятия (user1cv82) на запуск и активацию 8-ки в режиме ОЛЕ
  б. Если требуется одновременно работать с ОЛЕ от имени разных пользователей, то надо при настройке службы " Агент Сервера 1с Предприятия" установить галочку "Вход в систему с системной учетной записью" и галочку "Разрешить взаимодействие с рабочим столом". Если этого не сделать, то возможен только запуск одного экземпляра ОЛЕ.
  Ну а дальше все как обычно.
35 Мисти
 
26.11.13
15:46
Если ЗначениеЗаполнено(АдресСоединения) И ЭтоАдресВременногоХранилища(АдресСоединения) Тогда
        БазаОЛЕ=ПолучитьИзВременногоХранилища(АдресСоединения);
    КонецЕсли;

Мне помогли!
Всё понятно, но всё равно непонятно.
Почему АдресСоединения сохраняется, а базаОле - нет?
Я эту переменную тоже определяла в реквизитах формы! (был такой эксперимент)
36 H A D G E H O G s
 
26.11.13
15:49
(35) Адрес соединения - это реквизит форму, с типом строка - строку можно передавать на сервер.
БазаОЛЕ - это переменная на сервере, между серверными вызовами она очищается.
Если бы ты добавила БазаОЛе произвольного типа, то при завершении подключения (возврате на клиент) у тебя бы возникла ошибка преобразование XDTO
37 H A D G E H O G s
 
26.11.13
15:49
Если бы ты добавила БазаОЛе произвольного типа, как реквизит формы.
38 Мисти
 
26.11.13
15:54
Спасибо!
Читаю статью и тащу из нее куски.
Мечтаю о пенсии.
39 Мисти
 
26.11.13
16:10
http://kb.mista.ru/article.php?id=678
Чем функции в модуле обработки лучше?
40 H A D G E H O G s
 
26.11.13
16:13
(39) Это писалось для обычного приложения.
В модуле объекта - работа с данными
В модуле формы - работа с интерфейсом.

Фсе по фэншую.
41 Мисти
 
26.11.13
16:17
Для УФ - так же?
по фэншую - в смысле для красоты и так принято, или есть какие-то причины?