Стыковка элементов управляемой формы и пользовательских настроек СКД

Опубликовал Серафим Вендеревский (svenderevsky) в раздел Программирование - Практика программирования

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

//infostart.ru/upload/iblock/17a/Рис1.pngСтыковка элементов управляемой формы и пользовательских настроек СКД.

 

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

 

Для реализации этих возможностей разработано 3 расширения элементов формы. Возможное их использование представлено в скриншотах на рис. 1.

 

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

 

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

 

Расширение элемента тип 3 служит для ввода пользовательского отбора с видом значения, использующим список значений (в списке, не в списке, в группе из списка и т.д.). Автоматически создаются требуемые реквизиты и элементы формы.

 

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

 

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

 

Для настройки работы при обработке события ПриСозданииНаСервере  формы отчета для каждого элемента расширения надо вызвать процедуру общего  модуля СКДУПСервер.ИнициализироватьЭлементУправленияТипN (N = 1 или 2 или 3) в зависимости от требуемого типа расширения. Все описания параметров этих процедур и их значения по умолчанию приведены в комментариях к соответствующим процедурам модуля СКДУПСервер.

 

 Пример инициализации из Демонстрационной БД (см. на скриншотах рис.2).

 

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
 
// ***********************************************************************
// Инициализация связи элементов формы и пользовательских настроек СКД
// ***********************************************************************

 

 СКДУПСервер.ИнициализироватьЭлементУправленияТип1(ЭтаФорма,"Организация");
 
 СКДУПСервер.ИнициализироватьЭлементУправленияТип2(ЭтаФорма,Элементы.ГруппаНастройкаПериода);
 
 СКДУПСервер.ИнициализироватьЭлементУправленияТип3(ЭтаФорма,"Склад",Элементы.ОтборПоСкладам,"Организация","Владелец");
 
 СКДУПСервер.ИнициализироватьЭлементУправленияТип3(ЭтаФорма,"Номенклатура",Элементы.ОтборНоменклатуры);
 
// ***********************************************************************
// ***********************************************************************
 
КонецПроцедуры


 

Далее нужно скопировать в модуль формы отчета текст 

 

// ***********************************************************************
// Вспомогательные Процедуры СКДУП
// ***********************************************************************

 

&НаСервере
Процедура СКДУП_ПередЗагрузкойПользовательскихНастроекНаСервере(Настройки)
 СКДУПСервер.ПередЗагрузкойПользовательскихНастроекНаСервере(ЭтаФорма,Настройки);
КонецПроцедуры

 

&НаКлиенте
Процедура СКДУП_ПриОткрытии(Отказ)
 СКДУПКлиент.ПриОткрытии(ЭтаФорма);
КонецПроцедуры

 

&НаКлиенте
Процедура СКДУП_ПриИзменении(Элемент)
 СКДУПКлиент.ПриИзменении(ЭтаФорма,Элемент);
КонецПроцедуры

 

&НаКлиенте
Процедура СКДУП_Команда(Команда)
 СКДУПКлиент.ВыполнитьКоманду(ЭтаФорма,Команда);
КонецПроцедуры

 

&НаКлиенте
Процедура СКДУП_НачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
 СКДУПКлиент.НачалоВыбора(ЭтаФорма,Элемент, ДанныеВыбора, СтандартнаяОбработка);
КонецПроцедуры

 

// ***********************************************************************
// ***********************************************************************

 (см. на скриншотах рис.3).

 

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

 

И это все, что надо сделать для начала работы расширений элементов формы.  

 

 

 

 

 

Скачать файлы

Наименование Файл Версия Размер
Демонстрационная конфигурация
.dt 53,33Kb
19.12.13
19
.dt 53,33Kb 19 Скачать

См. также

В этой теме еще нет сообщений.