|
Управляемая форма: управление составом командной панели | ☑ | ||
---|---|---|---|---|
0
mashunka
27.08.12
✎
14:43
|
Дано:
Управляемая форма с командной панелью, у которой установлено свойство "Автозаполнение". Это ключевой момент, т.к. флажок снимать никак нельзя: документ связан с массой параметризованных команд, которые прекрасно автоматически добавляются в форму. Задача №1: т.к. всего в панели очень много, то форма некрасиво растягивается вширь из-за переполненной командной панели. Я создаю процедуру, которая половину всех кнопок переводит в меню "все действия" (ТолькоВоВсехДействиях = Истина), половине меняю отображение на "Картинка". Все работает прекрасно и замечательно. Задача №2: в предопределенное подменю "Печать" добавить печатные формы из справочника "Внешние печатные формы". Задача сама по себе решена и в другой форме, где флажок "Автоматическое заполнение" для командной панели СНЯТ, все работает! Проблема: после программного добавления кнопок с командами печати командная панель берет и перезаполняется автоматически, сбрасывая все настройки, в том числе и добавленные команды. Код: Процедура ПриСозданииНаСервере() // .... ДобавитьВнешниеПечатныеФормы(Команды,Элементы,Элементы.ФормаКоманднаяПанель.ПодчиненныеЭлементы.ФормаПечать); // 1) // Эта процедура добавляет кнопки в меню - представлена ниже УправлениеВидимостьюКнопокКоманднойПанели(); // 2) // Эта процедура меняет состав командной панели, там ничего интересного. // ... КонецПроцедуры // 3) Процедура ДобавитьВнешниеПечатныеФормы(КомандыФормы,ЭлементыФормы,ГруппаФормы) // ... Здесь запрос, получающий список печатных форм Пока ВыборкаДопПечатныхФорм.Следующий() Цикл ИмяКоманды = "Печать_"+ВыборкаДопПечатныхФорм.Код; НоваяКоманда = КомандыФормы.Добавить(ИмяКоманды); НоваяКоманда.Действие = "ПечатьВнешнейПечатнойФормы"; НоваяКнопка = ЭлементыФормы.Добавить(ИмяКоманды,Тип("КнопкаФормы"),ГруппаФормы); НоваяКнопка.Картинка = БиблиотекаКартинок.Печать; НоваяКнопка.Заголовок = ВыборкаДопПечатныхФорм.Наименование; НоваяКнопка.ИмяКоманды = ИмяКоманды; КонецЦикла; КонецПроцедуры Если в первой процедуре закомментировать строку 1), то все работает правильно - панель меняется как задано в процедуре 2). Если раскомментировать - не работает. Причем при отладке до строки 3), т.е. до конца процедуры ПриСозданииНаСервере() все изменения сохраняются, в том числе и добавленные кнопки. Но форма открывается с автозаполненной панелью. Предположение: программное добавление кнопок видимо устанавливает какой-то признак у панели, типа "модифицированность", что заставляет ее перезаполняться... Может быть, кто-то с таким сталкивался и посоветуете, как с этим бороться... |
|||
1
vmv
27.08.12
✎
14:51
|
Задача №1: зачем создавать процедуру где идет завяка на имена элементов формы - это костыль?
можно объявить группу Командная панель и в ней вложенные меню подменю в которых и переводить кнопки во "Все действия" все проблемы из-за костяля чувак. УФ создавали не для того, чтобы кодом менять палитры свойств и составов любых визуальных сущностей, в том числле и Кп. Научись работать с группами формы - это все, копаться в г-коде нет смысла |
|||
2
mashunka
27.08.12
✎
15:00
|
1) То, что я создавала сама, я и прописала во "все действия". Так что в той процедуре я борюсь с предопределенными группами, например - "Создать на основании", которая длинно отображается словами, а мне надо значком. Команды ввода на основании же сами добавляются, я не нашла, как еще ее отображение поменять...
|
|||
3
mashunka
27.08.12
✎
15:01
|
1) Тем более, у группы нет признака "ТолькоВоВсехДействиях", он только у самих кнопок...
|
|||
4
mrBlutig
05.09.12
✎
18:14
|
Удалось разобраться? Столкнулся с той же проблемой.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |