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

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

Я
   yyyuuu

23.08.18 — 09:49

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

  

Партнерская программа EFSOL Oblako

   RomaH

1 — 23.08.18 — 09:53

то, либо, нибудь — пишутся через дефис

   RomaH

2 — 23.08.18 — 09:54

пожалуйста — выделяется запятыми

   Остап Сулейманович

3 — 23.08.18 — 09:56

(0)

1. Что значит «в строчку»?

2. Что подсказать?

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

   yyyuuu

4 — 23.08.18 — 10:01

(1) Я оставлю ваш комментраий без внимания)

(2) Прошу прощения, чтото совсем не обратил внимания.

(3) Вот смотрите, есть Таблица Значений. В ней 14 реквизитов.

Хочу их, даже вот так хочу. Хочу вывести их списком и чтобы рядом была радио кнопка у каждого.

   Малыш Джон

5 — 23.08.18 — 10:03

(4) ты задаешь вопрос, который рассматривается в любой книжке для начинающих. Чего ты ждешь? Что сюда скопируют кусочек текста оттуда?

   hhhh

6 — 23.08.18 — 10:04

(4) зачем для типа булево радиокнопка? может достаточно флажок?

   Остап Сулейманович

7 — 23.08.18 — 10:04

(4) Радио-кнопка не будет. Тут вам не здесь.

1с считает, что булево в табличном документе должно представляться флажком.

   RomaH

8 — 23.08.18 — 10:05

радио кнопка — это кнопка как у радио — я так понимаю ты таких не застал

это такие кнопки — при нажатии на одну — все остальные отжимались

   Остап Сулейманович

9 — 23.08.18 — 10:06

(6) Это как на гугловском андроиде. Там булево представляется переключателем о двух положениях «вкл./выкл.»

   RomaH

10 — 23.08.18 — 10:06

   yyyuuu

11 — 23.08.18 — 10:07

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

    Реквизиты1.Добавить(Новый РеквизитФормы(«Наименование1», Новый ОписаниеТипов(«СписокЗначений»)));

    Реквизиты1.Добавить(Новый РеквизитФормы(«Наименование»,Тип(«Булево»), «Наименование1»));

Так не выходит

(4) Дайте пожалуйста ссылку, Я буду очень рад почитать. И разобраться.

(7) Спасибо, теперь Я буду знать.

(8) Возможно да, Я ошибся.

   yyyuuu

12 — 23.08.18 — 10:09

(10) Спасибо вам). Тогда не радио — кнопка). А Флажок Истиналожь

   yyyuuu

13 — 23.08.18 — 10:09

(6) Я перепутал, Да, именно нужен флажок

   Остап Сулейманович

14 — 23.08.18 — 10:09

(10) Для одиночного реквизита на форму можно вывести элемент вида «Поле переключателя» с Реквизитом «ВидПереключателя» = «Тумблер». И будет оно.

   Малыш Джон

15 — 23.08.18 — 10:10

   yyyuuu

16 — 23.08.18 — 10:11

(15) Ну не смешно ведь). Вы думаете Я в гугле не искал прежде чем написать на форум(

   hhhh

17 — 23.08.18 — 10:14

(16) ну просто бросаешь эти реквизиты на форму, в свойствах указываешь тип «Флажок». Всё. Потом радуешься. Зачем строишь из себя начинающего, мы всё равно не поверим.

   Малыш Джон

18 — 23.08.18 — 10:15

(16) :) то есть это так и происходило? ты набрал в гугле, увидел, что вылезло много ссылок, читать лень, полезу-ка я лучше на форум спрошу, пусть мне разжуют?

   hhhh

19 — 23.08.18 — 10:16

(11) зачем кодом создавать реквизиты? вот вам обязательно надо через задний проход всё делать.

   yyyuuu

20 — 23.08.18 — 10:17

(18) Да нет же, читал искал. Толком не нашел ничего нормального, чтобы подходило.

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

Может кто что то подобное применял, хотябы на мысль навести.

   Остап Сулейманович

21 — 23.08.18 — 10:20

   Остап Сулейманович

22 — 23.08.18 — 10:24

(20) В такой постановке «динамически создавались, в момент чтения ТаблицыЗначений»

1. Перед чтением нужно в ТаблицуЗначений добавить колонку с типом булево.

2. В коллекцию элементов формы добавить элемент вида «Поле флажка»

3. Связать элемент с реквизитом.

4. Обновить состав элементов управления формы.

ЗЫ. Намного проще добавить колонку в конфигураторе и потом кодом рулить ее видимостью.

   yyyuuu

23 — 23.08.18 — 10:25

(21) Так то Я тоже создать могу). А можно это сделать скажим используя только код. Создать все это из кода, количество значений иногда может быть разным. И придется добавлять новые элементы, а этого бы не хотелось

   yyyuuu

24 — 23.08.18 — 10:26

(22)Ы. Намного проще добавить колонку в конфигураторе и потом кодом рулить ее видимостью.

Полность согласен, но если будет меняться количество элементов, мне придется добовлять или убирать какие то поля

   Остап Сулейманович

25 — 23.08.18 — 10:30

(24) Читай здесь : https://helpme1c.ru/tablica-znachenij-v-yazyke-1s-8-v-primerax

Показать на форме — Процедура ВывестиТаблицуЗначенияВКодеВТаблицуНаФорме

Модификацию собственно ТаблицыЗначений думаю осилишь.

   yyyuuu

26 — 24.08.18 — 15:43

Ребята Сделал, вопрос. Как обратится к этим элементам динамически созданным. Вот создал Я его. А как считать данные при изменение, поставил Я там галочку или нет. Кто нибудь знает?

   Вафель

27 — 24.08.18 — 15:48

(26) установить действие

   yyyuuu

28 — 24.08.18 — 16:11

(27) Не совсем понял, можно по подробнее пожалуйста

   Вафель

29 — 24.08.18 — 16:19

(28) Метод элмента формы УстановитьДействие

   FIXXXL

30 — 24.08.18 — 16:23

(28) когда элемент кодом создаешь, надо ему и действие присвоить

   yyyuuu

31 — 24.08.18 — 16:40

(29)

(30)

Вроде бы понял. Но тут смотрите ребята

    Для Каждого Ст Из Таблица.Колонки Цикл

        //

        Имя = Ст.Имя ;

        Если ЭтаФорма.Имя = Истина Тогда

            Сообщить(Ст.Имя + » = Истина!»);

        КонецЕсли;

        //

    КонецЦикла;

Если так пытаюсь найти, ничего ошибка элемента.

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

   yyyuuu

32 — 24.08.18 — 17:07

Извините ребят, под вечер голова не соображает сообщение (31) не относится к теме

  

yyyuuu

33 — 24.08.18 — 17:16

Разобрался)

Файлы материала
Описание

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

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

Для примера, стоит задача в конфигурации ЗУП 3.1 добавить реквизит «Способ отражения зарплаты в БУ» для позиции штатного расписания в группе “Дополнительные данные”.

Способ отражение в позиции штатного расписания

Создадим расширение и выполним следующую последовательность действий:

  1. Добавим в расширение справочник “Штатное расписание” и создадим реквизит “АВ_СпособОтражения” с типом данных “СправочникСсылка.СпособыОтраженияЗарплатыВБухУчете”

добавление реквизита АВ_СпособОтражения в расширение

2. Заберем в расширение процедуру “ПриСозданииНаСервере” из общего модуля “УправлениеСвойствами”, программно добавим поле в форму и свяжем его с реквизитом объекта добавленного на первом шаге.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

&После(«ПриСозданииНаСервере»)

Процедура АВ_ПриСозданииНаСервере(Форма, ДополнительныеПараметры)

Если Форма.ИмяФормы = «Справочник.ШтатноеРасписание.Форма.ФормаЭлемента» Тогда

#Область ДобавлениеЭлементовФормы

ИмяГруппы = «ГруппаДополнительныеРеквизиты»;

ГруппаФормы = Форма.Элементы.Найти(ИмяГруппы);

Если ГруппаФормы <> Неопределено Тогда

ИмяЭлемента = «АВ_СпособОтражения»;

Если Форма.Элементы.Найти(ИмяЭлемента) = Неопределено Тогда

ЭлементФормы = Форма.Элементы.Добавить(ИмяЭлемента, Тип(«ПолеФормы»), ГруппаФормы);

//Вместо Добавить() можно использовать метод Вставить()

//в 4-й параметре указывается Элемент перед которым должен быть вставлен новый элемент.

//ЭлементФормы = Форма.Элементы.Вставить(ИмяЭлемента, Тип(«ПолеФормы»), ГруппаФормы, Форма.Элементы.Найти(«ИмяСледующегоЭлементаФормы»));

ЭлементФормы.Вид = ВидПоляФормы.ПолеВвода;

ЭлементФормы.ПутьКДанным = «Объект.АВ_СпособОтражения»;

//ЭлементФормы.МногострочныйРежим = Истина;

//ЭлементФормы.Высота = 3;

КонецЕсли;

КонецЕсли;

#КонецОбласти

КонецЕсли;

КонецПроцедуры

Образец расширения для скачивания в начале описания.

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

Например, таким же способом, добавим в табличную часть “Рабочие места” реквизит “Спецжиры” с типом “Булево”.

Результат спецоценки условий труда с  колонкой спецжиры

Добавление реквизита в табличную часть

&После(«ПриСозданииНаСервере»)

Процедура АВ_ПриСозданииНаСервере(Форма, ДополнительныеПараметры)

Если Форма.ИмяФормы = «Документ.РезультатыСпецоценкиУсловийТруда.Форма.ФормаДокумента» Тогда

#Область ДобавлениеЭлементовФормы

ИмяЭлемента = «АВ_ЕстьСпецжиры»;

Если Форма.Элементы.Найти(ИмяЭлемента) = Неопределено Тогда

ЭлементФормы = Форма.Элементы.Добавить(«Спецжиры», Тип(«ПолеФормы»), Форма.Элементы.РабочиеМеста);        

ЭлементФормы.Вид = ВидПоляФормы.ПолеФлажка;

ЭлементФормы.ПутьКДанным = «Объект.РабочиеМеста.АВ_ЕстьСпецжиры»;

//ЭлементФормы.ТолькоПросмотр = Истина;

КонецЕсли;

#КонецОбласти

КонецЕсли;

КонецПроцедуры

В результате получим табличную часть с новой колонкой.

Программное добавление табличной части на форму

Аналогично добавим табличную часть “АВ_ВредныеФакторы” на форму справочника “Профессии”.

Табличная часть добавленная через расширение

Добавление табличной части на форму

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

&После(«ПриСозданииНаСервере»)

Процедура АВ_ПриСозданииНаСервере(Форма, ДополнительныеПараметры)

Если Форма.ИмяФормы = «Справочник.ПрофессииРабочих.Форма.ФормаЭлемента» Тогда

#Область ДобавлениеЭлементовФормы

ИмяГруппы = «ГруппаДополнительныеРеквизиты»;

ГруппаФормы = Форма.Элементы.Найти(ИмяГруппы);

Если ГруппаФормы <> Неопределено Тогда

ИмяЭлемента = «АВ_ВредныеФакторы»;

Если Форма.Элементы.Найти(ИмяЭлемента) = Неопределено Тогда   

ЭлементФормыТаблица = Форма.Элементы.Добавить(ИмяЭлемента, Тип(«ТаблицаФормы»), ГруппаФормы);  

ЭлементФормыТаблица.ПутьКДанным = «Объект.АВ_ВредныеФакторы»;

ЭлементФормы = Форма.Элементы.Добавить(«ВредныйФактор», Тип(«ПолеФормы»), ЭлементФормыТаблица);

ЭлементФормы.Вид = ВидПоляФормы.ПолеВвода;

ЭлементФормы.ПутьКДанным = «Объект.АВ_ВредныеФакторы.ВредныйФактор»;    

КонецЕсли;

КонецЕсли;

#КонецОбласти

КонецЕсли;

КонецПроцедуры

Связь реквизитов формы с элементами формы

Кроме того, реквизиты формы можно создавать программно и связывать их с элементами формы

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

#Область ДобавлениеРеквизитовФормы

// Массив для новых реквизитов

ДобавляемыеРеквизиты = Новый Массив;

// Опишем ревизиты формы

Реквизит_РабочееМесто = Новый РеквизитФормы(«АВ_РабочееМесто», Новый ОписаниеТипов(«СправочникСсылка.РабочиеМестаОхраныТруда»), , «Рабочее место»);

// Заполним массив после описания реквизитов формы

ДобавляемыеРеквизиты.Добавить(Реквизит_РабочееМесто);

// Добавим новые реквизиты в форму

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

#КонецОбласти

#Область ДобавлениеЭлементовФормы

...

#КонецОбласти

#Область ЗаполнениеДанных

Форма.АВ_РабочееМесто = Форма.Объект.АВ_РабочееМесто;

#КонецОбласти


Расширения, Типовые приемы, Шаблоны и заготовки

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

Содержание

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

Как в 1С программно добавить элемент формы?

Вывести существующий реквизит

&НаСервере
Процедура ДобавитьПолеВводаНаСервере()	
	// Проверка нужна, чтобы избежать ошибки при попытке создания элемента с одним и тем же именем несколько раз
	Если Элементы.Найти("НашНужныйЭлемент") = Неопределено Тогда
		// Вначале просто добавляем элемент в коллекцию Элементы
		НовыйЭлемент = Элементы.Добавить("НашНужныйЭлемент", Тип("ПолеФормы"));		
		//Затем донастраиваем его и указываем нужные свойства
		НовыйЭлемент.ПутьКДанным = "Объект.НашНужныйРеквизит";
		НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода;
		НовыйЭлемент.Заголовок = "Программно добавленное поле ввода";
	КонецЕсли;	
КонецПроцедуры

&НаКлиенте
Процедура ДобавитьПолеВвода(Команда)
	ДобавитьПолеВводаНаСервере();
КонецПроцедуры

Создать новый реквизит формы

&НаСервере
Процедура ДобавитьРеквизитФлажокНаСервере()
	
	Если Элементы.Найти("НужныйФлажок") = Неопределено Тогда
		НовыеРеквизиты = Новый Массив;
		//Обратите внимание, типизация реквизитов использует именно Описание типов, а не отдельный тип.
		ТипРеквизита = Новый ОписаниеТипов("Булево");
		РеквизитФлажок = Новый РеквизитФормы("НужныйФлажок", ТипРеквизита, "", "Нужный флажок");
		НовыеРеквизиты.Добавить(РеквизитФлажок);		
		ИзменитьРеквизиты(НовыеРеквизиты);		
		НовыйЭлемент = Элементы.Добавить("НужныйФлажок", Тип("ПолеФормы"));
		НовыйЭлемент.ПутьКДанным = "НужныйФлажок";
		НовыйЭлемент.Вид = ВидПоляФормы.ПолеФлажка;
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ДобавитьРеквизитФлажок(Команда)
	ДобавитьРеквизитФлажокНаСервере();
КонецПроцедуры

Вставить элемент формы в нужное место

&НаСервере
Процедура ВставитьКартинкуПередФлажкомНаСервере()
	Если Элементы.Найти("ВставленнаяКартинка") = Неопределено Тогда
		СледующийЭлемент = Элементы.Найти("НужныйФлажок");
		// Если флажок найден - вставим элемент перед ним, если нет - добавим в конец
		// Заодно рассмотрим как добавить программно декорацию-картинку на форму
		ЭлементКартинка = Элементы.Вставить("ВставленнаяКартинка", Тип("ДекорацияФормы"),,СледующийЭлемент);
		ЭлементКартинка.Вид = ВидДекорацииФормы.Картинка;
		// Обратите внимание, картинка в этом случае может быть либо Пустая, либо ИзБиблиотеки
		ЭлементКартинка.Картинка = БиблиотекаКартинок.Реквизит;
	КонецЕсли;	
КонецПроцедуры

&НаКлиенте
Процедура ВставитьКартинкуПередФлажком(Команда)
	ВставитьКартинкуПередФлажкомНаСервере();
КонецПроцедуры

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

&НаСервере
Процедура ДобавитьПрограммноКомандуНаСервере()
	Если Элементы.Найти("КнопкаПредупредить") = Неопределено Тогда
		//Добавим команду в коллекцию команд
		КомандаПредупредить = Команды.Добавить("Предупредить");
		КомандаПредупредить.Заголовок = "Предупредить!";
		КомандаПредупредить.Действие = "КомандаПредупредить";
		
		КнопкаКоманды = Элементы.Добавить("КнопкаПредупредить", Тип("КнопкаФормы"));
		КнопкаКоманды.ИмяКоманды = "Предупредить";
		// Если помещаем просто на форму, то вид - обычная кнопка
		// Если укажем контейнер с типом Командная панель, то вид - КнопкаКоманднойПанели
		КнопкаКоманды.Вид = ВидКнопкиФормы.ОбычнаяКнопка;
	КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура ДобавитьПрограммноКоманду(Команда)
	ДобавитьПрограммноКомандуНаСервере();
