gifts2017

Команды "Отбор по текущему значению" и "Отключить отбор" для управляемого приложения (Управление торговлей 11, Розница 2, Управление небольшой фирмой и т.д.)

Опубликовал Sirruf (Sirruf) в раздел Программирование - Практика программирования

Алгоритм позволяющий добавить такие привычные и крайне необходимые команды для управляемого приложения, как "Отбор по текущему значению" и "Отключить отбор". Минимальное изменение конфигурации - Только добавление новой команды.

1) Создаем команду с именем: ОтборПоЗначениюВТекущейКолонке

2) Далее настройка параметров команды

Параметр Группа

 Устанавливаем значение Командная панель формы.Важное

Параметр Тип параметра команды

Нажимаем кнопку выбора.

В открывшемся окне раскрываем все папки кроме "ПеречислениеСсылка" и "ТочкаМаршрутаБизнессПроцессаСсылка".

Нажимаем комбнацию "Ctrl + A". Нажимаем "Пробел". Должны появится флажки у выделенных объектов.

Нажимаем ОК.

Параметр Картинка

Выбираем подходящую картинку (можно перенести из библиотеки стандартных картинок 8.1).

Параметр Отображение

Картинка.

3) Добавляем код для нашей команды

 

&НаКлиенте

Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)

 

    Для Каждого Элемент Из ПараметрыВыполненияКоманды.Источник.Элементы Цикл
        Если ТипЗнч(Элемент) = Тип("ТаблицаФормы") Тогда
            Если Элемент.ТекущийЭлемент = Неопределено тогда
                Возврат;
            КонецЕсли;
            ИмяПоля = Элемент.ТекущийЭлемент.Имя;
            УстановитьОтборНаКлиенте(ПараметрыВыполненияКоманды.Источник[Элемент.Имя], ИмяПоля, Элемент.ТекущиеДанные[Элемент.ТекущийЭлемент.Имя]);
        КонецЕсли;
    КонецЦикла;    
КонецПроцедуры

&НаКлиенте
Процедура УстановитьОтборНаКлиенте(Список, ИмяПоля, ЗначениеПоля)
    
    ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбора(Список.Отбор, ИмяПоля, ЗначениеПоля, , , , РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ);
    
КонецПроцедуры

 

4) Добавляем команду ОтключитьОтбор.

Выполняем соответвующие действия 1,2. Код команды:

&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
    
    Для Каждого Элемент Из ПараметрыВыполненияКоманды.Источник.Элементы Цикл
        Если ТипЗнч(Элемент) = Тип("ТаблицаФормы") Тогда
            Если Элемент.ТекущийЭлемент = Неопределено тогда
                Возврат;
            КонецЕсли;
            ИмяПоля = Элемент.ТекущийЭлемент.Имя;
            ПараметрыВыполненияКоманды.Источник[Элемент.Имя].Отбор.Элементы.Очистить();
        КонецЕсли;
    КонецЦикла;    
    
КонецПроцедуры




Примечание:

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

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Алекс (tommyknocker) 25.12.12 20:00
Идея хорошая, но не работает отбор в табличных частях документов и справочников. Только в списках документов и справочников, к сожалению.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа