|
Программно отключить стандартную кнопку "Обновить" динамического списка управляемой формы | ☑ | ||
---|---|---|---|---|
0
TormozIT
гуру
27.05.22
✎
13:43
|
Потребовалось программно подменить стандартную кнопку "Обновить" динамического списка управляемой формы, чтобы сложным образом накладывать отбор при каждом обновлении списка.
Свою команду+кнопку сделал и она работает. Теперь хочется повесить на нее сочетание клавиш F5 и отключить стандартную кнопку "Обновить", т.к. иначе по F5 только она будет работать. Как это сделать по возможности универсально? У меня есть командная панель. Надо найти в ней кнопку стандартной команды "Обновить". Пока придумал только перебирать все кнопки и проверить, что имя кончается на "Обновить". Но хочется чего то красивее и надежнее. https://i.imgur.com/u81DDOn.png |
|||
1
TormozIT
гуру
27.05.22
✎
13:55
|
Почему ты молчишь?
|
|||
2
vicof
27.05.22
✎
14:14
|
Отключить автозаполнение и сделать свою панель, с блэкджеком и кнопками, не?
|
|||
3
youalex
27.05.22
✎
14:15
|
Программно - Если только всю панель убрать, вместо нее свою подсунуть
ПоложениеКоманднойПанелиЭлементаФормы (FormItemCommandBarLabelLocation) Нет (None) |
|||
4
TormozIT
гуру
27.05.22
✎
14:19
|
(3) Есть пример как сделать БЕЗ автозаполнения такую же командную панель как с автозаполнением? Кажется это будет непростая задача, если делать универсально.
|
|||
5
youalex
27.05.22
✎
14:44
|
(4) Не знаю, плюс как программно назначить стандартное действие для команды - тоже непонятно)
|
|||
6
TormozIT
гуру
27.05.22
✎
14:47
|
Пока сделал так
СочетаниеКлавишF5 = Новый сочетаниеКлавиш(Клавиша.F5); Для Каждого Кнопка Из КоманднаяПанельСписка.ПодчиненныеЭлементы Цикл Если Истина И ТипЗнч(Кнопка) = Тип("КнопкаФормы") И Кнопка.Видимость И Кнопка.ИмяКоманды = "" И СтрЗаканчиваетсяНа(Кнопка.ИмяКоманды, "Обновить") Тогда // Таким некрасивым путем ищем стандартную кнопку "Обновить", т.к. других путей в 8.3.21 не найдено КнопкаОбновить = Кнопка; Прервать; КонецЕсли; КонецЦикла; |
|||
7
TormozIT
гуру
27.05.22
✎
14:49
|
(6) Исправил
СочетаниеКлавишF5 = Новый сочетаниеКлавиш(Клавиша.F5); Для Каждого Кнопка Из КоманднаяПанельСписка.ПодчиненныеЭлементы Цикл Если Истина И ТипЗнч(Кнопка) = Тип("КнопкаФормы") И Кнопка.Видимость И Кнопка.ИмяКоманды = "" И СтрЗаканчиваетсяНа(Кнопка.Имя, "Обновить") Тогда // Таким некрасивым путем ищем стандартную кнопку "Обновить", т.к. других путей в 8.3.21 не найдено КнопкаОбновить = Кнопка; Прервать; КонецЕсли; КонецЦикла; |
|||
8
Aleksandr N
27.05.22
✎
14:51
|
(0) вроде через состав команд можно убирать ненужные команды.
|
|||
9
Галахад
гуру
27.05.22
✎
14:53
|
(7) А в чем прикол такого написания?
Если Истина И ТипЗнч(Кнопка) = Тип("КнопкаФормы") |
|||
10
TormozIT
гуру
27.05.22
✎
14:58
|
(8) Пример кода в студию. На самом деле нельзя это делать программно.
|
|||
11
TormozIT
гуру
27.05.22
✎
15:01
|
(9) А в отборе компоновкки тебе такое написание норм?
https://i.imgur.com/WJpmEIk.png Здесь примерно тот же прикол - более структурное и гранулярное представление сложного выражения. https://infostart.ru/1c/articles/152801/ |
|||
12
Aleksandr N
27.05.22
✎
15:06
|
(11) В вашей статье элементарные и очевидные вещи описаны.
(10) Программно да, так не сделать. |
|||
13
Галахад
гуру
27.05.22
✎
16:13
|
(11) Почитал. Спасибо.
|
|||
14
mikecool
27.05.22
✎
16:48
|
(11) с таким подходом некоторые товарищи тоже умудряются наворотить лес
|
|||
15
ДедМорроз
27.05.22
✎
19:36
|
Если мы хотим список сами обновлять,то,может быть,проще сразу таблицу или список значений сделать?
Тогда все будет сразу автоматом. |
|||
16
TormozIT
гуру
28.05.22
✎
11:14
|
(15) Мне это надо делать во всех формах списков динамически.
|
|||
17
ДедМорроз
28.05.22
✎
16:04
|
А то,что список может быть обновлен внутренним событием изменения списка через оповещение ?
|
|||
18
Dzenn
гуру
28.05.22
✎
23:44
|
мне кажется, правильнее всего при таких потребностях — это пересмотреть задачу, сделать её другим, более изящным способом
|
|||
19
TormozIT
гуру
29.05.22
✎
00:34
|
(17) Методом Обновить() (в частности из оповещения) только запрос списка выполняется, а по F5 обновляется отбор запроса списка и затем выполняется запрос. Это приемлемо.
|
|||
20
Конструктор1С
29.05.22
✎
06:00
|
(7) слишком сложная логическая проверка. Вынеси её в отдельную функцию
Если ЭтоСтандартнаяКнопкаОбновить(Кнопка) Тогда |
|||
21
Конструктор1С
29.05.22
✎
06:03
|
(11) >>более структурное и гранулярное представление сложного выражения
сложное выражение принято выделять в отдельную функцию с "поясняющим" именем |
|||
22
TormozIT
гуру
29.05.22
✎
09:23
|
(20), (21) Веской причиной для вынесения кода в метод является его использование двух местах. Дальше идет слишком большое число (у каждого свое). А твое предложение - вкусовщина. Не смог пройти мимо? =)
|
|||
23
TormozIT
гуру
29.05.22
✎
09:24
|
(22) -> слишком большое число строк
|
|||
24
Конструктор1С
29.05.22
✎
09:31
|
(22) веской причиной вынесения кода в метод яаляется снижение сложности в коде, которую ты вываливаешь на читающего твой код
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |