Формы и их элементы

Обновление данных на форме

ОбновитьОтображениеДанных();

Ограничение типа данных элемента формы

Элементы.СубконтоИ1.ОграничениеТипа = Новый ОписаниеТипов("СправочникСсылка.ОсновныеСредства");

Снятия ограничения типа данных элемента формы

Элементы.СубконтоИ1.ОграничениеТипа = Новый ОписаниеТипов("Неопределено");

Получение значения отбора

&НаКлиенте

Процедура ПриОткрытии(Отказ)

ОтборУстановлен = ЗначениеЗаполнено(Список.Отбор.Элементы);

Если ОтборУстановлен Тогда

ЭтотОбъект.Заголовок = "Файлы (" + СокрЛП(Список.Отбор.Элементы[0].ПравоеЗначение) + ")";

КонецЕсли;

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

Обработка полей при изменении поля табличной части

&НаСервере

Функция ТабличнаяЧастьПриИзменении_Запрос(Субконто1, Субконто2)

Если ЗначениеЗаполнено(Субконто1)

и ТипЗнч(Субконто1) = ТипЗнч(Справочники.Контрагенты.ПустаяСсылка())

и ТипЗнч(Субконто2) = ТипЗнч(Справочники.ДоговорыКонтрагентов.ПустаяСсылка()) Тогда

Запрос = Новый Запрос;

Запрос.Текст = "ВЫБРАТЬ

| ДоговорыКонтрагентов.Ссылка

|ИЗ

| Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов

|ГДЕ

| ДоговорыКонтрагентов.Владелец = &Контрагент";

Запрос.УстановитьПараметр("Контрагент",Субконто1);

ВсеДоговора = Запрос.Выполнить().Выгрузить();

Если ВсеДоговора.Количество() = 1 Тогда

Субконто2 = ВсеДоговора[0].Ссылка;

Иначе

Субконто2 = Справочники.ДоговорыКонтрагентов.ПустаяСсылка();

КонецЕсли;

КонецЕсли;

Возврат 0;

КонецФункции

&НаКлиенте

Процедура ТабличнаяЧастьСубконто1ПриИзменении(Элемент)

ТекущаяСтрока = ЭтаФорма.Элементы.ТабличнаяЧасть.ТекущиеДанные;

ТабличнаяЧастьПриИзменении_Запрос(ТекущаяСтрока.Субконто1, ТекущаяСтрока.Субконто2)

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

Как обойти список кнопок командной панели формы

Для Индекс = 0 По Элементы.ФормаКоманднаяПанель.ПодчиненныеЭлементы.Количество()-1 Цикл

Сообщить(СокрЛП(Индекс)+". "+СокрЛП(Элементы.ФормаКоманднаяПанель.ПодчиненныеЭлементы[Индекс].Имя));

КонецЦикла;

Как отразить в заголовке состояние документа

&НаСервере

Функция ЗаголовокФормы()

Если Объект.Ссылка.Пустая() Тогда

Заголовок = Заголовок + "Новый";

Иначе

Если Объект.Проведен Тогда

Заголовок = Заголовок + "Проведен";

ИначеЕсли Объект.Ссылка.Метаданные().Проведение = Метаданные.СвойстваОбъектов.Проведение.Разрешить Тогда

Заголовок = Заголовок + "Не проведен";

Иначе

Заголовок = Заголовок + "Записан";

КонецЕсли;

КонецЕсли;

Возврат Заголовок;

КонецФункции // ЗаголовокФормы()

Как отразить информацию о документе в заголовке его формы

&НаСервере

Функция ЗаголовокФормы()

Заголовок = "";

ТекстЗаголовка = НСтр("ru = 'Выдача из хранения'");

Если ЗначениеЗаполнено(Объект.Ссылка) Тогда

ТекстЗаголовка = ТекстЗаголовка + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(

НСтр("ru=' %1 от %2'"), Объект.Номер, Формат(Объект.Дата, "ДЛФ=D"));

Иначе

ТекстЗаголовка = ТекстЗаголовка + НСтр("ru = ' (создание)'");

КонецЕсли;

Заголовок = ТекстЗаголовка;

Возврат Заголовок;

КонецФункции // ЗаголовокФормы()

Форма выбора справочника с отбором

&НаКлиенте

Процедура ПодразделениеОрганизацииНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)

СтандартнаяОбработка = Ложь; //Отключение стандартной обработки

ЗначениеОтбора = Новый Структура;

ЗначениеОтбора.Вставить("Владелец",Объект.Организация); // Отбор по полю Организация

ПараметрыВыбора = Новый Структура("Отбор", ЗначениеОтбора);

ОткрытьФорму("Справочник.ПодразделенияОрганизаций.ФормаВыбора",ПараметрыВыбора, Элемент); // Возврат значения в Элемент

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

Через связь параметров выбора

Выборочное удаление части строк табличных частей

СтруктураОтбора = Новый Структура("Документ", ДокументБонуса);МассивУдаляемыхСтрок = Бонусы.НайтиСтроки(СтруктураОтбора);Для Каждого ЭлементМассива Из МассивУдаляемыхСтрок Цикл Бонусы.Удалить(ЭлементМассива);КонецЦикла;

Открытие форм с параметрами

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

Использование обработчика формы ОбработкаВыбора для инициализации реквизитов

#Область ОбработкаВыбора &НаСервере Процедура ОбработкаВыбораДокументаНаСервере() Дата = Документ.Дата; Сумма = Документ.Зарплата.Итог("Сумма"); СпособВыплаты = Документ.ВидМестаВыплаты; ПериодРегистрации = Документ.ПериодРегистрации;КонецПроцедуры &НаКлиенте Процедура ОбработкаВыбора(ЗначениеВыбора, Источник) Если ТипЗнч(ЗначениеВыбора) = Тип("ДокументСсылка.ВедомостьНаВыплатуЗарплаты") Тогда Документ = ЗначениеВыбора; ОбработкаВыбораДокументаНаСервере(); КонецЕсли; ОбновитьОтображениеДанных(); КонецПроцедуры #КонецОбласти

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

ТекОтбор = Список.Отбор.Элементы; ТекОтбор.Очистить(); УсловиеОтбора = ТекОтбор.Добавить(тип("ЭлементОтбораКомпоновкиДанных")); УсловиеОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Ответственный"); УсловиеОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; УсловиеОтбора.ПравоеЗначение = Ответственный2;