Имя: Пароль:
1C
1С v8
Ошибка вызова функции через внешнее соединение
,
0 Alex_MA
 
20.09.12
09:11
Всем доброго утра!

Есть БД1, в ней я подключаюсь через
COMConnector = Новый COMОбъект("V82.COMConnector");
БазаCOM = COMConnector.Connect("Srvr=""" + ИмяСервера + """;"+"Ref=""" + ИмяБазы + """; Usr=""" + ИмяПользователя + """;Pwd=""" + Пароль + """;"); к БД2.

Как из БД1 вызвать ф-ю общего модуля БД2 ?
В БД создал модуль с галками: "Сервер", "Вызов сервере", "Внешнее соединение", "Клиент (обычное приложение)" ?

я пишу следующее:

БазаCOM.<ИмяОбщегоМодуля>.<ИмяФункции> - но программа пишет ошибку.
http://shot.qip.ru/009B7C-1GAPIlxcf/

ЧЯДНТ? Большое спасибо за внимание.
1 vmv
 
20.09.12
09:13
тебя одолел лукавий и ты соблазнился глупыми мечтами, которые не сбудуться в этой жизни
2 Alex_MA
 
20.09.12
09:14
(1)глаголь :)
3 Alex_MA
 
20.09.12
09:15
у все процедур и функций Экспорт
4 Рэйв
 
20.09.12
09:15
через модуль внешнего соединения попробуй.  Там пропиши вызов. Может взлетит.
5 Alex_MA
 
20.09.12
09:17
(4)так думаю взлетит, а на сайте 1С написано по другому
6 Alex_MA
 
20.09.12
09:18
(4)
В качестве своих методов внешнее соединение может иметь:

системные процедуры и функции;
процедуры и функции модуля внешнего соединения и общих модулей, объявленные с ключевым словом Экспорт;
дополнительный метод NewObject.

Общих модулей
7 Alex_MA
 
20.09.12
09:21
(4)Да, через модуль внешнего соединения  - Ок.
А как с общими модулями быть ?
8 Рэйв
 
20.09.12
09:55
(7)А общие модули не заточены под это дело. Так что никак.
9 Reset
 
20.09.12
10:07
Попробовал
Сообщить(Соединение.ОбщегоНазначения.ЕстьНеЦифры("234234ыва"));

Работает.
Галки у модуля как в (0).
10 Reset
 
20.09.12
10:07
(0)Галка "глобальный" случайно не стоит?
11 Reset
 
20.09.12
10:08
ps картинка с ошибкой не открывается (заблочен адрес)
12 Reset
 
20.09.12
10:11
Если (10), то и без ком не будет работать
13 Alex_MA
 
20.09.12
10:12
(10)глобальный не стоит
14 Reset
 
20.09.12
10:13
В ошибке - то что пишется, приоткрой тайну
15 Alex_MA
 
20.09.12
10:33
16 Reset
 
20.09.12
10:33
не открывается у меня qip
17 Alex_MA
 
20.09.12
10:33
vscESBСобытияШины - общий модуль Вн.соединения
18 Alex_MA
 
20.09.12
10:34
19 Reset
 
20.09.12
10:37
(18) Открылось. Нужно смотреть код в вызываемой функции
20 Reset
 
20.09.12
10:38
Т.е. это ошибка там, а не при вызове функции
21 Reset
 
20.09.12
10:38
еще точнее - это не проблема вызова функции общего модуля внешнего соединения
22 Alex_MA
 
20.09.12
10:40
Вот модуль внешнего соединения

////////////////////////////////////////////////

//{{VSC mas(Begin 20.09.2012

// vscESBВнешнееСоединение - Общий модуль с галкой "Внешнее соединение"

Процедура НормализацияБитыхСсылокВШине(СтруктураДанных) Экспорт
   
   vscESBВнешнееСоединение.ОтправитьМассивСсылокВШинуESB(СтруктураДанных);
   
КонецПроцедуры    
   
//End)VSC mas}}

В ИБ1:

БазаCOM.НормализацияБитыхСсылокВШине(СтруктураДанных);

Ошибка:
{Форма.Форма.Форма(1109)}: Метод объекта не обнаружен (НормализацияБитыхСсылокВШине)
       БазаCOM.НормализацияБитыхСсылокВШине(Новый Структура("МассивСсылок, ОчередьПолучателя, ИмяОбъектаXDTO", МассивСсылокКПередаче, ПланыОбмена.vscESB.ЭтотУзел().Очередь, Объект.ИмяКлассаXDTO));
23 Reset
 
20.09.12
10:42
Ты же говорил что делаешь
БазаCOM.vscESBВнешнееСоединение.НормализацияБитыхСсылокВШине(Новый ...
24 Reset
 
20.09.12
10:42
как в 22 писать если vscESBВнешнееСоединение - глобальный
25 Reset
 
20.09.12
10:43
стоп запутался
26 Reset
 
20.09.12
10:45
замечание по ходу - структуру передавать в ком нельзя, нужно ее создавать в ее контектсте. так же массив и прочее. Кроме базовых типов
27 Alex_MA
 
20.09.12
10:46
(26)вот спасибо
28 Reset
 
20.09.12
10:46
Вопрос -
Процедура НормализацияБитыхСсылокВШине(СтруктураДанных) Экспорт
в каком модуле?
29 Reset
 
20.09.12
10:47
(27) COMСтруктура=БазаCOM.NewObject("Структура");
COMСтруктура.Вставить("ываыва",123123);
30 Alex_MA
 
20.09.12
10:48
(28)Модуль внешнего соединения
31 Alex_MA
 
20.09.12
10:49
(29)точно, спасибо
а массив ?
32 Reset
 
20.09.12
10:50
тогде почему "Метод объекта не обнаружен (НормализацияБитыхСсылокВШине)"
не понимаю
33 Reset
 
20.09.12
10:50
(31) массив тоже
34 Alex_MA
 
20.09.12
10:50
да, вопрос
35 Alex_MA
 
20.09.12
11:01
почему то структура не заполняется даже примитивными типами
http://gyazo.com/ba9a347c3d6bd4d617296f13144db560
36 Reset
 
20.09.12
11:03
Имя поля (ключ сктруктуры) не может быть "1"
37 Reset
 
20.09.12
11:03
те же ограничения, что и для идентификаторов
38 Reset
 
20.09.12
11:04
хочешь числа как ключи - используй соответствие
39 Reset
 
20.09.12
11:05
должен покинуть форум на время, к сожелению. Работа
40 Alex_MA
 
20.09.12
11:06
(39)спасибо
41 Alex_MA
 
20.09.12
12:54
Как во внешнем источнике понять, есть ли данная ссылка "ba9eb5c2-cbda-11e1-990f-000c29f2dcae" или нет ?

Я делаю так:

Если БазаCOM.Справочники[ИмяСправочника].ПолучитьСсылку(БазаCOM.NewObject("УникальныйИдентификатор", "ba9eb5c2-cbda-11e1-990f-000c29f2dcae")).ПолучитьОбъект() = Неопределено Тогда

// Ссылки нет

КонецЕсли;

Но иногда в таких случаях, при получении объекта некотрых метаданных программа уходит в разные модули, например РаботаСОбщимиПеременными.ПолучитьИзКэшаКонфигурации(Имя, НайденноеЗначение, Кэш, ПоместитьВКэш) Экспорт

и заваливается на ошибке.

Как еще можно проверить есть ли данная ссылка ?
42 Reset
 
20.09.12
13:54
(41) Так можно
Запрос=БазаCOM.NewObject("Запрос","Выбрать Истина где Не (&Ссылка).Ссылка is null");
Запрос.УстановитьПараметр("Ссылка",ПроверяемаяCOMСсылка);
Если Запрос.Выполнить().Пустой() тогда // Нет объекта по ссылке
43 Alex_MA
 
20.09.12
16:56
(42)красиво
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн