Доброго времени суток!
Обработка поможет разработчикам, которым потребовалось в режиме предприятия открыть скрытые элементы формы, поменять временно их свойства или просто подставить нужное значение в недоступный реквизит, но нет желания (или возможности) подменивать эти значения через отладку конфигуратора. Иногда для тестирования такие манипуляции с формами заметно сокращают затраченное время.
Данная обработка перехватывает все открытые окна, собирает информацию о формах, выводит её в редактор и позволяет выполнять разные манипуляции.
Инструмент протестирован на файловых и серверных базах платформ 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) список обновляется
Имеется возможность добавленияизмененияудаления настроек хранилища.Редактирование самой настройки происходит в виде строки, полученной методом ЗначениеВСтрокуВнутр(Настройка).
История:
Данный функционал доступен, если в настройках обработки стоит галочка "Показывать историю открытия формы".
Платформенная история открытия текущей формы текущим пользователем
Если Вам будет полезна обработка, можете поддержать её развитие комментариями иили пожертвованиями.
Опечатка в наименовании. Или так задумано ? 🙂
Интересно, интересно… давно хотел сам такое разработать. Протестим))
А принцип получения открытых форм какой? Раньше вроде вообще возможности такой не было
(2) Недоработок много, но идея хорошая.
(3) на УФ давненько уже
Синтаксис:
ПолучитьОкна()
Возвращаемое значение:
Тип: ОкнаКлиентскогоПриложения.
Описание:
Получает окна приложения. Порядок элементов в коллекции не определен.
Доступность:
Тонкий клиент, веб-клиент, толстый клиент, мобильное приложение(клиент).
Показать
(4) а какие конкретно недоработки? я поправлю.
(6) Например:
1) В таблице параметров в событии при окончании редактирования нет проверки на то, что это не отмена редактирования — при нажатии Esc все равно проверяется заполнение и не позволяет отказаться от ввода нового параметра или изменения существующего.
2) Сразу не понял, почему кнопка выполнения кода вызывает только клиентский метод. Где вызов серверного? Я так понимаю, что предполагается его вызывать самому из клиентского? Ну, если так, то надо бы это как-то описать в каком-нибудь хоть небольшом хелпе на закладке серверного кода, а то как-то неочевидно это. Чтобы разобраться надо заглянуть в код. Понятно, что обработка для программистов, но для экономии времени подсказка не помешала бы.
3) Режим совместимости. Про это не слова в описании. В коде используются методы глобального контекста, доступные только с 8.3.6 (или 7) типа СтрНайти, СтрРазбить. У меня, например, базы в режиме совместимости 8.3.5 еще и пришлось это исправлять — в 3 или 4-х местах, только тогда заработало. Я считаю, что можно было вполне обойтись методом Найти и вызовом стандартной для БСП функции СтроковыеФункцииКлиентСервер.РазбитьСтрокуВМассивПодстрок() для большей совместимости. Ну на крайняк можно этот метод себе в обработку скопировать, чтобы не зависеть от наличия модулей БСП.
Учитывая вышесказанное на beta-версию, как написано в самой обработке, не тянет, т.к. «из коробки» не взлетело 🙂
(7) 1) Просто, если не делать проверку при отмене редактирования, то можно в существующей строке задать «плохое» имя свойства, а после нажать Esc и оно будет применено. Я как-то не догнал, почему так работает платформа, вот и решил насильно всегда проверять)
2) Да, серверный код по кнопке вызывать нельзя, ибо просто не имеет смысла — на сервер перехваченную форму передать не получится. Нужно будет дополнить описание.
3) Да, я разрабатывал, тестировал и использовал всё на 8.3.8. Поправлю сей момент.
А проблемы были только с СтрРазделить или ещё может какие методы?
Спасибо за комментарий!
(9) СтрНайти()
(10) ок, на следующей неделе выложу обновлённую версию. может ещё и прикручу чего-нить нового.
Обработка ловит открытые печатные формы?
Опубликована новая версия. Помимо прочего добавлена возможность работы с настройками форм из системного хранилища
Пожелание.
Добавьте, пожалуйста, в перечень свойств элементов формы «Связи параметров выбора», «Параметры выбора».
Видеть эти свойства было бы полезно при анализе работы формы, когда происходит выбор элемента.
Еще было бы полезно видеть в форме свойство УсловноеОформление.
Все эти параметры могут управляться программно и не всегда удается выловить код, который управляет этими свойствами. Также в отладчике просмотр этих свойств менее удобен, чем был бы в Вашей обработке,т.к. в отладчике для их просмотра требуется останавливаться в каждой из исследуемых форм.
UPD: Обработка теперь более быстрая, гибкая и функциональная. Добавлена возможность редактирования значений реквизитов формы (включая таблицы).
В планах:
1. возможность сохранения сессии открытых окон. Очень полезно, когда ведёшь разработку с отладкой, перезапускаешь постоянно сеанс и открываешь те же самые формочки.
2. возможность открытия любых форм конфигурации с любыми параметрами.
Интересная обработка. Возможно пригодится, сериализованный основной реквизит формы также содержит информацию о всех реквизитах управляемой формы.
(9)
Это можно реализовать, если форма использует подключаемые команды через процедуру-«форточку» Подключаемый_ВыполнитьКомандуНаСервере. В ней передается форма на сервер и можно получить ее в модуле внешней обработки. Далее обработка может внедриться в форму — создавать новые элементы, реквизиты и даже обработчики через Подключаемый_ВыполнитьКоманду. Минус в том, что не универсально.