Обработчики событий 1С:Предприятие 8.3

Особенностью обработки событий среде 1С:Предприятия 8 является то, что имя процедуры-обработчика в одних случаях должно совпадать с именем события, а в других случаях может от него отличаться.
//its.1c.ru
.
.

Объекты

Виртуальный реквизит .Представление

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

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

Первый этап выполняется в процедуре ОбработкаПолученияПолейПредставления(Поля, СтандартнаяОбработка):

  • Поля — Массив, необходимо наполнить строковыми именами реквизитов объекта, необходимых для формирования представления
  • СтандартнаяОбработка — Булево, необходимо установить в Ложь при наполнении массива Поля значениями
    • если оставить значение Истина, то массив Поля будет наполнен стандартной обработкой платформы
      • стандартная обработка для справочников в массиве Поля формирует набор значений [«Наименование«, «Ссылка«]
      • стандартная обработка для документов в массиве Поля формирует набор значений [«Номер«, «Дата«, «Ссылка«]
  • выполнение процедуры ОбработкаПолученияПолейПредставления(…) в сеансе кэшируется, т.е. фактически выполняется только один раз

Второй этап выполняется в процедуре ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка):

  • Данные — Структура, содержит свойства реквизитов, определенных массивом Поля в процедуре ОбработкаПолученияПолейПредставления(…)
  • Представление — Строка, которую необходимо сформировать для представления
    • если Данные не содержат нужных реквизитов, их можно получить через их свойства или через ссылку, но это потребует существенное дополнительно время на выполнение
  • СтандартнаяОбработка — Булево, необходимо установить в Истина при наполнении формировании Представления
    • если оставить значение Ложь, то Представление будет сформировано базовым алгоритмом платформы

 

Управляемые формы

!!! Изменение порядка строк в ТаблицаФормы не имеет события !!!

Объект и реквизиты

В модуле управляемой формы значения реквизитов формы и реквизитов в составе Объект доступны, только если они имеют простые типы. При выборе в реквизите формы значения прикладного типа &НаКлиенте как Объект.<Реквизит> доступна только ссылка и ее строковое представление, доступное преобразованием Строка(Объект.<Реквизит>).

Получить собственные реквизиты прикладного реквизита формы можно только &НаСервере или &НаСервереБезКонтекста.

События формы

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

  • &НаСервере ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    • форма, открытая для создания нового объекта, получает новый пустой несохраненный Объект, для которого метод Объект.ЭтоНовый() возвращает Истина
      • фактически этот метод приводит к ошибке «Метод объекта не обнаружен (ЭтоНовый)» и следует использовать ЗначениеЗаполнено(Объект.Ссылка)
  • &НаКлиенте ПриОткрытии(Отказ)

Оповещение форм

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

  • ИмяСобытия — Строка, содержит идентификатор вида оповещения
  • Параметр — произвольные данные, передаваемые формам
  • Источник — произвольные данные, передаваемые в качестве источника

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

Кроме открытых форм оповещение может быть обработано модулем приложения или общим глобальным модулем, если оповещение было подключено процедурой ПодключитьОбработчикОповещения(<ИмяПроцедуры>).

Все описанные процедуры подключения, вызова и обработки выполняются &НаКлиенте:

///

Таблицы, Поля: ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)
Форма: ОбработкаВыбора(<ВыбранноеЗначение>, <СтандартнаяОбработка>)

 

 

 

Добавить комментарий