При подписке на событие произошла ошибка. Обработчик события не найден.
Ошибка происходит в толстом клиенте управляемое приложение, на типовой конфигурации, созданной под обычное приложение.
При создании объекта (элемента справочника или документа) проверяется существование всех обработок подписок.
В данном случае ошибка возникает в такой строчке кода:
Характеристика = Справочники.ХарактеристикиНоменклатуры.СоздатьЭлемент();
Полный текст ошибки:
При подписке ПроверитьУстранениеПроблемыОбъекта на событие ПередЗаписью произошла ошибка. Обработчик события не найден.
Поиск причины и исправление
Глобальный поиск дает события или саму процедуру:
Обратите внимание открывать для ТонкогоКлиента следует не там, где эта процедура находится, ведь там может стоять флажок «Вызов сервера», а та которая его вызывает и указана в подписке на события.
Флажок «Клиент (управляемое приложение) в свойствах одного из модулей
Далее тестируете создание еще раз, в моем случае цепочкой вызывались еще ряд модулей, которые пришлось также модифицировать.
Как сделать глобальный поиск по тексту?
Меню «Правка/Глобальный поиск»
При этом обязательно необходимо указать поиск по «Свойствам», иначе не найдете такой подписки:
Корень проблемы
Многие зададут вопрос: а зачем запускать создавать объект под приложением не адаптированном под управляемое приложение?.
Ответ в том, что многие пишут обработки в режиме управляемого приложения (удобно им или берут готовые под переделку), если в свойствах конфигурации разрешить их использование, они будут работать, но только в составе конфигурации, а не как внешняя обработка.
Для того, чтобы отладить такую обработку, написанную вами или «чужую», можно произвести запуск конфигурации в другом режиме и она откроется, если не будет производить сложный действий, всё будет отлично, но не в этом случае.
Делать деньги без рекламы может только монетный двор.
При подписке на событие произошла ошибка. Обработчик события не найден.
Ошибка происходит в толстом клиенте управляемое приложение, на типовой конфигурации, созданной под обычное приложение.
При создании объекта (элемента справочника или документа) проверяется существование всех обработок подписок.
В данном случае ошибка возникает в такой строчке кода:
Характеристика = Справочники.ХарактеристикиНоменклатуры.СоздатьЭлемент();
Полный текст ошибки:
При подписке ПроверитьУстранениеПроблемыОбъекта на событие ПередЗаписью произошла ошибка. Обработчик события не найден.
Поиск причины и исправление
Глобальный поиск дает события или саму процедуру:
Обратите внимание открывать для ТонкогоКлиента следует не там, где эта процедура находится, ведь там может стоять флажок «Вызов сервера», а та которая его вызывает и указана в подписке на события.
Флажок «Клиент (управляемое приложение) в свойствах одного из модулей
Далее тестируете создание еще раз, в моем случае цепочкой вызывались еще ряд модулей, которые пришлось также модифицировать.
Как сделать глобальный поиск по тексту?
Меню «Правка/Глобальный поиск»
При этом обязательно необходимо указать поиск по «Свойствам», иначе не найдете такой подписки:
Корень проблемы
Многие зададут вопрос: а зачем запускать создавать объект под приложением не адаптированном под управляемое приложение?.
Ответ в том, что многие пишут обработки в режиме управляемого приложения (удобно им или берут готовые под переделку), если в свойствах конфигурации разрешить их использование, они будут работать, но только в составе конфигурации, а не как внешняя обработка.
Для того, чтобы отладить такую обработку, написанную вами или «чужую», можно произвести запуск конфигурации в другом режиме и она откроется, если не будет производить сложный действий, всё будет отлично, но не в этом случае.
Клиент получает ту рекламу, которую он заслуживает!
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
Комментарии доступны только авторизированным пользователям
Описание проблемы, ошибки, которую надо диагностировать
Если у подписки на события указан обработчик, которого не существует или метод не экспортный, то форма элемента объекта в режиме предприятия не откроется.
Ссылка на источник, подтверждающее нарушение либо обоснование наличия проблемы
Ошибка в режиме предприятия «При подписке ТестоваяПодписка на событие ПередЗаписью произошла ошибка. Обработчик события не найден.».
Тип Статья на русском
- 🐜 Ошибка
- 👮 Уязвимость
- 💩 Качество кода
- Другое
Важность Статья на русском
- 💔 Блокирующая / Blocker
- ❤️ Критическая / Critical
- 💛 Важная / Major
- 💙 Незначительная / Minor
- 💚 Информационная / Info
- 💞 Другое
Тэги Статья на русском
-
STANDARD
— «Нарушение стандартов 1С» -
LOCKINOS
— «Не будет работать в другой ОС» -
SQL
— «Проблема с запросом» -
PERFORMANCE
— «Проблема производительности» -
BRAINOVERLOAD
— «Непонятный код» -
BADPRACTICE
— «Плохая практика программирования» -
CLUMSY
— «Излишние действия» -
DESIGN
— «Ошибка в проектировании» -
SUSPICIOUS
— «Подозрительный код» -
UNPREDICTABLE
— «Непредсказуемо работающий код» -
DEPRECATED
— «Устаревшая функциональность» -
ERROR
— «Ошибочная конструкция»
Время на исправление (минут)
5 минут
ПолучитьОбъект() не работает |
Я |
07.06.19 — 09:34
целый день мучений в поисках причины, началось все с Програмное создание характеристик ут11.4
Код вида
[code]
&НаСервере
Процедура Команда1(Команда)
НайденыйОбъект=Справочники.Номенклатура.НайтиПоНаименованию(«Набор пиратов в коробке 46,5*12*23,5»);
РедОбъект= НайденыйОбъект.ПолучитьОбъект();
РедОбъект.Артикул = «неуд»;
Попытка
РедОбъект.Записать();
Исключение
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
КонецПопытки;
[/code]
Ничего не делает, если попытаться его отладить на клиенте(толстом) то он падает на ПолучитьОбъект(), с ошибкой При подписке ЗаписатьВерсиюОбъекта на событие ПередЗаписью произошла ошибка. Обработчик события не найден.
Но этот обработчик есть.
1 — 07.06.19 — 09:36
а если твое НайтиПоНаименованию возвращает Неопределено ?
2 — 07.06.19 — 09:36
НайденыйОбъект что возвращает?
3 — 07.06.19 — 09:36
(1) Отладчиком посмотрел что там все хорошо. Код падает дальше.
4 — 07.06.19 — 09:37
(1) тогда уж пустую ссылку
5 — 07.06.19 — 09:37
НайтиПоНаименованию(«Набор пиратов в коробке 46,5*12*23,5»);
Это пять
6 — 07.06.19 — 09:37
на тонком клиенте отлаживай
7 — 07.06.19 — 09:38
(3) что хорошо? ссылка?
8 — 07.06.19 — 09:39
Если ЗначениеЗаполнено(НайденыйОбъект)… наше все)
9 — 07.06.19 — 09:39
(7) https://ibb.co/zbtmx65 (5) Это просто отладка, в коде такой дичи не будет (6) Так не доступен ПолучитьОбьект, если не ошибаюсь
10 — 07.06.19 — 09:42
(9) вроде все хорошо должно быть попробуй (6)
11 — 07.06.19 — 09:45
В тонком клиенте, в серверной процедуре
12 — 07.06.19 — 09:47
13 — 07.06.19 — 09:49
(12) и причем тут это? у него стоит &НаСервере
14 — 07.06.19 — 09:51
(1) оно бы уже тут вальнулось
РедОбъект.Артикул = «неуд»;
15 — 07.06.19 — 09:51
(13) В толстом клиенте пади делает, вот и ошибка
16 — 07.06.19 — 09:52
(13) согласен, не обратил внимания.
Странно, что падает на ПолучитьОбъект().
17 — 07.06.19 — 09:52
(15) ага выше написал
18 — 07.06.19 — 09:53
У автора проблемы с логикой просто
19 — 07.06.19 — 09:56
(12) (13) (14) Извиняюсь если ввел в заблуждение, Смотрел в переменную НаКлиенте, сам код ничего не делает в том виде как он указан в 1 посте. (18) Не стоит смешивать логику и знания.
20 — 07.06.19 — 09:56
(11) Сейчас попробую
21 — 07.06.19 — 09:57
(19) «Не стоит смешивать логику и знания» // Я и не смешиваю, а сужу по твоему утверждению: «Ничего не делает».
22 — 07.06.19 — 10:00
(21) Пожалуйста, покиньте данную ветку форума.
23 — 07.06.19 — 10:02
(22) Желание повластвовать в ответ на критику / правду говорит о неадекватном отношении к оной
24 — 07.06.19 — 10:05
(23) Если есть желание пообщаться создайте свою ветку форума с пометкой флуд, я готов присоединиться не стоит флудить в этой.
25 — 07.06.19 — 10:09
(24) Ты что-то напутал, все только по делу
26 — 07.06.19 — 11:18
(0) У тебя же ругается на подпиську, вот и ищи подпиську на событие.
27 — 07.06.19 — 11:25
(5) В каком смысле?
28 — 07.06.19 — 11:29
(26) Она есть, с ней все хорошо. Просто не отрабатывает &НаКлиенте (27) Плохой тон зашивать такое в код.
29 — 07.06.19 — 11:36
(28)[ Она есть, с ней все хорошо. Просто не отрабатывает &НаКлиенте]
на клиенте нет ПолучитьОбъект()
т.е. весь топик пурга
30 — 07.06.19 — 12:08
Ну епрст.
Обработчик команды оставить НаКлиенте. Из него вызвать процедуру НаСервере, в ней все это НайтиПоНаименованию, ПолучитьОбъект и т.п. Проверить, что обработчик подписки в серверном модуле.
31 — 07.06.19 — 12:24
(30) Спасибо большое, вроде бы разобрался.
Заработало так:
НаКлиенте вызываю функцию
НаСервере Записываю переменную
Вопрос, почему я не мог по кнопке сразу вызвать функцию на сервере?(точнее она не исполнялась)?
Ушел изучать (12)
32 — 07.06.19 — 12:25
(31) Потому что событие происходит на клиенте, сервер о нем ничего не знает.
Кнопка же не на сервере.
Поэтому обработка нажатия кнопки сперва идет на клиенте, а оттуда уже можно сервер вызвать.
33 — 07.06.19 — 12:29
(0) Правило №1: Прежде чем что-то делать — прочитайте инструкцию.
В программировании вариант: «Бери лопату, кидай дальше. Пока летит — отдыхай» не работает. Тут нужно думать.
И нужно иметь какую-то базу. Без базы ты будешь как слепой котенок в трех соснах.
34 — 07.06.19 — 13:33
Я рад что всё закончилось хорошо!
35 — 07.06.19 — 13:38
(24) Приведи свой код в порядок, и все проблемы перестанут возникать.
Сервер слева, Клиент справа
36 — 07.06.19 — 13:39
(31) Разработчики 1С так реализовали, ответ прост, так же как ваши проблемы.
..Вселенная не вертится вокруг вас ;)…
37 — 07.06.19 — 13:44
(34) Че закончилось? Пятница в разгаре, а клиент ушел. И кто теперь нас будет развлекать?
Вася Теркин
38 — 07.06.19 — 13:44
(36) Нифига, вселенная мисты вокруг таких как он и вертится.
Эх вы…
Вводная:
Есть две идентичные базы ЗУП 3.1: одна на сервере mssql крутится, вторая на локальной машине.
Из программы, написанной на делфи создаётся документ «Премия».
При создании в конфигурации на локальной машине всё нормально.
При создании в серверной конфигурации вылезает «При подписке ЗаписатьВерсиюДокументаЗарплатаКадрыРасширенная на событие ПередЗаписью произошла ошибка. Обработчик события не найден»
В конфигурации посмотрел — поле обработчик события заполнен, да и данные все идентичны.
Не знаем, куда копать.
Конфигурация 3.1.4.169
1С:Предприятие 8.3 (8.3.11.2924)
Описание проблемы, ошибки, которую надо диагностировать
Если у подписки на события указан обработчик, которого не существует или метод не экспортный, то форма элемента объекта в режиме предприятия не откроется.
Ссылка на источник, подтверждающее нарушение либо обоснование наличия проблемы
Ошибка в режиме предприятия «При подписке ТестоваяПодписка на событие ПередЗаписью произошла ошибка. Обработчик события не найден.».
Тип Статья на русском
- 🐜 Ошибка
- 👮 Уязвимость
- 💩 Качество кода
- Другое
Важность Статья на русском
- 💔 Блокирующая / Blocker
- ❤️ Критическая / Critical
- 💛 Важная / Major
- 💙 Незначительная / Minor
- 💚 Информационная / Info
- 💞 Другое
Тэги Статья на русском
-
STANDARD
— «Нарушение стандартов 1С» -
LOCKINOS
— «Не будет работать в другой ОС» -
SQL
— «Проблема с запросом» -
PERFORMANCE
— «Проблема производительности» -
BRAINOVERLOAD
— «Непонятный код» -
BADPRACTICE
— «Плохая практика программирования» -
CLUMSY
— «Излишние действия» -
DESIGN
— «Ошибка в проектировании» -
SUSPICIOUS
— «Подозрительный код» -
UNPREDICTABLE
— «Непредсказуемо работающий код» -
DEPRECATED
— «Устаревшая функциональность» -
ERROR
— «Ошибочная конструкция»
Время на исправление (минут)
5 минут