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