COM соединения с базами 1С на различных версиях платформы "Без перерегистрации и СМС"

03.05.17

База данных - Инструменты администратора БД

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование SM По подписке [?] Купить один файл
ConsoleApp
.zip 15,60Kb
261
261
1 SM
Скачать Купить за 1 850 руб.
Обработка для проверки работоспобности соединения с разыми версиями
.epf 6,51Kb
274
274
1 SM
Скачать Купить за 1 850 руб.

Значит дело было так. Появилась необходимость подключаться к базам по com соединению, для анализа тамошних объектов метаданных. Проблема оказалась в том, что базы могли работать на разных версиях 1С. Пошел в интернет, искал, читал, но все фигня, в оновном все предлагают держать базы на одной версии, что для меня было невозможным.

Кроме, вот этой статьи. Огромное спасибо автору (Леонид Кириенко) и zakiap

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

Тут уже интересней, но есть пару минусов

1) 1С должна работать от имени учетки с админскими правами.

2) "Варварское" поведение по отношению dllhost.exe :)

3) Могут возникнуть проблемы при одновременном обращении к базам на разных версиях.

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

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

Инструкция

1. Идем "Панель управления" - "Администрирование" - "Службы компонентов"

2. В оснастке служб компонентов, "Службы компонентов" - "Компьютеры" - "Мой компьютер" - "Приложения COM+"

3. Создаем новое приложение, правой кнопкой по  "Приложения COM+" - "Создать" - "Приложение"

4. Выбираем "Создать новое приложение", называем например "1cv8", тип выбираем "Библиотечное приложение"

должно полчуить так

 

5. Раскрываем "1cv8", правой кнопкой по "Компоненты" - "Создать" - "Компонент".

6. Выбираем вариант "Установка новых компонентов", находим нашу библиотеку comcntr.dll

Находится она в катлоге BIN установленной платформы, у меня например путь такой 

"C:\Program Files (x86)\1cv8\8.3.10.2168\bin\comcntr.dll

должны получить следующую картину 

7. Правой кнопкой по "V83.COMConnector.1" - "Псевдоним...", меняем наименование с "CopyOf.V83.COMConnector.1" на "V83.COMConnector_8.3.9.2033". Данное действие проделываем для всех нужных версий платформ.

8. Открываем "regedit" через пуск или команду "Выполнить", нажимаем F3 и указываем для поиска строку с наименованием созданой нами обертки, например "V83.COMConnector_8.3.9.2033". Или использум для поиска CLSID созданной обертки.

9. Ищем значение в ветке "HKEY_LOCAL_MACHINE" у меня путь такой HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Wow6432Node\CLSID\{553567A1-0481-4CD0-9F5C-393DD90DB0C3}\ выглядеть должно так

В ветке "InprocServer32" меняем значение у меня, "C:\Program Files (x86)\1cv8\8.3.10.2168\bin\comcntr.dll" на путь к нужной версии длл, в данном случае "C:\Program Files (x86)\1cv8\8.3.9.2033\bin\comcntr.dll". 

Данное дейстие проделываем для всех созданных оберток.

Все готово) Для подключения к конкретной версии базы, в 1С теперь нужно использовать следующую конструкцию


НомерВерсии = "8.3.9.2033";

Соединитель = Новый ComОбъект("V83.COMConnector_" + НомерВерсии);

В файлах утилита, которая выполнит все эти действия автоматически. Подходит для тех у кого 1С лежит в каталоге 

"C:\Program Files (x86)\1cv8". У кого что то отличается, вот ссылка на GitHub . Запустить утилиту нужно от имени администратора. Надеюсь данный материал будет вам полезен)

См. также

Инструментарий разработчика Роли и права Запросы СКД Программист Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

10000 руб.

02.09.2020    140706    772    391    

803

Пакетная печать Печатные формы Инструментарий разработчика Программист Платформа 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:Конвертация данных 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

Инструмент, позволяющий абсолютно по-новому взглянуть на процесс разработки печатных форм. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и "прозрачность" разработки, а также навести порядок в многообразии корпоративных печатных форм.

18000 руб.

06.10.2023    11563    31    6    

61

Инструментарий разработчика Программист Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

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

5400 руб.

17.05.2024    13863    33    27    

76

Инструменты администратора БД Инструментарий разработчика Роли и права Программист Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

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

10000 руб.

10.11.2023    7286    27    4    

51

Инструменты администратора БД Роли и права Системный администратор Программист Пользователь 8.3.14 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Документооборот 1С:Зарплата и кадры государственного учреждения 3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Роли… Вы тратите много времени и сил на подбор ролей среди около 2400 в ERP или 1500 в Рознице 2, пытаясь понять какими правами они обладают? Вы все время смотрите права в конфигураторе или отчетах чтоб создать нормальные профили доступа? Вы хотите наглядно видеть какие права дает профиль и редактировать все в простом виде? А может хотите просто указать подсистему и дать права на просмотр и добавление на объекты и не лезть в дебри прав и чтоб обработка сама подобрала нужные роли? Все это теперь стало возможно! Обновление от 15.12.2023, версия 1.1.

14400 руб.

06.12.2023    5615    24    1    

54

SALE! %

Инструментарий разработчика Инструменты администратора БД Системный администратор Программист Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Платные (руб)

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

3600 2880 руб.

14.01.2013    181893    1104    0    

876

Закрытие периода Инструменты администратора БД Корректировка данных Бухгалтер Пользователь Бухгалтерский учет 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Расширение «Оперативное проведение» в 4 раза уменьшает время проведения документов и закрытия месяца. Является комплексным решением проблем 62 и 60 счетов. Оптимизирует проведение при включенной функциональной опции «Раздельный учет НДС». Используется в более 10 организациях уже 2 года. Совместимо с конфигурацией Бухгалтерия 3.0 (+КОРП).

14400 руб.

29.04.2020    30028    88    151    

63

