Страницы: 1
RSS
Ошибки СОМ-соединения
 

Коллеги, всем день добрый, нужна ваша помощь. Бьюсь который день с такой проблемой, впервые столкнулся – мне нужно было, чтобы при записи или проведении документа он автоматически попадал через СОМ-соединение из источника в приемник. Но я запускаю базу, в константах указываю путь (пока что это файловый вариант), теперь при открытии списка документов, у меня идет процесс соединения, по его окончанию написано что «Подключение к конфе выполнено успешно!». Однако при создании документов и их последующей записи\проведении, они не падают в базу приемник. Почему так может быть?

Я добавил константу ПутьБазыБК и добавил на форму «Параметров учета», указал путь там к базе (на тесте - база в файловом варианте, а вообще на сервере расположена). Добавил в модуле внешнего соединения переменную, как и в модуле регламентных заданий и в модуле формы списка документов и НИЧЕГО не получается!

 
Добрый день! Можно попробовать использовать конвертацию данных. То есть вы сначала создаете правила, затем вы записываете правила в какой-нибудь макет и потом уже используете обработку. УниверсальныйОбменДаннымиЧерезXML есть в каждой конфигурации.
 
Цитата
PAA написал:
Добрый день! Можно попробовать использовать конвертацию данных. То есть вы сначала создаете правила, затем вы записываете правила в какой-нибудь макет и потом уже используете обработку. УниверсальныйОбменДаннымиЧерезXML есть в каждой конфигурации.
Спасибо! А если я настрою через обмен данными между базами и прописать регламентное задание, чтобы по времени выполнялось? Мне просто надо получать оперативно эти данные из другой базы. Между собой, они идентичны этим документом.
 
Да, почему нет, так тоже можно. Но тогда вам придется заводить свой обмен данными или модифицировать, например, полный. Прописать игнорирование всех объектов, кроме этого документа и связанных справочников/документов.  
 
Добавлю еще.. Писать свой обмен через СОМ тоже можно, только нужно помнить, что передавать можно только простые типы, а в приемнике искать/создавать и заполнять объекты. У меня кстати было, что при старте система анализировала через СОМ- соединение имеется ли уже соединение у «входящего» пользователя и предлагала переподключиться. Все отрабатывалось нормально у большинства, но у некоторых пользователей, которые настроены были не напрямую, а через некий посредний сервак (таково требование безопасности, я не в курсе) СОМ-соединение не отрабатывалось.

Тогда наша проблема была в доступе. Поэтому, если 1С пашет нормально, а администрирование серверов нет, то надо просто открывать, какой порт или доступ, потому что наверняка там сначала все всё поназакрывали, потом открыли диапазон 1С, но видимо не все.

 

Вообще исходя из практики могу сказать, что если сервер 1С стоит на Windows х64, то рано или поздно Вы столкнетесь с проблемой создания COM-соединения, если соединение инициируется на стороне сервера. На стороне клиента COM-соединение работает нормально, на стороне сервера вываливается с ошибкой.

В свое время столкнулся с проблемой создания COM-соединения на стороне сервера. Проблема трудно диагностируется, так как код, прекрасно работающий под клиентом, отказывается работать на сервере, например, если код исполняет регламентное задание.

Кстати, вот если на Windows-сервере 64-бит стоит Сервер 1С Предприятие 64-бит, то такой проблемы не будет. Уставщик позволяет поставить COM-коннектор без установки самого севера. Это полезно, когда приложение реализовано на платформе 8.3, а COM-соединение нужно к базам на 8.2.

 
Еще может быть такое - при попытке подключения через COM-соединение к базе-источнику выдается сообщение об ошибке. Что-то вроде: «Ошибка при вызове конструктора (COMObject): -2147221164(0x80040154): Класс не зарегистрирован».
Для устранения подобной ошибки перво-наперво нужно зарегистрировать библиотеку клиента - приемника. Причем для разных версий клиентов одной версии платформы нужно регистрировать свою библиотеку. То есть для разных сборок платформы версии 8.3 нужно заново регистрировать версию библиотеки нужного релиза платформы. Для платформы версии 8.2 такой же подход.
Библиотека регистрируется следующим образом. Запускается Командная строка из-под Администратора, в ней пишется команда regsvr32 "[Путь к библиотеке]\bin\comcntr.dll и команда выполняется. Все открытые приложения 1С при этом лучше закрыть. При успешной регистрации будет выдано сообщение об успехе. Если выдается сообщение об ошибке, то нужно проверить путь, по которому находится библиотека, и все права.
Также эту команду можно поместить в cmd-файл и запустить его с правами Администратора. Если такая ошибка выпадает при попытке подключить к БД на платформе 7.7, то следует проверить реестр на предмет наличия регистрации 7.7-коннектора.
 
Может быть и так, что при попытке установить COM-соединение выпадает ошибка с сообщением о несоответствии версии клиента БД-источника. В этом случае проблема решается регистрацией правильной версии библиотеки comcntr.dll так, как это выше описал коллега.
Страницы: 1