КонецПроцедуры

&НаКлиенте
Процедура КомандаПредупредить(Команда)
	ПоказатьПредупреждение(, "А ведь я предупреждал!");
КонецПроцедуры

Как добавить таблицу на форму программно?

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

&НаСервере
Процедура СоздатьТаблицуЗначенийНаСервере()
	
	Если Элементы.Найти("ДинамическаяТаблицаЭлемент") <> Неопределено Тогда
		Возврат;
	КонецЕсли;
	
	НовыеРеквизиты = Новый Массив;
	
	ТипРеквизита = Новый ОписаниеТипов("ТаблицаЗначений");
	РеквизитТЗ = Новый РеквизитФормы("ДинамическаяТаблица", ТипРеквизита, "", "Динамическая таблица");
	
	НовыеРеквизиты.Добавить(РеквизитТЗ);
	
	ТЗ = Новый ТаблицаЗначений;
	ТЗ.Колонки.Добавить("Отметка", Новый ОписаниеТипов("Булево"));
	ТЗ.Колонки.Добавить("Дата", Новый ОписаниеТипов("Дата"));
	ТЗ.Колонки.Добавить("Комментарий", Новый ОписаниеТипов("Строка"));
	
	Для Каждого КолонкаТаблицы Из ТЗ.Колонки Цикл
		НовыеРеквизиты.Добавить(Новый РеквизитФормы(КолонкаТаблицы.Имя, КолонкаТаблицы.ТипЗначения, "ДинамическаяТаблица"));
	КонецЦикла;	
	ИзменитьРеквизиты(НовыеРеквизиты);
	
	ЭлементТаблица = Элементы.Добавить("ДинамическаяТаблицаЭлемент", Тип("ТаблицаФормы"));
	ЭлементТаблица.ПутьКДанным = "ДинамическаяТаблица";
	ЭлементТаблица.Отображение = ОтображениеТаблицы.Список;
	
	Для Каждого КолонкаТаблицы Из ТЗ.Колонки Цикл
		ЭлементКолонкаТаблицы = Элементы.Добавить(КолонкаТаблицы.Имя, Тип("ПолеФормы"), ЭлементТаблица);
		Если КолонкаТаблицы.ТипЗначения.СодержитТип(Тип("Булево")) Тогда
			ЭлементКолонкаТаблицы.Вид = ВидПоляФормы.ПолеФлажка;
		Иначе
			ЭлементКолонкаТаблицы.Вид = ВидПоляФормы.ПолеВвода;
		КонецЕсли;
		ЭлементКолонкаТаблицы.ПутьКДанным = "ДинамическаяТаблица." + КолонкаТаблицы.Имя;
	КонецЦикла;	

КонецПроцедуры

&НаКлиенте
Процедура СоздатьТаблицуЗначений(Команда)
	СоздатьТаблицуЗначенийНаСервере();
КонецПроцедуры

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

&НаСервере
Процедура ДобавитьОбработчикДействияНаСервере()
	// Если таблицу еще не создали, ничего не делаем
	Если Элементы.Найти("ДинамическаяТаблицаЭлемент") = Неопределено Тогда
		Возврат;
	КонецЕсли;	
	Элементы.ДинамическаяТаблицаЭлемент.УстановитьДействие("ПриИзменении", "ПриИзмененииТаблицы");	
КонецПроцедуры

&НаКлиенте
Процедура ДобавитьОбработчикДействия(Команда)
	ДобавитьОбработчикДействияНаСервере();
КонецПроцедуры

// Количество и порядок параметров метода-обработчика должны соответствовать событию
// Подробнее см. синтакс-помощник
&НаКлиенте
Процедура ПриИзмененииТаблицы(Элемент)
	Сообщить("Изменили колонку " + Элемент.ТекущийЭлемент.Имя); 	
КонецПроцедуры

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

Для добавления реквизитов удобно либо создать процедуру и вызывать ее из обработчика ПриСозданииНаСервере, либо использовать специальный общий модуль РаботаСФормамиПереопределяемый.

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

&НаСервере
Процедура ДополнитьЭлементыФормы()

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

     РеквизитОткрытаИзОбработкиЛаборатории = Новый РеквизитФормы("ОткрытаИзОбработкиЛаборатории", Новый ОписаниеТипов("Булево"));
     РеквизитРезультат = Новый РеквизитФормы("РезультатАнализа", Новый ОписаниеТипов("Строка"));

     МассивРеквизитов.Добавить(РеквизитОткрытаИзОбработкиЛаборатории);
     МассивРеквизитов.Добавить(РеквизитРезультат);

     ИзменитьРеквизиты(МассивРеквизитов);

КонецПроцедуры

Пример добавления кнопок и элементов на форму:

&НаСервере
Процедура ДополнитьЭлементыФормы()

    НоваяКоманда = ЭтаФорма.Команды.Добавить("ЗагрузкаДанных");
    НоваяКоманда.Действие = "ЗагрузкаДанных";

    НовыйЭлемент = Элементы.Добавить("ЗагрузитьДанные", Тип("КнопкаФормы"), Элементы.РезультатКОбработкеКоманднаяПанель);
    НовыйЭлемент.ИмяКоманды = "ЗагрузкаДанных";
    НовыйЭлемент.Заголовок = "Загрузка данных";

КонецПроцедуры

&НаКлиенте
Процедура ЗагрузкаДанных(Команда)

КонецПроцедуры

Пример указания процедуры-обработчика для событий формы:

&НаСервере
Процедура ДополнитьЭлементыФормы()

    УстановитьДействие("ОбработкаОповещения", "ОбработкаОповещенияФормы");

КонецПроцедуры

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

&НаСервере 
Процедура ДополнитьЭлементыФормы()
    ЭлементНазначениеЗаявки = Элементы.Вставить("НазначениеЗаявки", Тип("ПолеФормы"), Элементы.ГруппаЛево, Элементы.ГруппаОрганизация);
    ЭлементНазначениеЗаявки.ПутьКДанным = "Объект.НазначениеЗаявки";
    ЭлементНазначениеЗаявки.Вид = ВидПоляФормы.ПолеПереключателя;
    ЭлементНазначениеЗаявки.Заголовок = "Тип заявки на";
    ЭлементНазначениеЗаявки.УстановитьДействие("ПриИзменении", "ИзменениеНазначенияЗаявки");
КонецПроцедуры

&НаКлиенте
Процедура ИзменениеНазначенияЗаявки(Элемент)
     //Обработчик команды
КонецПроцедуры

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

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

//Добавляем три реквизита формы
МассивРеквизитов.Добавить(Новый РеквизитФормы("ОтображатьСвязи", Новый ОписаниеТипов("Булево")));
МассивРеквизитов.Добавить(Новый РеквизитФормы("ОтображатьРабочуюГруппу", Новый ОписаниеТипов("Булево")));
МассивРеквизитов.Добавить(Новый РеквизитФормы("ОтображатьВизы", Новый ОписаниеТипов("Булево")));

//Добавление реквизита в табличную часть "Файлы"
МассивРеквизитов.Добавить(Новый РеквизитФормы("Актуальность", Новый ОписаниеТипов("Булево"), "Файлы", "Актуальность", Истина));

ИзменитьРеквизиты(МассивРеквизитов);

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

Contents

  • 1 Введение в управляемая форма 1С реквизиты элементы команды
  • 2 Программное переопределение обработчиков событий формы и элементов формы
  • 3 Программное создание групп формы.
  • 4 Программное добавление команды на форму.
  • 5 Программное создание декораций форм.
  • 6 Программное добавление реквизита на форму.
  • 7 Вывод реквизитов на форму.
  • 8 Вызов процедур при создании на сервере 1С
  • 9 Некоторые советы при программном редактировании формы
  • 10 Полезные ссылки

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

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

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

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

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

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    ЭтаФорма.УстановитьДействие(“ОбработкаВыбора”, “пр_ОбработкаВыбора”)
КонецПроцедуры

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

#Если Сервер Тогда
    ЭтаФорма.УстановитьДействие("ПриСозданииНаСервере", "пр_ПриСозданииНаСервере");
#КонецЕсли

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

&НаСервере
Процедура пр_ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    ПриСозданииНаСервере(Отказ, СтандартнаяОбработка);
КонецПроцедуры

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

Элементы.Номенклатура.УстановитьДействие(“ПриИзменении”, “пр_НоменклатураПриИзменении”)

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

&НаСервере
Процедура пр_СоздатьГруппы()
    
    ГруппаСтраницы =  Элементы.Добавить("пр_Страницы", Тип("ГруппаФормы"),ЭтаФорма);
    ГруппаСтраницы.Вид = ВидГруппыФормы.Страницы;
    
    НоваяСтраница = Элементы.Добавить("пр_Страница", Тип("ГруппаФормы"),ГруппаСтраницы);
    НоваяСтраница.Вид = ВидГруппыФормы.Страница;
    НоваяСтраница.Заголовок = "Страница 1";
    
    НоваяГруппа = Элементы.Добавить("пр_Группа1", Тип("ГруппаФормы"),НоваяСтраница);
    НоваяГруппа.Вид = ВидГруппыФормы.ОбычнаяГруппа;
    НоваяГруппа.Группировка = ГруппировкаПодчиненныхЭлементовФормы.ГоризонтальнаяЕслиВозможно;
    НоваяГруппа.Заголовок = "Группа 1";
    
КонецПроцедуры

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

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

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

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

    //удалить команду
    //Команды.Удалить(НоваяКоманда);
    
КонецПроцедуры

&НаКлиенте
Процедура пр_Команда1(Команда)
    
    Сообщить("Команда выполнена.");
    
КонецПроцедуры

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

&НаСервере
Процедура пр_СоздатьДекорацию()
    
    //добавить надпись
    Элемент    			 = Элементы.Добавить("Надпись1", Тип("ДекорацияФормы"), Элементы["пр_Группа1"]);
    Элемент.Вид    		 = ВидДекорацииФормы.Надпись;
    Элемент.Заголовок    	 = "Добавленная надпись";
 
    //для того, чтобы добавить картинку, необходимо выбрать ВидДекорацииФормы.Картинка
    Элемент = Элементы.Добавить("Картинка1", Тип("ДекорацияФормы"), Элементы["пр_Группа1"]);
    Элемент.Вид = ВидДекорацииФормы.Картинка;
    Элемент.Картинка = БиблиотекаКартинок.Бесконечность;  
  
КонецПроцедуры

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

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

