Как программно открыть обработку не помещая во временное хранилище?
Нужно программно (нажатием на кнопку) открыть основную форму обработки так, чтобы это было так, будто мы открываем её через "файл - открыть". Кучу форумов излазил, много кода перепробовал но так и не получилось. Для чего мне это нужно - для того, чтобы снова открыть пересохранённую обработку для отладки. У меня получилось только открыть её повторно, но она из временного хранилища, поэтому отладка уже недоступна (только если в конфигураторе её открыть из папки temp). Элементарнейшая задача казалось бы, но на деле достаточно не простая. Прежде чем писать ответ по существую - проверьте сами, откроется ли у вас обработка и будет ли продолжать работать её отладка.
По теме из базы знаний
Найденные решения
(2) Безупречно! Благодарю и отдаю $m. Как раз некоторых моментов мне и не хватало для решения. Проверил, упростил и оставлю здесь итоговый код решения.
&НаКлиенте
Процедура Переоткрыть(Команда)
ИмяОбработки = ПолучитьИмяПодключеннойОбработки();
ЭтаФорма.Закрыть();
ОткрытьФорму("ВнешняяОбработка."+ ИмяОбработки +".ФормаОбъекта");
КонецПроцедуры
Функция ПолучитьИмяПодключеннойОбработки()
ПолноеИмяФайла = РеквизитФормыВЗначение("Объект").ИспользуемоеИмяФайла;
ОЗООД = Новый ОписаниеЗащитыОтОпасныхДействий;
ОЗООД.ПредупреждатьОбОпасныхДействиях = Ложь;
ИмяОбработки = ВнешниеОбработки.Создать(ПолноеИмяФайла, Ложь, ОЗООД).Метаданные().Имя;
Возврат ИмяОбработки;
КонецФункции
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Процедуру ПриЗакрытии - прописать в события формы
&НаКлиенте
Перем Переоткрывать;
&НаКлиенте
Процедура Переоткрыть(Команда)
Переоткрывать = Истина;
ЭтаФорма.Закрыть();
КонецПроцедуры
&НаКлиенте
Процедура ПриЗакрытии(ЗавершениеРаботы)
Если Переоткрывать = Истина Тогда
Переоткрывать = Ложь;
ИмяОбработки = ПереоткрытьНаСервере();
ОткрытьФорму("ВнешняяОбработка."+ ИмяОбработки +".ФормаОбъекта");
КонецЕсли
КонецПроцедуры
&НаСервере
Функция ПереоткрытьНаСервере()
ОбработкаОбъект = РеквизитФормыВЗначение("Объект");
ИмяФайла = ОбработкаОбъект.ИспользуемоеИмяФайла;
ОЗООД = Новый ОписаниеЗащитыОтОпасныхДействий;
ОЗООД.ПредупреждатьОбОпасныхДействиях = Ложь;
ВнешняяОбработка = ВнешниеОбработки.Создать(ИмяФайла, Ложь, ОЗООД);
Возврат ВнешняяОбработка.Метаданные().Имя;
КонецФункции
Показать
(2) Безупречно! Благодарю и отдаю $m. Как раз некоторых моментов мне и не хватало для решения. Проверил, упростил и оставлю здесь итоговый код решения.
&НаКлиенте
Процедура Переоткрыть(Команда)
ИмяОбработки = ПолучитьИмяПодключеннойОбработки();
ЭтаФорма.Закрыть();
ОткрытьФорму("ВнешняяОбработка."+ ИмяОбработки +".ФормаОбъекта");
КонецПроцедуры
Функция ПолучитьИмяПодключеннойОбработки()
ПолноеИмяФайла = РеквизитФормыВЗначение("Объект").ИспользуемоеИмяФайла;
ОЗООД = Новый ОписаниеЗащитыОтОпасныхДействий;
ОЗООД.ПредупреждатьОбОпасныхДействиях = Ложь;
ИмяОбработки = ВнешниеОбработки.Создать(ПолноеИмяФайла, Ложь, ОЗООД).Метаданные().Имя;
Возврат ИмяОбработки;
КонецФункции
Показать
ИмяФайла можете конкретное прописать т.е. вместо
написать тот путь к обработке, который в конфигураторе открыли и редактируете-сохраняете
ИмяФайла = ОбработкаОбъект.ИспользуемоеИмяФайла;
написать тот путь к обработке, который в конфигураторе открыли и редактируете-сохраняете
ИмяФайла = "s:\WordPressWoo\ОбменWooCommerce.epf";
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот