1С 8.3 Форма, элементы
Данные > Примеры кода 1С > 1С 8.3 Форма, элементы
Форма в 1С 8.3 - это визуальное отображение информации для работы пользователя с объектами информационной базы данных 1С. В платформе 1С 8.3 помимо устаревших обычных форм, используются управляемые формы (УФ), на которых реализуются все современные типовые конфигурации. Существенным отличием управляемых форм является их самостоятельное формирование структуры. Формы могут быть как в составе объектов, так и существовать отдельно от них и использоваться всеми объектами конфигурации в целом. Элементы формы служат для работы с данными формами. Также как и форма, элементы связаны с данными формы при помощи её реквизитов.
Типы УФ:
Основная форма объекта (открывается по умолчанию) //ОткрытьФорму("Справочник.Контрагенты.ФормаОбъекта");
Вспомогательная форма объекта (не основная, нужно указывать) //ОткрытьФорму("Справочник.Контрагенты.Форма.ФормаЭСЧФ");
Произвольная форма (не привязана к конкретному объекту) //так же ОткрытьФорму("Справочник.Контрагенты.Форма.ФормаЭСЧФ");
Варианты поведения групп УФ:
Обычное, Свертываемая и Всплывающая. Первые два используются довольно часто, а вот последняя встречается редко. Такая группа скрывает внутри себя все помещенные в неё элементы. А когда пользователь нажимает на её заголовок, то содержимое "всплывает". Выглядит похоже на открытие новой формы с блокировкой владельца. Но элементы не появляются в отдельном окне, а просто перекрывают основные данные.
Директивы компиляции УФ (специальная настройка для процедуры или функции):
&НаКлиенте (без обращения в базу данных)
&НаСервере (данные формы передаются на сервер, а выполнения метода обратно на форму)
&НаСервереБезКонтекста (данные формы не передаются на сервер, но сам метод выполняется на сервере)
&НаКлиентеНаСервереБезКонтекста (комбинация директив &НаКлиенте и &НаСервереБезКонтекста)
&НаКлиентеНаСервере (комбинация директив &НаКлиенте и &НаСервере)
Оглавление:
Программно открыть форму в 1С 8.3:
Процедура ОткрытьФормуВыбораФрукта()
ОткрытьФорму("Справочник.Фрукты.Форма.ФормаВыбора");
КонецПроцедуры
ОткрытьФорму("Справочник.Фрукты.Форма.ФормаВыбора");
КонецПроцедуры
Показать форму (для общего модуля) в 1С 8.3:
Процедура ПоказатьФорму(ОповещениеОЗакрытие = Неопределено, ПарФормы = Неопределено, ПарОткрытия = Неопределено) Экспорт
ПараметрыОткрытияФормы = Новый Структура("УУИД, ОкноФормы, СсылкаФормы, ВладелецФормы", Ложь);
Если ПарОткрытия <> Неопределено Тогда
//(<Приемник>, <Источник>, <СписокСвойств> необяз., <ИсключаяСвойства> необяз.)
ЗаполнитьЗначенияСвойств(ПараметрыОткрытияФормы, ПарОткрытия);
КонецЕсли;
ОткрытьФорму("РегистрСведений.КлассификаторСтранМира.Форма.ЗагрузкаКлассификатора",
ПарФормы, ПараметрыОткрытияФормы.ВладелецФормы, ПараметрыОткрытияФормы.УУИД,
ПараметрыОткрытияФормы.ОкноФормы, ПараметрыОткрытияФормы.СсылкаФормы, ОповещениеОЗакрытие);
КонецПроцедуры
ПараметрыОткрытияФормы = Новый Структура("УУИД, ОкноФормы, СсылкаФормы, ВладелецФормы", Ложь);
Если ПарОткрытия <> Неопределено Тогда
//(<Приемник>, <Источник>, <СписокСвойств> необяз., <ИсключаяСвойства> необяз.)
ЗаполнитьЗначенияСвойств(ПараметрыОткрытияФормы, ПарОткрытия);
КонецЕсли;
ОткрытьФорму("РегистрСведений.КлассификаторСтранМира.Форма.ЗагрузкаКлассификатора",
ПарФормы, ПараметрыОткрытияФормы.ВладелецФормы, ПараметрыОткрытияФормы.УУИД,
ПараметрыОткрытияФормы.ОкноФормы, ПараметрыОткрытияФормы.СсылкаФормы, ОповещениеОЗакрытие);
КонецПроцедуры
Показать форму с параметром отбора в 1С 8.3:
Процедура ПоказатьФормуСОтбором(ОповещениеОЗакрытие = Неопределено, ПарФормы = Неопределено, ПарОткрытия = Неопределено)
ПараметрыОтбора = Новый Структура("Спелый", Истина);
ПарФормы = Новый Структура("Отбор", ПараметрыОтбора);
ОткрытьФорму("Справочник.Фрукты.Форма.ФормаВыбора", ПарФормы);
КонецПроцедуры
ПараметрыОтбора = Новый Структура("Спелый", Истина);
ПарФормы = Новый Структура("Отбор", ПараметрыОтбора);
ОткрытьФорму("Справочник.Фрукты.Форма.ФормаВыбора", ПарФормы);
КонецПроцедуры
Получить имя формы по ссылке в 1С 8.3:
&НаСервереБезКонтекста
Функция ПолучитьИмяФормыПоСсылке(Ссылка)
ИмяФормы="ФормаУправленияНастройками";
Возврат Ссылка.Метаданные().ПолноеИмя() + "." + ИмяФормы;
КонецФункции
Функция ПолучитьИмяФормыПоСсылке(Ссылка)
ИмяФормы="ФормаУправленияНастройками";
Возврат Ссылка.Метаданные().ПолноеИмя() + "." + ИмяФормы;
КонецФункции
Открытие формы с отбором в 1С 8.3:
&НаКлиенте
Процедура Подбор(Команда)
//Открытие формы выбора с отбором по цвету(равно), массе(равно или больше) и периоду (в пределах)
НастройкиКД = Новый НастройкиКомпоновкиДанных;
ОтборКД = НастройкиКД.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ОтборКД.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
// 1)
Если ЗначениеЗаполнено(Объект.Цвет) И НЕ Объект.Цвет.Пустая() Тогда
ОтборКД = ОтборКД.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборКД.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Цвет");
ОтборКД.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборКД.Использование = Истина;
ОтборКД.ПравоеЗначение = Объект.Цвет;
КонецЕсли;
// 2)
Если ЗначениеЗаполнено(Объект.Масса) И НЕ Объект.Масса.Пустая() Тогда
ОтборКД = ОтборКД.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборКД.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Масса");
ОтборКД.ВидСравнения = ВидСравненияКомпоновкиДанных.БольшеИлиРавно;
ОтборКД.Использование = Истина;
ОтборКД.ПравоеЗначение = Объект.Масса;
КонецЕсли;
// 3)
Если ЗначениеЗаполнено(Объект.Период) Тогда
ОтборКД = ОтборКД.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборКД.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Дата");
ОтборКД.ВидСравнения = ВидСравненияКомпоновкиДанных.БольшеИлиРавно;
ОтборКД.Использование = Истина;
ОтборКД.ПравоеЗначение = Объект.Период.ДатаНачала;
ОтборКД = ОтборКД.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборКД.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Дата");
ОтборКД.ВидСравнения = ВидСравненияКомпоновкиДанных.МеньшеИлиРавно;
ОтборКД.Использование = Истина;
ОтборКД.ПравоеЗначение = Объект.Период.ДатаОкончания;
КонецЕсли;
//Настройки
фПараметры = Новый Структура;
фПараметры.Вставить("ФиксированныеНастройки", НастройкиКД);
фПараметры.Вставить("РежимВыбора",Истина);
фПараметры.Вставить("МножественныйВыбор",Истина);
// Элементы.СписокПроизвДок - Табличная часть формы, в которой будет отрабатывать событие "ОбработкаВыбора"
// после того как будут выбраны документы из формы выбора.
ОткрытьФорму("Документ.Производство.ФормаВыбора", фПараметры, Элементы.СписокПроизвДок);
КонецПроцедуры
Процедура Подбор(Команда)
//Открытие формы выбора с отбором по цвету(равно), массе(равно или больше) и периоду (в пределах)
НастройкиКД = Новый НастройкиКомпоновкиДанных;
ОтборКД = НастройкиКД.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ОтборКД.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
// 1)
Если ЗначениеЗаполнено(Объект.Цвет) И НЕ Объект.Цвет.Пустая() Тогда
ОтборКД = ОтборКД.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборКД.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Цвет");
ОтборКД.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборКД.Использование = Истина;
ОтборКД.ПравоеЗначение = Объект.Цвет;
КонецЕсли;
// 2)
Если ЗначениеЗаполнено(Объект.Масса) И НЕ Объект.Масса.Пустая() Тогда
ОтборКД = ОтборКД.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборКД.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Масса");
ОтборКД.ВидСравнения = ВидСравненияКомпоновкиДанных.БольшеИлиРавно;
ОтборКД.Использование = Истина;
ОтборКД.ПравоеЗначение = Объект.Масса;
КонецЕсли;
// 3)
Если ЗначениеЗаполнено(Объект.Период) Тогда
ОтборКД = ОтборКД.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборКД.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Дата");
ОтборКД.ВидСравнения = ВидСравненияКомпоновкиДанных.БольшеИлиРавно;
ОтборКД.Использование = Истина;
ОтборКД.ПравоеЗначение = Объект.Период.ДатаНачала;
ОтборКД = ОтборКД.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборКД.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Дата");
ОтборКД.ВидСравнения = ВидСравненияКомпоновкиДанных.МеньшеИлиРавно;
ОтборКД.Использование = Истина;
ОтборКД.ПравоеЗначение = Объект.Период.ДатаОкончания;
КонецЕсли;
//Настройки
фПараметры = Новый Структура;
фПараметры.Вставить("ФиксированныеНастройки", НастройкиКД);
фПараметры.Вставить("РежимВыбора",Истина);
фПараметры.Вставить("МножественныйВыбор",Истина);
// Элементы.СписокПроизвДок - Табличная часть формы, в которой будет отрабатывать событие "ОбработкаВыбора"
// после того как будут выбраны документы из формы выбора.
ОткрытьФорму("Документ.Производство.ФормаВыбора", фПараметры, Элементы.СписокПроизвДок);
КонецПроцедуры
💡 Готовые модели кода (шаблоны) c Форма, элементы 1С:
📰 Актуальные новости с тегом #Форма, элементы:
- В версии 8.3.28 реализована управляемая форма "Изменить форму" в тонком клиенте.
- В версии 8.3.26 реализована возможность оповещения клиента с сервера.
1
комментарий
Oleg
12 сен 2022
Добрый день. Как открыть форму списка по произвольному запросу?
____________________
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник