Кнопка ~ Как в командной панели создать подменю с кнопками ? Код 1C v 8.х КнопкиКоманднойПанели = ЭлементыФормы. КоманднаяПанельФормы. Кнопки;
Индекс = КнопкиКоманднойПанели. Индекс( КнопкиКоманднойПанели. Найти( "Сформировать" ) ) ;
Если Индекс = - 1 Тогда
Индекс = 0 ;
Иначе
КнопкиКоманднойПанели. Удалить( Индекс) ;
КонецЕсли ;
ПодменюСформировать = КнопкиКоманднойПанели. Вставить( Индекс, "Сформировать" , ТипКнопкиКоманднойПанели. Подменю, "Сформировать" ) ;
ПодменюСформировать. Картинка = БиблиотекаКартинок. Сформировать;
ПодменюСформировать. Отображение = ОтображениеКнопкиКоманднойПанели. НадписьКартинка;
Запрос = Новый Запрос( "ВЫБРАТЬ Ссылка ИЗ Перечисление.Периодичность" ) ;
Выборка = Запрос. Выполнить( ) . Выбрать( ) ;
Пока Выборка. Следующий( ) Цикл
Период = Выборка. Ссылка;
ПодменюСформировать. Кнопки. Добавить( "кн" + Период, ТипКнопкиКоманднойПанели. Действие, "Сформировать за " + Период, Новый Действие( "КнопкаСформироватьНажатие" ) ) ;
КонецЦикла ;
Категория:
Работа с Формой (Диалог) и её элементами Быстрый отбор в справочнике по первой букве В статье описан способ быстрой организации отбора в списке справочника по первой букве наименования. Механизм легко дотачивается под собственные нужды.
Код 1C v 8.2 УП
&НаКлиенте
Процедура УстановитьПометку(Команда)
Для Каждого Кнопка Из Элементы. ПанельСБуквами. ПодчиненныеЭлементы Цикл
Кнопка. Пометка = ( Команда. Имя = Кнопка. Имя) ;
КонецЦикла ;
КонецПроцедуры
&НаСервере
Процедура ПодготовитьДинамическийСписок()
Список. ПроизвольныйЗапрос = Истина ;
ТекстЗапроса =
"ВЫБРАТЬ *
|ИЗ
| %ИмяТаблицы% КАК Т
|{ГДЕ
| (ПОДСТРОКА(Т.Наименование, 1, 1) В (&СписокБукв))}" ;
ТекстЗапроса = СтрЗаменить( ТекстЗапроса, "%ИмяТаблицы%" , Список. ОсновнаяТаблица) ;
Список. ТекстЗапроса = ТекстЗапроса;
КонецПроцедуры
&НаСервере
Процедура СоздатьПанельСБуквами()
ПанельСБуквами = Элементы. Вставить( "ПанельСБуквами" , Тип( "ГруппаФормы" ) , ЭтаФорма, Элементы. Список) ;
ПанельСБуквами. Вид = ВидГруппыФормы. КоманднаяПанель;
КомандаФормы = Команды. Добавить( "Все" ) ;
КомандаФормы. Действие = "УдалитьФильтрПоПервойБукве" ;
КнопкаФормы = Элементы. Добавить( "Все" , Тип( "КнопкаФормы" ) , ПанельСБуквами) ;
КнопкаФормы. ИмяКоманды = "Все" ;
КнопкаФормы. Пометка = Истина ;
Для Сч = КодСимвола( "А" ) По КодСимвола( "Я" ) Цикл
ИмяКоманды = Символ( Сч) ;
Если Найти( "Ё,Й,Ъ,Ь" , ИмяКоманды) > 0 Тогда
Продолжить;
КонецЕсли ;
КомандаФормы = Команды. Добавить( ИмяКоманды) ;
КомандаФормы. Действие = "УстановитьФильтрПоПервойБукве" ;
КнопкаФормы = Элементы. Добавить( ИмяКоманды, Тип( "КнопкаФормы" ) , ПанельСБуквами) ;
КнопкаФормы. ИмяКоманды = ИмяКоманды;
КонецЦикла ;
КонецПроцедуры
&НаКлиенте
Процедура УстановитьФильтрПоПервойБукве(Команда)
Буква = Команда. Имя;
СписокБукв = Новый Массив;
СписокБукв. Добавить( Буква) ;
СписокБукв. Добавить( НРег( Буква) ) ;
Если Буква = "Е" Тогда
СписокБукв. Добавить( "Ё" ) ;
СписокБукв. Добавить( "ё" ) ;
КонецЕсли ;
Если Буква = "И" Тогда
СписокБукв. Добавить( "Й" ) ;
СписокБукв. Добавить( "й" ) ;
КонецЕсли ;
Список. Параметры. УстановитьЗначениеПараметра( "СписокБукв" , СписокБукв) ;
УстановитьПометку( Команда) ;
КонецПроцедуры
&НаКлиенте
Процедура УдалитьФильтрПоПервойБукве(Команда)
ПараметрКомпоновкиДанных = Новый ПараметрКомпоновкиДанных( "СписокБукв" ) ;
ЗначениеПараметраКомпоновкиДанных = Список. Параметры. НайтиЗначениеПараметра( ПараметрКомпоновкиДанных) ;
Если ЗначениеПараметраКомпоновкиДанных = Неопределено Тогда
Возврат ;
КонецЕсли ;
ЗначениеПараметраКомпоновкиДанных. Использование = Ложь ;
УстановитьПометку( Команда) ;
КонецПроцедуры
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ПодготовитьДинамическийСписок( ) ;
СоздатьПанельСБуквами( ) ;
КонецПроцедуры
Данный текст необходимо вставить в модуль формы списка справочника.
Процедуру "ПриСозданииНаСервере" вручную назначить обработчиком одноименного события формы.
Если данному событию уже назначен обработчик, то необходимо дополнить его строками процедуры "ПриСозданииНаСервере" из листинга.
Реквизита формы "Список"
не должен содержать произвольного запроса. Если список формируется произвольным запросом, то в запрос необходимо дописать условие компоновки:
{ГДЕ (ПОДСТРОКА(ИмяТаблицы.Наименование, 1, 1) В (&СписокБукв))}
и удалить процедуру "ПодготовитьДинамическийСписок" и все ее вызовы.
Автор
Armando Категория:
Справочники