1с установить действие для поля формы

Обновлено: 05.07.2024

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

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

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

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

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

Переменная ДобавляемыеРеквизиты является массивом объектов типа РеквизитФормы .

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

Процедуру ИзменитьРеквизиты логично вызывать из обработчика ПриСозданииНаСервере , но т.к. мы не заимствуем форму в расширение, то следует найти другую точку входа. Для конфигураций УТ 11, КА 2 и ERP 2 существует типовой механизм упрощенного изменения конфигураций. Нас интересует модуль МодификацияКонфигурацииПереопределяемый , в состав которого входит процедура

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

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

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

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

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

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

По аналогии с добавлением реквизитов, данный код можно выполнять в функциях МодификацияКонфигурацииПереопределяемый.ПриСозданииНаСервере (УТ, КА, ERP) , ПодключаемыеКоманды.ПриСозданииНаСервере или ВерсионированиеОбъектов.ПриСозданииНаСервере .

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

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

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

  • Создать команду, указать для этой команды имя обработчика события и назначить эту команду элементу формы
  • Выполнить метод УстановитьДействие элемента формы, чтобы указать имя обработчика события в модуле формы

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

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

  • обработчик Подключаемый_ВыполнитьПереопределяемуюКоманду с переопределением процедуры МодификацияКонфигурацииКлиентПереопределяемый.ВыполнитьПереопределяемуюКоманду для УТ, КА и ERP;
  • обработчик Подключаемый_ВыполнитьКоманду с переопределением процедуры ПодключаемыеКомандыКлиент.ВыполнитьКоманду

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

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

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

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

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

Довольно частой задачей является модификация в расширении текста запроса динамического списка. Многие разработчики просто копируют текст запроса из конфигуратора, редактируют его и заменяют стандартный в свойстве ТекстЗапроса объекта Динамический список .

Для небольших изменений гораздо лучше воспользоваться объектом СхемаЗапроса , появившемся в версии платформы 8.3.5. Он позволит всегда иметь актуальный текст запроса, если он поменяется при обновлении конфигурации.

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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


Итак, взглянем на получившийся результат. Все элементы на форме созданы программно:

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

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

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

В элементах управления данные не хранятся!

Для обычной формы полный список элементов можно открыть из меню "Форма" - "Список элементов управления формы" (рис. отсюда ): Добавить элемент управления в обычную форму можно:
  1. через пункт главного меню "Форма - Вставить элемент управления";
  2. с помощью командной панели "Элементы управления".

Элемент управления "Панель"

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

Особенности использования элемента управления "Панель":

  1. Если в форму вставлен элемент управления "Панель", то для этого элемента можно задать режим "Автоправила", отличный от одноименного режима формы, причем данный режим будет действовать на все страницы панели. Свойство "Автоправила" обеспечивает автоматическую привязку границ элементов управления. Для Панели автоправила можно выставить в значение, отличающееся от значения родительской формы.
  2. При размещении элементов управления в форме нельзя разместить один и тот же элемент управления на двух страницах.
  3. Многостраничная форма может не иметь закладок, если:
    • для свойства формы "Отображать закладки" установлено значение "Не отображать";
    • отображение закладок отключено программным способом.
  4. Закладки на форме могут быть расположены сверху, снизу, справа и слева.
    используя пункт контекстного меню формы "Добавить страницу";


Элемент управления "Поле HTML-документа"

Элемент управления "Поле HTML-документа" предназначен для просмотра или редактирования HTML-документов и позволяет:
  1. отобразить на форме веб-страницу;
  2. назначить обработчики для множества событий.

HTML-документ в элементе управления "Поле HTML-документа" может быть сформирован:

  1. программно;
  2. загружен из ресурса, указываемого через URL;
  3. загружен из макета типа HTML-документ.

Редактировать HTML-документ, отображаемый в элементе управления "Поле HTML-документа", можно в режиме 1С:Предприятие (в конфигураторе документ не редактируется).

Элементы формы для списочных значений

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

  1. "Поле выбора" (пользователь может выбрать значение из списка, который можно как связать с данными, так и определить произвольный для данной формы через опцию "Строки списка выбора");
  2. "Поле списка" (пользователю показывается полный список значений, список раскрывать не нужно);
  3. "Поле ввода" (можно выбрать из данных ссылочного типа).

Можно одновременно создать элемент управления "Поле ввода" вместе с поясняющей надписью, представляющей элемент управления "Надпись", для чего необходимо создавать поле ввода через пункт главного меню "Форма - Вставить элемент управления. ".

Особенности работы с элементами формы для списочных значений:

  1. Элемент управления "Поле ввода" предназначен для:
    • ввода значений непосредственно в поле, например, с клавиатуры;
    • выбора ссылок на объекты;
    • выбора значений из предварительно сформированного списка.
  2. Тонкая прерывистая линия красного цвета в поле ввода означает, что данное поле обязательно к заполнению.
  3. Состав кнопок, расположенных справа у элемента управления "Поле ввода", определяется:
    • значением свойства поля ввода "Тип значения";
    • выбором соответствующего свойства в окне свойств элемента управления.

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

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

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

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

В элементах управления данные не хранятся!

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

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

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

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

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

  • вертикальным разделителям устанавливается ширина 6, горизонтальную привязку рекомендуется устанавливать в НеПривязано ;
  • горизонтальным разделителям устанавливается высота 6, вертикальную привязку рекомендуется устанавливать в НеПривязано;
  • рамку рекомендуется устанавливать в НетРамки . В сложных случаях, когда пользователю может быть тяжело догадаться о наличие разделителя, допускается устанавливать рамку Одинарная .

Разделитель обладает способностью "захватываться" мышью и перемещаться внутри формы в ее пределах с учетом возможности расположения других элементов и ориентации разделителя.

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

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

Команды формы редактируются в списке. Разработчик имеет возможность:

  • добавить, удалить команды формы;
  • задать свойства команд с помощью палитры свойств;
  • назначить для команды процедуру, которая будет выполняться при вызове этой команды пользователем.

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

  1. на обычной форме можно разместить на форме элемент управления "Кнопка", назначить обработчик события "Нажатие" и определить алгоритм в модуле формы;
  2. на управляемой форме можно:
    • добавить в форму элемент управления "Кнопка", назначить команду из списка команд формы и определить алгоритм команды в модуле формы;
    • добавить команду формы в командный интерфейс формы и включить ее видимость.

На закладках "Стандартные команды" и "Глобальные команды" разработчику предоставляются списки команд, генерируемых платформой и доступных для использования в данной форме. Их свойства изменять нельзя, можно только добавлять их в форму.

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

Для кнопки можно определить процедуру-обработчик для события "Нажатие"; тем самым кнопка программируется для выполнения некого стандартного действия:

В качестве обработчика события "Нажатие" элемента управления "Кнопка" может быть выбрано:

  1. стандартное действие;
  2. процедура модуля формы, в которой расположена кнопка.

Глобальную процедуру инициировать напрямую по кнопке нельзя.

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

Читайте также: