// Используется недокументированная особенность (скорее всего ошибка) платформы - 
// глобальная непараметризованная команда формы по горячей клавише сработавает во всех формах, открытых без блокирования других форм

&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)

	#Если ВебКлиент Тогда
		Сообщить("Команда недоступна в вебклиенте");
	#ИначеЕсли ТонкийКлиент Тогда
		ОткрытьФорму("Обработка.ирПортативный.Форма.ПерезапускСеансаУправляемая");
	#Иначе
		ПараметрКоманды = ПолучитьТекущиеСсылкиОбъектов();
		ирОбщий.ОткрытьМассивОбъектовВПодбореИОбработкеОбъектовЛкс(ПараметрКоманды);
	#КонецЕсли 
	
КонецПроцедуры

&НаКлиенте 
Функция ПолучитьТекущиеСсылкиОбъектов()
	
	ТекущееОкно = АктивноеОкно();
	Результат = Новый Массив;
	Если ТипЗнч(ТекущееОкно) = Тип("ОкноКлиентскогоПриложения") Тогда
		ТекущаяФорма = ТекущееОкно.ПолучитьСодержимое();
		Если ТипЗнч(ТекущаяФорма) = Тип("УправляемаяФорма") Тогда
			Если ТипЗнч(ТекущаяФорма.ТекущийЭлемент) = Тип("ТаблицаФормы") Тогда
				Ссылка = ТекущаяФорма.ТекущийЭлемент.ТекущаяСтрока;
				Если КлючСтрокиПодходит(Ссылка) Тогда
					Возврат ТекущаяФорма.ТекущийЭлемент.ВыделенныеСтроки;
				КонецЕсли; 
				Структура = Новый Структура("Ссылка, Data");
				Для Каждого ВыделеннаяСтрока Из ТекущаяФорма.ТекущийЭлемент.ВыделенныеСтроки Цикл
					ДанныеСтроки = ТекущаяФорма.ТекущийЭлемент.ДанныеСтроки(ВыделеннаяСтрока);
					ЗаполнитьЗначенияСвойств(Структура, ДанныеСтроки); 
					Ссылка = Структура["Ссылка"];
					Если КлючСтрокиПодходит(Ссылка) Тогда
						Результат.Добавить(Ссылка);
					КонецЕсли;
					Ссылка = Структура["Data"];
					Если КлючСтрокиПодходит(Ссылка) Тогда
						Результат.Добавить(Ссылка);
					КонецЕсли;
				КонецЦикла;
			КонецЕсли; 
			Если Результат.Количество() = 0 Тогда
				Попытка
					Ссылка = ТекущаяФорма.Объект.Ссылка;
				Исключение
					Ссылка = Неопределено;
				КонецПопытки;
				Если КлючСтрокиПодходит(Ссылка) Тогда
					Результат.Добавить(Ссылка);
				КонецЕсли;
			КонецЕсли; 
		КонецЕсли;
	КонецЕсли;
	Возврат Результат;
	
КонецФункции

&НаКлиенте
Функция КлючСтрокиПодходит(Знач Ссылка)
	
	Возврат Ложь
		Или ирОбщий.ЛиСсылкаНаОбъектБДЛкс(Ссылка) 
		Или ирОбщий.ЛиКлючЗаписиРегистраЛкс(Ссылка);
	
КонецФункции
