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

Свойства · URL

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

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

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

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

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

Доступен, начиная с версии 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С» и не аффилирован с ней.