Имя: Пароль:
1C
1С v8
COM-соединение перестало создавать объекты - как заставить?
0 Garry1010
 
02.06.17
00:13
COM-соединение не создаёт объекты - как обратно заставить её работать? Платформа 8.3.9.2033, базы клиент-сервер на ьелкой скуле, соединения вида БП->УТ или УТ->БП.

Устанавливаю соединение (тут проблем нет - не в первый раз), обрабатываю данные в другой базе, по ходу дела делаю типа:
спр = COM.Справочники[тип].СоздатьЭлемент();
...или...
спр = COM.Документы[тип].СоздатьДокумент();

Пока писал и отлаживал на файловой, всё работало и создавалось. Перешёл на тестовую скульную базу всё перестало работать: Отладчик доходит до сих строк, F10 - текущая строка отладки пропадает, отладка прекращена. Так как это по COMу, то никаких сообщений нет. Причём ни туда, ни сюда.

Перезапуск служб скуля и 1С не помогает, сервак перезагружал - не помогает. Замена скобок на прямое имя не помогает. Пытался новый общий модуль сделать - не помогает. Пытался даже во второй базе сделать модуль, чтобы он напрямую в своей базе (без всяких COM'ов) создавал объект (по номеру/коду - не важно) - так он почему-то не вызывается по COM'у, видимо.
До этого по COM'у почему-то ещё не работал метод ПолучитьОбъект() - потом вдруг заработал.

Я в трансе... Глюк конкретной платформы? Обойти... можно? Есть варианты?
1 Неверный Параметр И
 
02.06.17
00:16
Хрустальный шар сообщает, что в модуле объекта написана ересь, которая не компилируется в режиме внешнего соединения.
2 Неверный Параметр И
 
02.06.17
00:16
Или на сервере.
3 Неверный Параметр И
 
02.06.17
00:20
И да, об ошибках в типовой иди негодовать на партнерском, а не здесь (:
4 Garry1010
 
02.06.17
07:09
Я лишь спрашиваю, есть ли такое и есть обходной маневр. Может, кто предложит чего "хитрого"?
5 mehfk
 
02.06.17
07:14
Конфигурация - проверка конфигурации и поставь галочки "внешнее соединение" и "внешнее соединение клиент-сервер".
6 Адинэснег
 
02.06.17
07:17
и в журнале регистрации в базе-ком-серевере тоже пусто? может права
7 1dvd
 
02.06.17
07:55
(6) +1 к правам
8 Мимохожий Однако
 
02.06.17
08:14
(4) Пиши в журнал регистрации каждый шаг обработки. Если записи нет, то в этой строке ошибка. Для отладки хватит, потом закомментируешь
9 skela1c
 
02.06.17
09:02
а какие клиенты используются 32 или 64?
10 Неверный Параметр И
 
02.06.17
15:05
(9) Это, обычно, выясняется на стадии подключени (:
11 Garry1010
 
04.06.17
14:44
(5) Да уж каких галок только не ставил - плевать.
(6)(7) Вряд ли - права-то полные, такие же полные, как и в файловой копии той(!) же самой базы.
(9) Как обычно - а обычно пока ещё используются везде 32-битные.;)

А может быть проблемой вкорячивание (не мною) 32-битного 1С-Сервера на 64-битную Ось и такой же (64) SQL?
12 Неверный Параметр И
 
04.06.17
14:54
(11) А результат проверки (5) в базе, к которой ты подключаешься, приведи пожалуйста. Это не страшно, там просто текст будет...
13 Garry1010
 
04.06.17
15:07
(12) Я знаю что там будет.;) Вы лучше скажите, что искать? На что обратить внимание, по вашему мнению? - Просто там много мелочи разной.
14 Неверный Параметр И
 
04.06.17
15:11
(13) Все, что касается справочника или документа, идентификаторы которых ты так не хочешь раскрывать.

Там будут ошибки по что-то не найдено, не обнаружено, и другие.
15 Garry1010
 
04.06.17
15:28
(14) Ничего не понимаю...
Я явно указал, что это касается, например, справочника Контрагенты - какие там могут скрываемые идентификаторы? Это типовой справочник - естественно, в нём никаких ошибок конфигурации нет (сейчас запускал спецом проверку).
16 Неверный Параметр И
 
04.06.17
15:33
Это типовой справочник - естественно, в нём никаких ошибок конфигурации нет [x]
17 Garry1010
 
04.06.17
15:45
Я уже дошёл до того, что сделал просто отдельный серверный(!!!) общий модуль и там написал типа:

Процедура СоздатьОбъект(тип, ГУИД) Экспорт
    
    COM = УстановитьСоединение(Константы.СинхСтрокаСоединенияБП.Получить());
    Если COM = Неопределено Тогда
        Возврат
    КонецЕсли;
    
    Если тип = "ПоступлениеБезналичныхДенежныхСредств" Тогда
    //строкой ниже Отладчик просто выскакивает и ВСЁ ТУТ
    док = COM.Документы.ПоступлениеБезналичныхДенежныхСредств.СоздатьДокумент();
    док.УстановитьСсылкуНового(COM.Документы[тип].ПолучитьСсылку(COM.NewObject("УникальныйИдентификатор", ГУИД)));
    док.Номер = "0000-000000";
    док.Записать(COM.РежимЗаписиДокумента.Запись);
    КонецЕсли;
    
КонецПроцедуры


Так и оно не работает, если вторая база в клиент-серверном виде. Если она в файловом, то всё прекрасно отрабатывает.
Естественно, что само соединение устанавливается (как я писал ранее - не в первый раз работаю с КОМом).
Вызов из обработчика подписки на событие из серверного модуля (мне там клиентского ничего не нужно, в общем-то).
18 h-sp
 
04.06.17
15:58
(17) ну выкладывай сюда тексты всех процедур ПередЗаписью и ПриЗаписи во всех подписках. Все подписки проверил на (5) проеркой конфигурации?
19 Garry1010
 
04.06.17
16:04
Кстати, попутно вопрос (что-то раньше не обращал внимания): а обработчики подписок должны располагаться только в серверных общих модулях или есть варианты?
20 Dotoshin
 
04.06.17
16:07
(17) У тебя соединение то устанавливается?
Оберни в попытку COM = УстановитьСоединение(Константы.СинхСтрокаСоединенияБП.Получить())
и убедись, что соединение устанавливается.
21 F00FC7C88
 
04.06.17
16:10
Вжух! И у Вас COM-соединение создает объекты!
22 h-sp
 
04.06.17
16:13
(19) только в тех общих модулях, который пройдут проверку (5) на внешнее соединение. Причеи весь общий модуль должен пройти проверку, а не одна процедура.
23 Garry1010
 
04.06.17
16:32
(20) Я же написал, что соединение устанавливается.
(21) А что?-_О В файловом варианте прекрасно работает. Да и ранее в УПП (которая не УФ) прекрасно работало.
24 Garry1010
 
04.06.17
16:47
(22) А при чём тут проверка на внешнее соединение, если вопрос про обработчик подписки на событие? COM тут вообще не при делах.
25 h-sp
 
04.06.17
17:06
(24) это не то чтобы причем, это вообще самое главное. Поэтому обязательно проверь на сервер и внешнее соединение все эти модули. Особенно если они не типовые.
26 h-sp
 
04.06.17
17:11
(24) но вообще-то да, если в файловой работает, значит внешнее соединение проверять не надо. Тогда запусти проверку с галкой сервер на эти общие модули.
27 Garry1010
 
04.06.17
17:25
(26) А зачем? Вы мне смысл можете прояснить? Ибо это совершенно добавочные модули как раз для обработки подписки на события записи некоторых объектов, после чего оно пытается закинуть эти объекты по com-соединению в другую базу. Никто более из этого модуля ничего не вызывает - он вещь в себе.
28 h-sp
 
04.06.17
17:34
(27) вы чего? Не этой базы модули. А ту базу откройте.
29 h-sp
 
04.06.17
17:38
(28) модули той базы. Которую вызываешь.
30 Garry1010
 
04.06.17
17:38
А что вы в той-то хотите увидеть? Все действия выполняет ТЕКУЩАЯ база по COM'у - чего в той-то базе смотреть? Та база вообще может быть совершенно типовой - пофик.
31 Неверный Параметр И
 
04.06.17
17:56
(30) Успехов Вам в Вашем Мероприятии. Семь футов под килем, удачной посадки и сетакое...
32 h-sp
 
04.06.17
17:58
(30) еще раз: Все действия выполняет ВЫЗЫВАЕМАЯ база. Смотрите   и проверяйте процедуры в той базе.
33 Garry1010
 
04.06.17
18:19
(32) Ещё раз: я привёл конкретный кусок, который тупит.
Вопрос, собственно, простой: было ли у кого-то такое и/или может ли кто-то проверить на клиент-сервере между базами БП3 и УТ11 подобный кусок с учетом добавления кода по созданию COM'а?
Условия (может, важно..): клиент и сервак на одной машине/Винде, клиент - 32 бита, Винда (12-ка) - 64 бита, SQL (12-й) - 64 бита, сервер 1С (не моя работа) - 32 бита (имхо, что последнее не должно влиять).

(31) Я уже понял про вас - жаль, что здесь, кажется, нет игнор-листа...:((
34 Неверный Параметр И
 
04.06.17
18:28
(33)
>жаль, что здесь, кажется, нет игнор-листа...

Стаж: 6 лет 9 месяцев 30 дней.
Дык! Ну ёлы-палы...