1с добавить команду на форму программно
Введение в управляемая форма 1С реквизиты элементы команды
Рекомендуется модифицировать управляемые формы типового решения 1С программно для удобного будущего обновления и исключения конфликтов, а также для удобной работы с изменениями и надежности при использовании механизма расширений.
В некоторых типовых конфигурациях 1С (ЕРП 2, УТ 11) используется механизм упрощенного изменения конфигурации. Статьи о типовом механизме можно найти в разделе полезных ссылок. Данный механизм используется в БСП, и его необходимо знать при модификации типовых конфигураций.
При добавлении элементов на форму программно можно отредактировать практически любое свойство из панель свойств, которое можно установить вручную в конфигураторе.
Также все описанные в текущем разделе процедуры и функции находятся во внешней обработке УпрФормы.
Программное переопределение обработчиков событий формы и элементов формы
В теле модуля формы:
А в новой процедуре нужно добавить вызов основной, если такая процедура есть.
Аналогично можно поступить и с обработчиками элементов формы:
Программное создание групп формы.
Доступные виды групп формы:
Программное добавление команды на форму.
Удалить команду можно при помощи метода коллекции формы команд: Команды.Удалить(<Команда>). Удалять можно только те команды, которые были созданы программно.
Программное создание декораций форм.
Программное добавление реквизита на форму.
Добавлять новые реквизиты в управляемую форму и удалять необходимо с помощью метода ИзменитьРеквизиты(), куда в параметры передается массив добавляемых реквизитов и массив удаляемых. Удалять при этом можно только те реквизиты, которые были созданы программно.
Вывод реквизитов на форму.
Вызов процедур при создании на сервере 1С
После описания всех процедур выводим их в процедуре ПриСозданииНаСервере. Также можно изменить программно некоторые свойства формы, например, заголовок. Чтобы был виден только наш заголовок, нужно отключить свойство Автозаголовок.
Некоторые советы при программном редактировании формы
Итак, взглянем на получившийся результат. Все элементы на форме созданы программно:
Добавление расширения в конфигурацию
Работа с расширением
Мы добавили новое расширение и теперь можно приступать к работе с ним.
Для этого в списке расширение двойным кликом или с помощью контекстного меню откроем конфигурацию нашего расширения
На момент написания статьи, расширения конфигурации 1С не поддерживают стандартный механизм ввода на основании, поэтому нам придется описать его вручную, приступим.
Переходим с свойства общей нашей общей команды. В свойствах нам необходимо указать группу, в которую входит команда по умолчанию и тип параметра команды.
Переходим в модуль команды и описываем обработку нашей глобальной команды:
На этом работа с глобальной командой завершена.
В добавленной процедуре напишем простой код для заполнения нашего документа по основанию
Так же необходимо дать права обычным пользователям на работу с нашей общей командой. Для этого возьмем роль, которая есть у каждого пользователя, добавим ее в наше расширение и разрешим просмотр нашей команды.
На этом разработка реализации ввода на основании в 1С при помощи расширения конфигурации завершено, можем запустить конфигурацию и проверить, что проделали данную работу не зря.
Редактор формы используется для создания и редактирования форм объектов прикладного решения. Формы объектов используются системой для визуального отображения данных в процессе работы пользователя.
Любая форма представляет совокупность нескольких составляющих:- элементов — объектов, определяющих визуальное представление формы и осуществляющих взаимодействие с пользователем,
- командного интерфейса — совокупности команд, отображаемых в форме;
- реквизитов — объектов, данные которых форма использует в своей работе.
- команд — действий, которые определены в данной конкретной форме,
- параметров — объектов, значения которых характеризуют саму форму, используются при ее создании и остаются постоянными в процессе «жизни» формы,
- модуля — программы на встроенном языке, отвечающей за работу с элементами и за обработку событий;
Редактор формы содержит несколько закладок, обеспечивающих редактирование всех составляющих формы.
В отдельном окне, в нижней части редактора, отображается внешний вид формы в режиме 1С:Предприятие.
Редактирование элементов
Редактор форм позволяет разработчику использовать широкий набор возможностей для изменения внешнего вида формы — того вида, который форма будет иметь в режиме 1С:Предприятие. Перечислим основные из этих возможностей:
Редактор форм позволяет добавлять в форму специальные элементы, которые помогают придать форме собственный узнаваемый стиль, сделать доступ к данным простым и понятным, а также разместить большой объем информации на ограниченной площади.
Тогда в режиме 1С:Предприятие она будет выглядеть следующим образом:
Заголовок каждой группы — страницы отображается на отдельной закладке. Разработчик имеет возможность задать режим отображения закладок: снизу или сверху:
Например, закладки можно расположить снизу:
Элементы
Редактор позволяет добавлять в форму различные элементы. Добавлять элементы можно с помощью команды добавления или путем перетаскивания реквизитов формы в дерево элементов:
Все элементы формы представляются в виде иерархической структуры, корнем которой является сама форма. Это позволяет быстро перемещаться к нужному элементу формы:
Располагая элементы выше/ниже в дереве, подчиняя их другим элементам и задавая свойства элементов-групп можно задавать порядок, в котором пользователь будет обходить элементы управления формы при вводе и редактировании данных. В режиме 1С:Предприятие элементы формы будут обходиться в порядке их иерархии и в соответствии с тем, какой тип группировки выбран для групп: вертикальная или горизонтальная.
Разделители
Разделители являются специальными элементами, с помощью которых возможно перераспределение пространства формы без изменения ее размеров. Платформа в режиме 1С:Предприятие самостоятельно добавляет эти элементы в форму. Разделитель обладает способностью «захватываться» мышью и перемещаться внутри формы в ее пределах с учетом возможности расположения других элементов и ориентации разделителя:
При перемещении разделителя, все элементы, связанные с разделителем, будут изменять свои размеры или перемещаться.
Модуль формы
Для редактирования модуля формы конфигуратор вызывает редактор текстов и модулей. Этот редактор предоставляет разработчику большое разнообразие возможностей для создания и изменения текста модуля. Подробнее…
Реквизиты формы
Редактирование реквизитов формы выполняется в списке, который позволяет создавать новые реквизиты, изменять имеющиеся и удалять ненужные реквизиты. Свойства реквизитов задаются с помощью палитры свойств.
Если у формы существует основной реквизит, определяющий поведение формы, отличное от типового, — он выделяется жирным шрифтом.
Командный интерфейс формы
Командный интерфейс формы редактируется в дереве. Основные ветви дерева содержат команды, добавленные в панель навигации окна, в котором будет показана форма, и в командную панель формы. Внутри каждой из этих ветвей команды разделены по стандартным группам.
Часть команд в командный интерфейс платформа добавляет автоматически. Наряду с этим разработчик самостоятельно может добавить в командный интерфейс команды, перетащив их из списка команд формы или из списка доступных глобальных команд. Для всех команд, добавленных в командный интерфейс, разработчик может задать их видимость для различных ролей, определенных в конфигурации.
Команды формы
Команды формы редактируются в списке. Разработчик имеет возможность добавить, удалить команды формы и задать их свойства с помощью палитры свойств. В том числе назначить для команды процедуру, которая будет выполняться при вызове этой команды пользователем.
На закладках Стандартные команды и Глобальные команды разработчику предоставляются списки команд, генерируемых платформой и доступных для использования в данной форме. Их свойства изменять нельзя, можно только добавлять их в форму.
С помощью мыши разработчик может перетащить команду в командный интерфейс формы. Также можно перетащить команду и прямо в дерево элементов, если нужно, например, отобразить эту команду в виде кнопки, расположенной в форме.
Параметры формы
Параметры формы редактируются в списке. Разработчик имеет возможность добавить, удалить параметры формы и задать их свойства с помощью палитры свойств.
Чтобы вывести реквизиты на форму программно нужно в обработчике "ПриСозданииНаСервере" в форме выполнить следующий алгоритм:
Реквизит должен находится в метаданных.
Поле = Элементы.Добавить("ТестовыйРеквизит", Тип("ПолеФормы"), Элементы.ГруппаРеквизиты);
//"ТестовыйРеквизит" - Название реквизита (Метаданные)
//Тип("ПолеФормы") - тип добавляемого объекта
//Элементы.ГруппаРеквизиты - группа куда добавляем наш реквизит
Поле.ПутьКДанным = "Объект.ТестовыйРеквизит";//Обязательно надо указывать путь к данным, иначе поле не отобразится на форме
Поле.Вид = ВидПоляФормы.ПолеВвода; //Указываем что это поле ввода
//Все свойства созданного элемента "Поле" можно глянуть при отладке, там все как в свойствах
Чтобы вставить нужный нам реквизит перед каким либо уже существующим реквизитом нужно использовать параметр "Вставить()" . Четвертым параметром этого метода и будет являть тот реквизит перед которым мы будем вставлять наш реквизит.
Поле = Элементы.Вставить("ТестовыйРеквизит", Тип("ПолеФормы"),Элементы.ГруппаРеквизиты,Элементы.СтранаПроисхождения);
//Элементы.СтранаПроисхождения - реквизит перед которым вставляем
Поле.ПутьКДанным = "Объект.ТестовыйРеквизит";
Поле.Вид = ВидПоляФормы.ПолеВвода;
Программное добавление поля ввода на форму:
//Программное создание реквизита на форме
Массив = Новый Массив;
Массив.Добавить(Новый РеквизитФормы("Статус", Новый ОписаниеТипов("Строка")));
ИзменитьРеквизиты(Массив); //Изменяем массив содержащий реквизиты формы
//Теперь добавим созданный нам реквизит на форму уже изученным способом программно
Поле = Элементы.Вставить("Статус", Тип("ПолеФормы"),Элементы.ГруппаРеквизиты,Элементы.СтранаПроисхождения);
Поле.ПутьКДанным = "Статус";
Поле.Вид = ВидПоляФормы.ПолеВвода;
Чтобы подключить событие к созданному полю нужно создать процедуру и подключить ее к полю:
*Процедура команды обязательно должна выполняться в директиве компиляции "&НаКлиенте"
НашаКоманда = Команды.Добавить("НашаКоманда");
НашаКоманда.Действие = "НашаКомандаПроцедура"; //Указываем имя процедуры на клиенте
//которую будет вызывать команда
Кнопка = Элементы.Вставить("НашаКоманда", Тип("КнопкаФормы"));
Кнопка.ИмяКоманды = "НашаКоманда";
Кнопка.Вид = ВидКнопкиФормы.ОбычнаяКнопка;
3 комментария:
Последние коррективы: В типовых конфигурациях: Общий модуль - "МодификацияКонфигурацииПереопределяемый" - Обработчик - "ПриСозданииНаСервере";
Пример кода:
Если Форма.ИмяФормы = "Справочник.Номенклатура.Форма.ФормаЭлемента" Тогда
//Добавляем новые реквизиты
НовыеРеквизиты = Новый Массив;
НовыйРеквизит = Новый РеквизитФормы("мзКодМАНоменклатуры", Новый ОписаниеТипов("Число"),, "Код МА Номенклатуры");
НовыйЭлемент = Форма.Элементы.Вставить("мзКодМАНоменклатуры", Тип("ПолеФормы"), Форма.Элементы.ГруппаЗаголовокДополнительныеРеквизиты);
НовыйЭлемент.ПутьКДанным = "Объект.мзКодМАНоменклатуры";
НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода;
КонецЕсли;
Читайте также: