В поисках пропавшей кнопки
Не обнаружив кнопку "Найти в списке" в типовых решениях на управляемых формах (БП 3.0, УТ 11) сначала очень удивился, а потом решил ее добавить. Добавить кнопку можно всего за несколько минут во все необходимые документы и справочники, причем при обновлении ничего дополнительно делать не придется — добавляется одна общая команда.
- Описание
- Подробнее
Описание
Итак, по пунктам:
- Создаем общую команду «НайтиВСписке»
- В свойствах команды указываем:
- Группа — Командная панель формы.Важное
- Тип параметра команды — ставим флажок «Составной тип» и отмечаем те справочники и документы, в которых мы хотим видеть нашу кнопку.
- Отображение — Картинка
- Картинка — выбираем подходящую картинку (в типовой БП 3.0 есть картинка «КнопкаНайтиВСписке»)
- Остальные свойства оставляем без изменений.
- В модуль команды помещаем следующий программный код:
&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
МетаИмя = ВернутьИмя(ПараметрКоманды);
НашлиОткрытую = Ложь;
Окна = ПолучитьОкна();
Для каждого Окно Из Окна Цикл
Форма = Окно.ПолучитьСодержимое();
Если Форма = Неопределено Тогда
Продолжить;
КонецЕсли;
Если Форма.ИмяФормы = МетаИмя + ".Форма.ФормаСписка" Тогда
Форма.Элементы.Список.ТекущаяСтрока = ПараметрКоманды;
Форма.Активизировать();
НашлиОткрытую = Истина;
КонецЕсли;
КонецЦикла;
Если Не НашлиОткрытую Тогда
ОткрытьФорму(МетаИмя + ".ФормаСписка", Новый Структура("ТекущаяСтрока", ПараметрКоманды));
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ВернутьИмя(ПараметрКоманды)
Возврат ПараметрКоманды.Метаданные().ПолноеИмя();
КонецФункцииВсе, кнопка готова — сохраняем, запускаем, пользуемся.
Все очень просто и быстро, но есть один момент. Сейчас наша кнопка появилась и в форме элемента (документа) и в форме списка, что очевидно не имеет смысла. А вот чтобы ее убрать из форм списков, нужно зайти в каждую из форм и выключить соответствующий флажок в командном интерфейсе формы — раздел Командная панель — Важное. В принципе можно этого и не делать — нажатие на кнопку в форме списка не приведет к ошибке, зато не придется проделывать эту операцию при обновлениях. А можно и сделать …. — выбор остается за вами. Хорошего кода!
p.s.
В приведенном коде учтены замечания из комментариев, что позволило его улучшить.

