Менеджер открытых форм









Обработка получает информацию об открытых формах и позволяет ими манипулировать.

Доброго времени суток!

Обработка поможет разработчикам, которым потребовалось в режиме предприятия открыть скрытые элементы формы, поменять временно их свойства или просто подставить нужное значение в недоступный реквизит, но нет желания (или возможности) подменивать эти значения через отладку конфигуратора. Иногда для тестирования такие манипуляции с формами заметно сокращают затраченное время. 

Данная обработка перехватывает все открытые окна, собирает информацию о формах, выводит её в редактор и позволяет выполнять разные манипуляции.

Инструмент протестирован на файловых и серверных базах платформ 8.3.12 и 8.3.14.

История изменений:

Версия Изменения
0.3.5 1. Увеличена скорость запуска и работы
2. Добавлена возможность прямой работы с реквизитами формы
3. Добавлена возможность отображения истории открытия формы
4. Добавлена возможность работы с параметрами формы
5. Расширенные настройки обработки
0.2.2 1. Добавлена возможность работы с сохранёнными настройками форм
2. Добавлены команды обновления для дерева элементов и свойствах формы
3. Добавлена расширенная подсказка к многим элементам формы в виде кнопок
4. Добавлена возможность отключать вывод расширенной подсказки этой обработки в виде кнопки
0.2.1 1. Добавлена подсказка для консоли кода
2. Добавлена поддержка более ранних версий платформы
3. Добавлена кнопка перехода из обработки на страницу Infostart
4. Исправлена прозрачность иконок в дереве элементов
5. Исправлена ошибка получения расширенной подсказки у управляемой формы

 

Ниже приведена инструкция из обработки:

 

Список открытых форм:

 — обновляет список открытых форм

 — активирует выбранную форму

 — обновляет информацию о выбранной форме

 — устанавливает всем элементам формы ТолькоПросмотр = Ложь и Доступность = Истина

— закрывает выбранную форму

 — открывает настройки этой обработки

 — открывает страницу обработки в Инфостарт

 

Настройки обработки:

Для упрощения работы с инструментом (а так же его ускорения) есть возможность отключать ненужный на данный момент функционал и проводить его настройку.

 

О форме:

Содержит информацию о выбранной форме.

Заголовок — заголовок формы

Ключ— Параметр формы "Ключ". Для форм элементов содержит ссылку на сам элемент.

Уникальный идентификатор — уникальный идентфикатор формы. все операции этой обработки оперируют им при определении формы

Навигационная ссылка — ссылка на форму. Справа от поля есть возможность включитьисключить форму в список избранного платформы.

 

Элементы:

Данный функционал доступен, если в настройках установлен флажок "Работа с элементами форм".

Содержит дерево элементов выбранной формы.

Можно изменить свойства: Видимость, ТолькоПросмотр, Доступность.

При двойном клике по элементу, активируется выбранная форма с позиционированием на выбранный элемент.

Через соответсвующий пункт в контекстом меню (или нажатии F5) дерево обновляется

 

Свойства:

Данный функционал доступен, если в настройках установлен флажок "Работа со свойствами форм".

Список свойств формы.

Через соответствующий пункт в контекстом меню (или нажатии F5) список обновляется

В списке свойств есть АвтоЗаголовок, Доступность, Заголовок, Модифицированность, ТолькоПросмотр

Имеется возможность установки значения любого произвольного свойства формы в пункте "Произвольная установка"

Реквизиты:

Данный функционал доступен, если в настройках установлен флажок "Работа с реквизитами форм".

Содержит дерево реквизитов

Можно изменять значения реквизитов и таблиц формы.

Из-за ограничений платформе, нельзя получить список реквизитов другой открытой формы. В данном инструменте реализовано "сканирование" формы по встроенным шаблонам. Наличие реквизитов, которые не удалось определить, можно проверить вручную, задав имя реквизита в поле внизу таблицы.

Так же есть возможность в настройках инструмента указать список имен реквизитов, наличие которых будет автоматически проверятся в каждой открытой форме.

 

Параметры:

Данный функционал доступен, если в настройках установлен флажок "Показывать параметры форм".

Список параметров формы, которые доступны после её открытия

 

Консоль кода:

Данный функционал доступен, если в настройках установлен флажок "Работа с консолью кода".

Позволяет выполнить код, оперируя выбранной формой. Выполняется изначально код &НаКлиенте, из которого уже можно вызвать выполнение &НаСервере методом ВыполнитьКодНаСервере(ТекстНаСервере, ДополнительныеПараметры);

&НаКлиенте

//Работает непосредственно с выбранной формой в контексте клиента.
//
//Доступные переменные:
// ТекущаяФорма   — выбранная открытая форма;
// ТекстНаСервере   — текст кода, выполняемого на сервере
// ДополнительныеПараметры — структура для обмена данными между клиентом и сервером
//
//Доступные методы:
// ВыполнитьКодНаСервере(ТекстНаСервере, ДополнительныеПараметры);

&НаСервере

//Код выполняется в контексте сервера, но не имеет возможности обратится к форме. Необходим для получения значений, например, из запросов.
//
//Доступные переменные:
// ДополнительныеПараметры — структура для обмена данными между клиентом и сервером

Дополнительные параметры

Таблица с доп. параметрами, которые будут доступны &НаКлиенте и &НаСервере в виде структуры

 

Настройки из хранилища:

Данный функционал доступен, если в настройках обработки стоит галочка "Работа с настройками форм".

Таблица показывает список настроек из хранилища системных настроек для выбранный формы.

Через соответсвующий пункт в командной панели (или нажатии F5) список обновляется
Имеется возможность добавленияизмененияудаления настроек хранилища.

Редактирование самой настройки происходит в виде строки, полученной методом ЗначениеВСтрокуВнутр(Настройка).

История:

Данный функционал доступен, если в настройках обработки стоит галочка "Показывать историю открытия формы".

Платформенная история открытия текущей формы текущим пользователем

 

Если Вам будет полезна обработка, можете поддержать её развитие комментариями иили пожертвованиями.

 

16 Comments

  1. IsiKosta

    Опечатка в наименовании. Или так задумано ? 🙂

    Reply
  2. vdmkvrshn

    Интересно, интересно… давно хотел сам такое разработать. Протестим))

    Reply
  3. ResetAtreides

    А принцип получения открытых форм какой? Раньше вроде вообще возможности такой не было

    Reply
  4. vdmkvrshn

    (2) Недоработок много, но идея хорошая.

    Reply
  5. the1

    (3) на УФ давненько уже

    ПолучитьОкна (GetWindows)

    Синтаксис:

    ПолучитьОкна()

    Возвращаемое значение:

    Тип: ОкнаКлиентскогоПриложения.

    Описание:

    Получает окна приложения. Порядок элементов в коллекции не определен.

    Доступность:

    Тонкий клиент, веб-клиент, толстый клиент, мобильное приложение(клиент).

    Показать

    Reply
  6. SeiOkami

    (4) а какие конкретно недоработки? я поправлю.

    Reply
  7. vdmkvrshn

    (6) Например:

    1) В таблице параметров в событии при окончании редактирования нет проверки на то, что это не отмена редактирования — при нажатии Esc все равно проверяется заполнение и не позволяет отказаться от ввода нового параметра или изменения существующего.

    2) Сразу не понял, почему кнопка выполнения кода вызывает только клиентский метод. Где вызов серверного? Я так понимаю, что предполагается его вызывать самому из клиентского? Ну, если так, то надо бы это как-то описать в каком-нибудь хоть небольшом хелпе на закладке серверного кода, а то как-то неочевидно это. Чтобы разобраться надо заглянуть в код. Понятно, что обработка для программистов, но для экономии времени подсказка не помешала бы.

    3) Режим совместимости. Про это не слова в описании. В коде используются методы глобального контекста, доступные только с 8.3.6 (или 7) типа СтрНайти, СтрРазбить. У меня, например, базы в режиме совместимости 8.3.5 еще и пришлось это исправлять — в 3 или 4-х местах, только тогда заработало. Я считаю, что можно было вполне обойтись методом Найти и вызовом стандартной для БСП функции СтроковыеФункцииКлиентСервер.РазбитьСтрокуВМассивПодстрок() для большей совместимости. Ну на крайняк можно этот метод себе в обработку скопировать, чтобы не зависеть от наличия модулей БСП.

    Учитывая вышесказанное на beta-версию, как написано в самой обработке, не тянет, т.к. «из коробки» не взлетело 🙂

    Reply
  8. SeiOkami

    (7) 1) Просто, если не делать проверку при отмене редактирования, то можно в существующей строке задать «плохое» имя свойства, а после нажать Esc и оно будет применено. Я как-то не догнал, почему так работает платформа, вот и решил насильно всегда проверять)

    2) Да, серверный код по кнопке вызывать нельзя, ибо просто не имеет смысла — на сервер перехваченную форму передать не получится. Нужно будет дополнить описание.

    3) Да, я разрабатывал, тестировал и использовал всё на 8.3.8. Поправлю сей момент.

    А проблемы были только с СтрРазделить или ещё может какие методы?

    Спасибо за комментарий!

    Reply
  9. vdmkvrshn

    (9) СтрНайти()

    Reply
  10. SeiOkami

    (10) ок, на следующей неделе выложу обновлённую версию. может ещё и прикручу чего-нить нового.

    Reply
  11. CheBurator

    Обработка ловит открытые печатные формы?

    Reply
  12. SeiOkami

    Опубликована новая версия. Помимо прочего добавлена возможность работы с настройками форм из системного хранилища

    Reply
  13. kalyaka

    Пожелание.

    Добавьте, пожалуйста, в перечень свойств элементов формы «Связи параметров выбора», «Параметры выбора».

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

    Еще было бы полезно видеть в форме свойство УсловноеОформление.

    Все эти параметры могут управляться программно и не всегда удается выловить код, который управляет этими свойствами. Также в отладчике просмотр этих свойств менее удобен, чем был бы в Вашей обработке,т.к. в отладчике для их просмотра требуется останавливаться в каждой из исследуемых форм.

    Reply
  14. SeiOkami

    UPD: Обработка теперь более быстрая, гибкая и функциональная. Добавлена возможность редактирования значений реквизитов формы (включая таблицы).

    В планах:

    1. возможность сохранения сессии открытых окон. Очень полезно, когда ведёшь разработку с отладкой, перезапускаешь постоянно сеанс и открываешь те же самые формочки.

    2. возможность открытия любых форм конфигурации с любыми параметрами.

    Reply
  15. SlavaKron

    Интересная обработка. Возможно пригодится, сериализованный основной реквизит формы также содержит информацию о всех реквизитах управляемой формы.

    Reply
  16. SlavaKron

    (9)

    на сервер перехваченную форму передать не получится

    Это можно реализовать, если форма использует подключаемые команды через процедуру-«форточку» Подключаемый_ВыполнитьКомандуНаСервере. В ней передается форма на сервер и можно получить ее в модуле внешней обработки. Далее обработка может внедриться в форму — создавать новые элементы, реквизиты и даже обработчики через Подключаемый_ВыполнитьКоманду. Минус в том, что не универсально.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *