|   |   | 
| 
 | Программно отключить стандартную кнопку "Обновить" динамического списка управляемой формы | ☑ | ||
|---|---|---|---|---|
| 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) веской причиной вынесения кода в метод яаляется снижение сложности в коде, которую ты вываливаешь на читающего твой код     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |