Имя: Пароль:
1C
1С v8
v8: Внешние источники данных. Не могу к ним подключиться в серверном варианте
0 Komrat
 
20.12.11
09:20
Есть сервер FireBird к которому необходимо подсоединяться используя объект ВнешниеИсточники данных.
В файловом варианте конфигурации соединение создается успешно, в серверном варианте нет. Код один и тотже:

Процедура ДействияФормыПолучитьИзБазы(Кнопка)
   ПараметрыСоединения = Новый ПараметрыСоединенияВнешнегоИсточникаДанных;
   ПараметрыСоединения.СтрокаСоединения = "DRIVER={Firebird/InterBase(r) driver};CHARSET=NONE;UID=SYSDBA;PWD=masterkey;DBNAME=server01:basa01";
   ВнешниеИсточникиДанных.Perco.УстановитьОбщиеПараметрыСоединения(ПараметрыСоединения);
   ВнешниеИсточникиДанных.Perco.УстановитьСоединение();
   Запрос = Новый Запрос;
   Запрос.Текст = "........

В серверном варианте перед процедурой добавляю:

&НаКлиенте
Процедура ДействияФормыПолучитьИзБазы(Кнопка)

Ошибка следующая:
Ошибка ODBC. SQLSTATE: IM002
Номер ошибки: 0
Описание: [Microsoft][Диспетчер драйверов ODBC] Источник данных не найден и не указан драйвер, используемый по умолчанию

ODBC драйвер FireBird установлен только на клиентской машине.

Как-будто не учитывается деректива &НаКлиенте и процедура выполеяется на Сервере.

Что делаю не так?
1 Komrat
 
20.12.11
10:18
Какие есть мнения?
2 Defender aka LINN
 
20.12.11
10:21
А если ВнешниеИсточникиДанных под лупой в СП, скажем, изучить? Не выяснится ли ВНЕЗАПНО, что она работают через сервер?
3 Komrat
 
20.12.11
10:25
При первом прибижении через лупу:

УстановитьСоединение (Connect)
Синтаксис:

УстановитьСоединение()
Описание:

Устанавливает соединение с внешним источником данных.

Доступность:

Сервер, толстый клиент, внешнее соединение.

То есть должно работать как на сервере, так и на клиенте (толстом).
4 mzelensky
 
20.12.11
10:26
(0) а в чем вообще ФИШКА этих "Внешние источники данных"??? почему нельзя просто через старые КОМЫ работать???
5 Defender aka LINN
 
20.12.11
10:27
(3) Если бы оно в толстом не было доступно, у тебя бы еще раньше падало, на этапе компиляции.
А УстановитьСоединение() что говорит?
6 Defender aka LINN
 
20.12.11
10:27
(4) Типа, стандартно и удобно, как я понимаю. Сам еще 14 платформу не ставил, правда, ХЗ чего там :)
7 Komrat
 
20.12.11
10:30
Говорит: Ошибка при вызове метода контекста (УстановитьСоединение)
   ВнешниеИсточникиДанных.Perco.УстановитьСоединение();
по причине:

Ошибка ODBC. SQLSTATE: IM002
Номер ошибки: 0

Описание: [Microsoft][Диспетчер драйверов ODBC] Источник данных не найден и не указан драйвер, используемый по умолчанию
8 mzelensky
 
20.12.11
10:30
(6) удобно это когда все работает без заморочек. У тут нужно в конфигураторе ковыряться, опять целая куча параметров и т.д. и т.п.
9 Defender aka LINN
 
20.12.11
10:31
(7) Я  про СП, вообще-то
10 Komrat
 
20.12.11
10:32
Расшифруй "СП"
11 Defender aka LINN
 
20.12.11
10:34
(10) Ты после (3) резко забыл, что это значит?
12 Komrat
 
20.12.11
10:35
(11) :)
13 Defender aka LINN
 
20.12.11
10:38
(12) В общем, если там есть че-нить типа "вызывает обращение к серверу", то к гадалке не ходи - я в (2) угадал.
14 Komrat
 
20.12.11
10:50
(13) Нет в СП описание такого ограничения, что только через сервер. В файловом варианте все работает. Так вот я и думал, что деректива &НаКлиенте перед процедурой должна отработать правильно, но нет. Если я ставлю дерективу &НаСервере, то кнопка в форме становить неактивной.
15 Defender aka LINN
 
20.12.11
10:51
(14) Директива работает правильно. Скопируй сюда из СП описание УстановитьСоединение()
16 Komrat
 
20.12.11
10:54
Так в (3) это и сделано
17 Defender aka LINN
 
20.12.11
10:59
(16) Че-то думал, там что-то другое :)
Ну, ройся в документации, но, видимо все же (2).
18 Komrat
 
20.12.11
12:10
Ни чего не нашел.
Пошел другим путем.
Установил драйвер на ODBC FireBird на сервер 1С. Теперь стал ругаться на gds32.dll.
Отсюда следует, что вне зависимости от дерективы компелятора: "&НаКлиенте" подключение к внешнему источнику данных осуществяет сервер. Очень странно.
Вот ошибка:
Ошибка ODBC. SQLSTATE: 08004
Номер ошибки: -904
Описание: [ODBC Firebird Driver]Unable to connect to data source: library 'gds32.dll' failed to load

Сразу оговорюсь, что сервер х64 (Windows Server 2008 R2). Драйвер устанавливал тоже х64
Подсунул в system32 и system файл 'gds32.dll' со своей машинки, не помогло. Ошибка таже.
19 Komrat
 
20.12.11
13:04
UP
20 borik
 
20.12.11
13:27
(19) Для начала я бы настроил  odbc data source administrator, проверил соединение, подключисля бы например из Excel потом дальше бы уже гемороился...
21 Komrat
 
20.12.11
13:41
Подсунул х64 gds32.dll на сервер 1С. Все заработало. С одной стороны это хорошо, что соединение устанавливает сервер, т.к. не надо на клиентах устанавливать ODBC драйвер. А с другой стороны раз сказано &наКлиенте и в описании дано, что метод УстановитьСоединение() подерживается на толстом клиенте, то будь добр выполни его.