Пост

Открытие системных форм платформы


В продолжении темы недокументированных возможностей и обработок.

В инструменте Управление платформенными обработками используется подмена “встроенных” в платформу внешних обработок. Активные пользователи, Журнал регистрации, Конструктор запросов и так далее. Всё это внутри платформы лежит именно как внешние обработки 1С. И по специальному адресу подключаются в момент их вызова (внутри “Все функции”). Подробнее можно почитать здесь.

Но помимо таких “встроенных” внешних обработок, есть ещё и “встроенные” формы. Это, например, сама форма “Все функции”. И форма редактирования списка значений. И панель избранного. И т.д. и т.п. Таких форм много и они написаны на 1С. Т.е. интерфейс 1С использует формы, которые сделаны на 1С. Такая вот небольшая рекурсия 🔄

Где такие формы лежат и как их “достать” описано здесь. Есть даже возможность их подменять, но об этом тссс…!

Но мы не будем ковыряться во внутренностях платформы. А лишь воспользуемся тем, что доступно любому разработчику из самого кода 1С. Например, открытие ряда таких форм =) Для этого используется специальный системный адрес формы и необходимые для её работы параметры (если они нужны).

  • Например, вот так можно открыть форму “Все функции”: ОткрытьФорму("sysForm:AllFunctionsForm");

  • А вот так панельку избранного: ОткрытьФорму("sysForm:FavoritesDlg", Новый Структура("alias", 1));

Чтобы можно было поиграться, я добавил возможность открытия системных форм в свой древний инструмент Менеджер открытых форм. А заодно и выложил его на гитхаб. Код старый, много чего хочется переделать, но, как говорится, “главное, что работает”.

Что позволяет делать обработка:
📍 Отлавливает открытые формы
📍 Открывать новые формы с указанием параметров
📍 Редактировать свойства формы и её элементов
📍 Просматривать и изменять значения реквизитов. Умеет работать в т.ч. с Компоновщиками и Деревьями\Таблицами
📍 По одной кнопке включать доступность на редактирование всей формы и её элементов
📍 Просматривать и редактировать настройки по данной форме в хранилище
📍 Для всего остального есть возможность выполнить произвольный код над “пойманной” формой

Обработка выручала меня множество раз. Когда нужно в рамках теста срочно что-то поменять в форме или посмотреть её содержимое, а в отладку лезть не хочется, долго или даже нет возможности. Ну и помогало определять имена “встроенных” в платформу обработок и форм. Например, чтобы понять, какое системное имя имеет форма “Все функции”, нужно включить в моей обработке обновление данных с задержкой через N секунд и открыть “Функции для технического специалиста”. Тогда Менеджер открытых форм поймает открытую форму “Все функции” и покажет её в панели.

Авторский пост защищен лицензией CC BY 4.0 .