1с программно добавить обработчик события элемента формы

Программное добавление и изменение элементов управляемых форм

Платформа 1С:Предприятие позволяет программно добавлять и изменять элементы управляемой формы. Разберемся для чего это может потребоваться.

Программная модификация формы может потребоваться в нескольких случаях:

В управляемой форме можно программно добавить, изменить и удалить:

Все указанные операции возможны только на сервере.

Программное изменение формы имеет ограничения:

Изменение команд формы

Коллекция Команды доступна как на клиенте, так и на сервере. Изменять коллекцию (методы Добавить () и Удалить () ) можно только на сервере. Искать и получать количество элементов (методы Найти () и Количество () ) можно как на клиенте, так и на сервере.

Изменение реквизитов формы

Внимание!

Процесс изменения состава реквизитов является достаточно ресурсоемким. Фактически выполняется пересоздание формы. В связи с этим работа с реквизитами формы выполняется в пакетном режиме.

Создадим новый реквизит формы с именем Покупатель:

// Изменения состава реквизитов
ИзменитьРеквизиты ( ДобавляемыеРеквизиты );

Изменение элементов формы

Рассмотрим несколько наиболее распространенных на практике примеров работы с командами, реквизитами и элементами формы.

Добавление команды и связанной с ней кнопки:

Добавление реквизита и связанного с ним поля ввода:

Назначение элементу формы обработчика события:

&НаКлиенте
Процедура Подключаемый_ПокупательПриИзменении ( Элемент )
// Действия события
КонецПроцедуры

Внимание!

Внимание!

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

Остались вопросы?
Спросите в комментариях к статье.

2 комментария

Ваш текст:
В параметры ДобавляемыеРеквизиты и УдаляемыеРеквизиты передаются массивы с элементами типа РеквизитФормы.
Верный текст:
(необязательный)
Тип: Массив.
Массив, содержащий СТРОКИ, описывающие ПУТИ к удаляемым реквизитам.

Источник

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

Введение в управляемая форма 1С реквизиты элементы команды

Рекомендуется модифицировать управляемые формы типового решения 1С программно для удобного будущего обновления и исключения конфликтов, а также для удобной работы с изменениями и надежности при использовании механизма расширений.
В некоторых типовых конфигурациях 1С (ЕРП 2, УТ 11) используется механизм упрощенного изменения конфигурации. Статьи о типовом механизме можно найти в разделе полезных ссылок. Данный механизм используется в БСП, и его необходимо знать при модификации типовых конфигураций.
При добавлении элементов на форму программно можно отредактировать практически любое свойство из панель свойств, которое можно установить вручную в конфигураторе.
Также все описанные в текущем разделе процедуры и функции находятся во внешней обработке УпрФормы.

Примеры работы с объектом «ДанныеФормыКоллекция» и созданием дин. списка и таблицы значений программно можно будет посмотреть в части 2.

Для запуска обработки в режиме предприятия необходимо наличие объектов «Справочники.Номенклатура», подчиненный ему «Справочники.ХарактеристикиНоменклатуры» и «РегистрыСведений.ЦеныНоменклатуры”.

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

Переопределить обработчики событий формы можно в обработчике «ПриСозданииНаСервере» (кроме самого обрабочика «ПриСозданииНаСервере») или в теле модуля формы в контексте сервера (например, Переопределение событий ПриЧтениинаСервере и ПриСозданииНаСервере).

В теле модуля формы:

А в новой процедуре нужно добавить вызов основной, если такая процедура есть.

Аналогично можно поступить и с обработчиками элементов формы:

Программное создание групп формы.

Доступные виды групп формы:

ss2019 12 27at04.46.44

Программное добавление команды на форму.

Удалить команду можно при помощи метода коллекции формы команд: Команды.Удалить( ). Удалять можно только те команды, которые были созданы программно.

Программное создание декораций форм.

Программное добавление реквизита на форму.

Добавлять новые реквизиты в управляемую форму и удалять необходимо с помощью метода ИзменитьРеквизиты(), куда в параметры передается массив добавляемых реквизитов и массив удаляемых. Удалять при этом можно только те реквизиты, которые были созданы программно.

Вывод реквизитов на форму.

Вызов процедур при создании на сервере 1С

После описания всех процедур выводим их в процедуре ПриСозданииНаСервере. Также можно изменить программно некоторые свойства формы, например, заголовок. Чтобы был виден только наш заголовок, нужно отключить свойство Автозаголовок.

Некоторые советы при программном редактировании формы

Итак, взглянем на получившийся результат. Все элементы на форме созданы программно:
%D1%80%D0%B5%D0%BA%D0%B2%D0%B8%D0%B7%D0%B8%D1%82%D1%8B %D1%84%D0%BE%D1%80%D0%BC%D1%8B

Источник

1с программно добавить обработчик события элемента формы

empty

v8: Методика переопределения и вызова обработчиков событий формы

Каждый из нас хотя бы раз задумывался над тем, как было бы удобно, если бы мы могли переопределять обработчики событий формы, сохраняя возможность вызова старого обработчика независимо от его имени. В этой статье изложен метод, который позволяет реализовать эту возможность. Автор статьи: TormozIT | Редакторы: Гений 1С
Последняя редакция №112 от 24.06.07 | История
URL: http://kb.mista.ru/article.php?id=268

Ключевые слова: обработчик, вызов, событие, форма, обновление, переопределение, типовая, замена

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

Случай 1. Добавляем вставку в начало и конец имеющихся в типовой обработчиков событий формы.

Обычно делают примерно так.

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

Теперь следует делать так.

Случай 2. Добавляем новый обработчик события элемента формы.

Обычно делают примерно так.

Все работает и выглядит хорошо.
Но подумайте, что будет, если в новом релизе будет добавлен в режиме редактирования конфигурации (статически) связанный обработчик для того же события и, возможно, что еще хуже, с таким же именем!

Как следует поступать в этом случае?
Опять по той же схеме.

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

Отдельно хочется упомянуть о новых элементах формы. Если вы добавили в форму свой элемент и хотите сделать для него обработчик какого-нибудь события, то имеет смысл и в этом случае поступать так же. Ведь в новом релизе могут добавить элемент формы того же функционального назначения. Если он будет с тем же именем, что и ваш, то вам после обновления даже ничего менять не придется. А если имя будет другое, то просто нужно будет исправить название вашего обработчика и параметр в вызове его установки.

Необходимые процедуры и функции общего модуля

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

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

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

Как программно вызвать обработчик события формы из ее модуля, не привязываясь к имени обработчика?

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

Пример вызова события НачалоВыбора для элемента формы с именем «Склад»:

Как программно вызвать обработчик события формы из любого модуля, не привязываясь к имени обработчика?

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

Инициализацию парамертов обработчика события естественно необходимо размещать в параметре «Выражение».

Пример вызова обработчика события НачалоВыбора для элемента формы с именем «Склад»:

Шаблоны

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

Также можно написать и частные шаблоны для еще большего ускорения разработки. Тогда вам даже не придется искать/вспоминать стандартную строку параметров обработчика события.

Например шаблон для обработчика события ПриИзменении :

А вот шаблон для обработчика события кнопки:

Итоги

Я успешно применяю данную методику на практике. Реализованы унифицированные обработчики однотипных событий формы, что позволяет не привязываться к имени элемента формы. Многие типы событий обрабатываются почти глобально при сохранении вызова типовых и наличии новых обрабочтиков.

Источник

Программная модификация управляемых форм

Одним из требований для прохождения аудита расширения в модели сервиса является программная модификация управляемых форм без заимствования самой формы в расширение.

Мы рассмотрим основные составляющие этой задачи: добавление реквизитов, добавление элементов формы и назначение обработчиков событий элементов формы.

Добавление реквизитов

Для добавления реквизитов используется метод объекта ФормаКлиентскогоПриложения

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

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

Данную процедуру можно заимствовать в расширение, добавить проверку имени формы и вставить код изменения реквизитов:

Для остальных конфигураций придется переопределять другие процедуры. Например

Использование той или иной процедуры следует проверить в модуле редактируемой формы.

Изменение элементов формы

Для добавления нового элемента формы требуется передать в функцию Добавить данной коллекции имя элемента, его тип и родителя (при необходимости). Например:

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

Обработка событий формы

Выполнить код по событию элемента формы можно двумя способами:

Для самых простых случаев (команда или событие без параметров) можно использовать следующие комбинации обработчиков и переопределяемых процедур:

При этом в предопределенной процедуре обязательно проверять имя команды (или имя элемента формы) и имя самой формы.

Либо вариант с использованием команд:

Полезные советы

Работа с динамическими списками

Переопределение открываемой формы

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

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

Источник

Как создать обработчик события для программно созданных реквизитов?

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

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

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

Как создать обработчик события для формы?
как создать обработчик события для формы java?

Для элемента управления можно программно установить обработчики событий

ПолеФормы (FormField)
УстановитьДействие (SetAction)
Синтаксис:

Тип: Строка.
Имя события, для которого устанавливается новое действие.
(обязательный)

Тип: Строка.
Указывается имя обработчика.
Описание:

Устанавливает обработчик события.

Сервер, мобильное приложение(сервер).

Спасибо, буду пробовать

Странное вообще решение какое-то.

Я всего около месяца программирую, поэтому не особо понимаю, когда, что проще использовать. И вообще многого не знаю еще. Сейчас попробую так

Добавлено через 9 минут
Переменная не определена ПланыВидовХарактеристикСсылка

К сожалению, та же ошибка
Переменная не определена ПланыВидовХарактеристик. Может я вставляю не туда?

Решение

tickОбработчик события для объекта, созданного программно
Здравствуйте. В форме программно создано кнопочное поле. Cреда Visual Studio 2010. (в файле.

tickПривязать обработчик события для программно добавленного элемента управления
Такая проблема. Программно создаю DataGridView при добавлении новой вкладки на tabControl.

tickКак передать в обработчик события значение программно созданного pictureBox?
как передать в обработчик события значение программно созданного pictureBox? суть прилоения оно.

Создать обработчик события для класса
Добрый день. Подскажите, пожалуйста, как создать свой обработчик события для своего класса? В.

Источник

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