ФормаКлиентскогоПриложения.АвтоНавигационнаяСсылка

Свойства · AutoURL

Тип: Булево. Управляет автоматическим формированием навигационной ссылки, возвращаемой формой. Если Ложь, метод ПолучитьНавигационнуюСсылку объекта ОкноКлиентскогоПриложения возвращает значение свойства НавигационнаяСсылка основной формы. Если Истина, метод ПолучитьНавигационнуюСсылку возвращает навигационную ссылку основной формы.

Полное описание, параметры и ограничения

ФормаКлиентскогоПриложения.АвтоНавигационнаяСсылка (ClientApplicationForm.AutoURL)

ФормаКлиентскогоПриложения (ClientApplicationForm)

АвтоНавигационнаяСсылка (AutoURL)

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

Использование:
Чтение и запись.
Описание:
Тип: Булево.
Управляет автоматическим формированием навигационной ссылки, возвращаемой формой.
Если Ложь, метод ПолучитьНавигационнуюСсылку объекта ОкноКлиентскогоПриложения возвращает значение свойства НавигационнаяСсылка основной формы.
Если Истина, метод ПолучитьНавигационнуюСсылку возвращает навигационную ссылку основной формы.
Доступность:

Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.

См. также:
ФормаКлиентскогоПриложения, свойство НавигационнаяСсылка
ОкноКлиентскогоПриложения, метод ПолучитьНавигационнуюСсылку

Использование в версии:

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

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

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

Сформировать собственный список навигационных ссылок в событии формы

На своей форме добавим, переставим, изменим и удалим варианты по ключам; передадим в диалог только две настоящие ссылки на свои обработки.

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

Полный модуль собственной управляемой формы Главная85.Пульт; клиентские события и серверные помощники уже разделены директивами.

Подготовка

  1. НОВАЯ собственная файловая база 8.5.1.1343, конфигурация УчебнаяНавигация85, совместимость НеИспользовать, управляемое приложение. Без расширений, фоновых прикладных заданий, разделителей и прикладных данных. Не рабочая база или её копия. Здесь стенд, F7 и UI не запускались: runtimeVerifiedScenarios=0.

  2. Создайте свои обработки Главная85 и Помощь85. У каждой — управляемая основная форма Пульт без основного реквизита, таблиц данных и обработчиков объекта. Помощь85 может иметь одну статическую надпись Учебная помощь. У Главная85 вставьте полный основной модуль выбранного урока, не внутрь другой процедуры.

  3. Для урока ссылок в свойствах своей формы назначьте события ПриСозданииНаСервере → ПриСозданииНаСервере, ОбработкаПолученияСпискаНавигационныхСсылок → ОбработкаПолученияСпискаНавигационныхСсылок и ОбработкаПолученияНавигационнойСсылки → ОбработкаПолученияНавигационнойСсылки. АвтоНавигационнаяСсылка отключается программно только у этой своей формы.

  4. Для урока коллекций назначьте ПриСозданииНаСервере. Добавьте вручную команду ПроверитьКоллекции с действием ПроверитьКоллекции и одну кнопку этой команды. Имена Уч85ВременнаяКоманда, Уч85ВременнаяКнопка, Уч85ВременнаяНадпись заранее НЕ создавайте. Выполняется только временное изменение собственного экземпляра формы.

  5. Не смешивайте основные модули двух уроков в одной форме: оба определяют собственное событие создания. Вставляйте по одному. F7 и обновление только своего стенда; открывайте Главная85 из списка собственных обработок в тонком или управляемом толстом клиенте.

  6. Для ссылок откройте стандартный диалог Получить ссылку своей формы и выберите Главная или Помощь. Дополнительные данные ссылки в хранилище не записываются: серверный ПолучитьНавигационнуюСсылку получает только метаданные своей обработки. Само создание строки не открывает другую форму и не обращается к внешнему сайту.

  7. Для коллекций нажмите ПроверитьКоллекции. Временные элементы создаются и удаляются внутри одного серверного вызова, поэтому промежуточные кнопка и надпись могут вообще не попасть на экран клиента. Проверяем имена и размеры коллекций, а не обещаем промежуточный вид интерфейса.

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    ПроверитьСвойКонтекст();
    ЭтаФорма.АвтоНавигационнаяСсылка = Ложь;
    ЭтаФорма.НавигационнаяСсылка = ПолучитьНавигационнуюСсылку(Метаданные.Обработки.Главная85);
КонецПроцедуры

&НаКлиенте
Процедура ОбработкаПолученияСпискаНавигационныхСсылок(СписокНавигационныхСсылок, КлючПоУмолчанию)
    ПроверитьСвойКонтекст();
    Если ЭтаФорма.АвтоНавигационнаяСсылка Или СписокНавигационныхСсылок.Количество() <> 0 Тогда
        ВызватьИсключение "Нужен пустой список своей формы с отключённой автоматической ссылкой";
    КонецЕсли;
    СписокНавигационныхСсылок.Добавить("home", "Главная", Ложь);
    СписокНавигационныхСсылок.Добавить("discard", "Временный вариант", Ложь);
    СписокНавигационныхСсылок.Вставить(1, "help", "Помощь", Ложь);
    Если СписокНавигационныхСсылок.Количество() <> 3 Или СписокНавигационныхСсылок.Индекс("help") <> 1 Тогда
        ВызватьИсключение "После вставки нужен порядок home,help,discard";
    КонецЕсли;
    Описание = СписокНавигационныхСсылок.Получить("help");
    Если Описание.Ключ <> "help" Тогда
        ВызватьИсключение "Получить принимает ключ, не позицию элемента";
    КонецЕсли;
    Описание.Представление = "Помощь стенда";
    Описание.ЗапрашиватьПользовательскоеПредставление = Истина;
    Если СписокНавигационныхСсылок.Получить("help").Представление <> "Помощь стенда"
        Или Не СписокНавигационныхСсылок.Получить("help").ЗапрашиватьПользовательскоеПредставление Тогда
        ВызватьИсключение "Описание из коллекции должно отражать изменение двух своих полей";
    КонецЕсли;
    СписокНавигационныхСсылок.Сдвинуть("help", -1);
    Если СписокНавигационныхСсылок[0].Ключ <> "help" Или СписокНавигационныхСсылок.Индекс("help") <> 0 Тогда
        ВызватьИсключение "По ключу help сдвигаем в начало, индекс проверяем отдельно";
    КонецЕсли;
    СписокНавигационныхСсылок.Удалить("discard");
    Если СписокНавигационныхСсылок.Количество() <> 2 Или СписокНавигационныхСсылок.Индекс("discard") <> -1 Тогда
        ВызватьИсключение "Удалён только свой временный вариант discard";
    КонецЕсли;
    СписокНавигационныхСсылок.Очистить();
    Если СписокНавигационныхСсылок.Количество() <> 0 Тогда
        ВызватьИсключение "Не подтверждена очистка своего списка";
    КонецЕсли;
    СписокНавигационныхСсылок.Добавить("home", "Главная", Ложь);
    СписокНавигационныхСсылок.Добавить("help", "Помощь стенда", Истина);
    Ключи = Новый Массив;
    Для Каждого Вариант Из СписокНавигационныхСсылок Цикл
        Ключи.Добавить(Вариант.Ключ);
    КонецЦикла;
    Если СтрСоединить(Ключи, ",") <> "home,help" Тогда
        ВызватьИсключение "В диалог должны перейти только два собственных варианта";
    КонецЕсли;
    КлючПоУмолчанию = "home";
    Сообщить("Список подготовлен: home,help; по умолчанию home. Ссылки ещё не выбирались.");
КонецПроцедуры

&НаКлиенте
Процедура ОбработкаПолученияНавигационнойСсылки(Ключ, Представление, НавигационнаяСсылка, СтандартнаяОбработка)
    ПроверитьСвойКонтекст();
    Если ТипЗнч(Ключ) <> Тип("Строка") Или (Ключ <> "home" И Ключ <> "help") Тогда
        ВызватьИсключение "Неизвестный ключ собственного списка, ссылка не формируется";
    КонецЕсли;
    Если ТипЗнч(СтандартнаяОбработка) <> Тип("Булево") Или СтандартнаяОбработка Тогда
        ВызватьИсключение "Для собственного варианта требуется фактический признак Ложь, описанный в справке события";
    КонецЕсли;
    НавигационнаяСсылка = ПолучитьСвоюСсылкуНаСервере(Ключ);
    Если НавигационнаяСсылка = "" Тогда
        ВызватьИсключение "Пустую строку не выдаём за готовую собственную ссылку";
    КонецЕсли;
    Сообщить("Выбран ключ " + Ключ + "; пользовательское представление: " + Представление);
КонецПроцедуры

&НаСервереБезКонтекста
Функция ПолучитьСвоюСсылкуНаСервере(Ключ)
    ПроверитьСвойКонтекст();
    Если Ключ = "home" Тогда
        Возврат ПолучитьНавигационнуюСсылку(Метаданные.Обработки.Главная85);
    ИначеЕсли Ключ = "help" Тогда
        Возврат ПолучитьНавигационнуюСсылку(Метаданные.Обработки.Помощь85);
    КонецЕсли;
    ВызватьИсключение "Сервер также отклоняет неизвестный ключ";
КонецФункции

&НаСервереБезКонтекста
Процедура ПроверитьСвойКонтекст()
    Если Метаданные.РежимСовместимости <> Метаданные.СвойстваОбъектов.РежимСовместимости.НеИспользовать Тогда
        ВызватьИсключение "Нужен собственный стенд УчебнаяНавигация85 платформы 8.5.1.1343";
    КонецЕсли;
    Если ТранзакцияАктивна() Тогда
        ВызватьИсключение "Учебный вывод не должен выполняться внутри чужой транзакции";
    КонецЕсли;
КонецПроцедуры

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

  1. ПриСозданииНаСервере проверяет собственный стенд и отключает АвтоНавигационнаяСсылка только у своего экземпляра формы. Базовая строка формируется сервером из метаданных Главная85, не склеивается вручную.

  2. СписокВыбораНавигационнойСсылки создаёт платформа и передаёт событию ОбработкаПолученияСпискаНавигационныхСсылок. Урок не использует выдуманный конструктор и не подменяет его СпискомЗначений. При отключённом автоформировании ожидается пустая коллекция.

  3. Добавить дописывает home и discard; Вставить принимает индекс 1 и ключ help — получаем home,help,discard. Индексы отсчитываются с нуля, ключи здесь отдельные строки.

  4. Получить("help") получает описание ПО КЛЮЧУ. Ключ readonly; Представление и ЗапрашиватьПользовательскоеПредставление изменяемы. Проверка повторным получением подтверждает, что работаем с описанием коллекции, не с независимой копией.

  5. Сдвинуть("help",-1) перемещает по ключу; квадратные скобки [0] читают по индексу. Удалить("discard") также получает ключ, Индекс отсутствующего ключа даёт -1, а не Неопределено.

  6. Очистить действует только на текущую собственную пустую-изначально коллекцию события. После очистки старое Описание больше не используется; заново формируем home/help и по обходу проверяем порядок. Не удаляем стандартные варианты чужой формы.

  7. КлючПоУмолчанию — ключ home, не номер позиции. Для help разрешён ввод пользовательского представления; оно не изменяет внутренний ключ и не выбирает чужой сервер или объект.

  8. Во втором событии принимаем только свои строковые home/help. В статье СтандартнаяОбработка объявлена Строкой, но описана через Истина/Ложь; проверяем фактическое Булево и Ложь для пользовательского варианта, не преобразуем строку и не объявляем противоречие разрешённым статической проверкой.

  9. Сервер повторно проверяет ключ и возвращает ПолучитьНавигационнуюСсылку от метаданных соответствующей собственной обработки. Используется один параметр: внешние данные и их хранилище не задействованы. Результат передаётся платформенному диалогу, а не открывается программно.

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

  1. Будущий тест: F7 и назначенные события собственной управляемой формы. Здесь runtimeVerifiedScenarios=0; диалог и его параметры не наблюдались.

  2. В диалоге остаются только Главная и Помощь стенда; по умолчанию home. discard не виден, Индекс его ключа после удаления равен -1.

  3. При выборе help можно задать своё представление. Сервер всё равно создаёт ссылку на Помощь85, а не использует представление как программное имя.

  4. Скопированную строку можно вручную проверить переходом внутри того же своего стенда: home должен открыть Главная85, help — Помощь85. Создание строки само по себе этого не доказывает.

  5. Включение автоформирования или неизвестный ключ должны вызвать отказ, а не очищать посторонние варианты. Если реальный тип СтандартнаяОбработка не Булево, опыт остановится и потребует отдельного анализа установленного события.

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

Будущий результат — два управляемых варианта собственной навигации с различными ключами и ссылками. Здесь выполнена только статическая подготовка.

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

  1. Получить, Сдвинуть и Удалить принимают ключ. Вставить принимает индекс отдельно от ключа, а оператор [] читает по индексу. Это отличается от одноимённых методов других коллекций.

  2. Ключ описания только читается; два других свойства изменяются. Строка представления не является самим URL и не заменяет ключ.

  3. Параметр СтандартнаяОбработка имеет противоречивое описание типа в установленной статье. Фактический тип проверяется до использования; здесь реальное событие не вызывалось.

  4. АвтоНавигационнаяСсылка, НавигационнаяСсылка и список события — разные механизмы. Изменение своего экземпляра не означает перенастройку платформы или всех форм.

  5. Добавление в избранное/копирование в буфер выполняет человек в собственном стенде, здесь эти операции не выполнялись. Не помещайте в представления или внешние данные секреты.

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

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

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

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

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