Программное выполнение стандартной команды из управляемой формы
&НаКлиенте
Процедура Команда1(Команда)
ПроведениеОплатаОтгрузка();
ЭтаФорма.ОбновитьОтображениеДанных();
КонецПроцедуры
&НаСервере
Процедура ПроведениеОплатаОтгрузка()
док = ДанныеФормыВЗначение(Объект, Тип("ДокументОбъект.ЗаказКлиента") );
док.Записать( РежимЗаписиДокумента.Проведение );
КонецПроцедуры
Связь по типу в выборе документа Управляемая форма
Дано: Документ "РучнаяОперация" по регистру Бухгалтерии
Субконто меняются на разных Счетах.
Выбирается комбинация:
Субконто1 = Контрагент
Субконто2 = Документ (движение по контрагенту)
Задача:Наложить ограничение по выбору субконто2 из списка документов только по Контрагент.
Решение (Настроить параметры отбора ДинамическогоСписка):
создать: ФормаВыбора, объект ДинамическийСписок,
добавить обработку события типа Активация у ДинамическийСписок:
ЭлементыОтбора = ДинамическийСписок.Отбор.Элементы;
Если ЭлементыОтбора.Количество()>0 Тогда
ЭлементыОтбора.Очистить();
КонецЕсли;
ЭлементОтбора = ЭлементыОтбора.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.Использование = Истина;
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Ссылка");
ЭлементОтбора.ПравоеЗначение = Ссылка;
Связь по типу выбор данных Управляемая форма
Этот механизм используется для работы с полями, значения которых связаны через план видов характеристик или через владельца справочника.
Можно наложить ограничения по типу програмно :
Пример: Взависимости от вида карты выбирается нужный справочник в табличной части.
Код в обработчике ПриИзменении
Если Объект.ВидыКарт = ПредопределенноеЗначение("Перечисление.ВидыКарт.Вид1") Тогда
Элементы.ТабличнаяЧасть1Карта.ОграничениеТипа = Новый ОписаниеТипов("СправочникСсылка.Справочник1");
ИначеЕсли Объект.ВидыКарт = ПредопределенноеЗначение("Перечисление.ВидыКарт.Вид2") Тогда
Элементы.ТабличнаяЧасть1Карта.ОграничениеТипа = Новый ОписаниеТипов("СправочникСсылка.Справочник2");
КонецЕсли;
Передача параметра в запрос объекта ДинамическийСписок Управляемые формы
Дано:
На управляемой форме размещен объект ДвиженияДокумента типа ДинамическийСписок, формирующийся запросом по регистру.
Задача:Фильтровать ДвиженияДокумента по документу регистратору. Установить период.
Решение:
// 1-й способ:
// Управление через параметры запроса. Минус - каждый раз при изменении параметра происходит обращение к БД.
&НаКлиенте
...
Если ЗначениеЗаполнено( СсылкаНаДокумент ) Тогда
ДвиженияДокумента.Параметры.УстановитьЗначениеПараметра("Регистратор" , СсылкаНаДокумент);
КонецЕсли;
// 2-й способ:
// Управление через настройки отбора компоновки данных формы. Код сложнее, но движок 1с сам решает проблему кеширования данных. Обращений к БД должно быть меньше.
&НаКлиенте
Процедура СписокПриАктивизацииСтроки(Элемент)
тс = Элемент.ТекущаяСтрока;
Если ЗначениеЗаполнено(тс) Тогда
ЭлементыОтбора = ДвиженияДокумента.Отбор.Элементы;
Если ЭлементыОтбора.Количество()>0 Тогда
ЭлементыОтбора.Очистить();
КонецЕсли;
ЭлементОтбора = ЭлементыОтбора.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.Использование = Истина;
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Регистратор");
ЭлементОтбора.ПравоеЗначение = тс;
КонецЕсли;
КонецПроцедуры
Отображение изображения (картинка) Управляемые формы
1. Создать реквизит формы КартинаНаФорме тип Строка
2. Перетащить КартинаНаФорме на поле формы и установить свойство Вид "Поле картинки"
3. Связать данные БД и Формы (КартинаНаФорме<->Реквизит справочника КартинаВСправочнике):
&НаКлиенте
КартинаНаФорме = ПолучитьНавигационнуюСсылку( Элемент.ТекушиеДанные.<Ссылка на справочник>, "КартинаВСправочнике");
или
КартинаНаФорме = ПолучитьНавигационнуюСсылку( Объект.Ссылка, "КартинаВСправочнике");
Элементы.КартинаНаФорме.Видимость = Истина;
Чтение файла изображения на клиенте и запись в БД.
&НаКлиенте
Процедура ДобавитьКартинку(Команда)
ИмяФайлаВФайловойСистеме = "";
АдресВоВременномХранилище = "";
ПоместитьФайл(АдресВоВременномХранилище , , ИмяФайлаВФайловойСистеме, Истина);
КартинаНаФорме = АдресВоВременномХранилище;
УстановитьКартинку();
КонецПроцедуры
&НаСервере
Процедура УстановитьКартинку()
сп = РеквизитФормыВЗначение("Объект");// сп - элемент справочника
сп.КартинаВСправочнике = Новый ХранилищеЗначений( ПолучитьИзВременногоХранилища(КартинаНаФорме) );
сп.Записать();
КонецПроцедуры
Контроль заполнения полей управляемых форм.
Контроль осуществляется на стороне сервера.
Проверяемый реквизит объекта метаданных свойство "Проверка заполения" установить в состояние "Выдавать ошибку" (по умолчанию "Не проверять"). Это включает обработку "поумолчанию". Обработку проверки можно изменить в обработке события в модуле Объекта (&НаСервере) ОбработкаПроверкиЗаполнения.