Формы и их элементы
Обновление данных на форме
ОбновитьОтображениеДанных();
Ограничение типа данных элемента формы
Элементы.СубконтоИ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;