|
Скрыть команду при пустом списке |
☑ |
0
AlexYa
25.08.23
✎
11:14
|
Как на 8.3.22 для команды документа, режим использования параметра = множественный, отследить, что на форме списка пустой список (как по отсутствию документов, так и в результате фильтрации в списке на форме), и делать кнопку команды не активной или невидимой?
Речь не о команде на форме, а о команде документа.
|
|
1
AlexeyKh
25.08.23
✎
11:24
|
делают немного по другому
при нажатии кнопки проверяют ТекущуюСтроку или ТекущиеДанные
если они = Неопределено просто выходят из обработчика
(хоть обдавить на эту кнопку)
|
|
2
AlexYa
25.08.23
✎
11:59
|
При нажатии на кнопку сразу вылетает ошибка
Команда не может быть выполнена для указанного объекта!
без захода в обработчик.
|
|
3
AlexeyKh
25.08.23
✎
12:10
|
если это системная/стандартная команда?
как вариант убирайте ее с формы вообще,
размещайте свою команду/кнопку в ней проверку на Неопределено
(что за команда/кнопка - то?)
|
|
4
AlexYa
05.09.23
✎
23:29
|
Извиняюсь за перерыв. Был оффлайн.
Команда своя собственная. При выделении несколько строк в списке, например, документов, по нажатию на кнопку команды с документами выполняются определённые действия.
Но если список пустой (нет документов совсем или под фильтром), то текущий отбор для кнопки тоже пустой. Видимо, вначале происходит системная отработка на пустоту массива отобранных и выдаётся ошибка. А если массив не пуст, происходит переход в обработчик команды.
Потому и вопрос, можно как-то вместо системной ошибки выдавать своё предупреждение? А лучше просто деактивировать кнопку команды при пустом списке.
|
|
5
timurhv
05.09.23
✎
23:42
|
Сделать по аналогии с командами печати из формы списка документов:
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
ОрганизацииПечати = ...; // массив
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Идентификатор = "ИдентификаторФормы";
КомандаПечати.Представление = НСтр("ru = 'ПредставлениеФормы'");
УправлениеПечатью.ДобавитьУсловиеВидимостиКоманды(КомандаПечати,"Организация",ОрганизацииПечати,ВидСравнения.ВСписке);
КонецПроцедуры
----------------------
На форме списка документов:
#Область ОбработчикиСобытийЭлементовТаблицыФормыСписок
&НаКлиенте
Процедура СписокПриАктивизацииСтроки(Элемент)
// СтандартныеПодсистемы.ПодключаемыеКоманды
ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
// Конец СтандартныеПодсистемы.ПодключаемыеКоманды
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
// СтандартныеПодсистемы.ПодключаемыеКоманды
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
ПодключаемыеКомандыКлиент.ВыполнитьКоманду(ЭтотОбъект, Команда, Элементы.Список);
КонецПроцедуры
&НаСервере
Процедура Подключаемый_ВыполнитьКомандуНаСервере(Контекст, Результат) Экспорт
ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, Контекст, Элементы.Список, Результат);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Элементы.Список);
КонецПроцедуры
// Конец СтандартныеПодсистемы.ПодключаемыеКоманды
#КонецОбласти
|
|
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший