Здравствуйте.
Может кто сталкивался с подобным.
В "наследство" досталась УПП и много старых внешних печатных форм 10-летней давности в обычном приложении.
Печатные формы имеют свою дополнительную форму настроек, например "ВыборОтветственногоЛица".
В конфигурации влкючен режим использоваения модальности.
В функции Печать обработки внешней ПФ встречаются такие конструкции:
Естественно, при "поднятии" платформы выше, чем 8.3.14 конструкция Форма.Открыта() не видит свою же открытую форму и открывает еще и еще себя же.
Может кто уже делал рефакторинг и поделится быстрым решением.
Заранее спасибо за ответы.
Может кто сталкивался с подобным.
В "наследство" досталась УПП и много старых внешних печатных форм 10-летней давности в обычном приложении.
Печатные формы имеют свою дополнительную форму настроек, например "ВыборОтветственногоЛица".
В конфигурации влкючен режим использоваения модальности.
В функции Печать обработки внешней ПФ встречаются такие конструкции:
Форма = ПолучитьФорму("ВыборОтветственногоЛица");
Если Форма.Открыта() тогда
Форма.Закрыть("Да");
Иначе
Тест = Форма.ОткрытьМодально();
Если (Тест <> "Да") Тогда
Возврат Неопределено;
КонецЕсли;
КонецЕсли;
ПоказатьЕстественно, при "поднятии" платформы выше, чем 8.3.14 конструкция Форма.Открыта() не видит свою же открытую форму и открывает еще и еще себя же.
Может кто уже делал рефакторинг и поделится быстрым решением.
Заранее спасибо за ответы.
Прикрепленные файлы:
Внешняя печатная форма ОС4_000000102.epf
По теме из базы знаний
Найденные решения
Странно как раньше это могло работать – по идее, пока модальное окно не закроется и не вернет результат закрытия, выполнение кода прерывается в модуле, открывшем его, и переходит в модуль открытой формы. То есть, для модально открытой формы невозможно определить открыта ли она в принципе.
Исправьте в модуле обработки:
А в модуле формы ВыборОтветственногоЛица Печать() замените на Закрыть()
Исправьте в модуле обработки:
Функция Печать() Экспорт
Форма = ПолучитьФорму("ВыборОтветственногоЛица");
Форма.ОткрытьМодально();
Возврат ПечатьСписаниеОС(Ложь);
КонецФункции // Печать
А в модуле формы ВыборОтветственногоЛица Печать() замените на Закрыть()
Процедура КнопкаВыполнитьНажатие(Кнопка)
Закрыть();
КонецПроцедуры
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) Может дело в этом:
ПолучитьФорму(<ИмяФормы>, <Параметры>, <Владелец>, <Уникальность>, <Окно>, <НавигационнаяСсылка>)
<Уникальность> (необязательный)
Тип: Произвольный.
В данном параметре может быть задан некоторый ключ, значение которого будет использоваться для поиска уже открытых форм. Если будет найдена форма с таким же ключом уникальности, вместо открытия новой формы будет активизирована найденная форма.
...
<Уникальность> (необязательный)
Тип: Произвольный.
В данном параметре может быть задан некоторый ключ, значение которого будет использоваться для поиска уже открытых форм. Если будет найдена форма с таким же ключом уникальности, вместо открытия новой формы будет активизирована найденная форма.
...
Примечание:
В тонком и веб-клиенте получает только форму клиентского приложения.
Обычные формы внешних обработок не поддерживаются.
Если при получении обычной формы в параметре <ИмяФормы> указано не стандартное имя формы, передаваемые параметры не обрабатываются.
В тонком и веб-клиенте получает только форму клиентского приложения.
Обычные формы внешних обработок не поддерживаются.
Если при получении обычной формы в параметре <ИмяФормы> указано не стандартное имя формы, передаваемые параметры не обрабатываются.
Странно как раньше это могло работать – по идее, пока модальное окно не закроется и не вернет результат закрытия, выполнение кода прерывается в модуле, открывшем его, и переходит в модуль открытой формы. То есть, для модально открытой формы невозможно определить открыта ли она в принципе.
Исправьте в модуле обработки:
А в модуле формы ВыборОтветственногоЛица Печать() замените на Закрыть()
Исправьте в модуле обработки:
Функция Печать() Экспорт
Форма = ПолучитьФорму("ВыборОтветственногоЛица");
Форма.ОткрытьМодально();
Возврат ПечатьСписаниеОС(Ложь);
КонецФункции // Печать
А в модуле формы ВыборОтветственногоЛица Печать() замените на Закрыть()
Процедура КнопкаВыполнитьНажатие(Кнопка)
Закрыть();
КонецПроцедуры
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот