1с добавление группы на форму программно

В данной статье описаны примеры программного создания объектов управляемой формы 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;
СоответствиеИменГруппировок = Новый Соответствие;
Для Каждого ТекЭлемент ИЗ ТаблицаГруппировок Цикл
Если Не ТекЭлемент.Группировка = «» Тогда
НовыйЭлемент = Элементы.Добавить(«ГруппировкаКол» + Формат(Сч, «ЧЦ=3; ЧВН=; ЧГ=»),
Тип(«ГруппаФормы»),Элементы.ТаблицаРедактирования);
НовыйЭлемент.Заголовок = ТекЭлемент.Группировка;
НовыйЭлемент.Вид = ВидГруппыФормы.ГруппаКнопок;
СоответствиеИменГруппировок.Вставить(ТекЭлемент.Группировка, НовыйЭлемент);
Сч = Сч + 1;
КонецЕсли;

// здесь всё отрабатывается правильно, в ТаблицаРедактирования добавляются новые ГруппыКолонок

// Добавляем реквизиты Формы

МассивРеквизитов = Новый Массив;

ТипыРеквизита = Новый Массив;
ТипыРеквизита.Добавить(Тип(«Число»));
ОписаниеТиповДляРеквизита = Новый ОписаниеТипов(«Число», Новый КвалификаторыЧисла(20, 4));

Сч = 1;
Для Каждого ТекНастройка из ТЗНастройкиКолонок Цикл

НовыйРеквизит = Новый РеквизитФормы(«Значение» + Формат(Сч, «ЧЦ=3; ЧВН=; ЧГ=»),
ОписаниеТиповДляРеквизита,
«ТаблицаРедактирования»,
«Значение» + Формат(Сч, «ЧЦ=3; ЧВН=; ЧГ=»),
Истина);

ИзменитьРеквизиты(МассивРеквизитов);
//Данный участок кода также отрабатывается без ошибок

// Добавляем колонки на форму

Для Сч = 1 по ВсегоРасчетов Цикл

НовыйЭлемент = Элементы.Добавить(«ТаблицаРедактированияЗначение» + Формат(Сч, «ЧЦ=3; ЧВН=; ЧГ=»),
Тип(«ПолеФормы»), РодительЭлемента); // на этой строчке система начинает ругаться (Не допустимое значение параметров)

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

НовыйЭлемент = Элементы.Добавить(«ТаблицаРедактированияЗначение» + Формат(Сч, «ЧЦ=3; ЧВН=; ЧГ=»),
Тип(«ПолеФормы»), РодительЭлемента); // на этой строчке система начинает ругаться (Не допустимое значение параметров)

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

Не совсем ясно в чём ошибка: в описании метода Добавить видим что третий параметр может быть
(необязательный)

Тип: ГруппаФормы; ТаблицаФормы; УправляемаяФорма.
Родитель для добавляемого элемента.
Если не указан, то добавляется на верхний уровень.
При этом РодительЭлемента является именно ГруппойФормы, т.е. по типу абсолютно подходит. А в чём ошибке не ясно.

Источник

Программное управление обычными формами документов и справочников в УПП/КА

Часть 1

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

И так, с нимаем с поддержки общий модуль «РаботаСДиалогами».
Находим функцию «АктивизироватьРеквизитВФорме» и сразу после объявления функции добавляем строку вызова нашей процедуры:

Все. Отделались снятием с поддержки двух модуле с добавлением в них двух строк. Обновлять будет легко.

Часть 2

Теперь самое главное.

Добавляем в конфигурацию общий модуль «ИТ_РаботаСДиалогами». В свойствах ставим галочки на использование в клиенте.

ac8055413e0ee137b8f7c748f9088ebb

В модуль помещаем вызываемые функции.

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

Часть 3

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

— Функция добавления поля ввода на форму (одна из ранних наших функций).

— Функция добавления флажка на форму.

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

Код этой функции почти идентичны предыдущим, по этому убран под спойлер.

— Функция добавления надписи на форму.

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

Код убран под спойлер

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

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

— Процедура удаления элемента формы.

Часть 4

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

328b41094311a3f7beb3dc077f9f5b32

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

d64418d23008c4e21ad72281c56afb1e

Еще пример работы с формой справочника.

ffa9855dba6b9759dae85469b8d5d062

Часть 5

Доработки по совместимости и универсальности.

Желательно весь код модуля «ИТ_РаботаСДиалогами» обрамить в клиента

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

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

Такие проверки позволят вам копировать общий модуль «ИТ_РаботаСДиалогами» во все ваши конфигурации УПП/КА и не бояться вызова исключений.

Источник

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Источник

Программное добавление элементов обычных форм

category Программирование системы clock07.06.2018 16:04 eye14546

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

Добавление поля ввода

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

Добавление кнопки обычной формы

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

Добавление надписи обычной формы

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

Для того чтобы добавить сообщение, необходимо Войти или Зарегистрироваться

Источник

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