Модули объектов существуют у прикладных объектов (документы, справочники, планы счетов и т.д.), и предназначены в основном для обработки стандартных событий типа записи. Тут же можно располагать условия типа проверки корректности данных. Важно понимать, что обработка события записи могут располагаться также и в модуле формы, но отрабатывать она будет только при интерактивной работе с объектом. Если же объект записывается программно, то будет выполняться обработчик события именно из модуля объекта.
Модуль объекта может быть открыт по соответствующей кнопке на закладке Прочее:
Перечень предопределенных процедур - обработчиков событий модулей объектов:
***
Модуль объекта может быть открыт по соответствующей кнопке на закладке Прочее:
Перечень предопределенных процедур - обработчиков событий модулей объектов:
- Модуль объекта справочника:
- ПриУстановкеНовогоКода
- ПриКопировании
- ОбработкаЗаполнения
- ПередЗаписью
- ПриЗаписи
- ПередУдалением
- ОбработкаПроверкиЗаполнения
- Модуль объекта документа:
- ОбработкаПроведения
- ОбработкаЗаполнения
- ПриУстановкеНовогоНомера
- ПриКопировании
- ПередЗаписью
- ПриЗаписи
- ПередУдалением
- ОбработкаУдаленияПроведения
- ОбработкаПроверкиЗаполнения
- Модуль объекта отчета:
- ОбработкаПроверкиЗаполнения
- ПриКомпоновкеРезультата
- УстановитьЗаголовкиПолей
- Модуль объекта обработки:
- ОбработкаПроверкиЗаполнения
- Модуль объекта плана вида характеристик:
- ПриУстановкеНовогоКода
- ПриКопировании
- ОбработкаЗаполнения
- ПередЗаписью
- ПриЗаписи
- ПередУдалением
- ОбработкаПроверкиЗаполнения
- Модуль объекта плана счетов:
- ПриКопировании
- ОбработкаЗаполнения
- ПередЗаписью
- ПриЗаписи
- ПередУдалением
- ОбработкаПроверкиЗаполнения
- Модуль объекта плана видов расчетов:
- ПриКопировании
- ОбработкаЗаполнения
- ПередЗаписью
- ПриЗаписи
- ПередУдалением
- ОбработкаПроверкиЗаполнения
- Модуль объекта бизнес-процесса:
- ПриУстановкеНовогоНомера
- ПриКопировании
- ОбработкаЗаполнения
- ПередЗаписью
- ПриЗаписи
- ПередУдалением
- ОбработкаИнтерактивнойАктивации
- ОбработкаПроверкиЗаполнения
- Модуль объекта задачи:
- ПриУстановкеНовогоНомера
- ПриКопировании
- ОбработкаЗаполнения
- ПередЗаписью
- ПриЗаписи
- ПередУдалением
- ОбработкаИнтерактивнойАктивации
- ОбработкаПроверкиВыполнения
- ПередВыполнением
- ПередИнтерактивнымВыполнением
- ПриВыполнении
- ОбработкаПроверкиВыполнения
***
Вопрос 06.18 экзамена 1С:Профессионал по платформе. Где располагаются процедуры-обработчики событий прикладных объектов, например, ПриЗаписи, ПередУдалением?
- В модуле формы
- В модуле объекта
- В модуле приложения
- Таких событий у прикладных объектов нет
Разбор выше.
***
Вопрос 06.41 экзамена 1С:Профессионал по платформе. С помощью команды "ДобавитьОбработчик" можно назначить обработчик события на:
- COM объект
- экземпляр объекта 1С:Предприятие (назначать на события модуля объекта)
- экземпляр объекта "Форма"
- верны 1,2 ответы
- верны 1,2,3 ответы
Обратимся к синтакс-помощнику. В примерах разобраны экземпляры объектов, и COM объекты.
ДобавитьОбработчик (AddHandler)Синтаксис:ДобавитьОбработчик <Событие>, <ОбработчикСобытия>;Параметры:<Событие>Событие, которому добавляется обработчик.Событие задается в форме <Выражение>.<Имя_события>, где:
<Выражение> - произвольное выражение на встроенном языке, результатом которого должен быть объект, к событию которого добавляется обработчик;<Имя_события> - идентификатор (имя) события.
<ОбработчикСобытия>Процедура/функция-обработчик события.Обработчиком события может являться метод объекта встроенного языка. Тогда <ОбработчикСобытия> задается как <Выражение>.<Имя_обработчика>, где:
<Выражение> - произвольное выражение на встроенном языке, результатом которого должен быть объект, метод которого служит обработчиком события;<Имя_обработчика> - имя метода обработчика события.
Также в качестве обработчика события может быть задана процедура/функция, находящаяся в области видимости. В этом случае обработчик события задается как имя процедуры/функции.Описание:Добавляет обработчик события.При добавлении обработчика события производится проверка соответствия числа параметров события числу параметров метода, назначаемого в качестве обработчика.Пример:
|
***
Вопрос 06.36 экзамена 1С:Профессионал по платформе. При определении обработчика события на COM объект количество параметров в процедуре - обработчике:
Правильный ответ первый, При добавлении обработчика события производится проверка соответствия числа параметров события числу параметров метода, назначаемого в качестве обработчика.- равно количеству параметров соответствующего события объекта
- на один параметр больше, чем у соответствующего события объекта (первый параметр содержит сам COM объект)
- на один параметр больше, чем у соответствующего события объекта (последний параметр содержит сам COM объект)
- у такой процедуры не будет параметров
- всегда один параметр (сам COM объект)
***
Вопрос 06.37 экзамена 1С:Профессионал по платформе. При определении подписки на событие количество параметров в процедуре - обработчике:
- равно количеству параметров соответствующего обработчика события, располагаемого в модуле объекта
- на один параметр больше, чем у соответствующего обработчика события, располагаемого в модуле объекта (первый параметр содержит сам объект)
- на один параметр больше, чем у соответствующего обработчика события, располагаемого в модуле объекта (последний параметр содержит сам объект)
- у такой процедуры не будет параметров
- всегда один параметр (сам объект, для которого определялась подписка)
Правильный ответ первый. Пример кода в обработчике события:
Пример кода процедуры-обработчика:
|
Процедура ПриИзмененииДокумента(Источник, Отказ)
КонецПроцедуры
***
Вопрос 06.38 экзамена 1С:Профессионал по платформе. При определении обработчика события на экземпляр объекта
1С:Предприятие количество параметров в процедуре - обработчике:
- равно количеству параметров соответствующего обработчика события, располагаемого в модуле объекта
- на один параметр больше, чем у соответствующего обработчика события, располагаемого в модуле объекта (первый параметр содержит сам объект)
- на один параметр больше, чем у соответствующего обработчика события, располагаемого в модуле объекта (последний параметр содержит сам объект)
- у такой процедуры не будет параметров
- всегда один параметр (сам объект, для которого определялась подписка)
Правильный ответ второй, аналогично прошлому вопросу.
***
Вопрос 06.40 экзамена 1С:Профессионал по платформе. При назначении обработчика события на объект (экземпляр объекта
1С:Предприятие, COM объект) процедура, отвечающая за отработку данного события должна быть расположена:
- обязательно в глобальном общем модуле
- обязательно в не глобальном общем модуле
- обязательно в модуле приложения
- выбор модуля не важен, в "пределах видимости"
Правильный ответ четвертый, см. выдержку из синтакс-помощника.
6,37 Написано правильный ответ первый, а выделен жирным второй. Какой верный?
ОтветитьУдалитьВерный второй: на один параметр больше, чем у соответствующего обработчика события, располагаемого в модуле объекта (первый параметр содержит сам объект)
УдалитьМне не совсем понятен вопрос 6.38(При определении обработчика события на экземпляр объекта 1С:Предприятие количество параметров в процедуре - обработчике). Где это назначается? Что здесь понимается под экземпляром объекта?
ОтветитьУдалитьЭтот комментарий был удален автором.
УдалитьРазобрался. В синтаксис-помощнике есть пример:
УдалитьОбработка = Обработки.КонтрольДокумента.Создать();
Накладная = Документы.Накладная.СоздатьДокумент();
ДобавитьОбработчик Накладная.ПриЗаписи, Обработка.ПриЗаписиДокумента;
Так вот, в модуле обработки "КонтрольДокумента" должна быть создана процедура:
ПриЗаписи(Источник, Отказ)
Заметьте, что первым параметром идет "Источник". Название этого параметра может быть любым. В него передается, в данном случае, ДокументОбъект. А остальные параметры должны быть такие же как и у события объекта "Накладная", в данном случае "Отказ".
Изначально я думал, что в модуле обработки "КонтрольДокумента" должна быть процедура ПриЗаписи(Отказ). Замететьте, без параметра "Источник". Так думал потому что в синтаксис-помощнике написано:
"При добавлении обработчика события производится проверка соответствия числа параметров события числу параметров метода, назначаемого в качестве обработчика."
Теперь понял, что число параметров должно быть на один больше.
Этот комментарий был удален автором.
УдалитьА я не понял почему (вернее зачем) на 1 параметр больше?
Удалитьесть вопрос 6.39 (При определении подписки на событие процедура обработчик должна располагаться: в не глобальном общем модуле) и вопрос 6.40 (выбор модуля не важен, в "пределах видимости"). Такое впечатление, что правильные ответы на эти вопросы противоречат друг-другу. Поясните кто-нибудь, а то каша в голове.. :)
ОтветитьУдалитьПодписка на событие это одно, а обработчик - другое. Речь о разном.
УдалитьДобавитьОбработчик
ОтветитьУдалитьВ синтакс-помощнике не дописали код для экземпляра объекта.
После строк
Обработка = Обработки.КонтрольДокумента.Создать();
Накладная = Документы.Накладная.СоздатьДокумент();
ДобавитьОбработчик Накладная.ПриЗаписи, Обработка.ПриЗаписиДокумента;
надо было дописать что в модуле обработки должно быть
Процедура ПриЗаписиДокумента(Источник, Отказ) Экспорт
Сообщить("Документ изменен");
КонецПроцедуры
А дальше записываем документ
Документ.Записать();
Итог - сообщение "Документ изменен".
Сразу понятн и про экземпляр объекта, и назначение обработчика на экземпляр объекта, и почему +1 параметр.
П.С.
УдалитьДокумент.Записать();
читать как
Накладная.Записать();
Ну и почему на 1 параметр больше-то?
УдалитьВопрос 06.18 поменялся
ОтветитьУдалитьГде располагаются процедуры-обработчики событий прикладных объектов (например СправочникОбъектИмя справочника), такие как ПередЗаписью, ПередУдалением?
В модуле формы
В модуле объекта
В модуле приложения
Таких событий у прикладных объектов нет
В модуле менеджера
Ответ - 2.