Есть конфа на основе БСП. Есть внешняя обработка, если нужно, то подключенная. Есть общий клиентский модуль с возможностью выполнять произвольный код (позволяет обращяться к неэкспортным серверным процедурам произвольной формы). И есть управляемая форма, серверный контекст которой я хочу получить. В этой форме есть стандартные процедуры из подстстемы подключаемых команд. Вопрос: как из внешней обработки получить серверный контекст этой формы?
Хочу сделать что-то вроде исследователя формы - подсвечивать выбранные из списка элементы управления, получать их пути к данным, события, имена.
---
Намудрил я - общий клиентский модуль вообще не нужен, неэкспортная процедура формы спокойно вызывается из клиента обработки.
Осталось придумать, как обойти создание элемента справочника ДополнительныеОтчетыИОбработки.
---
по приведенной схеме никак.
Получить серверный контекст управляемой формы можно только передачей этой формы из модуля этой же формы с директивой НаСервере. Больше нигде он недоступен.
---
Подключенная команда заполнения формы получает форму заполняемого объекта на сервере. Хотя бы это можно как-то использовать.
---
если устраивает, что из самой формы будет вызван серверный контекст и уже из него будет вызван внешний метод с передачей самой формы, тогда да.
Но это не означает, что в нужный момент из вне можно получить серверный контекст формы.
---
контекст формы появляется только после ее открытия на клиенте, поэтому вывод никак. Потому что форму открыть на сервере нельзя, только получить, но не открыть это принципиальные вещи.
---
См (5). У меня уже получилось вызвать из клиента внешней обработки серверную процедуру "Подключаемый Выполнить Команду НаСервере", что есть почти в каждой БСПшной форме объекта. Пока затык в том, как дальше передать управление на серверную часть своей обработки с передачей контекста Формы объекта.
---
У меня уже получилось вызвать из клиента внешней обработки серверную процедуру "Подключаемый Выполнить Команду НаСервере", что есть почти в каждой БСПшной форме объекта.
Любой обработчик события формы, если пометить экспортным, можно вызвать из вне, только это уже будет не обработчик события формы, а просто обычный метод.
Так и тут.
Максимум что можно сделать, это получить на клиенте форму объекта и через эту форму вызвать подключаемую команду на сервере этой формы. В ней как раз подхватывается серверная форма и передается дальше. Но никак с сервера из вне. Только с клиента и через саму форму объекта.
---
вы уже определились. Хотите использовать экспортные процедуры. То это конечно работает. Не экспортное не ввзовешь.
---
(9) Это не экспортная прлцедура. Про экспортные процедуры вообще речи нет. Для меня самого стало открытием, что можно вызывать неэкпортные процедуры формы из общего клиентского модуля. Потому создал тему - может я ещё чего-то не знаю.
---
это не вызов не экспортной процедуры формы из клиентского общего модуля. Это вызов метода модуля формы используя саму форму.
---
похоже плохо справку читали)
Покажите что вы там нашли))
---
Разве что в вызываемой форме создать реквизит формы с типом неопределено и ПриСозданииНаСервере заполнить Структуру.
Типа

```1c
    &НаСервере
    Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

    МассивРеквизитов = Новый Массив;
    МассивРеквизитов.Добавить(Новый РеквизитФормы("КонтекстФормы",Новый ОписаниеТипов("Неопределено")));
    ИзменитьРеквизиты(МассивРеквизитов);
    ЭтаФорма.КонтекстФормы = Новый Структура;

    МассивДействий = Новый Массив;
    МассивДействий.Добавить("ПриИзменении");
    МассивДействий.Добавить("ПередНачаломДобавления");
    //Итд
    Для Каждого элемент из Элементы Цикл
    //Серверные значения элемента, осальные доступны на клиенте
    ЭтаФорма.КонтекстФормы.Вставить(Элемент.Имя, Новый Структура("Имя,ПутьКДанным,События",,,Новый Соответствие));
    ЗаполнитьЗначенияСвойств(ЭтаФорма.КонтекстФормы[элемент.Имя],элемент);
    Если ТипЗнч(элемент) = Тип("ПолеФормы") или ТипЗнч(элемент) = Тип("ТаблицаФормы") Тогда
    Для Каждого Эл из МассивДействий Цикл
    Действие = Элемент.ПолучитьДействие(эл);
    Если не ПустаяСтрока(Действие) Тогда
    ЭтаФорма.КонтекстФормы[Элемент.Имя].События.Вставить(Эл,Действие);
    КонецЕсли;
    КонецЦикла;
    ИначеЕсли ТипЗнч(элемент) = Тип("КнопкаФормы") и Не ПустаяСтрока(Элемент.ИмяКоманды) Тогда
    Команда = Команды.Найти(Элемент.ИмяКоманды);
    ЭтаФорма.КонтекстФормы[Элемент.Имя].События.Вставить(Команда.Имя,Команда.Действие);
    КонецЕсли;
    КонецЦикла;

    КонецПроцедуры
```
---
А форма к которой хотите подключиться где, во внешней обработке?
---
Нет, форма, к которой хочу подключиться - встроенная форма объекта со всей БСП-обвязкой.
---
добавить обработку в расширение. В этом же расширении для нужной формы добавить вызов обработчика после и из него вызывать уже обработку.
---
Вот что получилось.
Текст функции МойОбщийМодульКлиент.ВыполнитьКод():

```1c
    Функция ВыполнитьКод(ТекстФункции, Контекст = Неопределено) Экспорт
    Результат = Неопределено;

    Попытка
    Выполнить(ТекстФункции);
    Исключение
    Результат = ОписаниеОшибки();
    КонецПопытки;

    Возврат Результат
    КонецФункции
```
---
Намудрил я - общий клиентский модуль вообще не нужен, неэкспортная процедура формы спокойно вызывается из клиента обработки.
Осталось придумать, как обойти создание элемента справочника ДополнительныеОтчетыИОбработки.