ПланОбменаОбъект.<Имя плана обмена>.ПолучитьФорму

Методы · GetForm

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

Синтаксис

ПолучитьФорму(<Форма>, <Владелец>, <КлючУникальности>)
Полное описание, параметры и ограничения

ПланОбменаОбъект.<Имя плана обмена>.ПолучитьФорму (ExchangePlanObject.<Exchange plan name>.GetForm)

ПланОбменаОбъект.<Имя плана обмена> (ExchangePlanObject.<Exchange plan name>)

ПолучитьФорму (GetForm)

Доступен, начиная с версии 8.0.

Синтаксис:
ПолучитьФорму(<Форма>, <Владелец>, <КлючУникальности>)
Параметры:

<Форма> (необязательный)
Тип: Строка, ОбъектМетаданных: Форма.
Имя формы, как оно задано в конфигураторе, или объект описания метаданного требуемой формы. Если параметр не указан, то используется основная форма, заданная в конфигураторе.

<Владелец> (необязательный)
Тип: Форма; Элемент управления.
Объект, который будет являться владельцем открываемой формы.

<КлючУникальности> (необязательный)
Тип: Произвольный.
В данном параметре может быть задан некоторый ключ, значение которого будет использоваться для поиска уже открытых форм.
При поиске учитываются значения свойств открытых форм соответствующим значениям параметров метода. Если найдена открытая форма (по совпадению всех параметров), то она будет возвращена вместо новой формы.
Если из некой формы (один и тот же владелец) требуется открывать новые экземпляры другой формы, то при каждом вызове метода значение данного параметра должно быть уникально (в рамках соответствующих значений свойств открытых форм).
Значение параметра присваивается свойству открываемой формы КлючУникальности.
Следует учитывать, что при получении формы из "объекта" система получает форму для конкретного экземпляра объекта с учетом совокупности переданных параметров, в то время как для "ссылки" всегда существует только один объект в базе данных и форма получается одна (для одинаковой совокупности параметров).
Возвращаемое значение:
Тип: Форма, Неопределено.
Неопределено - если в обработчике ПриСозданииНаСервере установлен признак отказа от создания формы.
Описание:

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

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

Толстый клиент.

Примечание:
Перед выполнением метода производиться анализ параметров вызова и, при необходимости, происходит переадресация вызова глобальному контексту.
Использование в версии:

Доступен, начиная с версии 8.0.

Методическая информация

Практические примеры

Открыть только просмотр нового узла в обычном клиенте

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

Где и как запускать

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

Подготовка

  1. Создайте НОВУЮ пустую файловую учебную базу, не копию рабочего каталога. В Конфигураторе задайте корню имя Учебная85. Не добавляйте эти объекты в рабочую УТ/КА2/УНФ/БП.

  2. Справочники → Добавить: имя УчебныеТовары. Длина кода 10, тип кода Строка, автонумерация и контроль уникальности включены, длина наименования 100.

  3. Для УчебныеТовары включите иерархию групп и элементов. Добавьте реквизиты Артикул (Строка, длина 20) и Цена (Число, 12 цифр, 2 дробных, неотрицательное). Проверка заполнения для этих учебных реквизитов не устанавливается.

  4. Добавьте табличную часть Штрихкоды: Штрихкод (Строка, длина 20) и Основной (Булево). Обновите конфигурацию базы данных. Модули объектов оставьте пустыми.

  5. Создайте серверный общий модуль УчебныеЗадачи и команду учебной обработки, вызывающую ВыполнитьПример() Экспорт. Каждый фрагмент выполняйте отдельно, не склеивайте их в одну процедуру.

  6. В отдельной пустой конфигурации Учебная85 создайте Планы обмена → УчебныйОбмен: длина кода 9, тип Строка, наименование длиной 100. Распределённая информационная база выключена; состав плана пустой.

  7. Добавьте реквизит АдресУчебногоУзла: Строка длиной 100, Проверка заполнения = Показывать ошибку. Модуль объекта и подписки должны быть пустыми; не добавляйте отправку сообщений или внешние действия.

  8. Добавьте макет УчебнаяПамятка типа Текстовый документ, одна строка: Этот узел используется только для учебных примеров. История данных для плана не включена. Обновите конфигурацию базы данных.

  9. Каждый фрагмент запускайте отдельно на сервере в ВыполнитьПример() Экспорт общего модуля УчебныеЗадачи. УчебныйОбмен не является существующим рабочим обменом КА2 или УТ.

  10. Узел каждый раз новый и периферийный. Существующие узлы и текущий узел базы не меняются. Запись, блокировка и удаление далее выполняются только над своим новым UUID в собственной отменяемой транзакции.

  11. Для этого отдельного GUI-урока используйте толстый клиент в режиме Обычное приложение. Серверный общий модуль из других уроков здесь не подходит.

  12. Конфигуратор → Планы обмена → УчебныйОбмен → Формы: добавьте именно обычную форму объекта УчебнаяФормаУзла с основным реквизитом объекта. Добавьте поле Наименование, связанное с основным реквизитом. Кнопки Записать, ОК и Удалить в этой учебной форме не добавляйте; модуль формы пустой.

  13. Фрагмент поместите в обработчик собственной команды обычной внешней обработки. Не смешивайте его с управляемым клиентским модулем. После запуска осмотрите окно и закройте его штатным крестиком, без записи.

Если Метаданные.ПланыОбмена.Найти("УчебныйОбмен") = Неопределено Тогда
    ВызватьИсключение "Сначала создайте собственный учебный план обмена";
КонецЕсли;
Узел = ПланыОбмена.УчебныйОбмен.СоздатьУзел();
Если Узел.ЭтотУзел Тогда
    ВызватьИсключение "Нельзя изменять текущий узел информационной базы";
КонецЕсли;
Узел.Наименование = "Просмотр собственного черновика";
Форма = Узел.ПолучитьФорму("УчебнаяФормаУзла", , Новый УникальныйИдентификатор);
Если Форма = Неопределено Тогда
    ВызватьИсключение "Не найдена подготовленная обычная форма узла";
КонецЕсли;
Форма.Заголовок = "Учебный узел: только просмотр";
Форма.ТолькоПросмотр = Истина;
Форма.Открыть();
Сообщить(Форма.Открыта());
Сообщить(Форма.ТолькоПросмотр);
Сообщить(Узел.ЭтоНовый());
Сообщить(Узел.Ссылка.Пустая());

Разбор по шагам

  1. Создаём только свой новый периферийный узел и задаём учебное имя.

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

  3. Результат проверяется на Неопределено до обращения к форме.

  4. ТолькоПросмотр и отсутствие команд записи ограничивают редактирование именно этой учебной формы, не права всей ИБ.

  5. Открыть показывает окно. Новый статус и пустая ссылка доказывают, что пример не записал узел.

Как проверить результат

  1. Четыре сообщения Истина.

  2. В обычном толстом клиенте видно собственное имя и заголовок, поле недоступно для редактирования. Эта визуальная проверка выполняется отдельно в учебной базе.

Ожидаемый результат

Получена и открыта своя обычная форма нового узла без сохранения.

На что обратить внимание

  1. В управляемой форме используется другой API; этот фрагмент нельзя туда вставлять без переработки.

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

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.