&НаСервере
Процедура пр_СоздатьРеквизиты()
    
	// Массив для новых реквизитов
	ДобавляемыеРеквизиты    = Новый Массив;
   	 
	// Опишем ревизиты формы
	Реквизит_Использование = Новый РеквизитФормы("пр_Использование",    Новый ОписаниеТипов("Булево"), "", "Использование");
	Реквизит_Номенклатура = Новый РеквизитФормы("пр_Номенклатура",    Новый ОписаниеТипов("СправочникСсылка.Номенклатура"), "", "Номенклатура");
	Реквизит_Характеристика = Новый РеквизитФормы("пр_Характеристика",    Новый ОписаниеТипов("СправочникСсылка.ХарактеристикиНоменклатуры"), "", "Характеристика");
  	 Реквизит_Количество = Новый РеквизитФормы("пр_Количество",    Новый ОписаниеТипов("Число", , , Новый КвалификаторыЧисла(10, 3)), "", "Количество");
  	 Реквизит_УдалитьКоличество = Новый РеквизитФормы("пр_УдалитьКоличество",    Новый ОписаниеТипов("Число", , , Новый КвалификаторыЧисла(10, 3)), "", "Удалить_Количество");
       //если используется БСП, то можно для определения описания типов использовать функцию
       //ОбщегоНазначения.ОписаниеТипаСтрока(ДлинаСтроки)
       //ОбщегоНазначения.ОписаниеТипаЧисло(Разрядность, РазрядностьДробнойЧасти = 0, ЗнакЧисла = Неопределено)
       //ОбщегоНазначения.ОписаниеТипаДата(ЧастиДаты)
  	 Реквизит_Информация = Новый РеквизитФормы("пр_Информация",    ОбщегоНазначения.ОписаниеТипаСтрока(100), "", "Информация");
    
       // Для наглядности заполним массив после описания реквизитов формы
	ДобавляемыеРеквизиты.Добавить(Реквизит_Использование);
	ДобавляемыеРеквизиты.Добавить(Реквизит_Номенклатура);
	ДобавляемыеРеквизиты.Добавить(Реквизит_Характеристика);
	ДобавляемыеРеквизиты.Добавить(Реквизит_Количество);
	ДобавляемыеРеквизиты.Добавить(Реквизит_УдалитьКоличество);
	ДобавляемыеРеквизиты.Добавить(Реквизит_Информация);
    
	// Добавим новые реквизиты в форму
	ИзменитьРеквизиты(ДобавляемыеРеквизиты);
   	 
КонецПроцедуры

&НаСервере
Процедура пр_УдалитьРеквизиты()
    
	// Массив для удаляемых реквизитов
	УдаляемыеРеквизиты    = Новый Массив;
    
    //указываем путь к удаляемому реквизиту
	УдаляемыеРеквизиты.Добавить("пр_УдалитьКоличество");
    //К добавленным реквизитам нужно обращаться через переменную ЭтаФорма
    
	// Добавим новые реквизиты в форму
	ИзменитьРеквизиты(,УдаляемыеРеквизиты);
   	 
КонецПроцедуры

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

&НаСервере
Процедура пр_ВывестиРеквизитыНаФорму()
    
    НовыйЭлемент = Элементы.Добавить("пр_Использование", Тип("ПолеФормы"), Элементы.пр_Страница1);
	НовыйЭлемент.ПутьКДанным              	= "пр_Использование";
	НовыйЭлемент.Вид                      	= ВидПоляФормы.ПолеФлажка;
    НовыйЭлемент.ПоложениеЗаголовка    	   = ПоложениеЗаголовкаЭлементаФормы.Право;
    //установим обработчик события элементы
    НовыйЭлемент.УстановитьДействие("ПриИзменении", "пр_ИспользованиеПриИзменении");
    
    НовыйЭлемент = Элементы.Добавить("пр_Номенклатура", Тип("ПолеФормы"), Элементы.пр_Страница1);
	НовыйЭлемент.ПутьКДанным              	= "пр_Номенклатура";
	НовыйЭлемент.Вид                      	= ВидПоляФормы.ПолеВвода;
    //установить параметр выбора элемента
    НовыйМассив = Новый Массив();
    НовыйПараметр = Новый ПараметрВыбора("Отбор.ПометкаУдаления", Ложь);
    НовыйМассив.Добавить(НовыйПараметр);
    НовыеПараметры = Новый ФиксированныйМассив(НовыйМассив);
	НовыйЭлемент.ПараметрыВыбора = НовыеПараметры;
    НовыйЭлемент.УстановитьДействие("ПриИзменении", "пр_НоменклатураПриИзменении");

    НовыйЭлемент = Элементы.Добавить("пр_Характеристика", Тип("ПолеФормы"), Элементы.пр_Страница1);
	НовыйЭлемент.ПутьКДанным              	= "пр_Характеристика";
	НовыйЭлемент.Вид                      	= ВидПоляФормы.ПолеВвода;
	НовыйЭлемент.Заголовок                	= "Характеристика номенклатуры";
    //добавить связь параметров выбора по реквизиту владелец в зависимости от выбранной номенклатуры
    НоваяСвязь = Новый СвязьПараметраВыбора("Отбор.Владелец", "пр_Номенклатура");
    НовыйМассив = Новый Массив();
    НовыйМассив.Добавить(НоваяСвязь);
	НовыйЭлемент.СвязиПараметровВыбора = Новый ФиксированныйМассив(НовыйМассив);    
    НовыйЭлемент.УстановитьДействие("ПриИзменении", "пр_ХарактеристикаПриИзменении");
    
    НовыйЭлемент = Элементы.Добавить("пр_Количество", Тип("ПолеФормы"), Элементы.пр_Страница1);
	НовыйЭлемент.ПутьКДанным              	= "пр_Количество";
	НовыйЭлемент.Вид                      	= ВидПоляФормы.ПолеВвода;
    //установить формат
	НовыйЭлемент.ФорматРедактирования   	   = "ЧДЦ=0; ЧРГ=.; ЧН=Отсутствует";
    
    НовыйЭлемент = Элементы.Добавить("пр_Информация", Тип("ПолеФормы"), Элементы.пр_Страница1);
	НовыйЭлемент.ПутьКДанным              	= "пр_Информация";
	НовыйЭлемент.Вид                      	= ВидПоляФормы.ПолеВвода;
    //установить список выбора
    НовыйЭлемент.РежимВыбораИзСписка    	   = Истина;
    Массив = Новый Массив;
    Массив.Добавить("Необходимо дозаказать");    
    Массив.Добавить("Достаточно");    
    Массив.Добавить("Оформить полный заказ");    
    НовыйЭлемент.СписокВыбора.ЗагрузитьЗначения(Массив);
    
КонецПроцедуры

&НаКлиенте
Процедура пр_ИспользованиеПриИзменении(Элемент)
КонецПроцедуры

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

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

&НаСервере

&НаСервере
Процедура пр_ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	//установим заголовок формы 
	ЭтаФорма.Заголовок 		= "Шаблон для программной работы с реквизитами, командами и элементами формы";
	ЭтаФорма.АвтоЗаголовок 	= Ложь;
	
	пр_СоздатьГруппы();
	пр_СоздатьНовуюКоманду();
	пр_СоздатьДекорацию();
	пр_СоздатьРеквизиты();
	пр_УдалитьРеквизиты();
	пр_ВывестиРеквизитыНаФорму();
	
КонецПроцедуры

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

  • Если вы не используете префиксы при создании новых команд и элементов рекомендуется проверять существование создаваемых объектов по имени с помощью метода Найти(), который вернет Неопределено, если объект в коллекции не найден:
    • Элементы.Найти(«пр_Владелец»);
    • Команды.Найти(«пр_НоваяКоманда»);
  • Чтобы проверить уникальность реквизита на форме можно воспользоваться следующей функцией:
&НаКлиентеНаСервереБезКонтекста
// Функция определяет существует ли реквизит у объекта.
//
Функция ЕстьРеквизитОбъекта(мОбъект, ИмяРеквизита)
    
    КлючУникальности   = Новый УникальныйИдентификатор;
    СтруктураРеквизита = Новый Структура(ИмяРеквизита, КлючУникальности);
    ЗаполнитьЗначенияСвойств(СтруктураРеквизита, мОбъект);
    Возврат СтруктураРеквизита[ИмяРеквизита] <> КлючУникальности;
    
КонецФункции // ЕстьРеквизитОбъекта()
  • Свойства, методы и коллекции управляемой формы описаны в синтакс-помощнике в разделе «Интерфейс (управляемый)»;
  • Изучите БСП, если она имеется в вашей конфигурации. Например в общем модуле «ОбщегоНазначения» уже описаны функции для создания объекта ОписаниеТипов, необходимого при создании новых реквизитов на форме:
    • ОбщегоНазначения.ОписаниеТипаСтрока(ДлинаСтроки) — Создает объект ОписаниеТипов, содержащий тип Строка;
    • ОбщегоНазначения.ОписаниеТипаЧисло(Разрядность, РазрядностьДробнойЧасти = 0, ЗнакЧисла = Неопределено) — Создает объект ОписаниеТипов, содержащий тип Число;
    • ОбщегоНазначения.ОписаниеТипаДата(ЧастиДаты) — Создает объект ОписаниеТипов, содержащий тип Дата;
    • ОбщегоНазначенияВызовСервера.ЦветСтиля(ИмяЦветаСтиля) — Функция получает цвет стиля по имени элемента стиля;
    • ОбщегоНазначенияВызовСервера.ШрифтСтиля(ИмяШрифтаСтиля) — Функция получает шрифт стиля по имени элемента стиля.

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

Полезные ссылки

1. Типовой механизм упрощенного изменения конфигурации в ERP 2.0 и УТ 11
2. Типовой функционал модификации конфигурации линейки ERP-решений (УТ 11, КА 2 и ERP 2)
3. 1С Управляемые Формы. Программное создание таблицы значений и динамического списка (Часть 2)

[Практика программирования] Управляемые формы 1С 8: как программно добавить поле флажка в форму объекта и форму списка

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

Общее условие, что все элементы формы программно добавляются на стороне сервера, а не на клиенте, как можно решить изначально, учитывая архитектуру платформы 1С: Предприятие 8.2 и 8.3. Да, «&НаСервере» и преимущественно в процедуре «ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)» формы документа или элемента справочника или формы списка.

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

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

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

По старой привычке, но уже понимая разницу типов можно по ошибке указать Тип(«ПолеФлажкаФормы») второго параметра метода, но это будет неправильно и вызовет ошибку:

Нажатие на изображении увеличит его
1C 8, управляемые формы, УФ, как программно добавить флажок на форму

Недопустимое значение параметров
{ЗаказКлиента.Форма.ФормаДокумента.Форма(16)}: ФлажокДеньгиПолучены = Элементы.Добавить(«_ДеньгиПолучены», Тип(«ПолеФлажкаФормы»), ГруппаСтатусПриоритет);
по причине:
Недопустимое значение параметров

Поэтому надо учесть, что во второй параметр помещается «Тип(«ПолеФормы»)». А потом определяется «Вид» — «ВидПоляФормы.ПолеФлажка». Не забыть связать флажок с реквизитом объекта конфигурации через свойство «ПутьКДанным».

1 | ФлажокДеньгиПолучены = Элементы.Добавить(«_ДеньгиПолучены», Тип(«ПолеФормы»), ГруппаСтатусПриоритет);
2 | ФлажокДеньгиПолучены.Вид = ВидПоляФормы.ПолеФлажка;
3 | ФлажокДеньгиПолучены.ПутьКДанным = «Объект.ДопМФ_ДеньгиПолучены»;

Так же справочно добавлю код по тому, как программно разместить на управляемой форме колонку с флажком в табличной части формы. Где «Таблицаформы» — табличная часть, в которую добавляется программно новая колонка. Для колонки исходно тип определяется как «ПолеФормы», потом через свойство вид определяется «ПолеФлажка». «ПутьКДанным» — указывается с учетом названия табличной части объекта (справочник или документ) конфигурации, в примере название табличной части «Табличная часть».

1 | ТаблицаФормы = Форма.Элементы.ТаблицаФормы;
2 | КолонкаВставки = ТабЧасть.ПодчиненныеЭлементы.Найти(«ТабличнаяЧастьТовары»);
3 | КолонкаФлажок = Форма.Элементы.Вставить(«_Флажок», Тип(«ПолеФормы»), ТаблицаФормы, КолонкаВставки);
4 | КолонкаФлажок.Вид = ВидПоляФормы.ПолеФлажка;
5 | КолонкаФлажок.Заголовок = «Ф.»;
6 | КолонкаФлажок.ПутьКДанным = «Объект.ТабличнаяЧасть._Флажок»;

И еще пример вывода колонки с флажком для реквизита документа типа «Булево» формы списка. Колонка вставляется передо колонкой «Номер», которая на форме носит имя «СписокНомер». Так же как и в предыдущем примере — при добавлении элемента формы определяется кодом, что флажок — это «поле формы», потом с помощью свойства уточняется вид поля формы. Связь через свойство «ПутьКДанным», где «Список» — название основного реквизита управляемой формы.

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

1 | ТаблицаФормы = Элементы.Список;
2 | КолонкаВставки = ТаблицаФормы.ПодчиненныеЭлементы.Найти(«СписокНомер»);
3 |
|
КолонкаДеньгиПолучены = Элементы.Вставить(«_ДеньгиПолучены», Тип(«ПолеФормы»), ТаблицаФормы, КолонкаВставки);
4 | КолонкаДеньгиПолучены.Вид = ВидПоляФормы.ПолеФлажка;
5 | КолонкаДеньгиПолучены.Заголовок = «Д.»;
6 | КолонкаДеньгиПолучены.Подсказка = «Деньги получены»;
7 | КолонкаДеньгиПолучены.ПутьКДанным = «Список.ДопМФ_ДеньгиПолучены»;

Так же может возникнуть задача для программного вывода колонки реквизита объекта в управляемую форму списка, у которой основной реквизит — это динамический список. И порядок действий немного отличается. Отличие описано в другой публикации, раскрывающей вопрос о том как в 1С 8 разместить колонку реквизита динамического списка, в которой попутно рассматривается вопрос того, как программно изменить запрос динамического списка.

Оцените, оказалась ли эта публикация полезна для Вас?




© www.azhur-c.ru 2013-2020. Все права защищены. Использование текстов и изображений с данной страницы без письменного разрешения владельца запрещено. При использовании материалов с данной страницы обязательно указание ссылки на данную страницу.

04-10-2021

Журавлев А.С.
(Сайт azhur-c.ru)

Назад

1. Реквизит формы

  • Создаем новый массив для реквизитов добавляемых на форму.
    ДобавляемыеРеквизиты = Новый Массив;
    
  • Создаем новый массив для типов реквизита формы.
    МассивТипов = новый Массив;
    МассивТипов.Добавить(Тип("Строка"));
    
  • Создаем новый реквизит формы.

    Новый РеквизитФормы(<Имя>, <Тип>, <Путь>, <Заголовок>, <СохрДанные>)

    Параметры:

    • <Имя> (обязательный). Тип: Строка. Имя реквизита.
    • <Тип> (обязательный). Тип: ОписаниеТипов. Тип реквизита.
    • <Путь> (необязательный). Тип: Строка. Путь к создаваемому реквизиту. Не включает имя реквизита. Значение по умолчанию: Пустая строка.
    • <Заголовок> (необязательный). Тип: Строка. Содержит отображаемый текст реквизита. Значение по умолчанию: Пустая строка.
    • <СохрДанные> (необязательный). Тип: Булево. Реквизит содержит сохраняемые данные. Истина — сохраняемый реквизит формы.

    Код:

    Реквизит = Новый РеквизитФормы("ПолеВводаСтроки",новый ОписаниеТипов(МассивТипов),, "Поле ввода строки", Истина);
    
  • Изменяем структуру реквизитов формы.
    ДобавляемыеРеквизиты.Добавить(Реквизит);
    ИзменитьРеквизиты(ДобавляемыеРеквизиты);
    

    Процедура ИзменитьРеквизиты(<ДобавляемыеРеквизиты>, <УдаляемыеРеквизиты>) предназначена для удаления и добавления реквизитов формы.

    Код для добавления реквизита формы целиком:

    ДобавляемыеРеквизиты = Новый Массив;
    МассивТипов = новый Массив;
    МассивТипов.Добавить(Тип("Строка"));
    Реквизит = Новый РеквизитФормы("ПолеВводаСтроки",новый ОписаниеТипов(МассивТипов),, "Поле ввода строки", Истина);
    ДобавляемыеРеквизиты.Добавить(Реквизит);
    ИзменитьРеквизиты(ДобавляемыеРеквизиты);
    

2. Элемент формы формы

  • Создаем элемент формы
    ЭтаФорма.Элементы.Добавить("ПолеВводаСтроки", Тип("ПолеФормы"), ЭтаФорма);
    

    Синтаксис:

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

    Параметры:

    • <Имя> (обязательный). Тип: Строка. Уникальное имя добавляемого элемента.
    • <ТипЭлемента> (обязательный). Тип: Тип. Тип добавляемого элемента.
    • <Родитель> (необязательный). Тип: ГруппаФормы; ТаблицаФормы; УправляемаяФорма. Родитель для добавляемого элемента. Если не указан, то добавляется на верхний уровень.
    • Возвращаемое значение: Тип: ДекорацияФормы; ГруппаФормы; КнопкаФормы; ТаблицаФормы; ПолеФормы.
  • Настраиваем элемент формы
    ЭлементФормы.ПутьКДанным = "ПолеВводаСтроки";
    ЭлементФормы.Вид         = ВидПоляФормы.ПолеВвода;

Понравилась статья? Поделить с друзьями:
  • Яндекс навигатор сервисы от компании яндекс
  • Battlefield 2042 одиночная компания будет ли
  • 1с программно изменить тип реквизита объекта
  • Ятис транспортная компания официальный сайт
  • Battlefield 4 не плывет под водой в компании