Возвращает текущее значение, установленное методом УстановитьИспользуемыйСервер.
Синтаксис
ПолучитьИспользуемыйСервер()Полное описание, параметры и ограничения
Глобальный контекст.ПолучитьИспользуемыйСервер (Global context.GetUsedServer)
Глобальный контекст (Global context)
ПолучитьИспользуемыйСервер (GetUsedServer)
Доступен, начиная с версии 8.3.17.
Синтаксис:
ПолучитьИспользуемыйСервер()
Возвращаемое значение:
Тип: ИспользуемыйСервер.
Описание:
Возвращает текущее значение, установленное методом УстановитьИспользуемыйСервер.
Доступность:
Мобильный клиент, мобильное приложение (клиент).
См. также:
Глобальный контекст, метод УстановитьИспользуемыйСервер
Использование в версии:
Доступен, начиная с версии 8.3.17.
Описание изменено в версии 8.3.18.
Методическая информация
Практические примеры
Перенести собственный черновик между реальными основным и автономным серверами мобильной формы
Не desktop имитация: нужен собственный автономный мобильный клиент и два действительно разных сервера исполнения одной формы. Источник и ПараметрыЗаполнения предоставляет настоящий lifecycle события.
Где и как запускать
Полный модуль ОбщаяФорма.Черновик85 своего мобильного клиента С АВТОНОМНЫМ РЕЖИМОМ; server создания и mobile client native lifecycle.
Подготовка
Создайте отдельную пустую CF УчебноеПереоткрытие85 на собственной платформе 8.5.1.1343 без бизнес-объектов и расширений. Используйте только собственную новую тестовую базу, не копию рабочей с настоящими данными.
В Конфигураторе Назначения использования включите Мобильный клиент с возможностью автономной работы. В Состав автономной конфигурации включите собственную общую форму Черновик85 и учебную команду ее открытия; основная и автономная конфигурации должны содержать одну и ту же форму и реквизиты.
Создайте ОбщаяФорма.Черновик85. Реквизиты: Черновик85 Строка 100, СчетчикПереходов85 Число 9,0, Состояние85 Строка 500. Поле черновика доступно для ввода; счетчик и статус только для просмотра. Не добавляйте файловые данные, объекты БД или другие реквизиты для переноса.
Свяжите события ПриСозданииНаСервере, ПередПереоткрытиемСДругогоСервера, ПриПереоткрытииСДругогоСервера с одноименными процедурами. Создайте команду ПерейтиНаДругойСвойСервер85 и кнопку; вставьте полный модуль.
Ручной prerequisite: опубликуйте только эту собственную новую базу на собственном изолированном тестовом HTTP-сервере, например порт 8851 и путь uch-reopen85; используйте отдельную свою учетную запись без производственных прав. Не публикуйте рабочую базу и не вставляйте секреты в модуль.
Установите совместимый автономный мобильный клиент в собственном тестовом устройстве или эмуляторе. Подключите только свою публикацию, загрузите собственную автономную конфигурацию и проверьте, что ОбщаяФорма.Черновик85 открывается и с основного, и с автономного сервера. Без этих реальных двух режимов код не исполняется.
Сначала откройте новую форму с основного сервера. Начальный черновик Мой учебный черновик85; для теста измените его только на Мой учебный черновик85-изменен. Серверы содержат только свои пустые метаданные; никаких рабочих календарей или данных.
Публикация, установка мобильного клиента, сеть и переключение режимов — точные ручные prerequisites для отдельного стенда, не выполненные инструментами действия. Известная native доступность не доказывает, что на текущем ПК или устройстве такой клиент уже установлен.
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ПроверитьСвойПустойСтенд();
Черновик85 = "Мой учебный черновик85";
СчетчикПереходов85 = 0;
Состояние85 = "Новая собственная форма; два реквизита могут переноситься между своими серверами";
КонецПроцедуры
&НаКлиенте
Процедура ПерейтиНаДругойСвойСервер85(Команда)
#Если МобильныйКлиент Тогда
ДоступностьОсновного = ОсновнойСерверДоступен();
Если ДоступностьОсновного = Неопределено Тогда
ВызватьИсключение "Этот урок требует настоящего мобильного клиента с автономным режимом";
КонецЕсли;
Если ИспользуемыйСерверФормы = ИспользуемыйСервер.Автономный Тогда
Если ДоступностьОсновного <> Истина Тогда
Состояние85 = "Свой основной сервер недоступен: переход не начинался, черновик сохранен";
Возврат;
КонецЕсли;
Цель = ИспользуемыйСервер.Основной;
ИначеЕсли ИспользуемыйСерверФормы = ИспользуемыйСервер.Основной Тогда
Цель = ИспользуемыйСервер.Автономный;
Иначе
ВызватьИсключение "Неизвестный сервер собственной формы";
КонецЕсли;
УстановитьИспользуемыйСервер(Цель);
Если ПолучитьИспользуемыйСервер() <> Цель Тогда
ВызватьИсключение "Временный выбор собственного сервера не подтвердился";
КонецЕсли;
ЭтотОбъект.ПереоткрытьСДругогоСервера();
#Иначе
ВызватьИсключение "Переоткрытие нельзя вызывать из desktop или обычного мобильного клиента без автономности";
#КонецЕсли
КонецПроцедуры
&НаКлиенте
Процедура ПередПереоткрытиемСДругогоСервера(Параметры, Отказ)
Если Черновик85 <> "Мой учебный черновик85" И Черновик85 <> "Мой учебный черновик85-изменен" Тогда
Отказ = Истина;
Состояние85 = "Своя форма отказала: разрешены только два учебных значения черновика";
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПриПереоткрытииСДругогоСервера(Источник, ПараметрыЗаполнения, СтандартнаяОбработка)
Если Источник.ИмяФормы <> ИмяФормы Тогда
ВызватьИсключение "Источник должен быть предыдущим экземпляром той же собственной формы";
КонецЕсли;
Если Источник.ИспользуемыйСерверФормы = ИспользуемыйСерверФормы Тогда
ВызватьИсключение "Ожидается действительно другой собственный сервер, не новый экземпляр на прежнем";
КонецЕсли;
ПараметрыЗаполнения.ВключитьРеквизиты.Очистить();
ПараметрыЗаполнения.ИсключитьРеквизиты.Очистить();
ПараметрыЗаполнения.ВключитьРеквизиты.Добавить("Черновик85");
ПараметрыЗаполнения.ВключитьРеквизиты.Добавить("СчетчикПереходов85");
ПараметрыЗаполнения.ИсключитьРеквизиты.Добавить("Состояние85");
ЭтотОбъект.ЗаполнитьПриПереоткрытииСДругогоСервера(Источник, ПараметрыЗаполнения);
СтандартнаяОбработка = Ложь;
Если Черновик85 <> Источник.Черновик85 Или СчетчикПереходов85 <> Источник.СчетчикПереходов85 Тогда
ВызватьИсключение "Собственный черновик и счетчик не перенесены";
КонецЕсли;
СчетчикПереходов85 = СчетчикПереходов85 + 1;
Состояние85 = "Реальный переход между своими серверами: " + Строка(Источник.ИспользуемыйСерверФормы)
+ " → " + Строка(ИспользуемыйСерверФормы) + "; переходов: " + Строка(СчетчикПереходов85);
КонецПроцедуры
&НаСервере
Процедура ПроверитьСвойПустойСтенд()
Если Метаданные.Справочники.Количество() <> 0 Или Метаданные.Документы.Количество() <> 0 Или Метаданные.Перечисления.Количество() <> 0 Или Метаданные.РегистрыСведений.Количество() <> 0 Или Метаданные.РегистрыНакопления.Количество() <> 0 Или Метаданные.РегистрыБухгалтерии.Количество() <> 0 Или Метаданные.РегистрыРасчета.Количество() <> 0 Или Метаданные.ПланыВидовХарактеристик.Количество() <> 0 Или Метаданные.ПланыВидовРасчета.Количество() <> 0 Или Метаданные.ПланыСчетов.Количество() <> 0 Или Метаданные.ПланыОбмена.Количество() <> 0 Или Метаданные.Последовательности.Количество() <> 0 Или Метаданные.БизнесПроцессы.Количество() <> 0 Или Метаданные.Задачи.Количество() <> 0 Или Метаданные.ОбщиеРеквизиты.Количество() <> 0 Или Метаданные.ПодпискиНаСобытия.Количество() <> 0 Или Метаданные.РегламентныеЗадания.Количество() <> 0 Или Метаданные.ВнешниеИсточникиДанных.Количество() <> 0 Тогда
ВызватьИсключение "Нужен только свой новый пустой учебный стенд";
КонецЕсли;
Если Метаданные.ЕстьИзмененияРасширениямиКонфигурации() Тогда
ВызватьИсключение "Свой сеанс не должен изменяться расширениями";
КонецЕсли;
Источники = Новый Массив;
Источники.Добавить(ИсточникРасширенийКонфигурации.БазаДанных);
Источники.Добавить(ИсточникРасширенийКонфигурации.СеансАктивные);
Источники.Добавить(ИсточникРасширенийКонфигурации.СеансОтключенные);
Для Каждого Источник Из Источники Цикл
Расширения = РасширенияКонфигурации.Получить(, Источник);
Если ТипЗнч(Расширения) <> Тип("Массив") Тогда
ВызватьИсключение "Native список расширений должен иметь тип Массив";
КонецЕсли;
Если Расширения.Количество() <> 0 Тогда
ВызватьИсключение "В своём новом стенде нет расширений базы или сеанса";
КонецЕсли;
КонецЦикла;
Если ТранзакцияАктивна() Тогда
ВызватьИсключение "Чужая или вложенная активная транзакция не допускается";
КонецЕсли;
КонецПроцедурыРазбор по шагам
ОсновнойСерверДоступен() = Неопределено доказывает отсутствие автономного режима: сразу отказываем, не превращаем обычный мобильный клиент в автономный.
ИспользуемыйСерверФормы — readonly фактический сервер текущего экземпляра. Выбираем противоположный; перед возвратом на основной проверяем его действительную доступность.
УстановитьИспользуемыйСервер временно выбирает свой следующий сервер до выхода из области локальных переменных. В том же вызове native ПереоткрытьСДругогоСервера действительно создает новый экземпляр с другого сервера.
ПередПереоткрытиемСДругогоСервера проверяет текущий собственный черновик и может отказать через настоящий Отказ. Недопустимый черновик не переносится.
ПриПереоткрытииСДругогоСервера получает действительные Источник и ПараметрыЗаполнения от платформы. Сверяем имя формы и фактическую смену сервера, не создаем фиктивный Источник вручную.
Readonly ВключитьРеквизиты и ИсключитьРеквизиты возвращают модифицируемые массивы; очищаем и заполняем их точными собственными путями Черновик85/СчетчикПереходов85, исключаем только статус.
ЗаполнитьПриПереоткрытииСДругогоСервера вызывается на новой форме с реальным старым экземпляром и native параметрами. СтандартнаяОбработка = Ложь исключает повторное стандартное заполнение; немедленный readback проверяет два перенесенных значения.
Счетчик повышаем уже в новом экземпляре после успешного readback. Статус строится из двух реально разных ИспользуемыйСерверФормы; никакого fake перехода getter-оберткой нет.
Как проверить результат
Основной → Автономный: новый экземпляр действительно показывает другой сервер, собственный черновик сохранен, счетчик 1.
Автономный → Основной при доступной своей публикации: тот же измененный черновик, счетчик 2. Повторите один roundtrip: счетчик 4, нет записи в БД.
На автономном устройстве отключите только доступ к своей публикации: переход на основной отказывает до native reopen, текущий черновик не теряется.
Введите любой третий черновик: ПередПереоткрытием отказывает, сервер и счетчик не меняются. Верните точное учебное значение.
Обычный mobile без автономности дает Неопределено и отказ. Desktop вообще не компилирует ветку native перехода для исполнения.
Через отладчик сопоставьте реальное событие с двумя экземплярами одной формы; серверы должны отличаться. Если readback не подтвердился, фиксируйте native ошибку и не сообщайте успешный перенос.
Статус не входит в переносимые реквизиты: в новом экземпляре он сформирован заново из реальных серверов, не скопирован с прежнего.
После закрытия формы черновик теряется: это данные формы, не автоматическая синхронизация информационных баз.
Ожидаемый результат
Два специальных API представлены настоящим автономным lifecycle с двумя собственными серверами, переносом двух точных реквизитов и отрицательными проверками.
На что обратить внимание
Статические тесты не устанавливают клиент, не создают публикацию, не подтверждают сетевой доступ и не доказывают runtime-перенос.
Мобильное приложение без автономного клиента и обычный desktop не удовлетворяют prerequisites.
Нельзя вручную конструировать Источник или readonly объект ПараметрыЗаполнения: они приходят из реального события.
Смена сервера формы не является копированием базы данных или синхронизацией произвольных объектов.
Не сохраняйте пароль публикации, ID устройства или настоящие учетные данные в примере.
При исчезновении сети в процессе перехода возможна ошибка native API: не повторяйте переход автоматически и не считайте счетчик признаком успеха без readback.
Временная установка используемого сервера ограничена текущим вызовом, не меняет постоянные настройки клиента.
Рабочие публикации, действительные календари и пользовательские данные не задействованы.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.
Прочитать сервер и режим сна собственного мобильного клиента
Диагностируем текущий выбор основного/автономного сервера и настройку запрета засыпания, не меняя их.
Где и как запускать
Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.
Подготовка
Только собственный учебный мобильный клиент 8.5.1.1343 с настроенной автономной работой на своём изолированном устройстве. Это не самостоятельное мобильное приложение: getter предпочтения в его клиентском контексте не объявлен доступным.
Создайте учебную обработку с управляемой формой, командой Выполнить и кнопкой. Весь приведённый модуль относится к мобильному клиенту; обычный тонкий клиент Windows для него не подходит.
Не запускаются GPS, карта, синхронизация, переключение сервера или удержание телефона от сна. Читаются уже действующие настройки.
Результаты зависят от режима приложения. Наличие поддержки не означает, что разрешение пользователя уже получено.
&НаКлиенте
Процедура Выполнить(Команда)
Используемый = ПолучитьИспользуемыйСервер();
Сообщить(СтрШаблон("Используемый сервер: %1", Используемый));
Сообщить(СтрШаблон("Выбран основной=%1; выбран автономный=%2", Используемый = ИспользуемыйСервер.Основной, Используемый = ИспользуемыйСервер.Автономный));
ПредпочтениеОсновного = ПолучитьПреимущественноеИспользованиеОсновногоСервера();
Если ПредпочтениеОсновного = Неопределено Тогда
Сообщить("Предпочтение основного сервера не задано");
Иначе
Сообщить(СтрШаблон("Предпочтение основного: %1", ПредпочтениеОсновного));
КонецЕсли;
Сообщить(СтрШаблон("Запрет засыпания компьютера сейчас=%1", ПолучитьЗапретЗасыпанияКомпьютера()));
КонецПроцедурыРазбор по шагам
ПолучитьИспользуемыйСервер возвращает перечисление, не HTTP адрес и не объект сервера кластера. Сравниваем с документированными Основной/Автономный.
Текущий используемый сервер и преимущественное использование — разные параметры. Предпочтение может быть Неопределено; это не то же самое, что Ложь.
ПолучитьЗапретЗасыпанияКомпьютера читает значение запрета сна. Это не измерение разряда аккумулятора и не тайм-аут спящего сеанса сервера.
Ни один setter не вызывается. Устройство не переключается на основной сервер и не получает постоянный запрет сна.
Как проверить результат
Показаны фактическое перечисление сервера, две проверки сравнения, предпочтение или его отсутствие и текущий запрет сна.
Не требуйте, чтобы оба сравнения сервера дали Истина одновременно. Состояние телефона осталось прежним.
Ожидаемый результат
Дан полный диагностический пример с обработкой необязательного мобильного предпочтения.
На что обратить внимание
Этот модуль не предназначен для обычного тонкого клиента Windows.
Чтение предпочтения не доказывает доступность сети и успешную синхронизацию.
Долгий запрет сна может расходовать аккумулятор, но урок его не устанавливает.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.