1с 8 переключатель на управляемой форме. Переключатели, обычное приложение, управляемые формы. Настройка внешнего вида управляемой формы

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

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

  • При доработке типовых конфигураций для облегчения процедуры последующего обновления. В этом случае будет изменен только модуль формы. Модули намного проще обновлять, чем форму.
  • При реализации некоторых общих алгоритмов. Например, в подсистеме «Запрет редактирования реквизитов объектов» для всех подключенных к подсистеме объектов предусмотрено программное создание кнопки для включения возможности редактирования реквизитов.
  • При реализации некоторых специфических алгоритмов. Например, в справочнике Номенклатура создаются поля для редактирования дополнительных реквизитов.

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

  • реквизиты;
  • локальные команды;
  • элементы.

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

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

  • Удалить можно только программно добавленные реквизиты/команды/элементы. Нельзя программно удалить объекты, созданные в конфигураторе.
  • Нельзя назначить реквизит основным.

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

Для управления составом команд у объекта УправляемаяФорма есть коллекция Команды

    Добавить(< ИмяКоманды >)

    Количество ()

    Найти(< ИмяКоманды >)

    Удалить(< Команда >)

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

В качестве примера работы с командами формы создадим новую команду ИсторияИзменений с заголовком «История изменений…», которая будет вызвать обработчик ОтобразитьИсторию () . Создание выполняется при открытии формы.

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Команда = Команды. Добавить(«ИсторияИзменений» );
Команда. Действие = ;
Команда. Заголовок = «История изменений…» ;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОтобразитьИсторию(Команда )
// действия команды
КонецПроцедуры

Обработчик команды должен располагаться в форме и иметь директиву компиляции &НаКлиенте .

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

Чтение состава реквизитов формы выполняется функцией ПолучитьРеквизиты (< Путь >) , возвращающей массив типа РеквизитФормы . Параметр функции указывает путь к родительскому реквизиту (в виде строки). Если параметр опущен или указана пустая строка, возвращаются реквизиты верхнего уровня.

Изменение реквизитов выполняется методом ИзменитьРеквизиты (<ДобавляемыеРеквизиты >, <УдаляемыеРеквизиты >) объекта УправляемаяФорма . В параметры ДобавляемыеРеквизиты и УдаляемыеРеквизиты передаются массивы с элементами типа РеквизитФормы .

Внимание!

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

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


ДобавляемыеРеквизиты = Новый Массив;
ДобавляемыеРеквизиты. Добавить(Новый РеквизитФормы («Покупатель», Новый ОписаниеТипов («СправочникСсылка.Контрагенты»), «Клиент»));

// Изменения состава реквизитов
);

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

Для управления составом элементов у объекта УправляемаяФорма есть коллекция Элементы . У коллекции есть несколько методов:

    Вставить(< Имя>, < ТипЭлемента>, < Родитель>, < Элемент >)

    Добавить(< Имя>, < ТипЭлемента>, < Родитель >)

    Количество ()

    Найти(< Имя >)

    Переместить(< Элемент>, < Родитель>, < МестоРасположения >)

    Удалить(< Элемент >)

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

  • ГруппаФормы;
  • ТаблицаФормы;
  • ПолеФормы;
  • КнопкаФормы.

Элементам формы можно программно назначить обработчики событий. Для этих целей предназначен метод УстановитьДействие(< ИмяСобытия>, < Действие >) .

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

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

// Создание команды
Команда = Команды. Добавить(«ИсторияИзменений» );
Команда. Действие = «Подключаемый_ОтобразитьИсторию» ; // В форме должна быть процедура с указанным наименованием
Команда. Заголовок = «История изменений…» ;
// Создание кнопки и связь ее с командой
Элемент = Элементы. Добавить(«ИсторияИзменений» , Тип(«КнопкаФормы» ));
Элемент.ИмяКоманды = «ИсторияИзменений» ;

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

// Описание добавляемых реквизитов
ДобавляемыеРеквизиты = Новый Массив;
ДобавляемыеРеквизиты. Добавить (Новый РеквизитФормы («Покупатель» , Новый ОписаниеТипов («СправочникСсылка.Контрагенты» ), «Клиент» ));
// Изменение состава реквизитов
ИзменитьРеквизиты(ДобавляемыеРеквизиты );
// Создание поля ввода и связь с реквизитом
Элемент = Элементы. Добавить(«Покупатель» , Тип(«ПолеФормы» ));
Элемент. Вид = ВидПоляФормы. ПолеВвода;
Элемент. ПутьКДанным = «Покупатель» ;

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

ЭлементПокупатель. УстановитьДействие («ПриИзменении» , «Подключаемый_ПокупательПриИзменении» );

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

Внимание!

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

Внимание!

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

1С создаются системой автоматически при использовании прикладного решения. Являются основой представления (отображения) информации в системе "1С:Предприятие".

Структура формы 1С

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

Отображаемая часть формы (видимая пользователю) описывается как дерево, включающее элементы формы (см. рис. ниже, поле "Элементы формы"):

  • группы, включающей другие элементы,
  • поля ввода,
  • флажки,
  • переключатели,
  • кнопки,
  • таблицы, которые включают элементы-колонки и т. д.

"Элементы формы 1С"

[свернуть]

Группа элементов формы может представляться как

  1. панель с рамкой,
  2. панель со страницами (закладками),
  3. собственно страница,
  4. командная панель.

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

  • реквизитов (данных, с которыми работает форма);
  • команд (выполняемых действий).

Настройка внешнего вида управляемой формы

Настройка внешнего вида управляемой формы пользователем

Настройка внешнего вида управляемой формы может осуществляться на пользовательском уровне. Для данной возможности в действиях формы существует команда "Ещё" - "Изменить форму" (управление только теми элементами формы, которые определены на этапе разработки или по стандартным правилам автогенерации формы).

"Ещё" - "Изменить форму"

Команда "Ещё" - "Изменить форму":

После нажатия "Изменить форму" показывается окно настройки формы 1С:

[свернуть]

Кроме того, в пользовательском режиме возможно:


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

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

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

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

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

Рисунок (изменение формы 1С разработчиком)

[свернуть]

При разработке формы 1С необходимо:

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

Более подробную информацию по работе с формами в курсе "Работа с формами в "1С:Предприятии 8.3", http://www.1c.ru/rus/partners/training/uc1/course.jsp?id=161.

Добавляем на форму рамку группы и на нее размещаем переключатели через пункт меню Форма -> Вставить элемент управления… и в открывшемся окне выбираем переключатели:

В правой части окна добавляем значение переключателя столько, сколько нам необходимо, ставим галочку на «Акции – первый в группе», для того чтоб данный переключатель выбирался автоматически.

После того как добавим переключатели выберем тип данных для первого значения «Акции», в нашем случае присваиваем значение «ТипЦБ»:

А само значение переключателя вводится в Данные -> Выбираемое значение. Для Акции это 0, Облигации – 1, Векселя - 2 и Паи – 3. Но до введения этих данных необходимо проверить порядок.

Если переключатели идут не по порядку, то не будет осуществлено переключение, то есть не сможем выбрать значение облигации. Для того чтобы включить эту возможность, необходимо выбрать меню Форма -> Настройка порядка обхода и все переключатели разместить по порядку.

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

Остается только в событии переключателя «акции» «При изменении» написать код программы:

Если ТипЦБ = 0 Тогда

ИначеЕслиТипЦБ = 1 Тогда

ЭтаФорма.ЭлементыФормы.Поступление.Колонки.НКД.Доступность = 1; // только для облигаций разрешаем НКД

ИначеЕслиТипЦБ = 2 Тогда

ЭтаФорма.ЭлементыФормы.Поступление.Колонки.НКД.Доступность = 0;

ИначеЕслиТипЦБ = 3 Тогда

ЭтаФорма.ЭлементыФормы.Поступление.Колонки.НКД.Доступность = 0;

КонецЕсли;

Теперь при выборе переключателя «Облигации» дается возможность редактировать значение колонки НКД.

Wi-Fi