Неизвестная ошибка при вызове метода контекста connect неизвестная ошибку и COM соединения с базами 1С на разных версиях платформы

Неизвестная ошибка при вызове метода контекста connect неизвестная ошибку и COM соединения с базами 1С на разных версиях платформы ФСС

TurboConf
— расширение возможностей Конфигуратора 1С

Переустановить платформу под правами Администратора или под пользователем, у которого есть такие права.

В платформе 1С сообщения об ошибках бывают достаточно запутаны, и без должных навыков разобраться в причинах достаточно сложно. Вот и сообщение об ошибке при вызове контекста может ввести в ступор начинающего разработчика. Однако в подавляющем большинстве случаев мы видим подобное сообщение, если разработчик допустил ошибку в своем коде. Причем речь зачастую идет не об орфографических ошибках, а о логических.

1.

progres488

Сейчас в теме

Есть УТП 1.2.8.7, туда были перенесены номенклатура и контрагенты, был всунут обновленный модуль обмена с сайтом от битрикса. Пытаюсь сделать Поступления товаров и услуг, и при проведении выдает ошибку

по причине:


Ошибка выполнения запроса


по причине:


Ошибка при выполнении операции над данными:


Ошибка SQL: Деление на 0


по причине:


Ошибка SQL: Деление на 0


по причине:


Деление на 0 значения типа Numeric

Вот в этой части

Функция СформироватьЗапросПоТабличнойЧасти(ДокументОбъект, ИмяТабличнойЧасти, СтруктураПолей,


СтруктураПростыхПолей = Неопределено) Экспорт

Запрос = Новый Запрос;

ТекстЗапроса = «»;

ДокументМетаданные = ДокументОбъект. Метаданные();

Для Каждого Реквизит Из СтруктураПолей Цикл

Запрос = Новый Запрос;

Если СтруктураПростыхПолей. Свойство(«Проект») Тогда

// Установим параметры запроса.


Запрос. УстановитьПараметр(«ДокументСсылка» , ДокументОбъект. Ссылка);

Подскажите как это можно вылечить


КонецЕсли;

КонецФункции // СформироватьЗапросПоТабличнойЧасти()

Если не получилось как в способе №1, то можно вручную зарегистрировать самому эту компоненту.

Перед этим нам необходимо изменить Параметры контроль учетной записи.

Для Windows 7 нам необходимо зайти в Пуск затем в Панель управления.

Для Windows 10 нам необходимо в левом нижнем углу панели задач в строке поиска набрать Панель управления и перейти по открывшейся ссылке.

В правом верхнем углу Панели управления выбрать Просмотр-Мелкие значки и затем в списке перейти в Учетные записи пользователей.

<img src="https://www.vdgb.ru/upload/images/content-img
.png» alt=»Учетные записи пользователей» title=»Учетные записи пользователей»>

Там выбрать Изменить параметры контроля учетных записей.

<img src="https://www.vdgb.ru/upload/images/content-img

.png» alt=»Параметры контроля учетных записей» title=»Параметры контроля учетных записей»>

Затем поставить ползунок в самом нижнем положении.

Купон на ОЗОН за покупку программ 1С

<img src="https://www.vdgb.ru/upload/images/content-img

.png» alt=»Ползунок параметров контроля учетных записей» title=»Ползунок параметров контроля учетных записей»>

И перезапустить компьютер.

После перезагрузки необходимо:

Для Windows 7 надо перейти в Пуск, затем в строке поиска ввести cmd.exe,нам покажет что найдена Командная строка и, щелкнув по ней правой клавишей мыши, выбрать «Запуск от имени администратора».

Для Windows 10 нам необходимо в левом нижнем углу панели задач в строке поиска набрать Командная панель или cmd.exe и, щелкнув по ней правой клавишей мыши, выбрать «Запуск от имени администратора».

<img src="https://www.vdgb.ru/upload/images/content-img

.png» alt=»Запуск командной строки» title=»Запуск командной строки»>

У нас откроется Командная строка, где нам необходимо ввести команду:

1. Для платформы x86

Regsvr32 «C:\Program Files (х86)\1cv8\номер версии вашей платформы\bin\comcntr.dll» (regsvr32пробел»C:\Program Files (х86)\1cv8\номер версии вашей платформы\bin\comcntr.dll»).

<img src="https://www.vdgb.ru/upload/images/content-img

.png» alt=»Команда для платформы x86″ title=»Команда для платформы x86″>

2. Для платформы х64

Regsvr32 «C:\Program Files\1cv8\номер версии вашей платформы\bin\comcntr.dll» (regsvr32пробел»C:\Program Files\1cv8\номер версии вашей платформы\bin\comcntr.dll»).

<img src="https://www.vdgb.ru/upload/images/content-imgКупон на ОЗОН за покупку программ 1С.png» alt=»Команда для платформы x64″ title=»Команда для платформы x64″>

Затем нажать клавишу Enter.

Если все сделали правильно, то увидите вот такое окно.

<img src="https://www.vdgb.ru/upload/images/content-img
.png» alt=»Успешное выполнение команды» title=»Успешное выполнение команды»>

После этого необходимо перезагрузить компьютер. Как включится, пробуйте снова сделать синхронизацию.

Сделал такую интеграцию:


1. на http-сервис приходит GET-запрос с id-документа на сайте


2. http-сервис запускает функцию в общем модуле и передает в нее id-документа


3. функция проверяет нет ли такого документа в 1С (запрос к БД) и если нет создает новый документ.

Проблема:


При отправке запроса  с id-документа из домашней сети сервера все работает как часы. Причем аутентификация не требуется: просто строка в браузере.


При отправке из любой внешней сети, например, с postman запрос проходит через http-сервис запускает функцию в общем модуле, но при попытке выполнить первый запрос в коде к БД выдает ошибку: «Ошибка при вызове метода контекста (Выполнить)». При этом в запросе происходит авторизация под пользователем у которого есть админские права + еще некоторые.

В чем может быть проблема? У меня ощущение, что это что-то связанное с  правами.

Что показывает отладчик ?

Посмотри журнал регистрации, там полный текст ошибки

Логику в привилегированный модуль. 🙂

А покажи ка, плиз, текст функции.

( 3
) Смотрел, ничего там нет


( 5
) Код несколько сот строк. Проблtма в общем стала ясна. Дал все возможные права пользователю и все сработало! Теперь бы понять какие из прав действительно нужны?


( 4
) Попробую

После того, как всё работает, но через какое-то время ВДРУГ ломается в продакшене, обычно начинают прикручивать и логи и нормальные сообщения об ошибках.

P. S.


Нельзя впихнуть невпихуемое (c) DED

( 4
) — у меня расширение: привилегированный нельзя сделать — галка неактивна


( 7
) «После того, как всё работает, но через какое-то время ВДРУГ ломается в продакшене, обычно начинают прикручивать и логи и нормальные сообщения об ошибках.» — знаю. Но я только учусь, с 1С 1,5 месяца.  Пока не разобрался как в моем случае делать логирование и обработки ошибок, но планирую это сделать позже в любом случае.

Как думаете, как понять какие все-таки права нужно выдать пользователю, чтобы не было избыточных прав?

( 6
) Добавь в запросах «РАЗРЕШЕННЫЕ». И сразу увидишь откуда ноги растут.

1) Я бы не стал учиться сразу с расширений. В 1С и без них полно всякого непонятного для неофита (нюансы, ага)


2) Я бы не стал учиться, не имея доступа к отладчику. Сделал бы копию базы, скопировал бы сервис в конфигурацию и там проводил бесчеловечные эксперименты


3) Если учишься (это учебная база) — дай полные права пользователю и не мучайся. Напиши бумажку со словами «НЕЛЬЗЯ давать полные права!», приклей на монитор


И пообещай себе «потом сделать правильно».

Слона нужно кушать по частям

( 9
) — Спасибо попробую


( 10
) — Пока у меня тестовая база, в прод переведу через пару недель, сроки поджимают. Права, видимо, придется постепенно методом научного тыка чистить.

Возникла также очередная проблема с postmana  все проходит, а вот с моего сайта — нет, причем получаю ошибку 500. Хотя http-сервис работает и без вызова функции в общем модуле возвращает 200. Т.е. какая то ошибка в логическом модуле, нужно ее как-то посмотреть, но вот как не соображу.

Все получилось:


1. Заработала отладка, теперь точно знаю что она запускается в расширении от http запроса. Но вот пока не пойму как точно, методом слепомноготыка.


2. Когда отладчик заработал сразу увидел, что с сайта приходит в кодировке windows-1251, перекодировал и все ОК.

Платформа 8.3.16.1063 (клиент-сервер x86-64).


ЗУП 3.1.12.113


БП 3.0.75.58


При попытке проверить подключение в настройке синхронизации ЗУП-БП вылетает ошибка «Не удалось подключится к другой программе: -2147221005(0x800401F3): Недопустимая строка с указанием класса».


Делал:


c:\Windows\SysWOW64>regsvr32 «C:\Program Files (x86)\1cv8\8.3.16.1063\bin\comcntr.dll»


c:\Windows\SysWOW64>regsvr32 «C:\Program Files\1cv8\8.3.16.1063\bin\comcntr.dll»


Сносил COM-соединение через изменение установки, устанавливал заново. Вручную удалял приложение V83COMConnector через dcomcnfg и добавлял заново. В свойствах приложения убирал принудительную проверку доступа для приложения, применял политику программных ограничений — уровень неограниченный. Прописывал пользователя, из-под которого будет производиться вход: и локального, и доменного. Но каждый раз «Недопустимая строка с указанием класса». Чего ей ещё от меня надо-то?

( 101
) Обычно работает последняя зарегистрированная. Для верность можно сделать рестарт сервера. Можно глянуть в утилитах, но это, как выяснилось, не показатель.

Лично я прекратил эксперименты с разными платформами, все регистрации оставил для крайней платформы, т.е. оставил штатный вариант. А для УПП на 8.3.12 накидаю быстренько http-сервис, админы уже сегодня умудрились поставить Апач, но решили внезапно что IIS лучше. Ну поглядим.

( 102
) Что смотреть в утилитах, каких? Для http://catalog.mista.ru/public/803433/
автор пишет, что х64 не готова. Ответил https://forum.infostart.ru/forum105/topic189152/#message2390967
, но там значение параметра не меняется при переключении зарегистрированной версии. Или у меня не переключается!?

За то время что пытаешься починить COM/OLE можно уже 20 раз было переписать на веб-сервисы.

( 104
) Отвечал уже в ( 67
)


( 103
)+ Наверное зря пытаюсь найти ответ: какая у меня платформа зарегистрирована — это для приложений не 1С, типа Excel. По моему для 1С клиентская часть COM/OLE соединения запускается той версии, из которой устанавливается соединение: если запускаю из 8.3.10.2466 базу на 8.3.10.2466, то то все нормально. А если соединяюсь с базой на 8.3.14.1779, то выдает ошибку разности версий клиентской и серверных частей. А если эту же файловую базу запускаю на 8.3.14.1779 (в рабочем варианте не используется), и пытаюсь соединиться с серверной базой на 8.3.10.2466,  то сразу же получаю ошибку: Ошибка при вызове метода контекста (Connect): Неизвестная ошибка. А с серверной базой на 8.3.14.1779 соединяется медленно, но нормально.


Надо искать способ, чтобы клиентская часть запускалась нужной версии, как серверная.

Читайте также:  Личный кабинет ФСС

Здесь нет ответа. Задал вопрос: Возможно ли OLE-подключение к базам 1С работающих на различных версиях 8.3 на http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=657198#657198

А на рабочем сервере нет этой ошибки, нормально КА2 открывается по OLE соединению, только почему-то всю база, а не отдельный объект (как в УПП/КА1)?

( 110
) Нет, отдельный объект. Но смена регистрированной платформы в реестре требует админские права. Как быть обычным пользователям?

Исправил C:\Program Files (x86)\1cv8\8.3.10.2466\bin\1cv8.exe

Сияющий в темноте

так в серверном варианте разные платформы прокатили?


именно,чтобы обе на серверах,но на разных?

( 114
) Серверные платформы запускаются какие надо, по номеру порта понимают дописанного к имени сервера. А клиентская часть только по зарегистрированной, сменить которую может лишь админ.

Идея интересная, но у меня имеет место быть проблема. Если создавать COM-объекты разных версий с некоторой паузой между этим созданиями, то всё хорошо, вроде бы.


А, вот, если эту паузу не выдерживать — то возможно возникновение двух ошибок (я так и не смог понять причины и следствия когда какая ошибка возникает, скорее всего сначала первая, а при повторной попытке уже вторая)


Запускалось всё под клиентом одной или второй версии (пробовал и так и так) — файловый вариант.


Основной COM-объект был версии 8.3.10.2252, но даже если к нему обращаться как к «v83. COMConnector» то это ничего не меняло


Последовательность создания COM-объектов не влияет, но если получить первую ошибку, переставить их местами — возникает вторая ошибка


Версия клиента 1С: Предприятие так же не влияет.


Запуск в новом сеансе 1С проблему не решает.

Выполняю такой алгоритм:

  ком = новый COMОбъект("V83. COMConnector_8.3.10.2252");
ком. ConnectAgent("srv1");
ком = новый COMОбъект("v83. COMConnector_8.3.8.2054");
ком. ConnectAgent("srv2");  

Возникает первая ошибка:


При повторном запуске она повторяется

Переставляем местами создание COM-Объектов

  ком = новый COMОбъект("v83. COMConnector_8.3.8.2054");
ком. ConnectAgent("srv2");
ком = новый COMОбъект("V83. COMConnector_8.3.10.2252");
ком. ConnectAgent("srv1");  

И возникает вторая ошибка:


При повторном запуске она повторяется

Далее — если снова переставить обратно — ошибка будет повторяться

Значит COM-объект где-то кешируется (платформой 1С? — мало вероятно — т.к. перезапуск клиента ничего не решает) и при попытке создать повторно (пусть и, в общем-то, другой COM-Объект) идёт обращение к старому и происходит какой-то конфликт версий.

Попробовал так же с компонентами редакции 8.2:

  ком = новый COMОбъект("v82. COMConnector_8.2.19.80");
ком. ConnectAgent("srv3");	
ком = новый COMОбъект("V82. COMConnector_8.2.19.68");
ком. ConnectAgent("srv4");  

В общем-то такая же ситуация, но ошибка всегда на ВТОРОЙ по счёту компоненте (не важно какой она версии!!!) и всегда такая:


  {ВнешняяОбработка. ВнешняяОбработка1. Форма. Форма. Форма}: Ошибка при вызове метода контекста (ConnectAgent)
	ком. ConnectAgent("srv4);
по причине:
Неизвестная ошибка  

При этом если создавать и использовать их отдельно (посадил на разные кнопки)


То ситуация такая


1. Любую создаю — всё нормально


2. Создаю вторую — возникает ошибка


3. Создаю первую — ошибки нет


4. Создаю вторую — ошибка


5. Повторно создаю вторую — ошибки нет


6. Снова создаю вторую — ошибки нет


7. Создаю первую — ошибка


8. Создаю первую — ошибки нет


9. Создаю вторую — ошибка


10. Создаю вторую — ошибки нети

То есть первый раз создаётся нормально и если сразу создавать другой версии — будет ошибка — но при повторном создании — ошибки не будет — но она снова будет у первой, что при повторном создании так же ошибки не будет


Поэтому с v82 я написал вот так — и в общем-то оно работает

  попытка
ком = новый COMОбъект("v82. COMConnector_8.2.19.80");
ком. ConnectAgent("srv3");	
исключение
	сообщить("v82. COMConnector_8.2.19.80: "+ОписаниеОшибки());
	ком = новый COMОбъект("v82. COMConnector_8.2.19.80");
	ком. ConnectAgent("srv3");	
конецпопытки;
попытка
ком = новый COMОбъект("V82. COMConnector_8.2.19.68");
ком. ConnectAgent("srv4");
исключение
	сообщить("v82. COMConnector_8.2.19.68: "+ОписаниеОшибки());
	ком = новый COMОбъект("V82. COMConnector_8.2.19.68");
	ком. ConnectAgent("srv4");
конецпопытки;  

Попытка же написать так же для 8.3

  попытка
ком = новый COMОбъект("V83. COMConnector_8.3.10.2252");
ком. ConnectAgent("srv1");	
исключение
	сообщить("V83. COMConnector_8.3.10.2252: "+ОписаниеОшибки());
	ком = новый COMОбъект("V83. COMConnector_8.3.10.2252");
	ком. ConnectAgent("srv1");	
конецпопытки;
попытка
ком = новый COMОбъект("v83. COMConnector_8.3.8.2054");
ком. ConnectAgent("srv2");
исключение
	сообщить("v83. COMConnector_8.3.8.2054: "+ОписаниеОшибки());
	ком = новый COMОбъект("v83. COMConnector_8.3.8.2054");
	ком. ConnectAgent("srv2");
конецпопытки;  

первый раз отработало, но повторный запуск привёл к ошибке


V83. COMConnector_8.3.10.2252:

Попробовал работать параллельно с компонентами V82 и v82

  ком = новый COMОбъект("v82. COMConnector_8.2.19.80");
ком. ConnectAgent("srv3");	
ком = новый COMОбъект("V83. COMConnector_8.3.10.2252");
ком. ConnectAgent("srv1");	  

Никаких ошибок не возникает!

Возможно эти проблемы чисто связаны с моей конфигурацией ОС — использую windows 8


А может дело в используемых релизах 1С: Предприятие, клиента и компонент (хотя на клиенте 8.2.19.80 я тоже попробовал — всё то же самое)

Может, у меня просто компоненты как-то неправильно установлены или какие-то заморочки с настройками COM+


Я, например, не нашёл типовых компонент в разделе COM+ как на картинках автора 🙁


Хорошо бы кто-то ещё это всё проверил бы на своих конфигурациях платформ и компонент

2.

Torin

Сейчас в теме

— от чьего имени выполняются регламентные и фоновые задания ! ! ! !

3.

machneff

Сейчас в теме

Да, имя пользователя задал, со всеми разрешениями и отключенной «защитой от опасных действий»

Неизвестная ошибка при вызове метода контекста connect неизвестная ошибку и COM соединения с базами 1С на разных версиях платформы

5.

chg

Сейчас в теме

( 3
)UAC на сервере(ах) не включен?

7.

machneff

Сейчас в теме

( 5
) вполне возможно, прав на админство нет

8.

Torin

Сейчас в теме

9.

machneff

Сейчас в теме

( 8
) к сожалению не мой случай

4.

chg

Сейчас в теме

У пользователя фонового задания есть права на Внешнее соединение?

6.

machneff

Сейчас в теме

10.

machneff

Сейчас в теме

Создал регламентное задание в конфигураторе, процедура COM соединения отработала! Почему не работает через доп! обработку до сих пор не понятно(

11.

Programmer_Ekatetina

Сейчас в теме

Попробуйте добавить в ПараметрыРегистрации внешней обработки:


ПараметрыРегистрации. ВерсияБСП = «1.2.1.4»;

12.

ben19791010

Сейчас в теме

13.

Xershi

Сейчас в теме

Возможно у вас 2 платформы.


Посмотри текст ошибки какой пишет.


В фоне код на сервере выполняется. Возможно нет компиляции.

16.

machneff

Сейчас в теме

18.

Xershi

Сейчас в теме

( 16
)99% что в этом. Отладчик даст 100 % ответ.

21.

machneff

Сейчас в теме

( 18
) да, сделаю отладку, результаты сообщу)

23.

machneff

Сейчас в теме

( 18
) Сделал отладку))

Результат:


Регламентное задание по расписанию отработало без ошибок))

Вообщем варианты решения следующие:

1. Сделать обмен через регламентное задание конфигурации, а не внешнюю обработку


2. Сделать обертку «comcntr.dll» по примеру

https://infostart.ru/public/610960/

3. Оставить костыль отладки))

Остановлюсь на первом

24.

Xershi

Сейчас в теме

( 23
) вероятно безопасный режим сработал. Пишите код правильно и проблем не будет.

14.

KVIKS

Сейчас в теме

Dll какая зарегистрирована 32 или 64. Если сервер 64, а клиент 32, то фоновое задание всегда выполняется на сервере, и может зарегистрировать ту dll?

15.

1Eset

Сейчас в теме

Обычно он ругается, если не зарегистрирован V83. COMConnector, он у Вас зарегистрирован?

17.

machneff

Сейчас в теме

19.

ben19791010

Сейчас в теме

20.

machneff

Сейчас в теме

( 19
)

тут проблема что регламентное не запускается по расписанию, у меня запускается, но в процессе выполнения выдаёт ошибку

22.

ben19791010

Сейчас в теме

( 20
) надо попробовать оставить только одну платформу и возможно станет яснее

Платформа 8.3.16.1063 (клиент-сервер x86-64).


ЗУП 3.1.12.113


БП 3.0.75.58


При попытке проверить подключение в настройке синхронизации ЗУП-БП вылетает ошибка «Не удалось подключится к другой программе: -2147221005(0x800401F3): Недопустимая строка с указанием класса».


Делал:


c:\Windows\SysWOW64>regsvr32 «C:\Program Files (x86)\1cv8\8.3.16.1063\bin\comcntr.dll»


c:\Windows\SysWOW64>regsvr32 «C:\Program Files\1cv8\8.3.16.1063\bin\comcntr.dll»


Сносил COM-соединение через изменение установки, устанавливал заново. Вручную удалял приложение V83COMConnector через dcomcnfg и добавлял заново. В свойствах приложения убирал принудительную проверку доступа для приложения, применял политику программных ограничений — уровень неограниченный. Прописывал пользователя, из-под которого будет производиться вход: и локального, и доменного. Но каждый раз «Недопустимая строка с указанием класса». Чего ей ещё от меня надо-то?

( 0
)дык в реестре то что сидит ?

( 0
) Переходи на веб и http сервисы

«c:\Windows\SysWOW64>regsvr32 «C:\Program Files\1cv8\8.3.16.1063\bin\comcntr.dll»» кривая строка

Для настройки синхронизации используй файлы — самое стабильное

( 1
) Поиск в реестре по V83COMConnector не дал результатов. Или что имеется в виду?


( 2
) Это не решение конкретной проблемы.


( 3
) Почему кривая? У меня нет там двойных закрывающих кавычек. К тому же система сообщила об успешном выполнении.


( 4
) Если делать через system32, сообщает о том, что не найден указанный модуль, хотя он по этому пути есть.


( 5
) Но не самое оптимальное в нашем случае. И опять же, это не решение конкретной проблемы.

( 6
) Проблема у вас только одна — попытка использования устаревших и уже нихрена реально не поддерживаемых технологий.

Представь что у тебя Linux (или Mac) и действуй исходя из этого.

( 0
) обратись к профессионалам

( 7
) я вангую что он ставит не там и не той разрядности

( 9
) Там проблемы когда несколько разных версий платформы 1С стоят или ставили криво.


Можно совместить 8.1. 8.2 и 8.3 а вот разные 8.3 глючит.


Например если 8.3.16 и 8.3.15 ну или разрядность того.

( 10
) неа. Я подозреваю что надо ставить на сервере, а он пытается на клиенте. Ну и х86-64 и SysWOW64 — как бы противоречие, хотя там надо просто зарегать COM+-приложение

Сияющий в темноте

С учетом того,что стандартный обмен все равно передает xml-файл,то можно перейти на web-сервисы без проблем.

( 12
) это надо публиковать базу, а мало кто это хочет делать

( 13
) так надо опубликовать внутри локальной сети, не надо в глобальном интернете публиковать.

( 14
) COM сервер тоже как бы публикуется, только при установке. И вот в ( 0
) это и есть попытки публикации правильного COM сервера.


Какая нафик разница что публиковать, модуля расширения веб-сервера поставить и через командную строка аналогично базу зарегать на правильный веб-сервер.


Веб сервер апач например банально копированием и httpd.exe -k install

мне регистрация в службах компонентов всегда помогала

Фига тут наванговали уже)


Нет, версия одна и запускаю на сервере. Проблема решилась перезапуском сервера 1С. Всем спасибо за участие.

Вроде COM-соединение возможно с базой на другой версии платформы 8.3 А OLE-соединение возможно?

Решение ошибки подключения через COM


http://catalog.mista.ru/public/97085/

открытие вручную cmd.exe в папке C:\Windows\SysWOW64


запуск от имени администратора


C:\Windows\SysWOW64>regsvr32 «C:\Program Files\1cv8\8.3.16.1063\bin\comcntr.dll»


(кстати на 16-ю версию платформы люди жалуются, нам сейчас пока запретили её ставить)

Панель управления\Все элементы панели управления\Администрирование\Службы компонентов\Компьютеры\Мой компьютер\Приложения COM+\CommCtrl\Роли\CreatorOwner\Пользователи\


Сюда добавить пользователей ОС сервера, под кем приходится запускать регламентные задания, а главное USR1CV8.

В свойствах CommCtrl на вкладке Безопасность убрать галочку Принудительная проверка доступа для приложения, поставить галочку Применить политику программных ограничений, выбрать Уровень ограничений «Неограниченный».


В http://catalog.mista.ru/public/97085/
советуют самому создать V82. COMConnector. Я не создавал.

И лучше физически перезагрузить сервер сам компьютер.

( 20
) > И лучше физически перезагрузить сервер сам компьютер.


У меня все базы на 8.3.10.2466 (x86-64), только одна 8.3.14.1779 (x64) на диапазоне портов 16хх. Когда к ней подключаюсь в строке подключения к имени сервера дописываю «:1640». Даже вручную делаю команду C:\Windows\SysWOW64\regsvr32 «c:\Program Files\1cv8\8.3.14.1779\bin\comcntr.dll», пишет: Успешно выполнено DllRtgisterServer в c:\Program Files\1cv8\8.3.14.1779\bin\comcntr.dll. Но при этом все равно ошибка: «Несоответствие версий клиента и сервера 1С:Предприятия» (8.3.10.2466 — 8.3.14.1779).

И короче регать думать надо что и откуда. И откуда и куда подключаться.


Ну не выйдет цыветочек и x32 не умеет с x64 через COM или OLE

( 22
)+ Точнее не умеет в типовом уровне, можно разные ухищрения

( 22
) Все дело в разной разрядности, с 32-х на 64-х разрядную не подключиться?

( 24
) x64 можно сделать чтобы к x32 подрубилось, наоборот не видел


Спроси у H A D G E H O G s
как он провернул Проблемы выгрузки больших XML в 7.7 и их решения.

( 25
)+ Подразумевал что «обертку COM+» позволяет из x64 1С подключиться к x32 1C по COM/OLE, где x32 выступает как inproc server


А вот как наоборот я лично хз, думать лень но вот товарищ провернул с XML

Ладно, создал (перенес процедуры подключения по Com) базу, которую можно запускать на 8.3.10.2466 x86-64 и 8.3.14.1779 x64. Запускаю на 8.3.10.2466, соединяюсь с базой на 8.3.14.1779, получаю как в рабочей базе ошибку: «Несоответствие версий клиента и сервера 1С:Предприятия». Запускаю на 8.3.14.1779, соединяюсь с базой на 8.3.14.1779, и опять же получаю ошибку: «Несоответствие версий клиента и сервера 1С:Предприятия» (8.3.10.2466 — 8.3.14.1779)!? При чем СисИнфо = Новый СистемнаяИнформация; СисИнфо. ВерсияПриложения пишет версию 8.3.14.1779.

+ Зато открывает из 8.3.14.1779 формы объектов базы на 8.3.10.2466! Получается что клиентскую часть Com-соединения определяет не платформа, из которой устанавливается Com-соединение, а нечто другое. Что?

( 29
) в запуске базы не стоит принудительно 8.3.10?

( 30
) Нет, специально базу сделал, из которой не было Com-соединений (в отличии от рабочей), на другом сервере.

Забей уже на COM и OLE это официально устаревшая технология.


Дальше будет только хуже с работоспособностью.

( 0
)


Выложи обмен на обменник, очень интересно

( 0
) а регать 64-ю утилиту разве не другой приблудой?


У меня на РДП сессии тож проблема была с СОМ клиентским. Сегодня пролечили реганьем 64-битного СОМа. А так админы 2 недели не могли ладу дать — и 1С переставляли и сессию прибивали и профиль новый заводили — результат не было

( 34
) А какой? Регистрация утилиты администрирования серверов x86-64 (8.3.14.1779) дает тот же результат: Успешно выполнено DllRtgisterServer в c:\Program Files\1cv8\8.3.14.1779\bin\comcntr.dll. Правда 8.3.14.1779 на нестандартном диапазоне портов 16хх. Может в этом дело, как правильно зарегистрировать comcntr.dll?

( 36
) Снести 8.3.10.2466, а 8.3.14.1779 пересадить на стандартный диапазон портов 15хх?

( 38
) отмените регистрацию  через regsvr32 /u и больше ничего не регистрируйте.

( 39
) Выполнил: D:\Windows\SysWOW64\regsvr32 /u «D:\Program Files\1cv8\8.3.10.2466\bin\comcntr.dll», но ничего не изменилось: файловая база запущенная на 8.3.14.1779 при Com-соединении с базой на 8.3.14.1779 ошибку: «Несоответствие версий клиента и сервера 1С:Предприятия» (8.3.10.2466 — 8.3.14.1779).

( 40
) ты может на сервере это делаешь, а соединение на клиенте? Ну или наоборот

( 41
) Рабочие сервера разделены на SQL и Терминал, но их пока не трогаю. Все эксперименты делаю на своем компе.

( 36
) Сносить пока не стал, нашел старый системный диск, на нем по одной платформе 8.1, 8.2, 8.3. Обновил до 8.3.14.1779. Иногда возникает «Ошибка при вызове конструктора (COMОбъект): -2147467262(0x80004002): Интерфейс не поддерживается» — это вроде, когда при установки платформы забыл COM отметить? Но при установки 8.3.14.1779 с windows64full нет COM!?


Еще при перезагрузке компа пишет: «DTAget.exe Приложение не удалось запустить, поскольку DTCommonRes.ddt не был найден. Повторная установка приложения может исправить эту проблему» — это тоже по 1С не в порядке?

Можно ли до начала Com-соединения как-то определить (через регистры): какая comcntr.dll (ее версию) в данный момент действует?


И можно ли ее поменять на нужной версии другими способами? (с админ. правами)

И поры бы научиться пользоваться гуглом чтобы находить http://datadump.ru/regsvr32/

При ошибках: различия версий https://i.ibb.co/pdrH9Wy/COM.jpg
, база не обнаружена на сервере (предлагает создать), и других в ОписаниеОшибки() не пишет конкретную причину, а лишь: «Ошибка при вызове метода контекста (Connect): Неизвестная ошибка».

( 44
) regdllview и regdllview-x64

( 48
) это мини-утилитка, там удобнее смотреть, чем в реестре.

( 50
) Скачал, как ей пользоваться?

Нашел https://ibb.co/rQMZNnn
«RegDllView — миниатюрная утилита, выводящая список всех зарегистрированных файлов dll/ocx/exe (COM-регистрация), причем для каждого файла можно посмотреть дату и время последней регистрации, а также список всех записей в системном реестре (CLSID/ProgID).


Кроме этого, RegDllView позволяет без труда отменить регистрацию dll/ocx или, наоборот, зарегистрировать в системе нужные dll/ocx — так, для регистрации нужно будет всего лишь перетащить один или несколько файлов из окна Explorer в окно RegDllView».


Отменить регистрацию понимаю удалением строки с D:\Program Files\1cv8\8.3.10.2466\bin\comcntr.dll, а как зарегистрировать D:\Program Files\1cv8\8.3.14.1779\bin\comcntr.dll — не понял?

Перерегистрировал платформу на 8.3.14.1779, а все равно ошибка различий версий!? https://ibb.co/jVV9jHW
Откуда он берет клиентскую часть 8.3.10.2466?

( 54
) У меня нет проблемы «Недопустимая строка с указанием класса». Запускаю Com-соединение из базы на платформе 8.3.14.1779. RegDllView показывает что запущена comcntr.dll версии 8.3.14.1779. Соединяюсь с базой на 8.3.14.1779. И такая ошибка, откуда он берет клиентскую часть 8.3.10.2466? Хотя если соединяюсь с базой на платформе 8.3.10.2466, то все нормально.

+ Выходит RegDllView только видимость создает, не зря в () писал, что перерегистрация платформы возможна только переустановкой платформы и перезагрузкой компа! Регистрация утилиты администрирования серверов x86-64 (8.3.10.2466) и D:\Windows\SysWOW64\regsvr32 «D:\Program Files\1cv8\8.3.10.2466\bin\comcntr.dll» не помогают. Но сейчас переустановка платформы не помогла!?

Вопрос открытый: По какому принципу запускается именно клиентская часть 8.3.10.2466 для COM соединения? (а не 8.3.14.1779)

Для запуска файловой базы всегда стартует последняя платформа. Для запуска серверной базы смотрит на порт сервера, как-то понимает какую платформу запускать для клиентской и серверной частей. Почему для COM соединения всегда запускается одна и та же клиентская часть? На реестр никак не реагирует, какой указана версия comcntr.dll. Может в файлах ini надо самому настройки менять? Где, в каком?

На сервере в последнее время ставлю только 64разрядный клиент, устанавливая платформу проверяю компоненту com. Предыдущую платформу всегда сношу. Стараюсь до удаления старой платформы не переносить каталог с её инсталляцией в другое место и не удалять его, иначе могут возникнуть сложности с деинсталляцией. Вроде после этого com работает.

( 63
) > Предыдущую платформу всегда сношу.


Нужны 2 версии платформы на одном сервере.

Но придется переписать вызов V83COMConnector, чтобы использовались разные ProgID в обработке обмена. RegDLLView все правильно показывает, но надо понимать, что она показывает, к тому же, там 32 и 64-битные dll надо смотреть соответствующими версиями. По крайней мере, RegDLLView дает очевидное понимание, что сейчас зарегистрировано.

( 0
) Если достало глючное поведение COM, выверенные конвертации хочется использовать прямым подключением — http://catalog.mista.ru/public/1176839/

( 69
) Прекрати уже фигней страдать, технология COM/OLE все, забыть про нее и делать другими способами.


Есть смысла в COM когда дикий легаси из кровавого энтерпрайза и переписывать влом, некому и нет денег.

( 70
) ну так у него так все и есть

( 71
) Он херней страдает, давно бы поставил одну платформу 8.2 для альфы и вторую (тоже одну) 8.3 для КА или что там у него.


Несколько одновременно 8.3. Х. Y глючит COM/OLE по страшному

( 73
) А DOS или CP/M у вас там случаем нету? С Clipper и FoxPro под них?

Сияющий в темноте

Automation до сих пор жива,как жив Microsoft Office


собственно,для него она и придумывалась.


но,в силу того,что разработчики положили на ее реализацию во многих приложениях,местая о том,что есть другие способы,но когда нужно за пользователя сделать часть действий через код,то в офисе народ давит запись макроса и наслаждается эффектом Вау,а в остальных местах начинает грызть кактусы,так как без Automation макросов нету.

но,решение Automation не для интеграции,а для упрощения взаимодействия с пользователем.


применение его для интеграции особенно без участия пользователя выглядит достаточно костыльно.

( 68
) что еще нужно, чтобы запускалась клиентская часть платформы 8.3.14.1779 (а не 8.3.10.2466) при OLE-соединении, кроме перезаписи реестра?

( 78
) Это как, командой (из командной строки)?

Интересно, при запуске серверной базы 1С смотрит какой порт приписал к имени сервера, и запускает нужную версию платформы для серверной части. Почему для клиентской части не использован этот алгоритм?

+ Вроде значения реестров не меняются после регистрации версии платформы. Как определить какая версия зарегистрирована последней, какая запустится клиентская часть для OLE-соединения?

+ Это я переустанавливал платформы 8.3, Агент сервера 1С:Предприятия 8.3 со стандартными портами 15хх исчез, остался только добавленный с нестандартными портами!? Как его восстановить?

+ Хотя HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\1C:Enterprise 8.3 Server Agent (x86-64) остался со значением ImagePath «D:\Program Files\1cv8\8.3.10.2466\bin\ragent.exe» -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d «D:\Program Files\1cv8\srvinfo».

( 78
) > установите на другой компьютер


Впервые столкнулся с проблемой COM/OLE-соединения когда подключался к базе партнера. Другой сервер и домен, только локальная сеть общая (работаем на территории одного АСК). Версии 1С 8.3 были разные. Пока не поставил версию такую же как у них ничего не получалось.

Кажется нашел http://catalog.mista.ru/public/803433/
— «Показывает текущие версии зарегистрированных компонент 1С (требуется . NET Framework 4.0 и права администратора)». Как определить есть у меня . NET Framework 4.0?

( 0
) Это в 8.3.16 что-то наделали,у меня такая же ерунда.


Не советую ставить, ибо глюков там до хрена, только что откатился обратно до 8.3.13

а что за компонента V8x. ServerAbout из ( 88
)

( 90
) Не знаю, меня интересует V8x. Application.

( 0
) Переходи на веб-сервисы. Ком — в топку!

( 89
) Были глюки со «старым» апачем 2.4.39 и то после обновления пропали.


Так что 8.3.16.1148 вполне гуд.

( 93
) > Причем эти зависимости кэшируются системой, судя по тому, что перезапуск помогает в некоторых случаях.


Выше 8.3.14 у меня нет платформ. Агента со стандартными портами восстановил. Избежать кэширование удалось?

( 87
)+ Вряд-ли система обращается к реестру того сервера, на котором находится подсоединяемая база, чтобы определить зарегистрированную версию. Наверное к своему реестру (или к чему?). Если бы предварительно переписать значение на нужную версию платформы, то было бы все нормально?

( 96
) Не будет нормально. Забудь про COM/OLE. Скоро железо на ARM перейдет с x86 и где этот COM?

( 0
) в  ( 2
)  же написали чего не понятно. Это всего лишь вопрос времени .

Сияющий в темноте

( 97
) windows ce прекрасно там работало и com тоже.


а вот поставить туда httpd было сложнее.

( 99
) com там на wince на arm было свое, несовместимое с x86 на большой винде

так что 100

Исправляем ситуацию

Чтобы избавиться от этого неприятного сообщения об ошибке при вызове метода контекста, следует понимать, что контекстом называют методы платформы 1С. Значит в определенной строке кода воспользовались методом с неверными параметрами или вызвали его не от того владельца. Всегда внимательно и полностью читайте сообщения об ошибках – часто в них содержится указание на строку и метод, вызвавший ошибку. Это поможет сэкономить время на отладку и поиск проблемного места в коде.

Рассмотрим действия разработчика на примере со специально допущенной ошибкой. Мы запускаем на исполнение нижеприведенный кусок кода с запросом, в котором забыли дописать условие отбора. Компилятор 1С пропускает такую процедуру, так как орфографических ошибок в написании команд мы не допустили. Однако в режиме предприятия нас ждет такое сообщение об ошибке:

     
  
Запускаем на исполнение нижеприведенный кусок кода с запросом, в котором забыли дописать условие отбора
Запускаем на исполнение нижеприведенный кусок кода с запросом, в котором забыли дописать условие отбора

Приведенный текст ошибки программисту 1С скажет, что в модуле формы обработки «ЧтениеЗаписьXML на 152 строчке кода не может выполниться запрос. Причина в том, что на 17 строчке запроса нет чего-то, что ждал компилятор. Таким образом, чтобы убрать подобное сообщение, необходимо выяснить, что там должно быть и написать недостающий код.

Увидев вышеприведенный кусок кода, разработчик заметит, что в запросе есть служебное слово «ГДЕ», дающее сигнал 1С, что дальше будет условие. Но мы забыли дописать его и, естественно, система с помощью сообщения об ошибке спрашивает нас – «а где условие?». Чтобы исправить эту ситуацию необходимо либо убрать оператор «ГДЕ» из запроса, либо добавить условие.

Но ошибки могут быть не только в текстах запросов. Допустим, мы хотим выбрать всю номенклатуру и узнать, входит ли она в определенную группу. Проверка происходит с помощью метода «ПринадлежитЭлементу» и его параметра, который должен быть типа СправочникСсылка. Мы опять допускаем ошибку и вместо ссылки в параметр метода помещаем строку, содержащую имя переменной.

     
  
Мы опять допускаем ошибку и вместо ссылки в параметр метода помещаем строку, содержащую имя переменной
Мы опять допускаем ошибку и вместо ссылки в параметр метода помещаем строку, содержащую имя переменной

1С выдает настолько же информативное сообщение, из которого мы понимаем, что на 158 строке у 1 параметра неправильный тип. Но что же делать, если мы не знаем, какой тип должен быть? В этом нам поможет Синтакс-помощник, встроенный в платформу 1С.

Синтакс-помощник
Синтакс-помощник

В конфигураторе находим строку и метод, на который указывало сообщение об ошибке, и нажимаем на него правой кнопкой мыши. Выбираем пункт «Поиск в синтакс-помощнике» и платформа самостоятельно ищет справочную информацию по выделенному методу. В справке мы видим не только подробное описание параметров и самого метода, но и пример. Сверив пример с нашим кодом, приходит понимание, что кавычки не нужны и без них все работает.

Сверив пример с нашим кодом, приходит понимание, что кавычки не нужны и без них все работает
Сверив пример с нашим кодом, приходит понимание, что кавычки не нужны и без них все работает

Чаще всего причиной подобных ошибок выступают следующие факторы:

  1. Невнимательность;
  2. Отсутствие опыта или знаний;
  3. Несогласованность действий разработчиков друг с другом;
  4. Изменения в методах контекста в новых версиях платформы.

Но ошибки при разработке ПО случаются постоянно, поскольку иногда ошибаются даже специалисты с многолетним опытом. Самое главное – уметь исправлять их и учиться на них. Постепенно вы будете видеть сообщения об ошибках все реже и научитесь замечать подобные «опечатки» еще до запуска 1С.

Версия компоненты ‘comcntr’ отличается от версии корневого модуля ‘core83’

Часто бывает, что при настроенной синхронизации после обновления платформы появляется ошибка «Произошла исключительная ситуация (V83. COMConnector.1): Версия компоненты ‘comcntr’ отличается от версии корневого модуля ‘core83’». Так происходит потому, что автоматически не зарегистрировалась компонента comcntr.dll из-за проблем с правами пользователя на компьютере.

Решить данную проблему можно двумя способами.

Оцените статью
ФСС Help
Добавить комментарий