83 comconnector

1С:Предприятие 7.7 /
Практические рекомендации /
Сообщения об ошибках

Это сообщение появляется обычно в тех случаях, когда запущенная конфигурация использует те компоненты 1С:Предприятия, которые не установлены или не активизированы при запуске программы. Например, если в сообщении указано название объекта «БухгалтерскиеИтоги», то это значит, что не активизирована компонента » Бухгалтерский учет «.

Проверить, активизирована компонента или нет, можно посмотрев список активизированных компонент (меню «Помощь — о программе» — «Установленные компоненты»).

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

Другой причиной может являться то, что необходимая для данной конфигурации компонента не установлена. Состав устанавливаемых с дистрибутивного комплекта 1С:Предприятия (дискет или компакт-диска) компонент определяется комплектом поставки, то есть приобретенным продуктом. Например, в комплект поставки 1С:Бухгалтерии входит компонента » Бухгалтерский учет » и типовая конфигурация, которая использует эту компоненту. Если используемая конфигурация приобретается отдельно, то следует убедиться, что в приобретенном Вами комплекте 1С:Предприятия имеются компоненты необходимые для данной конфигурации.

Нас находят: Неудачная попытка создания объекта 1с 7 7, 1с 7 7 неудачная попытка создания объекта, Неудачная попытка создания объекта (БухгалтерскиеИтоги), Произошла исключительная ситуация (1С:Предприятие): Неудачная попытка создания объекта, неудачная попытка создания объекта в 1с, неудачная попытка создания объекта addln ProxWay, Неудачная попытка создания объекта (V82 Application), неудачная попытка создания объекта, 1с 7 7 Неудачная попытка создания объекта (Регистр, Неудачная попытка создания объекта (Сервис)

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

Подключаемся через COM к базе 1С

Для реализации COM соединения в 1С используется специальный механизм под названием COMConnector. Этот объект устанавливается вместе с платформой и применяется для связи информационных баз. Следует учесть, что для версий 8.2 и 8.3 используются разные по наименованию объекты – «V82.COMConnector» и «V83.COMConnector» соответственно.

Помните, что на время COM соединения к базе тратиться лицензия – не стоит увлекаться одновременным выполнением нескольких подключений. Особенно это важно для организаций, у которых количество лицензий ограничено. Решиться этот вопрос может при помощи регламентных заданий, выполняющихся во время отсутствия активных подключений пользователей к информационной базе.

Чтобы иметь возможность подключиться к другой базе и запросить нужную информацию вы должны знать следующие данные:

  1. Какого она типа – файловая или клиент-серверная;
  2. Где она располагается;
  3. Под каким именем и паролем в нее можно зайти;
  4. Какие данные вас интересуют.

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

ПараметрыПодключенияФайловойИБ = «Filе=»»Путь_к_базе»»; Usr=»»Имя_пользователя»»;Pwd=»»Пароль»»»; ПараметрыПодключенияКлиентСервернойИБ = «Srvr=»»Имя_Сервера»»; Ref=»»Имя_базы»»; Usr=»»Имя_пользователя»»; Pwd=»»Пароль»»»;

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

&НаСервере Функция ПодключитьсяКбазе() экспорт ПараметрыПодключенияИБ = «Filе=»»Е:\базы 1с\ЕRР»»; Usr=»»Администратор»»;Pwd=»»1″»»; V83COMCon= Новый СОMОбъект(«V83.COMConnector»); Попытка Возврат V83COMCon.Connect(ПараметрыПодключенияИБ); Исключение Сообщить(ОписаниеОшибки()); Возврат Неопределено; КонецПопытки; КонецФункции

Через COM соединение вы можете не только выбирать данные, но и добавлять их в базу, к которой подключаетесь. Помните, что передавать через COM объект мы можем 4 примитивных типа данных. Другие типы придется задавать с помощью встроенных в платформу функций поиска. Учтите, что глобальные функции платформы вызываются тоже через COM-соединение.

Получаем данные из базы 1С

После того как получили нужный объект, необходимо прочитать данные из другой базы. Для этого мы применяем запрос через COM соединение в 1С 8.3 с помощью полученного значения типа «COM объект» из функции. Важно сначала подключиться к базе, а затем уже выполнять запрос. Выполнение происходит через метод NewObject с указанием в качестве параметра типа объекта в строковом виде – «Запрос».

&НаСервере Процедура ТестСОMНаСервере() Соединение = ПодключитьсяКбазе(); Если ТипЗнч(Соединение) Тип(«Неопределено») Тогда ЗапросБПЗО = Соединение.NewObject(«Запрос»); ЗапросБПЗО.Текст = «ВЫБРАТЬ первые 15 | СправочникПольз.Наименование КАК Наименование |ИЗ | Справочник.пользователи КАК СправочникПольз»; Выборка = ЗапросБПЗО.Выполнить().выбрать(); Пока Выборка.следующий() цикл Сообщить(Выборка.Номер); КонецЦикла; КонецЕсли; КонецПроцедуры

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

  • Строка();
  • Число();
  • Дата().

ЗапросБПЗО = Соединение.NewObject(«Запрос»); ЗапросБПЗО.Текст = «ВЫБРАТЬ первые 15 | СправочникПольз.Наименование КАК Наименование |ИЗ | Справочник.Пользователи КАК СправочникПольз I ГДЕ | СправочникПольз.Подразделение = &НужноеПодразделение | И СправочникПольз.Наименование подобно «»%»» + &НужноеИмя+ «»%»»»; ЗапросБПЗО.УстановитьПараметр(«НужноеПодразделение»,Соединение.Справочники.СтруктураПредприятия.НайтиПоКоду(«00-000023»)); ЗапросБПЗО.УстановитьПараметр(«НужноеИмя»,»Екатерина»); Выборка = ЗапросБПЗО.Выполнить().выбрать(); Пока Выборка.следующий() цикл Сообщить(Выборка.Наименование); КонецЦикла;

Если нужно передать в базу массив для отбора по нескольким параметрам, например, подразделениям, тоже используется команда NewObject. Аналогично можно передавать список или таблицу значений, заполняя их элементами другой базы через соединение. Для поиска вам доступны все существующие методы объектов и механизмов платформы.

ЗапросБПЗО = Соединение.NewObject.(«Запрос»); ЗапросБПЗО.Текст = «ВЫБРАТЬ первые 15 | СправочникПольз.Наименование КАК Наименование | ИЗ | Справочник.Пользователи КАК СправочникПольз I ГДЕ | СправочникПольз.Подразделение В (&НужноеПодразделение) | И СправочникПольз.Наименование подобно «»%»» + &НужноеИмя+ «»%»»»; МассивПодразделений = Соединение.NewObject(«Массив»); МассивПодразделений.Добавить(Соединение.Справочники.СтруктураПредприятия.НайтиПоКоду(«00-000023»)); МассивПодразделений.Добавить(Соединение.Справочники.СтруктураПредприятия.НайтиПоКоду(«00-000038»)); МассивПодразделений.Добавить(Соединение.Справочники.СтруктураПредприятия.НайтиПоКоду(«00-000046»)); ЗапросБПЗО.УстановитьПараметр(«НужноеПодразделение», МассивПодразделений); ЗапросБПЗО.УстановитьПараметр(«НужноеИмя»,»Екатерина»); Выборка = ЗапросБПЗО.Выполнить().выбрать(); Пока Выборка.следующий() цикл Сообщить(Выборка.Наименование); КонецЦикла;

При переносе документов или элементов справочников всегда возникает вопрос о контроле переноса определенного объекта. С помощью COM соединений можно решить подобные проблемы через уникальный идентификатор. Нужно найти объект в подключаемой базе по идентификатору из текущей ИБ с помощью функции «ПолучитьСсылку», используя идентификатор в виде строки. Если такового не нашлось, вы можете создать его с помощью COM соединения.

СтрИдент = Строка(Справочники.Пользователи.НайтиПоКоду(«00-0000313»).УникальныйИдентификатор()); Если НЕ ЗначениеЗаполнено(Соединение.Справочники.Пользователи.ПолучитьСсылку(Соединение.NewObject(«УникальныйИдентификатор», СтрИдент))) тогда НовыйПользователь = Соединение.Справочники.Пользователи.СоздатьЭлемент(); НовыйПользователь.Наименование = Справочники.Пользователи.НайтиПоКоду(«00-0000313»).Наименование; НовыйПользователь.ФизическоеЛицо = Справочники.Пользователи.НайтиПоКоду(«00-0000313»).ФизическоеЛицо; НовыйПользователь.Записать(); КонецЕсли;

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

Рис.1 Внешнее соединение

Соединение..; ПеременнаяИзФункции = Соединение..;

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

Ошибка 1С «V83.COMConnector класс не зарегистрирован» возникает тогда, когда во время установки платформы 1С по какой-то причине не зарегистрировалась компонента comcntr.dll. Регистрация компоненты comcntr.dll вручную не всегда возможна, это довольно сложная задача для рядового пользователя 1С.

Поэтому была написана обработка для автоматической регистрации данной компоненты. Обработка выполняет автоматическую регистрацию компоненты в реестре из среды 1С запущенной с административными правами.

Внешняя обработка для 1С Предприятие (Управляемые формы) позволяет зарегистрировать компоненту comcntr.dll, нажатием всего лишь одной кнопки. Такой обработкой, любой пользователь может воспользоваться сам, без участия программиста 1С. Обработка работает в любой конфигурации на управляемых формах.

Ниже представлен внешний вид обработки для автоматической регистрации компоненты comcntr.dll.

Обработка регистрация компоненты

Для того, чтобы воспользоваться обработкой, обязательно нужно выполнить запуск 1С от имени администратора. Это делается так

  1. Щелкаете правой кнопкой мыши на ярлыке 1С;
  2. Выбираете «Запустить от имени администратора»;
  3. Выбираете нужную базу и нажимаете «1С Предприятие».

После открытия 1С запускается внешняя обработка как обычно, через Файл/Открыть.

После того как обработка регистрации компоненты comcntr.dll открыта нужно только нажать кнопку «Зарегистрировать».

Для того, чтобы не разбираться с определением того, какая нужна компонента для 32 разрядной платформы или 64 разрядной в обработке выполняются попытки регистрации обеих компонент. Т.е. в результате работы обработки, вы увидите два окна: одно об ошибке в регистрации ненужной вам компоненты и другое об успешной регистрации нужной вам компоненты.

После успешной регистрации компоненты можно перезапустить 1С и продолжать работу.

Обработка может пригодиться в таких случаях, как:

  1. Когда вы видите сообщение вида:»COMConnector = Новый COMObject(ИмяCOMСоединителя()); // «V83.COMConnector» по причине: -2147221164(0x80040154): Класс не зарегистрирован»;
  2. Ошибка при обмене между конфигурациями;
  3. Ошибка при обмене с сайтом;
  4. Ошибки в каких-то обработках для переноса данных и тому подобное;
  5. Любые ошибки, в которых фигурирует название компоненты comcntr.dll.

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

Регистрация_компоненты.rar