Меню

При подписке на событие передзаписью произошла ошибка обработчик события не найден

При подписке на событие произошла ошибка. Обработчик события не найден.

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

При создании объекта (элемента справочника или документа) проверяется существование всех обработок подписок.

В данном случае ошибка возникает в такой строчке кода:

Характеристика = Справочники.ХарактеристикиНоменклатуры.СоздатьЭлемент();

Полный текст ошибки:

При подписке ПроверитьУстранениеПроблемыОбъекта на событие ПередЗаписью произошла ошибка. Обработчик события не найден. pri-podpiske-pered-zapisyu-proizoshla-oshibka-obrabotchih-sobytiya-ne-najden

Поиск причины и исправление

Глобальный поиск дает события или саму процедуру:

rezultaty-poiska

Обратите внимание открывать для ТонкогоКлиента следует не там, где эта процедура находится, ведь там может стоять флажок «Вызов сервера», а та которая его вызывает и указана в подписке на события.

Флажок «Клиент (управляемое приложение) в свойствах одного из модулей

klient-upravyalemoe-prilozhenie-v-svojstvah-modulya

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

Как сделать глобальный поиск по тексту?

Меню «Правка/Глобальный поиск» 

globalnyj-poiskПри  этом обязательно необходимо указать поиск по «Свойствам», иначе не найдете такой подписки:

poisk-po-svojstvam

Корень проблемы

Многие зададут вопрос: а зачем запускать создавать объект под приложением не адаптированном  под управляемое приложение?.

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

Для того, чтобы отладить такую обработку, написанную вами или «чужую», можно произвести запуск конфигурации в другом режиме и она откроется, если не будет производить сложный действий, всё будет отлично, но не в этом случае.

Клиент получает ту рекламу, которую он заслуживает!

   Dimarik_1

28.10.17 — 14:37

Сделал кнопочку.

Вот такая ошибка возникает

{ОбщийМодуль.птОбщиеПроцедурыИФункцииКлиент.Модуль(162)}: Ошибка при вызове метода контекста (ОтменитьИПровестиДокументыПоГТД)

        птОбщиеПроцедурыИФункции.ОтменитьИПровестиДокументыПоГТД(СтарыйНомерГТД, Номенклатура, Характеристика, Склад, Форма.Объект, Отказ);

по причине:

При подписке ВлияющийНаСтатусПоступленияКиЗДокументПередЗаписью на событие ПередЗаписью произошла ошибка. Обработчик события не найден.

Ошибка возникает при выходе из процедуры.

Процедура ОтменитьИПровестиДокументыПоГТД(СтарыйНомерГТД, Номенклатура, Характеристика, Склад, ФормаОбъект, Отказ) Экспорт

    НачатьТранзакцию();

    Объект = ДанныеформыВЗначение(ФормаОбъект, Тип(«ДокументОбъект.ПоступлениеТоваровУслуг»));

    ФормаОбъект = Объект;

    ФормаОбъект.Прочитать();

    Ссылка = ФормаОбъект.Ссылка;

МассивДокументовОтменаПроведения = ОтменитьПроведениеДокументовПоГТД(СтарыйНомерГТД, Номенклатура, Характеристика, Склад, Ссылка, Отказ);

        ФормаОбъект.Записать();

        ПровестиДокументыПоГТД(СтарыйНомерГТД, Номенклатура, Характеристика, Склад, Ссылка, Отказ, МассивДокументовОтменаПроведения);

        ЗафиксироватьТранзакцию();

КонецПроцедуры

я посмотрел на подписку ВлияющийНаСтатусПоступленияКиЗДокументПередЗаписью.

Ссылкается на ИнтеграцияГИСМ.ВлияющийНаСтатусПоступленияКиЗДокументПередЗаписью

Самое интересное что обработчик заполнен и вызывается он после ФормаОбъект.Записать(); но еще более странное что именно когда точка останова стоит на КонецПроцедуры, возникает данная ошибка.

Проверяли на разных компах под разными пользователями. КЭШ исключаю.

11.3.4.93.

MS SQL

   Dimarik_1

6 — 28.10.17 — 20:17

и перед вызовом процедуры в серверном модуле нет &НаКлиенте

Вот правда нет ВызовСервера. Но почему он должен вызываться с клиента?

У меня на клиенте есть процедура

Процедура ОбработкаЗаменыГТД(Результат,Форма) Экспорт

    
    Если ЗначениеЗаполнено(Результат) Тогда

        СтарыйНомерГТД = Форма.Элементы.Товары.ТекущиеДанные.НомерГТД;

        Форма.Элементы.Товары.ТекущиеДанные.НомерГТД = Результат;

        //СписокРеализаций = ПолучитьСписокДокументов(Форма.Элементы.Товары.ТекущиеДанные.Номенклатура, Форма.Элементы.Товары.Характеристика, Форма.Элементы.Товары.НомерГТД);

        
        //УстановитьПривилегированныйРежим(Истина);

        
        Отказ = Ложь;

        Номенклатура = Форма.Элементы.Товары.ТекущиеДанные.Номенклатура;

        Характеристика = Форма.Элементы.Товары.ТекущиеДанные.Характеристика;

        Склад = Форма.Объект.Склад;

        птОбщиеПроцедурыИФункции.ОтменитьИПровестиДокументыПоГТД(СтарыйНомерГТД, Номенклатура, Характеристика, Склад, Форма.Объект, Отказ);

        //УстановитьПривилегированныйРежим(Ложь);

                        
        
        
        //птОбщиеПроцедурыИФункции.ПерепровестиДокументыПоГТД(СтарыйНомерГТД, Номенклатура, Характеристика, Склад, Форма.Объект.Ссылка, Отказ);

        Если Отказ = Истина Тогда

            Форма.Элементы.Товары.ТекущиеДанные.НомерГТД = СтарыйНомерГТД;

            Форма.Записать();

        КонецЕсли;

        
    КонецЕсли;

    
    
КонецПроцедуры

Ошибка возникает при выходе из ОтменитьИПровестиДокументыПоГТД

Код этой процедуры я высылал.

Не могу понять, почему именно не так.

Сделал точку останова в ПоступлениеТоваровИУслуг на ПередЗаписью.

Внутри процедуры Процедура ОтменитьИПровестиДокументыПоГТД после

ФормаОбъект.Записать();

остановился в процедуре ПередЗаписью. Вышел из ОтменитьИПровестиДокументыПоГТД и не останаливался больше. В чем проблема никак не пойму….

Показывать по
10
20
40
сообщений

Новая тема

Ответить

Stasy_M

Дата регистрации: 25.10.2007
Сообщений: 6

Платформа: 8.1.8.76<br>Конфигурация: Бухгалтерия<br>После перехода с редакции 1.5 на 1.6 возникает ошибка:<br>»При подписке на событие произошла ошибка. Обработчик события не найден» при попытке открытия любого документа.<br>Помогите пожалуйста разобраться в чём проблема…<br>спасибо.

AlexeyK

Дата регистрации: 01.11.2007
Сообщений: 1

привет!<br>в конфигураторе — общие — подписки на события<br>пройдись по всем событиям, посмотри свойства, самая последняя строчка Обработчик, должна быть заполнена.<br>у меня тоже после обновления у некоторых ПодписокНаСобытия слетели Обработчики.<br>после того как я заполнил пустые Обработчики, эта ошибка при запуске 1С исчезла! <br>удачи!<br>чем заполнять, брал из эталонной конфигурации 1_6_3_2

Показывать по
10
20
40
сообщений

Вообщем, есть конфигурация УТ 3.1(для Украины). В типовой есть подписка на событие «ПередЗаписью» для всех «ДокументОбъект». Так вот, что она делает — совсем не важно, поскольку она не вызывается, а вот тут уже наступает вопрос — какого она собственно не вызывается?! У модуля, в котором расположен обработчик стоят флаги сервер и внешнее соединение. Пока все првильно… Но при вызове функции внутри формы обработки(&НаКлинете) — платформа пытается найти обработчик для подписки и конечно же его не находит, поскольку у модуля в котором он находится НЕ стоит флажок «клиент(управляемое приложение)». Выход очевиден — поставить его, да вот дилемма — модуль то типовой, и ладно еще просто снять с поставки, так надо же еще и кода поменять добавить килотонну(разделить на  #Если НаКлиенте и т.д.). Вопрос в чем — может есть способ более пряморукий? ЗЫ: На вопрос «Почему клиентская функция ищет там какие-то подписки?!» мне ответить сложно, возможно это из-за создания документа в вызываемой функции(в том же модуле формы, которая уже имеет директиву компиляции &НаСервере), почему подписки не проверяются там — ??!!

а ты как узнал, что «внутри формы обработки(&НаКлинете) — платформа пытается найти обработчик для подписки»? Она тебе во сне, что ли, явилась и сама всё рассказал?

&НаКлинете этого происходить не может просто потому, что &НаКлинете не существует ни каких ДокументОбъектов и, как следствие, ни кто не знает ни чего про их события и подписки на них

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

Как тогда может вылетать ошибка о том, что не найден обработчик подписки на событие ПередЗаписью, внутри клиентской процедуры? Выполнение доходит до вызова серверной процедуры(в которой создается документ) и до ее вызова(по нажатию F11 в отладчике) вылетает вышеописанная ошибка.

подписа ПередЗаписью вызываются после событий формы и до обработчика в модуле объекта

не, вру — после обработчика в модуле, а не до.

Я вам про пряники, вы мне про кокосы. Говрю же, есть кнопошка, у нее есть событие обработчик события, конечно же он на клиенте, интерфейс как ни как :), в этом обработчике всего одна строчка «СоздатьЭН» — СоздатьЭН — метод описанный 3мя строчками выше, он серверный и в нем создается документ. Так вот, как только выполнение доходит до «СоздатьЭН», имею ввиду в функцию мы еще не шагнули — вылетает ошибка «При подписке … на событие ПередЗаписью произошла ошибка. Обработчик события не найден.» Разумеется с подпиской все ок, просто из-за того, что проверяется наличие обработчика там, где он не доступен… 🙁

А начнёшь копать, выяснится что и отладка на сервере отключена, и вообще это не тот объект…

Зато уверенность что «НЕ стоит флажок «клиент(управляемое приложение)». Выход очевиден — поставить его» у автора 100% Сделай копию. Поставь эту свою любимую галочку. Повтори эксперимент.

Покажи демонстрацию ошибки

ты нашел очень не подходящие уши, чтобы рассказывать в них сказки

Наверное файловый режим, толстый клиент…

FYI: +для+украины+картинки

да даже если так, все равно это все неправда и провокация. Подписка ни в одном режиме не может в контексте формы вызываться. Тем более — управляемой, перемать, форме, в которой ни каких объектов нет вне зависимости от толщины клиента

+ Или, точнее, толстый клиент УФ. Если да то запустить в тонком клиенте и проверить

Подписка в толстом клиенте вызовется на клиенте, в тонком на сервере. Если у модуля не стоит толстый клиент, будет ошибка. Сталкивались, вроде так если не ошибся…

в толстом обычном — на клиенте. Но в толстом обычном нет ни каких &НаКлиенте &НаСервере

В толстом УФ тоже на клиенте.

— Словил бряк — F11 — F11 ######### И еще пару скринов: ######### Поправил ссылки, модеры почистят предыдущее сообщение.

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

[ОФФТОП] Конечно, я специально потратил день на то, что бы отвлечь Вас на 10 секунд на набор злобного комментария. -_-[/ОФФТОП]

Так надо включить режим УП + ОП в свойствах конфигуратора и убедиться, что флажок компиляции «Клиент (ОП)» стоит у ОМ

Это какая-то фича, или что? Просто не могу понять, как флаг, предназначенный для ОП может поменять логику работы УП? Не хочется врубать комп, лег уже 😉 ЗЫ: Спасибо, что без злобных посланий, а то пришел на форум утром за советом,  а в итоге вместо ответа получил несколько предложений сходить куда подальше

«Пелена посланий» означает то, что конфигурация всеми силами пытается до тебя довести, что этот функционал не работает в толстом клиенте. Зачем ты пытаешься ее изнасиловать (см предмет отладки на первом скриншоте), науке неизвестно. Так что выбирай — плакать и удивляться или замачивать рукава и перепиливать типовой функционал всей конфигурации, потому что одним модулем там дело не кончится.

Закатывать. Но так тоже ничего.

После сохранения конфы, слияния с типовой проблема ликвидировалас. Вероятно баг платформы. Тема закрыта.

Тэги: 1С 8

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

Описание проблемы, ошибки, которую надо диагностировать

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

Ссылка на источник, подтверждающее нарушение либо обоснование наличия проблемы

Ошибка в режиме предприятия «При подписке ТестоваяПодписка на событие ПередЗаписью произошла ошибка. Обработчик события не найден.».
image

Тип Статья на русском

  • 🐜 Ошибка
  • 👮 Уязвимость
  • 💩 Качество кода
  • :trollface: Другое

Важность Статья на русском

  • 💔 Блокирующая / Blocker
  • ❤️ Критическая / Critical
  • 💛 Важная / Major
  • 💙 Незначительная / Minor
  • 💚 Информационная / Info
  • 💞 Другое

Тэги Статья на русском

  • STANDARD — «Нарушение стандартов 1С»
  • LOCKINOS — «Не будет работать в другой ОС»
  • SQL — «Проблема с запросом»
  • PERFORMANCE — «Проблема производительности»
  • BRAINOVERLOAD — «Непонятный код»
  • BADPRACTICE — «Плохая практика программирования»
  • CLUMSY — «Излишние действия»
  • DESIGN — «Ошибка в проектировании»
  • SUSPICIOUS — «Подозрительный код»
  • UNPREDICTABLE — «Непредсказуемо работающий код»
  • DEPRECATED — «Устаревшая функциональность»
  • ERROR — «Ошибочная конструкция»

Время на исправление (минут)

5 минут

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

А вот еще интересные материалы:

  • Яшка сломя голову остановился исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного где ошибка
  • При подписке на событие обработкаполученияформы произошла ошибка обработчик события не найден
  • При подписи эцп выдает ошибку