Первый вариант:
Используем прилагаемый файл конфигурации.
Останится отредактировать только параметр Тип параметра команды у команды. Как сделать, описано ниже.
Второй вариант:
1) Создаем команду с именем (например): НайтиВСписке
2) Далее настройка параметров команды
Параметр Группа
Устанавливаем значение Командная панель формы.Важное
Параметр Тип параметра команды
Нажимаем кнопку выбора.
В открывшемся окне раскрываем все папки кроме "ПеречислениеСсылка" и "ТочкаМаршрутаБизнессПроцессаСсылка".
Нажимаем комбнацию "Ctrl + A". Нажимаем "Пробел". Должны появится флажки у выделенных объектов.
Нажимаем ОК.
Параметр Картинка
Так как в режиме управляемого приложения установить стандартную картинку "Найти в списке" не даст конфигуратор, нам необходимо перевести конфигурацию в "Обычное приложение".
Переходим в корневой узел конфигурации.
Открываем свойства.
Находим параметр "Основной режим запуска".
Меняем его на "обычное приложение".
Теперь можно выбрать для нашей команды стандартную картинку "Найти в списке"
3) Добавляем код для нашей команды
&НаСервере
Функция ПолучитьДанныеМенеджераНаСервере(Ссылка)
Менеджер = Новый Структура();
Если Справочники.ТипВсеСсылки().СодержитТип(ТипЗнч(Ссылка)) Тогда
Менеджер.Вставить("ТипОбъекта", "Справочник");
ИначеЕсли Документы.ТипВсеСсылки().СодержитТип(ТипЗнч(Ссылка)) Тогда
Менеджер.Вставить("ТипОбъекта", "Документ");
ИначеЕсли ПланывидовХарактеристик.ТипВсеСсылки().СодержитТип(ТипЗнч(Ссылка)) Тогда
Менеджер.Вставить("ТипОбъекта", "ПланВидовХарактеристик");
ИначеЕсли Задачи.ТипВсеСсылки().СодержитТип(ТипЗнч(Ссылка)) Тогда
Менеджер.Вставить("ТипОбъекта", "Задача");
ИначеЕсли БизнесПроцессы.ТипВсеСсылки().СодержитТип(ТипЗнч(Ссылка)) Тогда
Менеджер.Вставить("ТипОбъекта", "БизнесПроцесс");
КонецЕсли;
Менеджер.Вставить("ИмяМенеджера", Ссылка.Метаданные().Имя);
Менеджер.Вставить("ИмяФормыСписка", Ссылка.Метаданные().ОсновнаяФормаСписка.ПолноеИмя());
Возврат Менеджер;
КонецФункции
&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
Перем ТипОбъекта;
//Разрешить использовать не основные формы списка объект для позиционирования
РазрешитьИспользоватьНеОсновныеФормыСписка = Истина;
//Заменять идентифицированную форму списка на основную форму списка.
//При значении Истина, рекомендую флаг РазрешитьИспользоватьНеОсновныеФормыСписка установить в Ложь;
ЗаменятьОткрытуюФормуНовой = Ложь;
//---------------------------------------------------------------------------
ДанныеМенеджера = ПолучитьДанныеМенеджераНаСервере(ПараметрКоманды);
Если ДанныеМенеджера.Свойство("ТипОбъекта", ТипОбъекта) <> Неопределено Тогда
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("ТекущаяСтрока", ПараметрКоманды);
ИмяФормы = ""+ТипОбъекта+"."+ДанныеМенеджера.ИмяМенеджера+".ФормаСписка";
ИмяОбъекта = ""+ТипОбъекта+"."+ДанныеМенеджера.ИмяМенеджера;
ИмяФормыВыбора = ""+ТипОбъекта+"."+ДанныеМенеджера.ИмяМенеджера+".ФормаВыбора";
ИмяФормыСписка = ДанныеМенеджера.ИмяФормыСписка;
Если ИмяФормы = ПараметрыВыполненияКоманды.Источник.ИмяФормы Тогда
Возврат;
ИначеЕсли ПараметрыВыполненияКоманды.Источник.ИмяФормы = ИмяФормыВыбора Тогда
Возврат;
КонецЕсли;
Окна = ПолучитьОкна();
Для Н = 0 По Окна.Количество() - 1 Цикл
ФормаОкна = Окна[н].ПолучитьСодержимое();
Если ФормаОкна = Неопределено Тогда
Продолжить;
ИначеЕсли ФормаОкна.ИмяФормы = ИмяФормыСписка Тогда
//Нашли основную форму списка
ОсновнаяФормаСписка = ФормаОкна;
НашеОкно = Окна[н];
ФормаНашегоОкна = ФормаОкна;
Прервать;
ИначеЕсли РазрешитьИспользоватьНеОсновныеФормыСписка
И Найти(ФормаОкна.ИмяФормы, ИмяОбъекта) И Найти(НРег(ФормаОкна.ИмяФормы), "формасписка") Тогда
//Нашли форму списка нашего объекта, но не основную
ИмяФормы = ФормаОкна.ИмяФормы;
НашеОкно = Окна[н];
ФормаНашегоОкна = ФормаОкна;
КонецЕсли;
КонецЦикла;
Если НашеОкно <> Неопределено Тогда
Если ЗаменятьОткрытуюФормуНовой Тогда
ОткрытьФорму(ИмяФормы, ПараметрыФормы, , Ложь, НашеОкно);
Иначе
Для Каждого Элемент Из ФормаНашегоОкна.Элементы Цикл
Если ТипЗнч(Элемент) = Тип("ТаблицаФормы") Тогда
Элемент.ТекущаяСтрока = ПараметрКоманды;
КонецЕсли;
КонецЦикла;
НашеОкно.Активизировать();
КонецЕсли;
Иначе
ОткрытьФорму(ИмяФормы, ПараметрыФормы, , Ложь);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Вот собственно и все.
Флаг РазрешитьИспользоватьНеОсновныеФормыСписка определяет разрешено ли использовать для позиционирования искомого элемента формы объекта, содержащие в имени текст "ФормаСписка".
А нахрена?! Для примера, документ "Заказ покупателя" в УТ11 имеет две формы списка "ФормаСписка" и "ФормаСпискаДокументов". Основной является "ФормаСписка", однако из интерфейса открывается "ФормаСпискаДокументов".
Для того, чтобы при использовании команды "Найти в списке", при открытой форме "ФормаСпискаДокументов" не открывалась форма "ФормаСписка", а использовалась форма "ФормаСпискаДокументов", была написан этот код.
Флаг ЗаменятьОткрытуюФормуНовой определяет, будет ли заменяться уже открытая форма новой.
Есть некоторые особенности:
- Данная команда будет появлять во всех формах. Даже там где она не нужна (форма списка, форма выбора).
- Даже если у вас уже открыта форма списка искомого элемента, открытая через диалог, будет открыта новая форма списка.
Я не понял почему это происходи. Если кто найдет причину, отпишите. Утранил. - Как видно из кода, искомое значение пересылается во все списки формы списка. Решение не совсем корректное с точки зрения разработки, но зато универсальное. Верно только для уже открытых форм.