Всем привет.

При попытке подключения к базе 1С возникает ошибка "Невозможно создание объекта сервером программирования объектов" при попытке создать объект ActiveX (скрипт scr_Dataflow1CUtils_V81 строка #627 Param.Con1C = new ActiveXObject(Param.Version + '.ComConnector'); ).

Синхронизация стандартная.
1С - 8.3
Terrasoft - 3.4

Нравится

9 комментариев

Максим, необходимо
а) установить утилиту: http://www.community.terrasoft.ua/system/files/1c_230512.zip
Внутри также есть инструкцию по установке.

б) глобальным поиском найти строку
Param.Con1C = new ActiveXObject(Param.Version + '.ComConnector');

и заменить на

//Param.Con1C = new ActiveXObject(Param.Version + '.ComConnector');
Param.Con1C = new ActiveXObject('V83.ComConnector');

Это если быстро.
А вообще желательно добавить в перечисление enm_1CVersion новый элемент, затем в скрипте scr_DataflowUtils подправить функцию GetScriptObjectByVersion:

function GetScriptObjectByVersion(Param) {
	switch (Param.Version) {
	case 'V82': return scr_Dataflow1CUtils_V80V81V82;
		break;	
	case 'V81': return scr_Dataflow1CUtils_V80V81V82;
		break;
	case 'V8': return scr_Dataflow1CUtils_V80V81V82;
		break;
	case 'V77': return scr_Dataflow1CUtils_V77;
		break;
	default: return scr_Dataflow1CUtils_V80V81V82;
		break;		
	}
}

Дмитрий, спасибо за ответ.

"А вообще желательно добавить в перечисление enm_1CVersion новый элемент"

Какой именно элемент?

"затем в скрипте scr_DataflowUtils подправить функцию GetScriptObjectByVersion"

Это нормально, что в этом скрипте нет такой функции?

Максим, нет, не нормально :)
Вы ставили утилиту с комьюнити? Ставьте :)

Какой именно элемент?

элемент 8.3 - свойства такие же как и в 8.2, только наименование 8.3 :) Это для того, что бы в выпадающем списке появилась версия 8.3. А вот в функции уже будет прописано, что если выбрано 8.3. то создавать COM-объект с именем V83.ComConnector, а не V82 (или V81 и т.д.).
Если что не понятно - спрашивайте.

> Вы ставили утилиту с комьюнити? Ставьте :)

Я поставил. Этой функции нет ни в ней, ни в оригинале. Вот их дифф (оригинальный - слева): https://www.diffchecker.com/8scqezvu . Простым поиском можно убедиться, что функции нет.

> элемент 8.3 - свойства такие же как и в 8.2, только наименование 8.3 :) Это для того, что бы в выпадающем списке появилась версия 8.3. А вот в функции уже будет прописано, что если выбрано 8.3. то создавать COM-объект с именем V83.ComConnector, а не V82 (или V81 и т.д.).

Как-то вы противоречите сами себе. Разве это не предполагает, что Param.Version должен быть V83 ? Тогда, учитывая что свойства такие же, как у 8.2, откуда оно возникнет?

Опытным путём установил, что файл не scr_DataflowUtils, а scr_Dataflow1CUtils. Функция в нём такая же, что и у вас в сноске.

В общем, после всех изменений, ошибка та же.

Максим, поставьте отладчик перед строкой:

Param.Con1C = new ActiveXObject(Param.Version + '.ComConnector');

и посмотрите что у вас за значение в переменной Param.Version. Если V82 - значит что-то сделали не так (должно быть V83).
В крайнем случае замените эту строку на

Param.Con1C = new ActiveXObject('V83.ComConnector');

Если и далее будет воспроизводится ошибка, значит у вас в Windows не зарегистрирован COM - объект 1С. Запустите файл Comcntr.dll в папке bin с установленной 1с от имени regsrv32.exe

Да, заработало, спасибо.

Добрый день.
Возник вопрос: Для чего нужна утилита 1С, добавленная выше, и обязательно ли ее устанавливать при переходе на 8.3?

Добрый.
Утилита необходима для интеграции с 1с 8.2. А в этом топике мы обсуждали те мелкие моменты, которые необходимо выполнить чтобы её доработать для интеграции с 1с 8.3.

Показать все комментарии

Версия 3.3.1.67

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

Нравится

8 комментариев

Причины могут быть разные: недозарегистрированная самодельная dll, отсутствие 1С, к которой пытается подключиться или же ещё что-то.

Чистка профиля с кэшем помогает? А перерегистрация библиотек? Выскакивает на 1 компьютере или всех?

Самодельных dll нет, 1с тоже. На всех компьютерах. Появилось после переноса базы со старого сервера на этот.

Это точно ошибка о проблеме создания ActiveXObject. Возможно у вас был установлен LiTerra Mail ?

Сергей, да LiTerra Mail был установлен. Сейчас по-моему нет. Даже лицензии на него нет.
Наверно логичным будет установить его?

Программа установлена и при запуске террасофта пытается создать свои компоненты - но не находит соответсвующих библиотек. Зайдите в папку Bin установленного террасофта - найдите все dll ( насколько я помню называются LiTerra или LiTerra2) связанные с Литеррой и зарегистрируйте их.

Напишите мне на почту - я вам помогу отключить этот компонент.

Глова Сергей, Таких dll там нет.
Евгений Либин, ответил в лс.

Спасибо Евгению! Недостающие dll зарегистрировали, всё отлично.

Показать все комментарии