Тип: Произвольный. Пользовательский идентификатор формы. Может быть автоматически назначен, если задан соответствующий параметр методов ПолучитьФорму... Используется для идентификации и поиска открытых форм.
Полное описание, параметры и ограничения
ФормаКлиентскогоПриложения.КлючУникальности (ClientApplicationForm.UniqueKey)
ФормаКлиентскогоПриложения (ClientApplicationForm)
КлючУникальности (UniqueKey)
Доступен, начиная с версии 8.2.
Использование:
Чтение и запись.
Описание:
Тип: Произвольный.
Пользовательский идентификатор формы. Может быть автоматически назначен, если задан соответствующий параметр методов ПолучитьФорму... Используется для идентификации и поиска открытых форм.
Доступность:
Тонкий клиент, веб-клиент, мобильный клиент, толстый клиент, мобильное приложение (клиент).
Использование в версии:
Доступен, начиная с версии 8.2.
Методическая информация
Практические примеры
ОткрытьФорму: повторно активировать свой экземпляр с одним ключом
Два вызова с одинаковым владельцем и собственным ключом возвращают уже открытое окно. Неключевой параметр количества не заново инициализирует существующие данные.
Где и как запускать
Полный модуль собственной общей управляемой формы УчебныеОкна85. Два экземпляра одной формы, тонкий клиент Windows; создание реквизитов на сервере, открытие/выбор/закрытие на клиенте.
Подготовка
Используйте отдельную пустую учебную конфигурацию 8.5.1.1343 без рабочих данных и тонкий управляемый клиент Windows. Создайте общую управляемую форму УчебныеОкна85; имя в дереве Общие → Общие формы должно совпадать с кодом.
На вкладке Параметры формы создайте Дочерняя, СтартовоеКоличество и КлючЗапроса. Значения передаются как Булево, Число и Строка. У всех трёх снимите Ключевой: пользовательский ключ уникальности задаётся отдельно четвёртым аргументом открытия.
Событию ПриСозданииНаСервере назначьте одноимённую процедуру. Вставьте весь приведённый модуль выбранного урока. Реквизиты, поле количества, команду и кнопку вручную не создавайте: их добавляет код.
Для запуска добавьте в свою учебную обработку пустую управляемую форму и команду ОткрытьУчебноеОкно. Через конструктор обработчика создайте клиентскую процедуру команды и поместите в её тело ровно ОткрытьФорму("ОбщаяФорма.УчебныеОкна85");. Эта внешняя кнопка открывает главное окно, а кнопки внутри урока открывают его дочерний экземпляр.
В каждом уроке используйте отдельную копию своей конфигурации/формы. Все экземпляры создаются из одного полного модуля: главное окно имеет Дочерняя=Ложь, второе получает Дочерняя=Истина и собственные параметры.
Количество главного окна первоначально 3, цена книги 250. В дочернем поле можно выбрать целое количество 1–10; никакой номенклатуры, документов, регистров, файлов, сети и печати не используется.
Запуск в 1С не проверялся. Статические проверки не доказывают появление окна, возврат событий или фактическое поведение темы: выполните контрольные действия только на своём учебном стенде.
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Новые = Новый Массив;
ЧисловойТип = Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(2, 0, ДопустимыйЗнак.Неотрицательный));
Новые.Добавить(Новый РеквизитФормы("УчебноеКоличество", ЧисловойТип));
Новые.Добавить(Новый РеквизитФормы("ЭтоДочерняяФорма", Новый ОписаниеТипов("Булево")));
Новые.Добавить(Новый РеквизитФормы("УчебныйКлючЗапроса", Новый ОписаниеТипов("Строка")));
ЭтаФорма.ИзменитьРеквизиты(Новые);
ЭтаФорма.ЭтоДочерняяФорма = Ложь;
ЭтаФорма.УчебноеКоличество = 3;
ЭтаФорма.УчебныйКлючЗапроса = "";
Если ЭтаФорма.Параметры.Свойство("Дочерняя", ПризнакДочерней) Тогда
Если ТипЗнч(ПризнакДочерней) = Тип("Булево") Тогда
ЭтаФорма.ЭтоДочерняяФорма = ПризнакДочерней;
КонецЕсли;
КонецЕсли;
Если ЭтоДочерняяФорма Тогда
Если Не ЭтаФорма.Параметры.Свойство("СтартовоеКоличество", ПереданноеКоличество) Тогда
ВызватьИсключение "Нет собственного параметра СтартовоеКоличество";
КонецЕсли;
Если ТипЗнч(ПереданноеКоличество) <> Тип("Число") Тогда
ВызватьИсключение "СтартовоеКоличество должно быть числом";
КонецЕсли;
Если ПереданноеКоличество < 1 Или ПереданноеКоличество > 10 Или ПереданноеКоличество <> Цел(ПереданноеКоличество) Тогда
ВызватьИсключение "СтартовоеКоличество должно быть целым от 1 до 10";
КонецЕсли;
Если Не ЭтаФорма.Параметры.Свойство("КлючЗапроса", ПереданныйКлюч) Тогда
ВызватьИсключение "Нет собственного параметра КлючЗапроса";
КонецЕсли;
Если ТипЗнч(ПереданныйКлюч) <> Тип("Строка") Тогда
ВызватьИсключение "КлючЗапроса должен быть собственной строкой";
КонецЕсли;
Если ПустаяСтрока(ПереданныйКлюч) Тогда
ВызватьИсключение "Собственный ключ запроса не задан";
КонецЕсли;
ЭтаФорма.УчебноеКоличество = ПереданноеКоличество;
ЭтаФорма.УчебныйКлючЗапроса = ПереданныйКлюч;
КонецЕсли;
Поле = Элементы.Добавить("ПолеУчебногоКоличества", Тип("ПолеФормы"));
Поле.Вид = ВидПоляФормы.ПолеВвода;
Поле.ПутьКДанным = "УчебноеКоличество";
Поле.Заголовок = "Своих книг от 1 до 10";
Команда = Команды.Добавить("УчебноеДействие");
Команда.Действие = "ВыполнитьУчебноеДействие";
Команда.ИзменяетСохраняемыеДанные = Ложь;
Кнопка = Элементы.Добавить("КнопкаУчебногоДействия", Тип("КнопкаФормы"));
Кнопка.ИмяКоманды = Команда.Имя;
Если ЭтоДочерняяФорма Тогда
ЭтаФорма.Заголовок = "Собственное дочернее окно";
Команда.Заголовок = "Завершить собственный выбор";
Иначе
ЭтаФорма.Заголовок = "Главное учебное окно";
Команда.Заголовок = "Открыть собственное дочернее окно";
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВыполнитьУчебноеДействие(Команда)
ПроверитьСвоёКоличество(УчебноеКоличество);
Если ЭтоДочерняяФорма Тогда
ЭтаФорма.Закрыть();
Возврат;
КонецЕсли;
ПервыеПараметры = Новый Структура("Дочерняя,СтартовоеКоличество,КлючЗапроса", Истина, 3, "own-reuse");
ПерваяФорма = ОткрытьФорму("ОбщаяФорма.УчебныеОкна85", ПервыеПараметры, ЭтаФорма, "own-common-window",
Неопределено, Неопределено, Неопределено, РежимБлокировкиПриОткрытииОкнаФормы.НеБлокировать);
ПервыйИдентификатор = ПерваяФорма.УникальныйИдентификатор;
ВторыеПараметры = Новый Структура("Дочерняя,СтартовоеКоличество,КлючЗапроса", Истина, 5, "own-reuse");
ПовторнаяФорма = ОткрытьФорму("ОбщаяФорма.УчебныеОкна85", ВторыеПараметры, ЭтаФорма, "own-common-window",
Неопределено, Неопределено, Неопределено, РежимБлокировкиПриОткрытииОкнаФормы.НеБлокировать);
Сообщить(ПовторнаяФорма.УникальныйИдентификатор = ПервыйИдентификатор);
Сообщить(ПовторнаяФорма.КлючУникальности = "own-common-window");
Сообщить(ПовторнаяФорма.УчебноеКоличество = 3);
Сообщить(ПовторнаяФорма.Параметры.СтартовоеКоличество = 3);
Сообщить(ПовторнаяФорма.Открыта());
Сообщить("Это своё прежнее окно, а не новый расчёт по второму параметру 5");
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьСвоёКоличество(Знач Количество)
Если ТипЗнч(Количество) <> Тип("Число") Тогда
ВызватьИсключение "Количество должно быть числом";
КонецЕсли;
Если Количество < 1 Или Количество > 10 Или Количество <> Цел(Количество) Тогда
ВызватьИсключение "Выберите целое количество от 1 до 10";
КонецЕсли;
КонецПроцедуры
Разбор по шагам
Параметры формы объявлены неключевыми в подготовке. Пользовательский ключ own-common-window задан четвёртым аргументом.
Первый ОткрытьФорму создаёт и показывает дочернее окно с количеством 3. Сохранить его реальный УникальныйИдентификатор.
Второй вызов использует то же имя, владельца, ключ и неблокирующий режим. Изменяется лишь передаваемый неключевой стартовый параметр 5.
Сравнить идентификаторы: найден открытый экземпляр, а не второй объект. Сравнение не опирается на заголовок окна.
Параметры и данные существующего экземпляра остаются со значением 3; повторное открытие не является способом обновить реквизиты.
Для отдельного нового окна нужен другой пользовательский ключ либо Истина. Для изменения имеющегося собственного поля нужна явная запись в его реквизит.
Как проверить результат
Пять сообщений Истина, одно собственное дочернее окно, количество 3. После закрытия этого окна повторный запуск начинает новый самостоятельный опыт.
Замените ключ второго вызова на own-second-window: откроется другой экземпляр с количеством 5; проверки одинакового идентификатора/ключа/количества 3 станут Ложь.
Ожидаемый результат
На реально создаваемых собственных экземплярах объяснены поиск открытого окна, пользовательский ключ и неключевые параметры.
На что обратить внимание
В режиме БлокироватьВладельца форма не участвует в обычном поиске открытых форм. Этот урок намеренно выбирает НеБлокировать.
УникальныйИдентификатор экземпляра и пользовательский КлючУникальности — разные значения.
Если оставить СтартовоеКоличество ключевым параметром, второй вызов может создавать другое окно. Настройка Ключевой — часть подготовки, не необязательная деталь.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.