|   |   | 
| 
 | Виснет 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) Да ну неправда, не мог он прокатывать, никогда нельзя было через ком протащить что-то кроме простых типов Число, Строка, Дата, Булево.     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |