Всем привет.
При попытке подключения к базе 1С возникает ошибка "Невозможно создание объекта сервером программирования объектов" при попытке создать объект ActiveX (скрипт scr_Dataflow1CUtils_V81 строка #627 Param.Con1C = new ActiveXObject(Param.Version + '.ComConnector'); ).
Синхронизация стандартная.
1С - 8.3
Terrasoft - 3.4
Нравится
Максим, необходимо
а) установить утилиту: 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.