|
Виснет COM-соединение при обмене | ☑ | ||
---|---|---|---|---|
0
desonet
28.01.25
✎
10:58
|
Здравствуйте!
Платформа: 1С:Предприятие 8.3 (8.3.25.1520) Бухгатерия: Бухгалтерия предприятия КОРП, редакция 3.0 (3.0.168.19) Торговля: Управление торговлей, редакция 11 (11.5.20.80) ОС: Windows Server 2022 Standard Версия 21Н2 (сборка ОС 20348.587) SQL: MS SQL Server 2012 У меня настроен обмен между базами торговли и бухгалтерии через COM соединение. Сам обмен запускается из базы бухгалтерии. Запускаю обмен вручную и он зависает на окне сопоставления объектов, т.е. не доходит до выгрузки данных из торговли. Я сделал эксперимент. Написал обработку, которая из базы источника по COM-соединению вызывает процедуру общего модуля. Поставил точку останова в базе источнике, но после вызова процедуры точка останова не срабатывает. Само COM соединение активно. На сервере 1С режим дебага включен. Для эксперимента я снижал релиз 1С, т.к. новый релиз возможно с ошибками, но ситуация с зависанием не исчезла. Первый раз такое вижу. Есть у кого-нибудь идеи как можно побороть эту проблему? |
|||
1
Lite777888
naïve
28.01.25
✎
11:07
|
(0) Проверить упешность ком соединения в настр синхр, проверить ЖР ,журнал виндовс,.почистить сереверный кэш ,перезагрузить службы ,сервер ит д
|
|||
2
Prog_man
гуру
28.01.25
✎
11:21
|
(0) как вариант, настроить обмен через файлы, с COM регулярно какие то глюки случаются.
|
|||
3
desonet
28.01.25
✎
12:05
|
(1) Проверка COM-соединения проходит успешно.
В ЖР и журнале Windows никаких ошибок нет. Сервер свежеустановленный. Кэши я тоже чистил (2) Вариант хороший, но есть ещё самописный обмен с отраслевой базой и он работает только через COM соединение и этот печалит Я думаю, что если написать в техподдержку 1С. Если смысл или в таких случаях они отфутболят типовыми фразами? |
|||
4
craxx
28.01.25
✎
12:14
|
(0) Права в компоненте службы компонент проверить.
|
|||
5
Pprog151713
28.01.25
✎
12:30
|
Что такое сопоставление объектов? Запрос к данным источника?
|
|||
6
eddy_n
28.01.25
✎
12:35
|
(0) У всех общих модулей в обмене присутствует признак Внешнее соединение?
|
|||
7
Ногаминебить
28.01.25
✎
13:47
|
Работало и перестало? Тогда стоит начать с выявления причины.
Сменили платформу, сменили конфигурацию, поменяли обработку. |
|||
8
desonet
28.01.25
✎
14:46
|
Для тестирования в базы, к которой подключаюсь через COM, в общем модуле написал процедуру. Тело процедуры пустое.
Вызываю эту процедуру через COM и получаю ошибку: Ошибка при вызове метода контекста (Connect): Произошла исключительная ситуация (V83.COMConnector.1): Ошибка формата потока |
|||
9
ChMikle
28.01.25
✎
14:50
|
(8) комконнектор проверьте (у вас на одной платформе базы) ?
|
|||
10
KuznecovvIvan
28.01.25
✎
15:05
|
(0) Если база клиент-серверная и размещена на сервере в определенном кластере, можно попробовать прописать на другой кластер и соединяться через com по нему. У нас так тоже было. Просто на одном кластере зависало соединение. Когда прописывали на другой работало нормально.
|
|||
11
eddy_n
28.01.25
✎
15:24
|
(9) Если были бы на разных, процесс бы не стартовал.
|
|||
12
desonet
29.01.25
✎
01:33
|
С подключением через COM соединение разобрался.
При обмене через COM проблема в другом. Создал две пустые базы для тест обмена. В одной базе создал простую обработку, которая соединяется через COM Текст обработки ================================================================================================================================== &НаСервере Процедура КомандаВыполнитьОбменНаСервере() Сервер = "192.168.0.6"; База = "prog_test_2"; Пользователь = ""; Пароль = ""; V83 = Новый COMобъект("V83.ComConnector"); СтрокаПодключения = "srvr='" + СокрЛП(Сервер) + "'; ref='" + СокрЛП(База) + "'; usr='" + СокрЛП(Пользователь) + "'; pwd='" + СокрЛП(Пароль) + "';"; Попытка База1С = V83.Connect(СтрокаПодключения); Сообщить("Подключение к базе прошло успешно"); Исключение Сообщить(ОписаниеОшибки()); Возврат; КонецПопытки; СтруктураПараметров = Новый Структура; Ответ = База1С.ОбщегоНазначения.ПроверкаОбмена(СтруктураПараметров); Сообщить(Ответ); КонецПроцедуры &НаКлиенте Процедура КомандаВыполнитьОбмен(Команда) КомандаВыполнитьОбменНаСервере(); КонецПроцедуры ================================================================================================================================== Во второй базе создаю общий модуль "Общего назначения". В свойствах модуля ставлю флажки "Сервер" и "Внешнее соединение". Текст общего модуля ================================================================================================================================== Функция ПроверкаОбмена(СтруктураПараметров) Экспорт Возврат "Успех"; КонецФункции ================================================================================================================================== В обработке первой базы, которая подключается ко второй и вызывает функцию "Проверка обмена" из общего модуля, если передать параметр "СтруктураПараметров" с типом "Структура", то соединение наглухо зависает. СтруктураПараметров = Новый Структура; Ответ = База1С.ОбщегоНазначения.ПроверкаОбмена(СтруктураПараметров); А если передать параметр "СтруктураПараметров" в виде строки, то 1С не зависает. |
|||
13
desonet
29.01.25
✎
03:11
|
Продолжение.
Я перезапустил службу "Агент 1С Предприятия" и повторил выполнение обмена на тестовых базах. И что удивительно, что при передаче в параметра типа Структуры обмен состоялся успешно. СтруктураПараметров = Новый Структура; Ответ = База1С.ОбщегоНазначения.ПроверкаОбмена(СтруктураПараметров); Я обрадовался и запустил обмен между базой торговли и бухгалтерии и он завис. В этот момент я заново запускаю обмен между тестовыми базами и он тоже виснет. Я перезапускаю Агент сервера 1С Предприятия и опять обмен между тестовыми базами работает до тех пор пока я не запущу обмен между рабочими базами |
|||
14
craxx
29.01.25
✎
04:07
|
(12) Просто структуру ты по COM не передашь
нужно так СтруктураПараметров = База1С.NewObject("Структура");
Ответ = База1С.ОбщегоНазначения.ПроверкаОбмена(СтруктураПараметров); |
|||
15
desonet
29.01.25
✎
05:12
|
(14) Спасибо за подсказку! Поправил в рабочей базе и заработало.
До переустановки операционной системы на сервере 1С мой вариант описания структуры покатывал, а теперь нет. Хм! Странная 1С. |
|||
16
desonet
29.01.25
✎
05:14
|
Как-то мне стыдно, что такая простая ошибка была.
Надо меньше сидеть в 1С и больше гулять, проветривать мозги. ))) |
|||
17
craxx
29.01.25
✎
06:13
|
(15) Да ну неправда, не мог он прокатывать, никогда нельзя было через ком протащить что-то кроме простых типов Число, Строка, Дата, Булево.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |