Всем привет.

При попытке подключения к базе 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.

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