Получает макет плана обмена.
Синтаксис
ПолучитьМакет(<Макет>)Полное описание, параметры и ограничения
ПланОбменаМенеджер.<Имя плана обмена>.ПолучитьМакет (ExchangePlanManager.<Exchange plan name>.GetTemplate)
ПланОбменаМенеджер.<Имя плана обмена> (ExchangePlanManager.<Exchange plan name>)
ПолучитьМакет (GetTemplate)
Доступен, начиная с версии 8.0.
Синтаксис:
ПолучитьМакет(<Макет>)
Параметры:
<Макет> (обязательный)
Тип: Строка, ОбъектМетаданных: Макет.
Имя макета, как оно задано в конфигураторе, или объект описания метаданного требуемого макета.
Возвращаемое значение:
Тип: ТабличныйДокумент, ТекстовыйДокумент; другой объект, который может быть макетом.
Описание:
Получает макет плана обмена.
Доступность:
Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер), мобильный автономный сервер.
Использование в версии:
Доступен, начиная с версии 8.0.
Методическая информация
Практические примеры
Получить свои формы плана и макет, не создавать обмен
В обычном толстом клиенте получим четыре разные формы своего плана и локальную копию памятки. Получение формы нового узла само не объявляется сохранением записи.
Где и как запускать
Полный обычный клиентский общий модуль УчебныеПолучатели85, только толстый клиент. Пульт отдельно ниже; не выполнялся.
Подготовка
Создайте НОВУЮ отдельную файловую базу 8.5.1.1343, конфигурация УчебнаяМаршрутизация85, совместимость НеИспользовать, обычное приложение и толстый клиент. В свойствах корня конфигурации для поддерживаемых режимов запуска выберите Управляемое приложение и обычное приложение, а Основной режим запуска оставьте Обычное приложение: первый выбор делает видимым флаг Клиент (обычное приложение) общего модуля, второй определяет запуск нашего обычного Пульта. Не используйте рабочую УТ/КА/УНФ/БП. Стенд, UI и код здесь не запускались: runtimeVerifiedScenarios=0.
План обмена Уч85Узлы: Распределённая информационная база=Нет, Код Строка(10), переменная длина, наименование 100, уникальность кодов включена. Дополнительный реквизит Уч85Ключ Строка(8), Индексировать. Модули менеджера/объекта пустые, расширений, разделителей, фонового обмена и других сеансов нет.
Справочник Уч85Черновики: неиерархический, код Строка(10), наименование 100, без дополнительных реквизитов и обработчиков. В состав Уч85Узлы включите ТОЛЬКО этот справочник; АвтоРегистрация для него Разрешить. Других планов обмена в стенде нет. Элементы справочника не создавайте и не переносите из рабочих баз.
В стандартном списке своего плана вручную подготовьте ровно три узла. Уже созданному текущему узлу базы задайте Код=00, Наименование=Учебная локальная база, Уч85Ключ=L. Создайте свои A: Код=10, Наименование=Учебный получатель A, ключ A; B: Код=20, Наименование=Учебный получатель B, ключ B. Сохраните только эту собственную подготовку, не выполняйте обмен. Все узлы без пометки удаления, номера сообщений ещё не изменялись.
Создайте неглобальный общий модуль УчебныеПолучатели85: Клиент (обычное приложение)=Да, Сервер=Нет, Привилегированный=Нет, остальные клиентские флаги=Нет. Вставляйте полный модуль одного урока, не внутрь процедуры и не все варианты одновременно.
Обработка УчебныеПолучатели85 → обычная основная форма Пульт → кнопка Выполнить → действие ВыполнитьНажатие. Полный модуль формы дан отдельно. F7 и обновление только собственного стенда; откройте Пульт толстого клиента.
Код читает свои заранее сохранённые узлы; изменения имени полученного объекта и настройки нового черновика остаются в памяти. Нет Записать, регистрации/удаления изменений, создания сообщения, транзакций, сети, файлов и печати. Окна узлов урок формы не открывает.
ТОЛЬКО ДЛЯ ЭТОГО УРОКА: у Уч85Узлы создайте обычную форму списка Уч85Список, обычную форму выбора Уч85Выбор и обычную форму узла Уч85НовыйУзел штатным мастером, без обработчиков; форма узла имеет свой обычный объект, но не сохраняйте новый узел в будущем опыте.
Создайте у плана собственную пустую обычную форму Уч85Просмотр без основного реквизита/обработчиков. Макет Уч85Памятка типа Табличный документ: только R1C1 с текстом Уч85ТолькоМакет. Обновите свой стенд; F7. Форма/макет здесь не создавались в 1С.
Процедура ВыполнитьПример() Экспорт
ПроверитьСвойКонтекст();
Свои = ПолучитьСвоюПодготовку();
Менеджер = Свои.Менеджер;
Список = Менеджер.ПолучитьФормуСписка("Уч85Список", , Новый УникальныйИдентификатор);
Выбор = Менеджер.ПолучитьФормуВыбора("Уч85Выбор", , Новый УникальныйИдентификатор);
НовыйУзел = Менеджер.ПолучитьФормуНовогоУзла("Уч85НовыйУзел", , Новый УникальныйИдентификатор);
Любая = Менеджер.ПолучитьФорму("Уч85Просмотр", , Новый УникальныйИдентификатор);
СвоиФормы = Новый Массив;
СвоиФормы.Добавить(Список);
СвоиФормы.Добавить(Выбор);
СвоиФормы.Добавить(НовыйУзел);
СвоиФормы.Добавить(Любая);
Для Каждого ФормаУзлов Из СвоиФормы Цикл
Если ФормаУзлов = Неопределено Тогда
ВызватьИсключение "Отказ создания собственной формы не является полученной формой";
КонецЕсли;
Если ТипЗнч(ФормаУзлов) <> Тип("Форма") Тогда
ВызватьИсключение "Нужна обычная Форма толстого клиента, не управляемая форма";
КонецЕсли;
КонецЦикла;
Макет = Менеджер.ПолучитьМакет("Уч85Памятка");
Если ТипЗнч(Макет) <> Тип("ТабличныйДокумент") Или Макет.Область("R1C1").Текст <> "Уч85ТолькоМакет" Тогда
ВызватьИсключение "Нужен заранее подготовленный собственный макет плана";
КонецЕсли;
Макет.Область("R1C1").Текст = "Своя локальная копия — не печатать";
ИсходныйМакет = Менеджер.ПолучитьМакет("Уч85Памятка");
Если ИсходныйМакет.Область("R1C1").Текст <> "Уч85ТолькоМакет" Тогда
ВызватьИсключение "Изменение локального документа не должно переписать макет метаданных";
КонецЕсли;
Сообщить("Получены четыре собственные обычные формы и макет плана. Формы не открывались, новый узел не записывался, макет не печатался.");
КонецПроцедуры
Процедура ПроверитьСвойКонтекст()
Если Метаданные.РежимСовместимости <> Метаданные.СвойстваОбъектов.РежимСовместимости.НеИспользовать Тогда
ВызватьИсключение "Нужен собственный стенд УчебнаяМаршрутизация85 платформы 8.5.1.1343";
КонецЕсли;
Если ТранзакцияАктивна() Тогда
ВызватьИсключение "Учебный вывод не должен выполняться внутри чужой транзакции";
КонецЕсли;
КонецПроцедуры
Функция ПолучитьСвоюПодготовку()
Менеджер = ПланыОбмена.Уч85Узлы;
Если Метаданные.ПланыОбмена.Количество() <> 1 Тогда
ВызватьИсключение "В новом стенде должен быть только собственный Уч85Узлы";
КонецЕсли;
Состав = Метаданные.ПланыОбмена.Уч85Узлы.Состав;
ЭлементСостава = Состав.Найти(Метаданные.Справочники.Уч85Черновики);
Если Состав.Количество() <> 1 Или ЭлементСостава = Неопределено Тогда
ВызватьИсключение "В составе своего плана должен быть только Уч85Черновики";
КонецЕсли;
Если ЭлементСостава.АвтоРегистрация <> АвтоРегистрацияИзменений.Разрешить Тогда
ВызватьИсключение "Для собственной проверки Заполнить требуется разрешённая авторегистрация";
КонецЕсли;
Текущий = Менеджер.ЭтотУзел();
A = Менеджер.НайтиПоРеквизиту("Уч85Ключ", "A");
B = Менеджер.НайтиПоРеквизиту("Уч85Ключ", "B");
Если Текущий.Пустая() Или A.Пустая() Или B.Пустая() Или A = B Или A = Текущий Или B = Текущий Тогда
ВызватьИсключение "Нужны три разные настоящие ссылки своего плана";
КонецЕсли;
Если Текущий.Уч85Ключ <> "L" Или Текущий.Код <> "00" Или Текущий.Наименование <> "Учебная локальная база"
Или A.Код <> "10" Или A.Наименование <> "Учебный получатель A"
Или B.Код <> "20" Или B.Наименование <> "Учебный получатель B" Тогда
ВызватьИсключение "Не совпала собственная подготовка узлов L,A,B";
КонецЕсли;
Выборка = Менеджер.Выбрать();
Ссылки = Новый Массив;
Пока Выборка.Следующий() Цикл
Если Выборка.ПометкаУдаления Или (Выборка.Ссылка <> Текущий И Выборка.Ссылка <> A И Выборка.Ссылка <> B)
Или Ссылки.Найти(Выборка.Ссылка) <> Неопределено Тогда
ВызватьИсключение "Лишний, помеченный или повторный узел нового стенда";
КонецЕсли;
Ссылки.Добавить(Выборка.Ссылка);
КонецЦикла;
Если Ссылки.Количество() <> 3 Тогда
ВызватьИсключение "В своём плане должны существовать только L,A,B";
КонецЕсли;
Возврат Новый Структура("Менеджер,L,A,B", Менеджер, Текущий, A, B);
КонецФункцииУчебныеПолучатели85.Пульт
УчебнаяМаршрутизация85 → Обработки → УчебныеПолучатели85 → Формы → Пульт → Модуль
Полный модуль собственной обычной формы, не выполнялся.
Процедура ВыполнитьНажатие(Кнопка)
УчебныеПолучатели85.ВыполнитьПример();
КонецПроцедурыРазбор по шагам
Эти менеджерские формы имеют контракт обычного толстого клиента. Урок не переносит вызовы в тонкий клиент или сервер; явно проверяется обычная Форма, не ФормаКлиентскогоПриложения.
ПолучитьФормуСписка и ПолучитьФормуВыбора получают разные заранее заданные имена форм; ПолучитьФормуНовогоУзла — своё имя формы нового объекта. ПолучитьФорму получает обязательное имя произвольной собственной формы Уч85Просмотр.
У каждого вызова третий аргумент — новый УникальныйИдентификатор для уникальности экземпляра. Владелец пропущен сознательно; сюда не подставляется структура параметров управляемой формы.
Каждый результат может быть Неопределено по отказу создания. Проверка выполняется до использования; четыре формы только получены, Открыть/ОткрытьМодально и команды Записать не выполняются.
ПолучитьМакет получает имя своего макета Уч85Памятка, который действительно существует в плане. Проверяем тип ТабличныйДокумент и контрольную ячейку R1C1, а не неизвестный шаблон рабочей базы.
Изменяем Текст ячейки только локального полученного документа. Повторный ПолучитьМакет требует исходный Уч85ТолькоМакет: макет конфигурации не переписывается этим присваиванием.
Нет показа, печати, сохранения файла, создания сообщения и записи узла. Получение форм/макета и прохождение F7 не являются проверкой внешнего вида или работающего обмена.
Как проверить результат
Будущий тест: F7 и Пульт обычного толстого клиента. Все четыре возвращённых значения — Форма, не Неопределено; никаких новых окон урок не открывает.
Имена Уч85Список/Уч85Выбор/Уч85НовыйУзел/Уч85Просмотр совпадают с реально созданными собственными формами. Не оставляйте управляемые формы с теми же именами вместо обычных.
Памятка имеет тип ТабличныйДокумент; исходная R1C1 равна Уч85ТолькоМакет. После локальной правки повторное чтение макета снова содержит исходный текст.
Количество узлов своего плана остаётся три. ПолучитьФормуНовогоУзла не объявляется выполненным сохранением нового узла, форма не открывается и её команды не нажимаются.
Повторите урок: новые ключи уникальности не должны заимствовать чужую уже открытую форму. Runtime/UI-проверка здесь не выполнялась.
Ожидаемый результат
Будущий результат: четыре собственные обычные формы и локально изменяемая копия собственного макета, без открытия/сохранения узла или обмена.
На что обратить внимание
Менеджерские формы с этими сигнатурами доступны только толстому клиенту. Управляемый глобальный ПолучитьФорму имеет другой контракт; параметр-структура здесь не вставляется.
Для получения любой формы имя обязательно, для специальных менеджерских форм оно необязательно. В уроке все имена заданы явно и подготовлены заранее.
ПолучитьМакет может вернуть разные виды макетов. Этот стенд требует именно подготовленный ТабличныйДокумент; произвольный результат не обрабатывается как таблица.
Уникальный ключ управляет выбором экземпляра формы, не идентифицирует узел базы и не заменяет ссылку плана обмена.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.