Инструментарий разработчика Программист 8.3.14 1С:Конвертация данных Россия Платные (руб)

Расширение для конфигурации “Конвертация данных 3”. Добавляет подсветку синтаксиса, детальную контекстную подсказку, глобальный поиск по коду.

15000 руб.

07.10.2021    15991    3    12    

39
Отзывы
60. EugeneMIPT 20.05.21 07:42 Сейчас в теме
Спасибо за статью. Мне она помогла, но если просто сделать как написано, возникали ошибки. Куча комментариев с разными ошибками не дали быстрого решения как именно сделать настройки. Предлагаю слегка скорректированный алгоритм. (*) - измененные шаги. В нем нет последних шагов по работе с реестром. У меня сработало на двух серверах.
Если автор посчитает возможным - можно было бы перенести в шапку.

1. Идем "Панель управления" - "Администрирование" - "Службы компонентов"
2. В оснастке служб компонентов, "Службы компонентов" - "Компьютеры" - "Мой компьютер" - "Приложения COM+"
3. Создаем новое приложение, правой кнопкой по "Приложения COM+" - "Создать" - "Приложение"
4*. Выбираем "Создать новое приложение", называем например "1cv8", тип выбираем "Серверное приложение",
Учетная запись - Текущий пользователь, Пользователь с ролью Owner - поставил администратора компьютера (сервера).
(без этого возможна ошибка -2147024769(0x8007007F): Не найдена указанная процедура)
5*. Нажимаем правой кнопкой по ветке 1cv8 – Свойства – Безопасность:
- Снимаем галку «Принудительная проверка доступа для приложений»
- Ставим галку «Применить политику программных ограничений»
- Уровень ограничений «Неограниченный»
(без этого возможна ошибка -2147024891(0x80070005): Отказано в доступе)
6. Раскрываем "1cv8", правой кнопкой по "Компоненты" - "Создать" - "Компонент".
7. Выбираем вариант "Установка новых компонентов", находим нашу библиотеку comcntr.dll (той версии платформы, к которой надо будет подключаться)
-* Если установка платформы на сервер не требуется, то достаточно скопировать в некую папку на сервере все содержимое папки bin соответствующей платформы и указать comcntr.dll из этой папки
8. Правой кнопкой по "V83.COMConnector.1" - "Псевдоним...", меняем наименование с "CopyOf.V83.COMConnector.1" на "V83.COMConnector_8.3.9.2033". Данное действие проделываем для всех нужных версий платформ.
al-e-ks; Volchock; Gorec17; BoryaMbi; b_ruslan; jufyti; VeraPV; KastoriX; RIS2020; strugatskj; Dimony4; dance000; sertak; A7758735; Miket78; user841691; cherkass; +17 Ответить
27. MaximkaSM 17.01.18 15:16 Сейчас в теме
При регистрации библиотек из разных версий 8.3, в одном СОМ приложении, возможно подключиться только к одной из версий.
(15) Решил проблему, создав компоненты в отдельных приложениях СОМ
Прикрепленные файлы:
regstaer; jufyti; sertak; Merkalov; user841691; AlxPop; Franchiser; SoftIce; SurovcevD; WizaXxX; +10 Ответить
59. tormozit 7193 08.03.21 23:57 Сейчас в теме
Добавил реализацию описанной тут и в порожденной статье возможности в инструмент "Управление COM-классами 1С (ИР)" https://www.hostedredmine.com/issues/922012
Прикрепленные файлы:
Odin-s; fuser; max_zhilin; user1301636; anchovy; BoryaMbi; Dimony4; user841691; Збянтэжаны Саўка; WizaXxX; +10 Ответить
36. user982256 30.05.18 17:30 Сейчас в теме
(15) Методом проб и ошибок- свойствах приложения-> Активация-> Серверное подключение . Так заводится и создается инстанс без ошибок
Прикрепленные файлы:
regstaer; jufyti; sertak; user841691; de0nis; Feelthis; SoftIce; WizaXxX; +8 Ответить
51. Severwolf 38 05.11.19 16:59 Сейчас в теме
Доброго дня.
Оставлю это здесь.
При последовательном подключении к разным платформам COM соединением, необходимо сделать следующую настройку в свойствах КомКоннектора
размер группы увеличить с 1 до 5
время ожидания уменьшить с 15 до 2
Прикрепленные файлы:
VeraPV; GorkyGorod; regstaer; user841691; de0nis; WizaXxX; +6 1 Ответить
Остальные комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. tormozit 7193 16.04.17 19:10 Сейчас в теме
1. Название COM классу лучше давать более гибкое. Например V83.COMConnector_Buh, V83.COMConnector_secondary, V83.COMConnector_test. Поэтому в инструменте регистрации хотелось бы соответствующий параметр.
2. Чаще требуется регистрация 64-разрядного варианта. Поэтому в инструменте регистрации хотелось бы соответствующий параметр.
brr; nsirotkin@mail.ru; +2 Ответить
2. WizaXxX 360 16.04.17 19:22 Сейчас в теме
(1) Я же делал так, как удобнее мне, а для остальных я предоставил исходники, все что нужно, можно изменить под себя.
3. fancy 35 17.04.17 07:27 Сейчас в теме
А почему сразу при регистрации компоненты не указать нужный путь "C:\Program Files (x86)\1cv8\8.3.9.2033\bin\comcntr.dll" - зачем его менять в regedit?
4. WizaXxX 360 17.04.17 07:45 Сейчас в теме
(3) Я тоже так хотел, но по факту мы после первого раза делаем не регистрацию, а просто псевдоним, и свойство "DLL" именно оно отвечает за путь к нашей dll, ReadOnly
5. iolko 320 17.04.17 09:12 Сейчас в теме
Удобно, конечно. Но вот завтра автор пропишет кусок кода в приложение, и все пароли GO к нему в почту и пришли, вместе с IP и портами серверов. (Sorry, идея, конечно очень хорошая, но вот паранойя имеет место быть)
6. WizaXxX 360 17.04.17 09:23 Сейчас в теме
(5) Вот именно для этого, я и выложил исходники) Делаешь clone master ветки и дальше уже делаешь все под себя. Ну или просто руками выполняешь все действия из инструкции, много времени это не занимает, и выполнять нужно всего один раз для каждой версии.


К слову, у класса COMAdminCatalogClass имеется метод Connect, соответственно можно переписать утилиту для удаленной настройки.
7. iolko 320 17.04.17 11:48 Сейчас в теме
(6)Вопрос полностью снят.
25. Alexander08 16.12.17 04:12 Сейчас в теме
(6)
COMAdminCatalogClass

VC2017 comunity использую для компиляции приложения под frame work 3.5 только проходит сборка, и при запуске выходит ошибка:
"сборка создана в более поздней версии среды выполнения чем текущая и не может быть загружена"
Хотя скомпелированный файл запускается без ошибок, только пути у меня не стандартные.
Что не так?
Framework 3.5sp1 и 4.0. стоят.
Система Windows 7 x64.
Прикрепленные файлы:
8. родственник 19.04.17 18:32 Сейчас в теме
Поддерживаем большой зоопарк серверов и баз. Com объекты, зарегистрированные через компоненты могут работать не стабильно. Соединения проходят нормально, а дальше могут быть разные "чудеса".
9. disa_da 20.04.17 11:43 Сейчас в теме
Не могу понять что я делаю не так, но у меня не получается решить таким способом подключение к разным версиям из одной базы.
Например, есть следующее окружение:
- 32-х разрядные клиент-серверные версии 8.3.8.2054 (далее 8.3.8) и 8.3.9.2170 (далее 8.3.9) и соответственно две службы и две серверные базы на этих версиях.
- платформы поставлены по возрастанию версии, соответственное к 8.3.8 не подключится, так как последняя зарегистрировалась 8.3.9

Делаю по инструкции и назначаю алиас для 8.3.8 - "V83.COMConnector_838_x32", меняю путь в реестре и так далее.

Вхожу в базу на 8.3.8:
- через "V83.COMConnector_838_x32" к 8.3.8 работает подключение на клиенте и на сервере (подключение выполняется в коде &НаКлиенте и &НаСервере соответственно)
- через "V83.COMConnector" к 8.3.9 не работает . На клиенте выводится ошибка:
"The procedure entry point ?handle@ModuleLoader@core@@QAEPAUHINSTANCE__@@XZ could not be located in the dynamic link library C:\Program Files (x86)\1cv8\8.3.9.2170\bin\comcntr.dll."
и далее вторая ошибка
"-2147-24769(0x8007007F) The specified module could not be found.".
На сервере только вторая ошибка.

Вхожу в базу на 8.3.9:
- через "V83.COMConnector_838_x32" к 8.3.8 не работает . На клиенте и сервере выводится "Произошла исключительная ситуация (V83.ComConnector.1): Версия компоненты 'comcntr' (8.3.8.2054) отличается от версии корневого модуля 'core83' (8.3.9.2170)
- через "V83.COMConnector" к 8.3.9 работает

В результате требуется не только "V83.COMConnector" нужной версии использовать, но и выполнять подключение из соответствующей версии клиента/сервера.
Подскажите, у кого получилось так настроить, не было ли похожей проблемы?
10. disa_da 20.04.17 14:47 Сейчас в теме
Кажется я понял в чем дело - система кэширует comcntr.dll (или его часть, например core83, т.к на него ругается) и при следующих обращениях использует модуль из кэша, а не получает его по имени коннектора.

Провел такой эксперимент:
- развернул платформу 8.2
- захожу в базу на 8.2, подключаюсь к 8.3.8 через "V83.COMConnector_838_x32" (в серверном коде), в 8.3.9 через "V83.COMConnector" подключение не работает
- рестарт сервера
- захожу в базу снова, но первым подключаюсь в 8.3.9 - работает, а после этого к 8.3.8 уже не работает.

Таким образом в 8.2 возможно подключение к любой версии, но не к двум одновременно.
А в 8.3 так не получается, т.к. при старте сервера подгружается соответствующая версия в кэш и в дальнейшем используется она.
11. WizaXxX 360 20.04.17 17:38 Сейчас в теме
(10) После того как ты создал обертку V83.COMConnector, попробуй выполнить "Исправление" через Программы и компоненты, той версии через которой ты хочешь что бы был V83.COMConnector.

Сейчас попробовал одновременно подключиться к одной базе с помощью разных версий, поведение корректное.
Прикрепленные файлы:
12. tolyan_ekb 105 26.04.17 13:00 Сейчас в теме
Подскажите, можно ли таким образом зарегистрировать comcntr.dll для 8.3 без установки платформы на компьютере.
13. WizaXxX 360 02.05.17 08:23 Сейчас в теме
(12) Скорей всего можно, только одной comcntr.dll будет недостаточно это точно. Нужно пробовать)
15. Darklight 32 07.08.17 10:32 Сейчас в теме
Идея интересная, но у меня имеет место быть проблема. Если создавать 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");


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


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


Переставляем местами создание COM-Объектов
ком = новый COMОбъект("v83.COMConnector_8.3.8.2054");
ком.ConnectAgent("srv2");
ком = новый COMОбъект("V83.COMConnector_8.3.10.2252");
ком.ConnectAgent("srv1");


И возникает вторая ошибка:
{ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(12)}: Ошибка при вызове конструктора (COMОбъект)
ком = новый COMОбъект("V83.COMConnector_8.3.10.2252");
по причине:
-2147024769(0x8007007F): Не найдена указанная процедура.


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

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

{ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(10)}: Ошибка при вызове конструктора (COMОбъект)
ком = новый COMОбъект("V83.COMConnector_8.3.10.2252");
по причине:
-2147024769(0x8007007F): Не найдена указанная процедура. [

Спустя минут 15-20 всё проходит - и начинается с начала (с учётом переставленных вызовов создания COM-объектов):


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



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

Увы, это почти ставит крест на данной методике. Но, если одновременная (читай последовательная но в одно и то же время в пределах 20 минут) работа не требуется - описанный в статье метод будет работать.
Но, лично мне нужна была одновременная работа :-(
Надо попробовать выполнить те же обращения, но не из 1С - если проблемы не будет, то значит это 1С кеширует (и это можно обойти - но логику работы с COM-объектом придётся выносить за пределы 1С), а если будет.... то нужно что инове придумывать!


Попробовал так же с компонентами редакции 8.2:
ком = новый COMОбъект("v82.COMConnector_8.2.19.80");
ком.ConnectAgent("srv3");	
ком = новый COMОбъект("V82.COMConnector_8.2.19.68");
ком.ConnectAgent("srv4");


В общем-то такая же ситуация, но ошибка всегда на ВТОРОЙ по счёту компоненте (не важно какой она версии!!!) и всегда такая:
{ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(42)}: Ошибка при вызове метода контекста (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.2 не кэшируется, в отличии от 8.3 :-|


Попытка же написать так же для 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:
{ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(38)}: Ошибка при вызове конструктора (COMОбъект): -2147024769(0x8007007F): Не найдена указанная процедура.

это самая первая строка в первой попытке - и эта ошибка дальше стабильно повторялась


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

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


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

Так что - как 1С (или windows) это всё обрабатывают, что возникает такой винегрет из разных ситуаций - непонятно....
Надо ещё разбираться и экспериментировать

Возможно эти проблемы чисто связаны с моей конфигурацией ОС - использую windows 8
А может дело в используемых релизах 1С: Предприятие, клиента и компонент (хотя на клиенте 8.2.19.80 я тоже попробовал - всё то же самое)

Может, у меня просто компоненты как-то неправильно установлены или какие-то заморочки с настройками COM+
Я, например, не нашёл типовых компонент в разделе COM+ как на картинках автора :-(
Хорошо бы кто-то ещё это всё проверил бы на своих конфигурациях платформ и компонент
16. disa_da 08.08.17 10:32 Сейчас в теме
(15)
Посмотрите выше мои комментарии (9) и (10)
У меня тоже сложилось впечатление, что что-то кешируется.
Если делать не через 1С, а через что-то внешнее, например запускать подключение через вызов 1Script - то проблем с кешем нет.
17. Darklight 32 08.08.17 14:55 Сейчас в теме
(16) Вот фигня, как же с этим бороться.... создавать обёртку во внешней компоненте - фиговое решение....
Пробовал переименовывать саму dll (чтобы имена разные были - не помогло). Какой же ключ использует 1С для идентификации кешированного значения, ведь они всем отличаются и именем, и CLSID, и даже полным путём к dll, включая имя файла "comcntr.dll"
Что-то ещё в самой dll зашито?
Я вообще на файловой базе пробовал, и клиента перезапускал - эффект первого запуска минут на 10-15 сохраняется - что же это за кеш такой? Кеш windows?
Кеш сбрасывается либоо времени, либо при выходе из сеанса windows.
27. MaximkaSM 17.01.18 15:16 Сейчас в теме
При регистрации библиотек из разных версий 8.3, в одном СОМ приложении, возможно подключиться только к одной из версий.
(15) Решил проблему, создав компоненты в отдельных приложениях СОМ
Прикрепленные файлы:
regstaer; jufyti; sertak; Merkalov; user841691; AlxPop; Franchiser; SoftIce; SurovcevD; WizaXxX; +10 Ответить
38. mulder242 3 20.12.18 10:15 Сейчас в теме
(27)
Как создать отдельные приложения, при создании второго ругается на то что уже есть такое приложение, зарегистрировано
Прикрепленные файлы:
58. san_penza 13.01.21 13:46 Сейчас в теме
(27)
Как это можно сделать? При создании второй обертки ошибка "the object is already registered"
68. AlxPop 27 15.09.21 22:45 Сейчас в теме
(58) Сам долго голову ломал, как это у них получилось. Мне удалось это сделать при помощи такой хитрости: при создании нового компонента я подсунул другую DLL, потом в реестре нашел CLSID созданного компонента и поменял название и путь, соответственно уже к нужной comcntr.dll
73. YA_136281634 13.05.22 18:14 Сейчас в теме
(68) Все просто. Сначала создаем приложение. Затем на существующем делаем псевдоним и указываем расположение нашего нового com приложения.
Прикрепленные файлы:
36. user982256 30.05.18 17:30 Сейчас в теме
(15) Методом проб и ошибок- свойствах приложения-> Активация-> Серверное подключение . Так заводится и создается инстанс без ошибок
Прикрепленные файлы:
regstaer; jufyti; sertak; user841691; de0nis; Feelthis; SoftIce; WizaXxX; +8 Ответить
48. alexbur 28 17.09.19 05:50 Сейчас в теме
(36), спасибо. До того как это сделал получал ошибку:
-2147024769(0x8007007F): Не найдена указанная процедура.

Но после того, как сделал получил:
Отказано в доступе.

Зашёл в свойство COM приложения к которому привязан компонент и на закладке Безопасность установил "Уровень проверки безопасности для вызовов" в "Отсутсвует".

После этого соединение заработало как надо.
Прикрепленные файлы:
49. alexbur 28 17.09.19 06:43 Сейчас в теме
(48), ещё снял галку "Принудительная проверка доступа для приложения".
46. 2michael 23 17.08.19 12:20 Сейчас в теме
14. Nigmatul 03.05.17 12:11 Сейчас в теме
Добрый день, спасибо за статью, внесла ясности.

Можете дописать в статью к пункту 8 пояснение.
Что бы найти нужную ветку в реестре необходимо в свойствах компонента скопировать CLSID и по этому ID найти нужную ветку в реестре. Скрин ниже, а то я например заманался искать нужную ветку, а по имени почему-то не находилась (до меня кто-то ковырял реестр)

{ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(19)}: Ошибка при вызове метода контекста (Connect): Произошла исключительная ситуация (V83.COMConnector.1): Версия компоненты 'comcntr' (8.3.8.2054) отличается от версии корневого модуля 'core83' (8.3.8.1652)
Прикрепленные файлы:
19. hair 29 09.11.17 10:03 Сейчас в теме
(14)
{ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(19)}: Ошибка при вызове метода контекста (Connect): Произошла исключительная ситуация (V83.COMConnector.1): Версия компоненты 'comcntr' (8.3.8.2054) отличается от версии корневого модуля 'core83' (8.3.8.1652)


Добрый день. Так я не понял, как избавляться от такого сообщения? Подскажите.
До обнаружения этой статьи просто пробовал делать regsvr comctrl, той версии, к базе которой собирался подключаться через COM. Получал точно такую же ошибку, что и сейчас
20. Nigmatul 10.11.17 12:19 Сейчас в теме
(19) Добрый день, я сдался. Вопрос актуальные, но я устал ковыряться в надежде появления надежного решения.
Устанавливать новый сервер ради одной проблемы ну уж муторно.
22. glime 106 24.11.17 11:03 Сейчас в теме
23. Nigmatul 24.11.17 12:50 Сейчас в теме
(22)нет, так и забил, хотя актуально, нужно построение отчетов в УТ 10.3 по данным БП 3.0. Обороты из БП 3.0 приходится выгружать через файл выгрузки...... очень не удобно. Ут 10.3 и БП 3.0 на разных платформах, так как 10.3 на новых платформах начинает неадекватно работать.
24. glime 106 24.11.17 13:03 Сейчас в теме
53. M_Volkov 5 22.01.20 11:36 Сейчас в теме
(14)
Что бы найти нужную ветку в реестре необходимо в свойствах компонента скопировать CLSID и по этому ID найти нужную ветку в реестре. Скрин ниже, а то я например заманался искать нужную ветку, а по имени почему-то не находилась (до меня кто-то ковырял реестр)
А если их много, какую из них?
V83.COMConnector.1
DDL: c:\Program Files\1cv8\8.3.14.1779\bin\comcntr.dll
CLSID: {181E893D-73A4-4722-B61D-D604B3D67D47}

HKEY_CLASSES_ROOT\CLSID\{181E893D-73A4-4722-B61D-D604B3D67D47}
HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{181E893D-73A4-4722-B61D-D604B3D67D47}
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{181E893D-73A4-4722-B61D-D604B3D67D47}
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Wow6432Node\CLSID\{181E893D-73A4-4722-B61D-D604B3D67D47}
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\COM3\SelfReg\CLSID\{181E893D-73A4-4722-B61D-D604B3D67D47}
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Classes\CLSID\{181E893D-73A4-4722-B61D-D604B3D67D47}
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\COM3\SelfR­eg\CLSID\{181E893D-73A4-4722-B61D-D604B3D67D47}
18. Fecolka 11 09.10.17 18:43 Сейчас в теме
Спасибо тебе, золотой ты человек!
21. dkonakov 10 20.11.17 13:49 Сейчас в теме
Тоже актуальный вопрос, может кто-то задаст вопрос на партнерском форуме?
26. Alexander08 16.12.17 04:22 Сейчас в теме
VC2017 comunity использую для компиляции приложения под frame work 3.5 только проходит сборка, и при запуске выходит ошибка:
"сборка создана в более поздней версии среды выполнения чем текущая и не может быть загружена"
Хотя скомпилированный файл запускается без ошибок, только пути у меня не стандартные.
Что не так?
Framework 3.5sp1 и 4.0. стоят.
Система Windows 7 x64.
Прикрепленные файлы:
28. rabanik 2 31.01.18 14:01 Сейчас в теме
Добрый день, подскажите после создания Alias с нужной платформой (поменяв папку, и скорректировав регистр) требуется перезагрузка сервера? Спасибо.
29. rabanik 2 31.01.18 14:28 Сейчас в теме
(28) Требуемую dll загрузил через regsvr32. Но выскакивает ошибка Значение не является значением объектного типа (Connect) ???
30. s.gavrilov 31.01.18 15:10 Сейчас в теме
В командной строке убираем регистрацию новой dll:

regsvr32 /u C:\1cv8\8.3.10.2667\bin\comcntr.dll

затем регистрируем старую (подходящую для старого сервера), например:

regsvr32 C:\1cv8\8.3.9.1818\bin\comcntr.dll
31. rabanik 2 31.01.18 16:30 Сейчас в теме
(30) Спасибо за ответ. Только новая dll тоже нужна, ее используют бухгалтера. Если я сделаю выше описанные операции, я так понимаю, что у меня будет зарегистрирована только старая dll, к новой подключиться будет невозможно? Я правильно понял? Спасибо.
32. s.gavrilov 31.01.18 17:31 Сейчас в теме
При выполнении вышеописанных операций будет доступна только старая dll. Как вариант, можно использовать к-л скрипт, чтобы быстро перерегистрировать нужную dll.

Лучше всего использовать одну и ту же платформу на всех базах (у себя мы пришли к такому выводу).
33. rabanik 2 31.01.18 17:42 Сейчас в теме
(32) Сергей, а как же тогда весь выше описанный пост? Именно от перерегистрации и хотели уйти (описывая вышесказанное). Может как вариант создать 27. MaximkaSM (MaximkaSM) создав компоненты в отдельных приложениях СОМ ?
34. Rust 01.03.18 09:26 Сейчас в теме
ComОбъект = ОбщегоНазначенияКлиентСервер.ИмяCOMСоединителя();
max_zhilin; +1 Ответить
35. KroVladS 35 03.04.18 12:25 Сейчас в теме
Прошу помощи.
Никак не могу подключиться из базы на платформе 8.3.4 к базе на платформе 8.3.10 через COMОбъект("V83.COMConnector")
Если зарегистрирована comcntr.dll из 8.3.4, то отваливается в момент V8.Connect, с ошибкой про разные версии клиента и сервера, что логично.
Если зарегистрирована comcntr.dll из 8.3.10, то отваливается ещё на моменте создания COMОбъект, с ошибкой "Точка входа в процедуру ?handle@ModuleLoader@core@@QAEPAUHINSTANCE__@@XZ не найдена в библиотеке DLL core83.dll." "-2147221164(0x80040154): Класс не зарегистрирован"

Создавал алиасы под разные версии, ошибки те же.

Как подружить две платформы?
37. пользователь 14.12.18 20:04
Сообщение было скрыто модератором.
...
39. zaxarovsky 111 27.12.18 13:44 Сейчас в теме
А без админских прав никак это не запустить?
Неудобно же очень.
Это получается, что только администраторы должны пользоваться этими компонентами что-ли?
40. WizaXxX 360 28.12.18 07:21 Сейчас в теме
(39) Если я правильно помню, там есть раздел "Роли", и в нем вы моете предоставить доступ к компоненте и другим пользователям или группа пользователей.
41. zaxarovsky 111 28.12.18 21:32 Сейчас в теме
(40) Спасибо! посмотрим это...
42. omil 20.05.19 10:33 Сейчас в теме
Спасибо! При непонятной заморочке соединения известной конструкторской программы и APPIUS PLM помогли первые 6 пунктов инструкции.
Прикрепленные файлы:
43. M_Volkov 5 06.07.19 19:24 Сейчас в теме
Не получается пункт 6. Выбираем вариант "Установка новых компонентов", находим нашу библиотеку comcntr.dll.
Выскакивает ошибка: "Этот объект уже зарегистрирован"!? Ничего не создается (компонент V83.COMConnector.1).
Feelthis; +1 Ответить
44. M_Volkov 5 11.07.19 11:58 Сейчас в теме
(43) Оказалось, что у меня уже есть компонент V83.COMConnector.1, использовал его. Правильно ли?
Прикрепленные файлы:
45. M_Volkov 5 14.07.19 08:34 Сейчас в теме
(44) COM соединения V83.COMConnector с ограниченными возможностями меня не устраивает из-за нехватки функционала: метод объекта не обнаружен (СтрокаСоединенияИнформационнойБазы), работа с формами. Возможны ли OLE соединения V83.Application с базами 1С на различных версиях платформы "Без перерегистрации и СМС"?
52. ZAOSTG 163 13.11.19 10:29 Сейчас в теме
(45)
V83.Application

Нашел кто вариант решения?
55. M_Volkov 5 05.03.20 11:29 Сейчас в теме
(52)
Нашел кто вариант решения?
Надо в реестре менять версию зарегистрированной платформы для V83.Application, но это возможно лишь пользователей с административными правами.
56. M_Volkov 5 18.08.20 15:05 Сейчас в теме
(55)
...для V83.Application, но это возможно лишь пользователей с административными правами.
Кроме наличия административных прав обнаружился еще недостаток: допустим один пользователь запустил обмен с базой, работающей на той же версии платформы, а другому пользователю понадобился обмен с базой, работающей на более высокой версий платформы. Допустим у него есть административные права, и он запустив свой обмен, переключает в реестре версию запускаемой платформы. Что происходит с обменом первого пользователя?
Но основной вопрос не в этом. Допустим у него нет административных прав, и для его обмена не нужно OLE-соединение (V83.Application), достаточно COM-соединение (V83.COMConnector). Такое COM-соединение возможно по описанной здесь схеме? Оно не нарушит OLE-соединение первого пользователя?
(Если второму пользователя понадобится открыть объект другой базы, работающей на более высокой версий платформы, то есть методы)
47. пользователь 31.08.19 18:17
Сообщение было скрыто модератором.
...
50. user902161 16.10.19 16:36 Сейчас в теме
Спасибо огромное за статью. COM-соединение между версиями 8.2 и 8.3 работоспособно
51. Severwolf 38 05.11.19 16:59 Сейчас в теме
Доброго дня.
Оставлю это здесь.
При последовательном подключении к разным платформам COM соединением, необходимо сделать следующую настройку в свойствах КомКоннектора
размер группы увеличить с 1 до 5
время ожидания уменьшить с 15 до 2
Прикрепленные файлы:
VeraPV; GorkyGorod; regstaer; user841691; de0nis; WizaXxX; +6 1 Ответить
54. d4rkmesa 18.02.20 13:13 Сейчас в теме
Судя по всему, это уже не работает. Пробовал одновременно сделать доступ к ComConnector 8.3.12 и 8.3.15 на Win 2008 R2, без толку. Видимо, сейчас больше роли играют какие-то зависимости, которые только при установке платформы устанавливаются.
57. M_Volkov 5 29.08.20 10:59 Сейчас в теме
9. Ищем значение в ветке "HKEY_LOCAL_MACHINE" у меня путь такой HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Wow6432Node\CLSID\
А в ветке HKEY_CLASSES_ROOT\CLSID\ что? (звените, в реестре не разбираюсь)
59. tormozit 7193 08.03.21 23:57 Сейчас в теме
Добавил реализацию описанной тут и в порожденной статье возможности в инструмент "Управление COM-классами 1С (ИР)" https://www.hostedredmine.com/issues/922012
Прикрепленные файлы:
Odin-s; fuser; max_zhilin; user1301636; anchovy; BoryaMbi; Dimony4; user841691; Збянтэжаны Саўка; WizaXxX; +10 Ответить
60. EugeneMIPT 20.05.21 07:42 Сейчас в теме
Спасибо за статью. Мне она помогла, но если просто сделать как написано, возникали ошибки. Куча комментариев с разными ошибками не дали быстрого решения как именно сделать настройки. Предлагаю слегка скорректированный алгоритм. (*) - измененные шаги. В нем нет последних шагов по работе с реестром. У меня сработало на двух серверах.
Если автор посчитает возможным - можно было бы перенести в шапку.

1. Идем "Панель управления" - "Администрирование" - "Службы компонентов"
2. В оснастке служб компонентов, "Службы компонентов" - "Компьютеры" - "Мой компьютер" - "Приложения COM+"
3. Создаем новое приложение, правой кнопкой по "Приложения COM+" - "Создать" - "Приложение"
4*. Выбираем "Создать новое приложение", называем например "1cv8", тип выбираем "Серверное приложение",
Учетная запись - Текущий пользователь, Пользователь с ролью Owner - поставил администратора компьютера (сервера).
(без этого возможна ошибка -2147024769(0x8007007F): Не найдена указанная процедура)
5*. Нажимаем правой кнопкой по ветке 1cv8 – Свойства – Безопасность:
- Снимаем галку «Принудительная проверка доступа для приложений»
- Ставим галку «Применить политику программных ограничений»
- Уровень ограничений «Неограниченный»
(без этого возможна ошибка -2147024891(0x80070005): Отказано в доступе)
6. Раскрываем "1cv8", правой кнопкой по "Компоненты" - "Создать" - "Компонент".
7. Выбираем вариант "Установка новых компонентов", находим нашу библиотеку comcntr.dll (той версии платформы, к которой надо будет подключаться)
-* Если установка платформы на сервер не требуется, то достаточно скопировать в некую папку на сервере все содержимое папки bin соответствующей платформы и указать comcntr.dll из этой папки
8. Правой кнопкой по "V83.COMConnector.1" - "Псевдоним...", меняем наименование с "CopyOf.V83.COMConnector.1" на "V83.COMConnector_8.3.9.2033". Данное действие проделываем для всех нужных версий платформ.
al-e-ks; Volchock; Gorec17; BoryaMbi; b_ruslan; jufyti; VeraPV; KastoriX; RIS2020; strugatskj; Dimony4; dance000; sertak; A7758735; Miket78; user841691; cherkass; +17 Ответить
61. EugeneMIPT 20.05.21 17:22 Сейчас в теме
(60) Уточню, работа с реестром не потребовалась.
Реализовывал для подключения из 8.3.17 на 8.3.13.
В п. 5*. еще добавлю:
- Выбираем уровень безопасности "Проверка доступа только на уровне процесса"
(без этого возможна ошибка -2147467238(0x8000401A): Процесс сервера не может быть запущен, так как указана неправильная идентификация. Проверьте правильность указания имени пользователя и пароля.)
63. EugeneMIPT 03.06.21 11:51 Сейчас в теме
(61)

В п. 5*. еще добавлю:
- Нажимаем правой кнопкой по ветке 1cv8 – Свойства – Удостоверение:
Указанный пользователь - пользователь, который имеет имеет права на данном сервере запускать 1С. (Точно не могу сформулировать. В моем случае это служебный доменный пользователь.)
(без этого возможна ошибка -2147467238(0x8000401A): Процесс сервера не может быть запущен, так как указана неправильная идентификация. Проверьте правильность указания имени пользователя и пароля.)
76. M_Volkov 5 18.08.22 09:27 Сейчас в теме
(60) Мне не понятна фраза: "Пользователь с ролью Owner - поставил администратора компьютера (сервера)" - у меня лишь роль CreatorOwner https://ibb.co/7GrSHgm , надо что-то делать? После обновления на 8.3.19.1522 (была 8.3.16.1959 https://imgbb.com/ZHk8XsH ) перестало работать COM-соединение. Судя по старым картинкам приложения не ставил, только Компоненты.
80. b_ruslan 5 06.03.23 15:55 Сейчас в теме
(60) Большое спасибо. Твой вариант единственно верный. А автор запутал в корень, -так пишут когда не хотят поделиться.
82. orlum 27.03.24 22:25 Сейчас в теме
(60) Дополню, если мы по какой-то причине хотим запускать COM Connector не на удаленном компьютере, типа
COMОбъект("V83.COMConnector", "имя компьютера")
, то на этом удаленном компьютере
1. Не стоит создавать алиас для компонента, иначе пропадает связь компонента с интерфейсом IV8COMConnector3 и при подключении возникает ошибка «Метод объекта не обнаружен (Connect)». Возможно вместо алиаса можно переименовать компонент через реестр, но у меня не получилось.

2. Разрешить доступ по сети к COM+, иначе при подключении возникает ошибка ошибка «-2147023174(0x800706BA): The RPC server is unavailable.»
Для этого:
2.1. В реестре установить ключ RemoteAccessEnabled = 1 Computer\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\C­OM3
2.2. Включить в файерволе встроенное правило «COM+ Network Access (DCOM-In)», дающее доступ к порту 135
2.3. Добавить в файервол правило «COM+ Port Mapper (DCOM-In)», разрешающее для программы %systemroot%\system32\dllhost.exe все-все-все.
Прикрепленные файлы:
83. ligan 31.03.24 15:22 Сейчас в теме
(82)
Дополню, если мы по какой-то причине хотим запускать COM Connector не на удаленном компьютере, типа

слово «не» лишнее, надо читать, как «хотим запускать COM Connector на удаленном компьютере»
62. wolder 132 25.05.21 12:49 Сейчас в теме
Да это работает! Для 8.3.хх.хххх

И в коде пишем что-то типа:
Если Элементы.СтарницыВариантовПодключения.ТекущаяСтраница = Элементы.Вариант1 Тогда
// запуска к КА
V8 = Новый COMОбъект("V83.COMConnector.1.8315");
ИНаче
// запуска к Розница
V8 = Новый COMОбъект("V83.COMConnector.1.8318");
КОнецЕСлИ;
Прикрепленные файлы:
64. kDymok 17.06.21 12:05 Сейчас в теме
Замечено, что компоненты, созданные описанным способом через службу компонентов, заметно медленней работают, чем созданный стандартным способом C:\windows\System32\regsvr32 /s "c:\progra~1\1cv8\8317~1.198\bin\comcntr.dll"
Например, одна и таже задача, один и тот же код, выгрузить 2,5 тыс. строк из одной базы в другую проходит или за 2 часа или за 20 минут соответственно.

Было ли у кого такие тормоза? Как решили?
65. tormozit 7193 17.06.21 13:53 Сейчас в теме
66. kDymok 21.06.21 14:55 Сейчас в теме
(65) Изучил, хорошая статья.
Но что поправить, чтобы работало быстро - не понятно. Повторюсь, код и базы в обоих случаях у меня одни и те же. Различие - только в способе регистрации библиотеки.
Если бы не необходимость использовать разные платформы, я бы и не стал использовать регистрацию библиотек через службы компонентов
67. tormozit 7193 21.06.21 15:34 Сейчас в теме
(66) Ты должен был понять, что внепроцессная активация = замедление коммуникаций с COM объектом. Чем больше коммуникаций (вызовов) - тем соотвественно это будет заметнее отражаться на длительности работы кода. Нужно сократить количество коммуникаций (принцип "Минимум COM вызовов"). Также желательно перейти на внутрипроцессное создание COM объекта.
69. ZergKRSK 130 11.02.22 11:07 Сейчас в теме
Работает, подружил 8.3.14 и 8.3.18
70. Iogurttt 11.03.22 18:10 Сейчас в теме
пока не выгрузишь из памяти ничего не работает!
"После установки соединения в память загружается dllhost.exe, в контексте которого и работает коннектор. Для инициализации соединения к другой базе (с отличающейся версией платформы), ранее отработавшую библиотеку нужно выгрузить из памяти. К сожалению, у меня не получилось сделать это более цивилизованно, чем taskkill.exe /f /im dllhost.exe."
71. Iogurttt 11.03.22 18:39 Сейчас в теме
заменяет 70. Iogurttt = 51. Severwolf
1С:Предприятие 8.3 (8.3.19.1522) подружил с 8,3,12

но разбирался блин целый день, за статью спасибо, но это явно не инструкция, пришлось перетыкать все кнопки\пересоздать все объекты по несколько раз \ читать другие статьи, целый день провозился
вы хоть напишите что то что в шапке не работает или напишите что посте того что в шапке обязательно выполнить прикрепленные сообщения № ..№...№...
72. Dimony4 3 11.05.22 21:37 Сейчас в теме
Добрый день.
Как обойти ограничение "Этот объект уже зарегистрирован"?

Задача подключаться ко всем базам 8.3.18.1289
и к некоторым 8.3.18.1779
Прикрепленные файлы:
74. Dimony4 3 13.05.22 22:30 Сейчас в теме
(59) Воспользовался инструментом "Управление COM-классами 1С (ИР)". Получил решение задачи (72). Зарегистрировал два объекта х64 разной версии
Управление COM-классами 1С (ИР) запустил в клиенте х32 (у меня не работает, если клиент х64)
Прикрепленные файлы:
75. YA_136281634 14.05.22 12:09 Сейчас в теме
77. M_Volkov 5 20.08.22 18:44 Сейчас в теме
Работаем в основном в Альфа-Авто 4.1, которая работает на платформе не выше 8.3.10.2466 с 32-х разрядной клиентской частью - это упр. программа, поэтому для получения полной отчетности все документы перекидываем КА. Когда поддержка КА1 закончилась, поставил КА2 и 2-ю более высокую платформу (поначалу 8.3.14.1779 полностью х64, см. картинку в п. (44) вроде приложение не создавал) в другом диапазоне портов. Но в ней пока не работаем (в стадии наладки). Пока обновляем КА1 обновлениями УПП. Все работало: Альфа-Авто настроены Com-обмены из КА1, например, банковских выписок, пока работали на одной платформе 8.3.10.2466. Но КА1 (УПП) потребовалось более высокая платформа. Обновил 2-ю платформу на 8.3.19.1522 х64. В службе компонентов создал компоненту V83.COMConnector_8.3.19.1522, вроде все по этой инструкции, но получил:
Ошибка при вызове конструктора (COMОбъект): -2147221005(0x800401F3): Недопустимая строка с указанием класса.
Какая строка? СтрокаПодключения - убрал из нее Порт, получил:
Ошибка при вызове метода контекста (Connect): Произошла исключительная ситуация (V83.COMConnector.1): Неверные или отсутствующие параметры соединения с информационной базой.
т.е. не верно. Что ни так делаю? Как убрать:
Ошибка при вызове конструктора (COMОбъект): -2147221005(0x800401F3): Недопустимая строка с указанием класса.
78. M_Volkov 5 03.09.22 12:37 Сейчас в теме
(77) Совсем забыл у меня же 2 сервера: PERSEUS - сервер терминалов, на котором все и делаю: службы и служба компонентов, и Andromeda - SQL сервер, на нем все делаю также как на PERSEUS, службы во всяком случае. Может службу компонентов перенести на SQL сервер (сделать такую же)? Но версии у них разные (Рус/Eng) https://ibb.co/jJR53gB Где V8COMConnector - это которая в Eng версии? Что в Eng версии нет контекстного меню "Псевдоним..."?
79. M_Volkov 5 17.12.22 19:53 Сейчас в теме
(77)
В службе компонентов создал компоненту V83.COMConnector_8.3.19.1522, вроде все по этой инструкции, но получил...

Сейчас на 8.3.10.2466 работает только Альфа-Авто 4.1, все остальные базы работают на 8.3.19.1522. Могу ли я зарегистрировать comcntr.dll версии 8.3.19.1522 для Com-соединения Альфа-Авто с другими базами, и убрать все обертки из Службы компонентов? (какие изменения произойдут в реестре).
81. doronin70 18.10.23 18:59