Получает форму списка для выбора элементов вида характеристики.
Синтаксис
ПолучитьФормуВыбора(<Форма>, <Владелец>, <КлючУникальности>)Полное описание, параметры и ограничения
ПланВидовХарактеристикМенеджер.<Имя плана видов характеристик>.ПолучитьФормуВыбора (ChartOfCharacteristicTypesManager.<Chart of characteristic types name>.GetChoiceForm)
ПланВидовХарактеристикМенеджер.<Имя плана видов характеристик> (ChartOfCharacteristicTypesManager.<Chart of characteristic types name>)
ПолучитьФормуВыбора (GetChoiceForm)
Доступен, начиная с версии 8.0.
Синтаксис:
ПолучитьФормуВыбора(<Форма>, <Владелец>, <КлючУникальности>)
Параметры:
<Форма> (необязательный)
Тип: Строка, ОбъектМетаданных: Форма.
Имя формы, как оно задано в конфигураторе, или объект описания метаданного требуемой формы. Если параметр не указан, то используется основная форма, заданная в конфигураторе.
<Владелец> (необязательный)
Тип: Форма; Элемент управления.
Объект, который будет являться владельцем открываемой формы.
<КлючУникальности> (необязательный)
Тип: Произвольный.
В данном параметре может быть задан некоторый ключ, значение которого будет использоваться для поиска уже открытых форм.
При поиске учитываются значения свойств открытых форм соответствующим значениям параметров метода. Если найдена открытая форма (по совпадению всех параметров), то она будет возвращена вместо новой формы.
Если из некой формы (один и тот же владелец) требуется открывать новые экземпляры другой формы, то при каждом вызове метода значение данного параметра должно быть уникально (в рамках соответствующих значений свойств открытых форм).
Значение параметра присваивается свойству открываемой формы КлючУникальности.
Следует учитывать, что при получении формы из "объекта" система получает форму для конкретного экземпляра объекта с учетом совокупности переданных параметров, в то время как для "ссылки" всегда существует только один объект в базе данных и форма получается одна (для одинаковой совокупности параметров).
Возвращаемое значение:
Тип: Форма, Неопределено.
Неопределено - если в обработчике ПриСозданииНаСервере установлен признак отказа от создания формы.
Описание:
Получает форму списка для выбора элементов вида характеристики.
Доступность:
Толстый клиент.
Использование в версии:
Доступен, начиная с версии 8.0.
Методическая информация
Практические примеры
Открыть формы элемента и группы своего плана характеристик
Получим шесть отдельных обычных форм, включая выбор группы и редактор новой группы; проверим собственный табличный макет и закроем новые объекты без записи.
Где и как запускать
Полный обычный клиентский общий модуль УчебныеМенеджеры85, только толстый клиент. Пульт отдельным полным модулем ниже. Не выполнялся.
Подготовка
Создайте НОВУЮ отдельную файловую базу 8.5.1.1343: имя конфигурации УчебныеМенеджерыПланов85, совместимость НеИспользовать, обычное приложение, толстый клиент. Не рабочая БП/КА2/УТ и не её копия. Нет разделителей, общих реквизитов, расширений, подписок, РИБ и фоновых прикладных заданий. Здесь база и код не запускались: runtimeVerifiedScenarios=0.
Планы счетов → УчебныеСчета85: длина кода 10, маска пустая, длина наименования 100, контроль уникальности включён. Без видов субконто, признаков учёта и предопределённых счетов. Реквизит УчебныйКлюч85: Строка(10), переменная длина, индексирование Индексировать. Формы и макет подготовьте далее, модули пустые. Второй ПустыеСчета85 — без реквизитов, форм, предопределённых счетов и записей, только для политики.
Планы видов характеристик → УчебныеСвойства85: иерархия групп и элементов включена, длина кода 10, тип кода Строка, длина наименования 100, тип характеристик только Строка(30). Реквизит УчебныйКлюч85: Строка(10), переменная длина, Индексировать, использование для групп и элементов. Без предопределённых элементов и дополнительных значений. Второй ПустыеСвойства85 — без предопределённых элементов и записей, только для политики.
Для ОБОИХ основных планов заранее вручную создайте только четыре обычные записи: G — код 01, наименование Учебный родитель, ключ G, родитель пустой; A — код 10, наименование Учебный верхний A, ключ A, родитель пустой; B — код 30, наименование Учебный дочерний B, ключ B, родитель G; C — код 20, наименование Учебный верхний C, ключ C, родитель пустой. У плана характеристик G именно группа, A/B/C элементы типа Строка(30). У плана счетов G обычный родительский счёт, не группа справочника. Записи пометкой удаления не отмечены. Эти собственные записи готовит человек; код уроков их не создаёт и не записывает.
У УчебныеСчета85 создайте обычные формы Счет85 (форма счёта), Список85 (форма списка), Выбор85 (форма выбора), назначьте основными для соответствующих назначений. Используйте стандартный мастер своих форм, модули оставьте пустыми. У УчебныеСвойства85 обычные Элемент85, Группа85, Список85, Выбор85, ВыборГруппы85 — назначьте основными для элемента, группы, списка, выбора элемента и выбора группы. Это НЕ управляемые формы.
У каждого основного плана создайте макет Шаблон85 типа Табличный документ. В R1C1 у плана счетов текст План счетов, у плана характеристик текст План характеристик. Без параметров и кода. У пустых планов макеты и формы не нужны.
Общий модуль УчебныеМенеджеры85: неглобальный, Клиент (обычное приложение)=Да, Сервер=Нет, Привилегированный=Нет, остальные клиентские флаги=Нет. Вставляйте полный основной модуль выбранного урока на верхнем уровне. Создайте обработку УчебныеМенеджеры85, обычную основную форму Пульт, кнопку Выполнить с действием ВыполнитьНажатие; полный модуль формы приведён отдельно.
Для политики войдите собственным учебным администратором. ПустыеСчета85 и ПустыеСвойства85 должны иметь НОЛЬ любых записей, ноль предопределённых определений и никогда ранее не перенастраиваться. Режим обновления в конфигурации и информационной базе исходно Авто. Нельзя подменить это подготовкой существующей базы: вычисленный getter не доказывает исходное значение сохранённого override.
F7 и обновление только собственного стенда, затем Пульт толстого клиента. Уроки поиска только читают четыре записи. Уроки форм открывают 4/6 отдельных своих окон и макет; не нажимайте Записать, завершайте окна без сохранения новых объектов, макет не печатайте и не сохраняйте.
Урок политики в будущем меняет служебный признак и режим обновления только двух пустых своих планов, затем возвращает исходный признак и заранее известное Авто. Это запись системной настройки собственного стенда, не создание предопределённых объектов, не удаление следов изменения и не беззаписный опыт. Здесь никакая запись или UI-операция не выполнялась.
Процедура ВыполнитьПример() Экспорт
ПроверитьСвойКонтекст();
Менеджер = ПланыВидовХарактеристик.УчебныеСвойства85;
Формы = Новый Массив;
Формы.Добавить(Менеджер.ПолучитьФорму("Элемент85",,Новый УникальныйИдентификатор));
Формы.Добавить(Менеджер.ПолучитьФормуВыбора("Выбор85",,Новый УникальныйИдентификатор));
Формы.Добавить(Менеджер.ПолучитьФормуВыбораГруппы("ВыборГруппы85",,Новый УникальныйИдентификатор));
Формы.Добавить(Менеджер.ПолучитьФормуНовогоЭлемента("Элемент85",,Новый УникальныйИдентификатор));
Формы.Добавить(Менеджер.ПолучитьФормуНовойГруппы("Группа85",,Новый УникальныйИдентификатор));
Формы.Добавить(Менеджер.ПолучитьФормуСписка("Список85",,Новый УникальныйИдентификатор));
Макет = Менеджер.ПолучитьМакет("Шаблон85");
ПоказатьСвойМакет(Макет, "План характеристик");
Для Каждого Форма Из Формы Цикл
ОткрытьСвоюФорму(Форма);
КонецЦикла;
Сообщить("Открыты шесть собственных обычных форм элемента, группы, списка и выбора. Новые объекты закройте без записи.");
КонецПроцедуры
Процедура ПроверитьСвойКонтекст()
Если Метаданные.РежимСовместимости <> Метаданные.СвойстваОбъектов.РежимСовместимости.НеИспользовать Тогда
ВызватьИсключение "Нужен собственный стенд УчебныеМенеджерыПланов85 платформы 8.5.1.1343";
КонецЕсли;
Если ТранзакцияАктивна() Тогда
ВызватьИсключение "Учебный вывод не должен выполняться внутри чужой транзакции";
КонецЕсли;
КонецПроцедуры
Процедура ОткрытьСвоюФорму(Форма)
Если Форма = Неопределено Тогда
ВызватьИсключение "Создание своей формы было отклонено";
КонецЕсли;
Форма.Открыть();
КонецПроцедуры
Процедура ПоказатьСвойМакет(Макет, ОжидаемыйТекст)
Если ТипЗнч(Макет) <> Тип("ТабличныйДокумент") Тогда
ВызватьИсключение "Шаблон85 должен иметь тип ТабличныйДокумент";
КонецЕсли;
Если Макет.Область("R1C1").Текст <> ОжидаемыйТекст Тогда
ВызватьИсключение "Не совпало содержимое собственного макета";
КонецЕсли;
Макет.Показать("Свой макет: " + ОжидаемыйТекст, "", Истина);
КонецПроцедурыУчебныеМенеджеры85.Пульт
УчебныеМенеджерыПланов85 → Обработки → УчебныеМенеджеры85 → Формы → Пульт → Модуль
Полный модуль собственной обычной формы; не выполнялся.
Процедура ВыполнитьНажатие(Кнопка)
УчебныеМенеджеры85.ВыполнитьПример();
КонецПроцедурыРазбор по шагам
Проверяем свой контекст, используем конкретный менеджер подготовленного основного плана. Все формы реально созданы в Конфигураторе своего стенда с точными именами и назначениями.
ПолучитьФорму требует имя; специализированные getters допускают основную форму, но здесь имя задано явно. Редактор из менеджера относится к новому объекту, не к выбранной записанной ссылке.
Второй параметр Владелец пропущен, третий — новый УникальныйИдентификатор для каждого вызова. Это препятствует случайному возврату уже открытой формы с тем же ключом; не подменяем его одинаковой строкой для всех окон.
Возвращаемое значение может быть Неопределено при отказе создания. Помощник проверяет это до Открыть; наличие формы в метаданных не означает успешное создание экземпляра.
ПолучитьМакет получает именно Шаблон85 своего плана. Его тип проверяется как ТабличныйДокумент, R1C1 сравнивается с подготовленным текстом, затем макет показан в отдельном readonly-окне без имени файла.
Только толстый клиент поддерживает эти специализированные getters форм. Не переносите вызовы в серверный общий модуль или тонкий клиент; все окна открываются из обычного клиентского модуля.
После будущего просмотра закрывайте новые редакторы без сохранения, не нажимайте Записать. Списки показывают свои подготовленные четыре записи; UI может сохранить предпочтения своего пользователя, что не равно записи бизнес-объекта.
Как проверить результат
Будущий тест: F7 и собственный Пульт обычного толстого клиента. Формы и макет здесь не создавались и не открывались: runtimeVerifiedScenarios=0.
Каждая именованная обычная форма должна соответствовать назначению: список, выбор и редактор нового объекта — разные роли, не три названия одного окна.
Макет показывает собственный текст из R1C1; другой текст или иной тип должен остановить опыт до показа форм.
Смена только синонима формы в подготовке не должна менять её программное имя. Переименование указанной формы требует обновить код, иначе штатное получение должно отказать.
При повторном опыте новые UUID дают отдельные экземпляры. Закрывайте все свои учебные окна; не сохраняйте новые счета, элементы или группы.
Будущий результат — два редактора нового элемента, редактор новой группы, список, выбор элемента и выбор группы; макет содержит План характеристик.
Ожидаемый результат
Будущий опыт работает только с подготовленными собственными планами. Код, формы и служебные настройки здесь не выполнялись: runtimeVerifiedScenarios=0.
На что обратить внимание
Это обычные формы, не управляемые ОткрытьФорму из глобального контекста. Их наличие и назначение входят в обязательную подготовку.
Метод менеджера не редактирует найденную записанную ссылку. Для редактора существующего объекта нужен иной путь получения формы; здесь он не подменяется новым объектом.
Показ макета не печатает документ и не сохраняет файл. Открытая форма не доказывает записи данных или корректность чужих обработчиков.
Статические проверки не являются F7 или проверкой реального UI. Здесь 1С не запускалась.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.