Вчера ко мне обратился коллега с интересным вопросом, у него есть печатная форма и её нельзя развернуть на весь экран или свернуть, а желание сделать это есть.
Разбираемся как вернуть кнопку.
Будем разбираться с проблемой с конца.
У нас есть печатная форма, которую пользователи хотят развернуть на весь экран, но такой кнопки нет.
Разобрав код и бизнес логику стало понятно в чем дело, сейчас повторим воссоздав тестовый пример. Сразу скажу что такое поведение платформы проявляется в обычных формах и воспроизводилось на платформе 8.3.18.
Создадим в пустой конфигурации метаданные для теста
Обычные формы
Создаем тестовый документ.
Добавим пару реквизитов, форму документа, произвольную форму и макет.
На форму добавим кнопку открытия произвольной формы модально, а на произвольную форму добавим кнопку открытия макета.
Кнопка открытия произвольной формы модально, на форме документа.
Форма = ПолучитьФорму("Форма"); Форма.ОткрытьМодально();
Кнопка открытия печатной формы, на произвольной форме.
Процедура ОсновныеДействияФормытест2(Кнопка) ТабДок = ПолучитьМакетНаСервере(); ТабДок.показать(); КонецПроцедуры Функция ПолучитьМакетНаСервере() ТабДок = Новый ТабличныйДокумент; Макет = Документы.Документ1.ПолучитьМакет("Макет"); ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок"); ОбластьПодвал = Макет.ПолучитьОбласть("Подвал"); ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы"); ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы"); ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали"); ТабДок.Очистить(); ТабДок.Вывести(ОбластьЗаголовок); ТабДок.Вывести(ОбластьШапкаТаблицы); ТабДок.Вывести(ОбластьДетальныхЗаписей); ТабДок.Вывести(ОбластьПодвалТаблицы); ТабДок.Вывести(ОбластьПодвал); ТабДок.ОтображатьСетку = Ложь; Возврат ТабДок; КонецФункции
Меняем строчку открытия модально на простое открытие в форме документа и повторяем эксперимент.
Процедура ОсновныеДействияФормыТест(Кнопка) Форма = ПолучитьФорму("Форма"); //Форма.ОткрытьМодально(); Форма.Открыть(); КонецПроцедуры
Открыв форму в обычном режиме и видим, что кнопки свернуть и развернуть появляются.
Поведение с кнопкой свернуть понятно, если свернуть форму в модальном режиме, то мы не сможем её потом развернуть, а кнопка развернуть видимо пропадает за компанию.
Вывод: Проектируйте решения без печати из модального окна.
Управляемые формы
Проделываем все то же самое только на управляемых формах.
Кнопка тест на форме документа
&НаКлиенте Процедура Тест(Команда) ОткрытьФорму("Документ.Документ1.Форма.Форма",,,,,,,РежимОткрытияОкнаФормы.БлокироватьВесьИнтерфейс); КонецПроцедуры
Кнопка тест2 для показа печатной формы в произвольном документе.
&НаКлиенте Процедура тест2(Команда) ТабДок = ПолучитьМакетНаСервере(); ТабДок.показать(); КонецПроцедуры &НаСервере Функция ПолучитьМакетНаСервере() ТабДок = Новый ТабличныйДокумент; Макет = Документы.Документ1.ПолучитьМакет("Макет"); ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок"); ОбластьПодвал = Макет.ПолучитьОбласть("Подвал"); ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы"); ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы"); ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали"); ТабДок.Очистить(); ТабДок.Вывести(ОбластьЗаголовок); ТабДок.Вывести(ОбластьШапкаТаблицы); ТабДок.НачатьАвтогруппировкуСтрок(); ТабДок.Вывести(ОбластьДетальныхЗаписей); ТабДок.ЗакончитьАвтогруппировкуСтрок(); ТабДок.Вывести(ОбластьПодвалТаблицы); ТабДок.Вывести(ОбластьПодвал); Возврат ТабДок; КонецФункции
Повторяем весь путь в управляемом приложении
В результате эксперимента видим что все кнопки свернуть\развернуть на месте, а печатная форма открывается в отдельном независимом окне не привязанное к интерфейсу, т.е. интерфейс заблокирован на произвольной форме, а печатная форма живет своей жизнью.
Желаю всем работать с актуальными технологиями и современным стеком.
Добавить комментарий
Для отправки комментария вам необходимо авторизоваться.