Ошибка при вызове конструктора описаниеоповещения

Обновлено: 02.05.2024

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

Текст: «Ошибка при вызове конструктора (COMObject) по причине: -2147221005(0x800401F3): Недопустимая строка с указанием класса».

Решение — в регистрации библиотеки comcntr.dll из каталога программы для корректного вызова COMConnector.

Подготовительные действия

  • отключите службу Агента сервера 1С:Предприятия и программы, возможно использующие регистрируемую DLL;
  • если ранее использовалась библиотека устаревшей версии, удалите регистрацию comcntr.dll, запустив команду вызова regsvr32 с ключом /u.

Подходы к решению

В командной строке с правами Администратора выполните команду:

2. Переустановка платформы с внесением исправлений

  • запускаем консоль «Службы компонентов»;
  • добавляем новый элемент, переходим «Компьютеры» — «Мой компьютер» — из списка выбираем «Приложения COM+»;
  • выбираем «Создать» — «Приложение»;
  • в Мастере установки выбираем второй вариант «Создать новое приложение», в поле «Введите имя нового приложения:» вводим «V83COMConnector», «Способ активации» устанавливаем «Серверное приложение», нажимаем «Далее»;
  • выбираем учетную запись под которой запускается приложение, по умолчанию — «Текущий (вошедший в систему) пользователь»;
  • на этапах «Добавление ролей приложения» и «Добавление пользователей для ролей» нажимаем «Далее», а затем «Готово».

В ветке только что созданного приложения переходим в подветку «Компоненты» и создаем компонент:

  • в контекстном меню выбираем «Создать» — «Компонент»;
  • кликаем по первому варианту «Установка новых компонентов»;
  • в открывшемся диалоге выбираем необходимый файл comcntr.dll и нажимаем «Открыть»;
  • нажимаем «Далее» и «Готово».

Обратите внимание: после установки измените свойства объекта. Для этого переходим к ветке V83COMConnector:

  • открываем свойства созданного компонента, переходим в ветку V83COMConnector — «Свойства»;
  • на вкладке «Безопасность», в «Авторизация» снимаем флаг «Принудительная проверка доступа для приложений»;
  • в «Политика программных ограничений» устанавливаем флаг «Применить политику программных ограничений» и выбираем «Уровень ограничений:» — «Неограниченный»;
  • нажимаем «Применить» — «ОК».

Полная версия со снимками экранов — в статье на Дзен-канале.

на клиентском общем модуле пишу
Процедура ОткрытьФормуЦеныИВалюта(ФормаДокумента, ДополнительныеПараметрыОповещения = Неопределено) Экспорт
ПараметрыОповещения = Новый Структура("ФормаДокумента, ДополнительныеПараметры", ФормаДокумента, ДополнительныеПараметрыОповещения);
ОписаниеОповещения = Новый ОписаниеОповещения("ПослеЗакрытияФормыЦеныИВалюта", ФормаДокумента, ПараметрыОповещения);
КонецПроцедуры

Процедура ПослеЗакрытияФормыЦеныИВалюта(Результат, Параметры) Экспорт
ФормаДокумента = Параметры.ФормаДокумента;
КонецПроцедуры

: Ошибка при вызове конструктора (ОписаниеОповещения)
ОписаниеОповещения = Новый ОписаниеОповещения("ПослеЗакрытияФормыЦеныИВалюта",
по причине:
Не найден экспортируемый метод: ПослеЗакрытияФормыЦеныИВалюта

вроде указал слово Экспорт

(0) Сотри "Экспорт" и напиши по новой. Даже миста его не понимает и не подсветила красным. Скорее всего у тебя там анг буква -)

(0) ты метод ПослеЗакрытияФормыЦеныИВалюта к Форме привязал, а он по ходу у тебя в этом же общем модуле живет

Ну. Ты сам указал расположение обработчика "ПослеЗакрытияФормыЦеныИВалюта" в ФормаДокумента. А поместил его в общем модуле.

Правильно оно ругается.

Тип: Строка.
Тип: УправляемаяФорма; КомандаКомандногоИнтерфейса; ОбщийМодуль.
Программный модуль, процедура которого будет вызвана.
При использовании типа УправляемаяФорма будет вызван метод модуля указанной управляемой формы.
При использовании типа ОбщийМодуль будет вызван метод общего неглобального модуля.
При использовании типа КомандаКомандногоИнтерфейса будет вызван метод модуля команды командного интерфейса.
Объект данного типа может быть получен только из модуля команды.
Для получения ссылки на него необходимо использовать свойство "ЭтотОбъект".
Оно доступно в контексте модуля команды и аналогично свойству ЭтаФорма в модуле формы.

второй параметр смотри-читай

ОписаниеОповещения — объект встроенного языка 1С:Предприятия, указывающий на процедуру, в которой будет продолжено исполнение кода при наступлении определенного события.

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

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

Основным инструментом отказа от модальности стало ОписаниеОповещения.

Как работает ОписаниеОповещения

Для начала разберем как работает платформа с модальными окнами на примере метода Вопрос(). Напишем не хитрый код, в котором пользователю показывается диалог с вопросом и вариантами ответа Да и Нет.

В данном случае пользователю будет показан диалог, а работа клиентской части будет полностью приостановлена до момента, пока пользователь не ответит на вопрос.

Диалог с ОписаниеОповещения

Тогда результат поместится в переменную Ответ и только после этого работа клиентской части будет возобновлена для выполнения алгоритма заполнения.

Напишем аналогичный пример, но уже без модального вызова. Будем использовать метод ПоказатьВопрос(), которому передадим ОписаниеОповещения.

Пользователь не заметит разницы, ведь будет показан точно такой же диалог с вопросом. Но исполнение кода не будет приостановлено, вместо этого будет исполнен дальнейший алгоритм и будет завершена работа текущей процедуры.

После ответа пользователя будет вызвана процедура ОбработатьОтветПользователя(), которую мы указали в конструкторе ОписаниеПоповещения и только тогда будет выполнен алгоритм заполнения.

Описание функционала от разработчиков на ИТС

Синтаксис

Конструктор ОписаниеОповещения имеет 5 необязательных параметров:

ИмяПроцедуры — Имя экспортируемой процедуры, которая будет вызвана;

Модуль — Модуль в котором расположена вызываемая процедура. Могут быть указаны Форма, Общий модуль, Команда командного интерфейса;

ДополнительныеПараметры — Произвольное значение, которое будет передано в вызываемую процедуру последним параметром;

ИмяПроцедурыОбработкиОшибки — Имя экспортируемой процедуры, которая будет вызвана в случае ошибки;

МодульОбработкиОшибки — Модуль в котором расположена вызываемая процедура в случае ошибки. Могут быть указаны Форма, Общий модуль, Команда командного интерфейса.

Вызываемая процедура и её параметры

Вызываемая процедура должна быть экспортируемой, и в самом простом случае содержать два параметра Результат и ДополнительныеПараметры.

В зависимости от объекта в котором используется ОписаниеОпопвещения, количество параметров вызываемой процедуры может меняться.

Например вызываемая процедура для обработки оповещения метода глобального контекста НачатьПомещениеФайла() должна иметь 4 параметра.

Для избежания ошибок обращайтесь к Синтаксис-помощнику, там описано количество и порядок необходимых параметров.

Выполнение обработки оповещения

В платформе реализован метод ВыполнитьОбработкуОповещения(), для возможности непосредственного выполнения обработки оповещения.

Методу в качестве параметра необходимо передать ОписаниеОповещения, которое будет выполнено. Так же можно передать в процедуру обработки произвольный результат вторым необязательным параметром.

Работа на сервере

ОписаниеОповещения не доступно на сервере, но в качестве исполняемой процедуры можно указать серверный метод. В справке нет явного указания о данной возможности, но и противоречий нет.

Возможные ошибки

Не найден экспортируемый метод

Если вызываемая процедура не экспортная, то при исполнении будет вызвано исключение. Решается указанием экспортной процедуры.

Не найден экспортируемый метод

Количество параметров 1. Ожидаемое количество – 2

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

Количество параметров 1. Ожидаемое количество – 2

Примеры использования ОписаниеОповещения

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

Оповещение о закрытии формы

Реализуем функционал открытия формы подбора с дальнейшей обработкой результата

Ввод значений и предупреждения

Реализуем функционал ввода числа. После ввода выполним проверку на четность введенного числи, если число не четное выведем предупреждение

Проверка существования файла и передача описания оповещения через дополнительные параметры

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

Разработаем функционал проверки существования файла. В модуле реализована процедура для централизованной обработки ошибок ОповеститьОбОшибке(), будем передавать ОписаниеОповещения об ошибке через дополнительные параметры.

Обработаем результат проверки существования файла. Если файл не существует, выполним обработку оповещения переданного через дополнительные параметры

если идти отладчиком - то форму с вопросом видно, но никакие 10 секунд она не висит, сразу проваливается в обработчик и там результат равен отмена (?)
почему так происходит? (передзакрытиемДО тоже писал - тоже самое)


Описание: не срабатывает update
почему не срабатывает update после формы - вот код <form action="updates.php" method="post">.

Запрос срабатывает в SQL Server, но не корректно срабатывает в Visual Studio 2017
(SELECT ROW_NUMBER() over (ORDER BY AVG(Отметки.Отметка) DESC) ID, .ФИО, .Группа, Отметки.

Таймер срабатывает раньше времени или вообще не срабатывает
Помогите, пожалуйста, разобраться, что нетак с таймером. Браузер Chrome При создании записи.

Где пишется описание для выходного файла .exe (например описание процесса)
Консольный проект, скомпилировали, получили exe. Жмем правой кнопкой на нем\свойства\вкладка.

polax, указывал и 0 и 10 и не указывал
вот тока отрицательный не писал - написано, что будет исключение сразу вызвано

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

polax, чо? )
"Процедура расш_ПередЗакрытиемПосле"
логично же, что это расширение.
перед тоже пробовал с тем же успехом

Точно. Просто не обращаешь внимания на имя процедуры, только на код. Извини0
В родной процедуре тоже есть ОписаниеОповещения? Для начала попробуй Вместо. Если заработает, значит дело именно в ОписанииОповещения родной процедуры. Тогда либо использовать ИзменениеИКонтроль либо конкретней разбираться с После (куда ее поставить)

там есть. но там она про другое.
типа меняешь когда адрес персонажа, то она смотрит - если модифицированность, то записать адрес
а мне надо навесить ещё вопрос - а не записать ли этот новый адрес в адрес для информирования и адрес проживания?
и по ответу да - записать
это второй шаг, который тоже хз как делать, но пока до него не дошёл )

поэтому ставил и до и после. а вместо нельзя. там оно своё. и тоже вызывает оповещение.

Оповещения
Здравствуйте, создается CRM. есть менеджер и бухгалтер, заказы подгружаются AJAXом, если менеджер.

Оповещения Chrome
Добрый день, Кто нибудь в курсе как добавлять свою страничку в список оповещения Chrome.(которая в.

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

Оповещения Evolution
На Debian 9 почтовый клиент Evolution работает так как нужно: при приходе письма выдаётся.

Система оповещения
Всем привет. Есть задача. В квартире в соседней комнате мама-инвалид. Необходимо, чтобы у нее под.

Использование COMOбъектов в 1С это прошлый век, сейчас уже ни кто так не пишет. Раньше с его помощью реализовали печать документов. Они выгружались в Open\Libre Office и от туда уже печатались.

Появиться такая ошибка может после

1 Обновления платформы

2 Переустановки ОС и 1С

3 Обновление конфигурации

4 Проблем с офисными пакетами

Это самые распространенные.

Три способа избавиться от ошибки «Ошибка при вызове конструктора…»

И так после каких либо манипуляций с 1С у вас стала появляться ошибка.

Первый способ

Самое простое это переустановить офисные пакеты Open\Libre, так же как вариант если у вас стоял Open поставить Libre и на оборот. Это нужно для того чтобы обновить специальный компонент.

Второй способ

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

regsvr32 «C:\Program Files (x86)\1cv8\8.3.16.18.14\comcntr.dll»

Кстати данную манипуляцию нужно проводить на сервере.

Третий способ

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

Ошибка при вызове конструктора (COMOбъект)

Версию можно указать и в ярлыке запуска 1С.

Можно еще попробовать самостоятельно создать COM + , но лично из своего опыта могу сказать это не помогает. Самый действенный вариант это установка х32 клиента. Так как компонента которая необходимо работает только с х32.

Так же проблема может быть непосредственно в самом коде.

Ошибка (COMOбъект) : 1 комментарий

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

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