Программно открыть дополнительную внешнюю обработку в небезопасном режиме
Пользователи открывали обработку Клиент-банк через Файл-Открыть, но в таком режиме она не давала делать некоторые операции, т.к. все внешние обработки открываются в безопасном режиме у пользователей, не имеющих полных прав.
Выход вроде бы очевиден — добавить в дополнительные внешние обработки.
Но у обработки всего две команды — Выгрузить и Загрузить. Обе вызывают ошибку при запуске. А команды для открытия формы обработки нет:

Можно, конечно, дописать такую команду, но это придется делать каждый раз при обновлении обработки, а она меняется нередко — банк любит модернизации.
Создал пустую внешнюю обработку. Для открытия формы буду использовать тип команды «Открытие формы». Сначала я хотел использовать «вызов клиентского метода», но потом обнаружил, что такую команду нельзя добавить в интерфейс пользователя.
Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке(СтандартныеПодсистемыСервер.ВерсияБиблиотеки());
Заголовок = НСтр(«ru = ‘Открытие клиент-банка'»);
ПараметрыРегистрации.Информация = Заголовок;
ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительнаяОбработка();
ПараметрыРегистрации.Версия = «2021-04-23»;
ПараметрыРегистрации.БезопасныйРежим = Истина;
Команда = ПараметрыРегистрации.Команды.Добавить();
Команда.Представление = Заголовок;
Команда.Идентификатор = СтрЗаменить(Заголовок, » «, «»);
Команда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыОткрытиеФормы();
Команда.ПоказыватьОповещение = Ложь;
Возврат ПараметрыРегистрации;
КонецФункции
Вопрос, как открывать дополнительную внешнюю обработку, адресовал в Google, оказывается есть уже готовая функция в БСП. Правда, я не был уверен, что эта функция есть в УНФ, но нашлась поиском.
Сам код по открытию нужно прописывать форме обработки, хотя она и не используется:
&НаСервере
Функция НайтиДополнительнуюВнешнююОбработку() Экспорт
З = Новый Запрос(
«ВЫБРАТЬ
| ДополнительныеОтчетыИОбработки.Ссылка КАК Ссылка
|ИЗ
| Справочник.ДополнительныеОтчетыИОбработки КАК ДополнительныеОтчетыИОбработки
|ГДЕ
| НЕ ДополнительныеОтчетыИОбработки.ПометкаУдаления
| И ДополнительныеОтчетыИОбработки.ИмяОбъекта = &ИмяОбъекта
| И ДополнительныеОтчетыИОбработки.Публикация = ЗНАЧЕНИЕ(Перечисление.ВариантыПубликацииДополнительныхОтчетовИОбработок.Используется)»);
З.УстановитьПараметр(«ИмяОбъекта», «КлиентБанк»);
Выборка = З.Выполнить().Выбрать();
Если выборка.Следующий() Тогда
Возврат Выборка.Ссылка;
КонецЕсли;
КонецФункции
&НаКлиенте
Процедура ПриОткрытии(Отказ)
Отказ = истина;
ВыполняемаяКоманда = Новый Структура(«ЭтоОтчет, Ссылка, Идентификатор», ложь);
ВыполняемаяКоманда.Ссылка = НайтиДополнительнуюВнешнююОбработку();
Если ВыполняемаяКоманда.Ссылка = Неопределено Тогда
ПоказатьПредупреждение(, «Не найдена дополнительная внешняя обработка с именем объекта КлиентБанк!»);
Возврат;
КонецЕсли;
ОбъектыНазначения = Неопределено;
ДополнительныеОтчетыИОбработкиКлиент.ВыполнитьОткрытиеФормыОбработки(ВыполняемаяКоманда, ЭтаФорма, ОбъектыНазначения);
КонецПроцедуры
Как видно из кода, обработку ищу по признаку, что она опубликована (используется) и по названию клиентского метода:

Все работает, обработка вызывается. Осталось только разместить этот статер в командах пользователя.

Но тут возникла проблема с безопасным режимом, обработка выдает ошибку:

Начал смотреть код и обнаружил, что эта ошибка из-за того, что у клиента включены зачем-то профили безопасности:

Возможно, раньше база была на облаке, а потом переехала локально.
Попробовал дать разрешение на использование временных файлов (это меня спасало во Fresh):
Разрешение = РаботаВБезопасномРежиме.РазрешениеНаИспользованиеКаталогаВременныхФайлов(Ложь, Истина, «Тест»);
ПараметрыРегистрации.Разрешения.Добавить(Разрешение);

Оказалось, что нужно указать еще и версию БСП, чтобы обработка корректно работала.

ПараметрыРегистрации.ВерсияБСП = «1.2.1.4»; //Чтобы работал безопасный режим
В конечном итоге удалось запустить клиент-банк в безопасном режиме, но это потребовало слишком много усилий.

Нашел статью про профили безопасности, но так и не понял, зачем они используются. В общем, против лома нет приема и даже при включенных профилях безопасности можно добиться работы обработки не в безопасном режиме!
Время факт: 1.5 час. Среда: УНФ 1.6.24.107

Что за Банк?
Коммерческая тайна.
Вот смотрю я на это и у меня кровь из глаз идет — как на селезневской все по колхозному делают.