1с обработкаполученияформы открыть обычную форму

Подписка на событие «ОбработкаПолученияФормы» для обычных форм


Предисловие

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

Немного теории

Для упрощения процесса последующих обновлений типовой конфигурации рекомендуется изменять типовые формы объектов программным образом. Например, если нам нужно добавить на форму поле ввода, то в обработчике формы «ПередОткрытием» (для обычных форм) необходимо добавить соответствующий программный код. Для управляемых форм платформа поддерживает создания подписки на событие «ОбработкаПолученияФормы», которое позволяет вмешиваться в процесс создания формы на сервере. Эта возможность намного упрощает изменение форм. Фактически, в некоторых ситуациях разработчик может вообще не трогать типовую форму, а изменять ее программно в процедуре-обработчике подсписки на событие.

Непонятно почему, но платформа 1С:Предприятие 8.2 не поддерживает создание подписок на получение формы объекта для обычных форм. Но есть нестандартный способ, который позволяет отловить событие получения обычной формы и в дальнейшем влиять на ее свойства и состав. Именно о нем и пойдет речь далее.

Реализация

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

2

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

44

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

ft

И сразу добавим экспортную процедуру-обработчик для подписки на событие «DEV_ИзменениеФормы» (подписка на событие и общий модуль имеют одинаковое наименования для удобства разработки).

Теперь мы можем создать необходимую подписку на событие и привязать к созданной выше процедуре. Сразу отмечу, что в текущем примере мы будем изменять обычную форму элемента справочника «Банки», поэтому в источнике подписки на событие установим значение «СправочникМенеджер.Банки».

dh

О его назначении будет понятно чуть позже. Теперь справочник «Банки» выглядит следующим образом:

tyr

Обратите внимание, что созданная нами управляемая форма элемента не содержит элементов на форме, поскольку они в данном случае не нужны. При получении этой формы вызывается обработчик получения формы «DEV_ИзменениеФормы», в котором мы можем получить обычную форму и произвести все необходимые программные действия. Далее представлен программный код обработчика для изменения обычной формы элемента справочника «Банки».

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

Нужно сказать, что метод «Закрыть()» в обработчике «ПриОткрытии» используется, чтобы управляемая форма не появлялась на экране пользователя. Если бы мы поставили флаг «Отказ» в обработчике «ПриСозданииНаСервере» или установили флаг «СтандартнаяОбработка» в ЛОЖЬ в обработчике подписки на событие, то возникла бы ошибка с идентификатором формы или невозможности работы с неоткрытой формой. В данный момент другого способа скрыть от пользователя «промежуточную» форму не нашел.

Что на практике

Запустив режим «предприятия» мы увидим следующие изменения формы элемента справочника «Банки».

657464

При этом для справочника «Банки» в конфигурации мы изменили настройку поддержки только для непосредственно самого объекта в режим «Редактируется с сохранением поддержки».

497px error

Проделав вышеописанные действия, мы сохранили максимальную совместимость с конфигурацией поставщика.

Что в итоге

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

Источник

Обработчики событий ОбработкаПолученияПредставления и ОбработкаПолученияПолейПредставления

Область применения: управляемое приложение, мобильное приложение.

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

Процедура ОбработкаПолученияПолейПредставления(Поля, СтандартнаяОбработка)
Поля.Добавить(«Наименование»);
Поля.Добавить(«Дата»);
СтандартнаяОбработка = Ложь;
КонецПроцедуры

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

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

Эти требования также справедливы при разработке планов обмена для синхронизации с другими программами (не РИБ, по правилам конвертации) с помощью подсистемы «Обмен данными» Библиотеки стандартных подсистем.
Например, недопустимо обращаться к предопределенным элементам, которые еще могли быть не загружены в базу или, наоборот, уже удалены в ходе обмена данными:

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

СтандартнаяОбработка = Ложь;
Если Данные.ВидОбразования = Справочники.ВидыОбразованияФизическихЛиц.ПослевузовскоеОбразование Тогда
Представление = НСтр(«ru = ‘Послевузовское образование'»);
Иначе
.

4. При реализации обработчиков следует также учитывать требования о поддержке толстого клиента, управляемое приложение, клиент-сервер.

Источник

Понравилась статья? Поделить с друзьями:
Добавить комментарий
  • Как сделать успешный бизнес на ритуальных услугах
  • Выездной кейтеринг в России
  • Риски бизнеса: без чего не обойтись на пути к успеху
  • 1с обработкаоповещения в управляемых формах
  • 1с обработкавыбора в управляемой форме