УПП. Рефакторинг внешних печатных форм

1. Gasilin 45 22.09.20 17:14 Сейчас в теме
Здравствуйте.
Может кто сталкивался с подобным.
В "наследство" досталась УПП и много старых внешних печатных форм 10-летней давности в обычном приложении.
Печатные формы имеют свою дополнительную форму настроек, например "ВыборОтветственногоЛица".
В конфигурации влкючен режим использоваения модальности.

В функции Печать обработки внешней ПФ встречаются такие конструкции:

Форма = ПолучитьФорму("ВыборОтветственногоЛица");
	Если Форма.Открыта() тогда
		Форма.Закрыть("Да");
	Иначе
		Тест = Форма.ОткрытьМодально();
		Если (Тест <> "Да") Тогда
			Возврат Неопределено;
		КонецЕсли;
	КонецЕсли;
Показать


Естественно, при "поднятии" платформы выше, чем 8.3.14 конструкция Форма.Открыта() не видит свою же открытую форму и открывает еще и еще себя же.

Может кто уже делал рефакторинг и поделится быстрым решением.
Заранее спасибо за ответы.
Прикрепленные файлы:
Внешняя печатная форма ОС4_000000102.epf
По теме из базы знаний
Найденные решения
4. SlavaKron 23.09.20 18:31 Сейчас в теме
Странно как раньше это могло работать – по идее, пока модальное окно не закроется и не вернет результат закрытия, выполнение кода прерывается в модуле, открывшем его, и переходит в модуль открытой формы. То есть, для модально открытой формы невозможно определить открыта ли она в принципе.

Исправьте в модуле обработки:
Функция Печать() Экспорт
	
	Форма = ПолучитьФорму("ВыборОтветственногоЛица");
	Форма.ОткрытьМодально();
	Возврат ПечатьСписаниеОС(Ложь);
	
КонецФункции // Печать


А в модуле формы ВыборОтветственногоЛица Печать() замените на Закрыть()
Процедура КнопкаВыполнитьНажатие(Кнопка)
	Закрыть();
КонецПроцедуры
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Release 22.09.20 17:20 Сейчас в теме
(1) Может дело в этом:
ПолучитьФорму(<ИмяФормы>, <Параметры>, <Владелец>, <Уникальность>, <Окно>, <НавигационнаяСсылка>)
<Уникальность> (необязательный)
Тип: Произвольный.
В данном параметре может быть задан некоторый ключ, значение которого будет использоваться для поиска уже открытых форм. Если будет найдена форма с таким же ключом уникальности, вместо открытия новой формы будет активизирована найденная форма.
...
3. Gasilin 45 23.09.20 17:30 Сейчас в теме
Примечание:
В тонком и веб-клиенте получает только форму клиентского приложения.
Обычные формы внешних обработок не поддерживаются.
Если при получении обычной формы в параметре <ИмяФормы> указано не стандартное имя формы, передаваемые параметры не обрабатываются.
4. SlavaKron 23.09.20 18:31 Сейчас в теме
Странно как раньше это могло работать – по идее, пока модальное окно не закроется и не вернет результат закрытия, выполнение кода прерывается в модуле, открывшем его, и переходит в модуль открытой формы. То есть, для модально открытой формы невозможно определить открыта ли она в принципе.

Исправьте в модуле обработки:
Функция Печать() Экспорт
	
	Форма = ПолучитьФорму("ВыборОтветственногоЛица");
	Форма.ОткрытьМодально();
	Возврат ПечатьСписаниеОС(Ложь);
	
КонецФункции // Печать


А в модуле формы ВыборОтветственногоЛица Печать() замените на Закрыть()
Процедура КнопкаВыполнитьНажатие(Кнопка)
	Закрыть();
КонецПроцедуры
5. Gasilin 45 24.09.20 16:38 Сейчас в теме
(4) Спасибо! Вполне рабочий вариант!
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот