Форум на Kuban.ru (http://forums.kuban.ru/)
-   Территория 1С (http://forums.kuban.ru/f1040/)
-   -   ДобавитьОбработчик (http://forums.kuban.ru/f1040/dobavit-obrabotchik-5366032.html)

Aphanas 07.02.2014 14:07

ДобавитьОбработчик
 
Пытаюсь подписаться на событие "ПриЗаписи" элемента справочника.
ДобавитьОбработчик МойОбъект.ПриЗаписи, МойОбработчик
Не работает. Пробовал в разных релизах движка, пробовал подписывать процедуру модуля обработки, процедуру модуля формы, процедуру общего модуля.
Ничего не работает.
Как этот оператор вообще использовать?

GreenDragon 07.02.2014 15:26

[url]http://v8.1c.ru/overview/Term_000000153.htm[/url] гугл?

GreenDragon 07.02.2014 15:31

Источник: МойОбъект
Событие: ПриЗаписи
Обработчик: ОбщийМодульМоихОбработчиков.СделатьКакНадо

В общем модуле "ОбщийМодульМоихОбработчиков" экспортная процедура "СделатьКакНадо(Источник, Отказ)"

Управление торговлей 11 07.02.2014 18:24

2-GreenDragon >еще в свойствах общего модуля галочки правильно расставить

Aphanas 10.02.2014 04:33

Многие спрашивают на форумах про "ДобавитьОбработчик". И первое, что им отвечают, это про подписки на события. Это ответ не на тот вопрос. Я в курсе про подписки на события. Я спрашиваю не про объект метаданных, о про оператор языка. Общие модули и галочки тут ни при чем.
Пример использования:
Обработка = Обработки.КонтрольДокумента.Создать();
Накладная = Документы.Накладная.СоздатьДокумент();
ДобавитьОбработчик Накладная.ПриЗаписи, Обработка.ПриЗаписиДокумента
Кто знает как правильно работать с этим оператором? Я по всякому пробовал, не получается.

МимохожийОднако 10.02.2014 08:09

(4)"ДобавитьОбработчик Накладная.ПриЗаписи" - это что?

VZ 10.02.2014 08:54

4-Aphanas > Потомушто для объекта Документ уже, стараниями разработчика, сделан обработчик [em]ПриЗаписи[/em]. Его не нужно объявлять. Он уже есть. Пользуйся.

Aphanas 10.02.2014 10:10

(5)Это пример из синтаксис-помощника

Синтаксис:
ДобавитьОбработчик <Событие>, <ОбработчикСобытия>;

Описание:
Добавляет обработчик события.
При добавлении обработчика события производится проверка соответствия числа параметров события числу параметров метода, назначаемого в качестве обработчика.

(6) Не понятно, что Вы имеете ввиду. Разработчиками движка не реализованы обработчики событий, таких как "ПриЗаписи". Это задача разработчика конфигурации. Я пытаюсь назначить процедуру своей обработки в качестве обработчика события, т. е. сделать, как указано в примере. Я вообще хочу дойти до того, чтобы подцепить на событие процедуру внешней обработки. И сделать всё БЕЗ ИЗМЕНЕНИЯ КОНФИГУРАЦИИ. На инфостарте есть примеры, что это якобы, можно сделать. Скачать оттуда и посмотреть я не могу. Денег нет.

МимохожийОднако 10.02.2014 14:37

Добавить обработчик без изменения конфигурации не получится.

bma1 10.02.2014 15:14

2(8) отчего?
Пример тупой.
Создаю внешнюю обработку в ней реквизит Док тип Документссылка.СчетНаОплатуПокупателя
В модуле формы обработки пишу:
Процедура КнопкаВыполнитьНажатие(Кнопка)
ДокО = Док.ПолучитьОбъект();
ДобавитьОбработчик ДокО.ПередЗаписью, локПередЗаписью;
ДобавитьОбработчик ДокО.ПриЗаписи, локПриЗаписи;
ДокО.Записать(РежимЗаписиДокумента.Запись);
УдалитьОбработчик ДокО.ПередЗаписью, локПередЗаписью;
УдалитьОбработчик ДокО.ПриЗаписи, локПриЗаписи;
КонецПроцедуры

Процедура локПриЗаписи(Тест = "", Отказ = Ложь)
Сообщить("При записи");
КонецПроцедуры

Процедура локПередЗаписью(Тест = "", Отказ = Ложь,РежимЗаписи = Ложь,РежимПровежения = Ложь)
Сообщить("Перед записью");
КонецПроцедуры

Жму кнопку и все работает.

Aphanas 13.02.2014 05:54

bma1, действительно, я сделал так, работает. Обработчик запускается, если вызвать ДокО.Записать(). Но, если открыть этот документ и нажать кнопку "Записать" (как я делал), обработчик не срабатывает.
Почему? Есть идеи? Как можно заставить его срабатывать в любом случае?

nordbox 13.02.2014 06:43

(10) Я сам такого не делал, но есть желание и нет времени на эксперименты. Просто мысли ))
Суть: Сделать обработку что бы она была в режиме Рабочего стола и из нее караулить открываемые объекты, получаешь контекст объекта, ну а там уже полет фантазии, определяешь тип, вид и т.д..... и развлекаешься ))
может в этом направлении можно что по крутить?

bma1 13.02.2014 08:04

[quote=Aphanas;34126625]Почему? Есть идеи? Как можно заставить его срабатывать в любом случае? [/quote]
Все очень просто. Во внешней обработке создается объект конкретного документа, и этому объекту "добавляется" код в обработчик, описанный в модуле, затем по событию записи вызывается обработчики и выполняются, затем они уничтожаются. Но дополнительные обработчики, повторю, подцепляются к конкретному экземпляру документа, а не к классу данного документа вообще. Когда документ открывается напрямую на экране, у объекта нигде не прописано, что к обработчику надо привесить еще какой-либо хвостик в виде кода.

Aphanas 13.02.2014 09:05

12, Тысяча чертей!
Ты беспощадно прав. Обработчик цепляется не к объекту базы данных, а конкретному экземпляру его программной реализации.
Я прозрел.


Текущее время: 05:44. Часовой пояс GMT +3.