1с отсутствует отображение для типа comобъект

Обновлено: 06.07.2024

Добрый день, дорогие друзья, я в своей работе часто сталкивался с рядом ошибок связанных с com объектами. Когда я только начинал работать в сфере ИТ, то подобные ошибки о которых пойдет речь ниже, вызывали у меня недоумение и я отправлял пользователей к программистам, но потом шло время и опыт мой рос, такие проблемы начал решать самостоятельно, теперь хочу поделиться решениями с вами.

Рассмотрим первый пример - ошибка связана с внешней обработкой EDI

Данная ошибка устраняется очень просто, вам нужно зарегистрировать excon.dll. Для этого открываем cmd от имени администратора и прописываем следующие команды

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

Первое что нужно попробовать сделать на машине пользователя - это зарегистрировать comcntr.dll

Для этого открываем cmd от имени администратора и прописываем следующие команды

regsvr32 "C:\Program Files (x86)\1cv8\ 8.3.15.1778 \bin\comcntr.dll" - Все что выделено жирным шрифтом, в вашем случае может отличаться
cd c:\Windows\SysWOW64 regsvr32 "C:\Program Files\1cv8\ 8.3.15.1778 \bin\comcntr.dll" - Все что выделено жирным шрифтом, в вашем случае может отличаться

Если данное решение не помогает, то нужно проверить на сервере 1С возникает такая же ошибка или нет, если возникает при тех же действиях, то сделать следующие действия в cmd от имени администратора

"C:\Program Files (x86)\1cv8\ 8.3.15.1778 \bin\1cv8.exe" /regserver - Все что выделено жирным шрифтом, в вашем случае может отличаться
"C:\Program Files\1cv8\ 8.3.15.1778 \bin\1cv8.exe" /regserver " - Все что выделено жирным шрифтом, в вашем случае может отличаться

Можно создать данное com соединение с помощью "Службы Компонентов Windows" , об этом рассказывать не буду в данной статье, если вам нужна информация, пишите комменты, я свяжусь с вами и все расскажу. Если будет много пожеланий, сделаю отдельную статью на эту тему.

Третья ошибка связана с компонентой MSScript

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

Решение не сложное и данное решение можно автоматизировать если проблема массовая (массовая может быть из-за обновления релиза 1С)

Давайте начнем по порядку и зайдем в "Службы Компонентов Windows" от имени администратора на пользовательской машине где возникает данная ошибка и найдем там " Приложения COM+ "

Теперь нужно нажать правой клавишей мыши по " Приложения COM+ " и выбрать " Создать-->Приложение "

Откроется мастер установки в котором нужно проделать все что показано на скринах ниже

У вас в основном окне появится только что созданное приложение и его нужно настроить, для этого щелкаем по нему правой кнопкой мыши и выбираем " Свойства " и переходим во вкладку " Безопасность " в которой настраиваем все один в один как на скрине ниже

Теперь необходимо для него создать компоненту и запустить ее в работу, снова предлагаю наглядно посмотреть на скрины ниже.

Осталось только запустить компоненту и ошибку в 1С вы устранили. Для запуска вам нужно перейти в " Приложения COM+ ", в центральном окне найти Msscript и нажать правой кнопкой мыши, затем нажать " Пуск " и ваша компонента начнет работать.

Теперь пару слов об автоматизации данного процесса т.к. бывают массовые случаи когда слетает данная компонента. Наша задача сделать msi файл и затем его разлить с помощью групповых политик или с помощью kaspersky security center (если конечно вы им пользуетесь - в моем случае удобнее было воспользоваться именно касперским)

Для создания файла msi необходимо выполнить все рекомендации со скринов ниже

Внешние компоненты можно использовать на разных операционных системах:

А также может быть 32-х разрядная версия внешней компоненты и 64-х разрядная.

Внешние компоненты могут использоваться при работе через веб-клиент для браузеров:

  • Google Chrome
  • Microsoft Internet Explorer
  • Mozilla Firefox
  • Safari;

И в мобильной платформе 1С для мобильных операционных систем:

Существует две технологии создания внешних компонент для 1С:

Внешние компоненты разработанные по технологии COM можно использовать только:

  • В тонком и толстом клиентах
  • В веб клиенте, только для ОС Windows

Для подключения внешней компоненты используется метод НачатьПодключениеВнешнейКомпоненты, вторым параметром нужно указать ProgID COM компоненты.

ОбратныйВызов = Новый ОписаниеОповещения ( "ОбратныйВызов" , ЭтотОбъект ) ; НачатьПодключениеВнешнейКомпоненты ( ОбратныйВызов , "AddIn.Test" ) ; Процедура ОбратныйВызов ( Подключено , ДопПараметры ) Экспорт

Также можно использовать синхронный метод ПодключитьВнешнююКомпоненту и асинхронный ПодключитьВнешнююКомпонентуАсинх.

На данный момент данная технология является устаревшей, рекомендуется использовать технологию Native API.

Native API

Внешние компоненты разработанные по технологии Native API можно использовать:

  • В тонком и толстом клиентах
  • В веб-клиенте
  • На сервере
  • В мобильном приложении

Внешняя компонента может быть запакована в ZIP-архив или представлена в виде отдельного файла.

Так как внешние компоненты по технологии Native API могут быть использованы как в Windows, так и в Linux, то желательно помещать в архив с компонентой 5 файлов:

  • dll файл 32-х разрядной версии
  • dll файл 64-х разрядной версии
  • so файл 32-х разрядной версии
  • so файл 64-х разрядной версии
  • Файл-манифест

В этом случае при подключении внешней компоненты платформа сама определит какой файл использовать по файлу-манифесту.

Подключение внешней компоненты на клиенте

Перед подключением внешней компоненты на клиенте, ее сначала нужно установить методом НачатьУстановкуВнешнейКомпоненты. Установка выполняется в каталог компьютера клиента %APPDATA%\1C\1Cv8\ExtCompT. Установка выполняется один раз. В дальнейшем перед использованием компоненты ее нужно только подключать. Подключение выполняется методом НачатьПодключениеВнешнейКомпоненты.

Особенности использования COM-объектов

В этой статье приведены некоторые особенности работы с COM-объектами, которые могут оказаться полезными в практической деятельности.

Использование оператора доступа по индексу []

В технологии Automation не предусмотрено штатных средств для реализации обращений по индексам, а доступ к индексированным свойствам (т.е. выражения вида МояФункция(X, Y) = Z) через Automation допускает неоднозначность толкования и не поддерживается встроенным языком 1С:Предприятия.

Для обработки свойств-коллекций рекомендуется использовать оператор цикла Для Каждого . , использующий стандартный для Automation интерфейс IEnumVARIANT . Для доступа по индексу через Automation объекты-коллекции 1С:Предприятия также реализуют методы Получить() и Установить() .

Передача параметров в конструктор объекта

Метод NewObject() объекта Automation 1С:Предприятия имеет переменное число параметров - первым параметром в NewObject() всегда передается имя типа создаваемого объекта, а последующие параметры могут быть использованы для передачи данных в конструктор создаваемого объекта.

Совпадение имен свойств и методов объекта

Технология Automation подразумевает возможность двоякого толкования некоторых элементов агрегатного объекта. Например, могут не различаться одноименные свойство и метод, возвращающий значение и не имеющий параметров. Эту особенность следует иметь в виду при работе с объектами 1С:Предприятия через Automation.

Например, если реквизит справочника назван так же, как и один его методов (реквизит ПолноеНаименование и метод ПолноеНаименование() ), то получение реквизита Справочник.ПолноеНаименование может привести к вызову метода Справочник.ПолноеНаименование() . Такая неразличимость возможна именно при работе через Automation, во встроенном языке 1С:Предприятия свойства и методы объектов 1С:Предприятия разделены.

Отображение в отладчике свойств со значением "Ошибка чтения значения"

Упомянутая выше возможность двоякого толкования элементов агрегатного объекта имеет и визуальное отображение - при просмотре в отладчике 1С:Предприятия свойств COM-объектов можно видеть свойства со значением "Ошибка чтения значения". В действительности эти свойства являются методами, однако могут использоваться и как свойства (например, в таком языке как Visual Basic).

Почему мой справочник не видно в интерфейсе?

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

В такой ситуации нужно проанализировать, что же сделано не так? Алгоритм проверки прост - сначала нужно убедиться, что все в порядке с разделом, к которому относится объект, а затем, что все в порядке с самим объектом.

Для примера рассмотрим справочник Контрагенты , относящийся к подсистеме (разделу) Закупки .

Сначала проверим раздел. Убедимся что:

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


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


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


4. Откроем командный интерфейс подсистемы и проверим, что хотя бы одна команда (стандартная или созданная в конфигурации) доступна для настройки в этой подсистеме. Если таких команд нет – подсистема не будет отображена. При этом важно лишь наличие этих команд, а не их видимость. Для этого вызовем контекстное меню подсистемы Закупки и выполним команду Открыть командный интерфейс .


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

Если в составе команд нет команды, созданной в конфигурации, значит, ей не назначена группа (см. п.2 ниже).

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

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


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


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

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


Вернуться к настройкам, выполненным в конфигураторе, можно с помощью команды Все действия – Установить стандартные настройки в окне настройки панели разделов.


Теперь проверим все, что относится к самому объекту:

1. Что для искомого объекта разрешено использование стандартных команд. Для этого вызовем контекстное меню справочника Контрагенты и откроем палитру его свойств.


2. Если у объекта существует нестандартная команда, то чтобы увидеть ее в интерфейсе убедимся, что для нее задана группа и, если команда параметризованная, - тип параметра команды. Для этого вызовем контекстное меню нестандартной команды Печать справочника Контрагенты и откроем палитру ее свойств.


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

3. Откроем командный интерфейс подсистемы и убедимся, что включена видимость команды в подсистеме. При этом нужно обратить внимание не только на то, как настроена видимость по-умолчанию, но и на то, как она настроена для различных ролей. Для этого вызовем контекстное меню подсистемы Закупки и выполним команду Открыть командный интерфейс .


4. Откроем окно редактирования роли (например, Менеджер по закупкам ) и проверим, что в правах этой роли разрешено использование искомой команды. Если речь идет о стандартной команде (например, открытия списка справочника) – нужно проверить права на сам объект.


Если речь идет о нестандартной команде (например, Печать ) – нужно проверить права на эту команду.


5. Убедимся, что объект или команда не отключены функциональными опциями в режиме исполнения. Для того, чтобы узнать, с какими функциональными опциями связан объект, вызовем контекстное меню справочника Контрагенты и выполним команду Дополнительно .


6. В заключение, в режиме 1С:Предприятие проверим, что команда не отключена пользовательскими настройками.


Вернуться к настройкам, выполненным в конфигураторе, можно с помощью команды Все действия – Установить стандартные настройки .

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

Читайте также: