Имя: Пароль:
1C
1С v8
Скрыть команду при пустом списке
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 = 'ПредставлениеФормы'");
    УправлениеПечатью.ДобавитьУсловиеВидимостиКоманды(КомандаПечати,"Организация",ОрганизацииПечати,ВидСравнения.ВСписке);
    
КонецПроцедуры

----------------------
На форме списка документов:

#Область ОбработчикиСобытийЭлементовТаблицыФормыСписок

&НаКлиенте
Процедура СписокПриАктивизацииСтроки(Элемент)
    
    // СтандартныеПодсистемы.ПодключаемыеКоманды
    ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
    // Конец СтандартныеПодсистемы.ПодключаемыеКоманды
    
КонецПроцедуры

#КонецОбласти

#Область ОбработчикиКомандФормы

// СтандартныеПодсистемы.ПодключаемыеКоманды
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
    ПодключаемыеКомандыКлиент.ВыполнитьКоманду(ЭтотОбъект, Команда, Элементы.Список);
КонецПроцедуры

&НаСервере
Процедура Подключаемый_ВыполнитьКомандуНаСервере(Контекст, Результат) Экспорт
    ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, Контекст, Элементы.Список, Результат);
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
    ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Элементы.Список);
КонецПроцедуры
// Конец СтандартныеПодсистемы.ПодключаемыеКоманды

#КонецОбласти
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой