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

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

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

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