Тип: Булево. Управляет доступностью формы. Истина - доступна.
Полное описание, параметры и ограничения
ФормаКлиентскогоПриложения.Доступность (ClientApplicationForm.Enabled)
ФормаКлиентскогоПриложения (ClientApplicationForm)
Доступность (Enabled)
Доступен, начиная с версии 8.2.
Использование:
Чтение и запись.
Описание:
Тип: Булево.
Управляет доступностью формы.
Истина - доступна.
Доступность:
Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.
Изменение свойства на клиенте требует обращения к серверу.
Использование в версии:
Доступен, начиная с версии 8.2.
Методическая информация
Практические примеры
Отключить свою форму и восстановить её отдельным пультом
Доступность применяется к настоящей собственной управляемой форме с локальным количеством. Пульт остаётся отдельной доступной формой и умеет вернуть Истина. Перед отключением требуется завершённый и подтверждённый ввод; код сравнивает фактические значения до и после, не использует блокировку записей базы.
Где и как запускать
Полный основной модуль ОбщаяФорма.УчебныйПультДоступности85. Рабочая форма и общая команда запуска — два отдельных полных supportingModules с точными владельцами. Собственные локальные данные новой учебной базы 8.5.1.1343, desktop Windows, Версия 8.5.
Подготовка
Создайте отдельную новую пустую учебную базу и отдельного нового пользователя платформы 8.5.1.1343 без переноса пользовательских настроек. Корневое имя конфигурации УчебнаяМастерскаяФорм85, язык встроенного языка Русский, ОсновнойРежимЗапуска=УправляемоеПриложение, режим совместимости Не использовать. Здесь 1С не запускалась; подготовку далее выполняйте самостоятельно только в своей новой базе.
В свойствах корня конфигурации задайте точно РежимСовместимостиИнтерфейса=Версия8_5 и ВариантОткрытияОконКлиентскогоПриложения=ОткрыватьДанныеВДиалоговыхОкнах. Обновите только свой новый учебный стенд и запускайте тонкий либо толстый управляемый клиент Windows. Не изменяйте интерфейс или профиль рабочего пользователя.
В каждом уроке используйте только перечисленные собственные общие управляемые формы с пустыми модулями. Все три урока независимы: не объединяйте их основные и поддерживающие модули. У всех этих форм АвтоматическоеСохранениеДанныхВНастройках оставьте НеИспользовать; пользовательское сохранение состава формы для опыта не используйте.
В собственной роли разрешите учебную подсистему, общие формы и общие команды выбранного урока. Справочники, документы, регистры, предметные записи, сеть, файлы, печать и профили рабочих пользователей для уроков не нужны.
Событию ПриСозданииНаСервере каждой созданной формы назначьте её собственную одноимённую процедуру полного модуля. Клиентские процедуры команд свяжите с точными действиями своих команд. Код размещайте на уровне нужного модуля, не внутри другого обработчика.
Настройка метаданных и проверка перечисления не доказывают действующий вариант окон или фактический визуальный маршрут. В своём новом клиенте вручную убедитесь, что действует интерфейс Версия 8.5 и открытие данных в диалоговых окнах. Если используются вкладки, визуальный опыт третьего урока не подтверждён, даже когда свойство режима содержит нужный enum.
Создайте собственную подсистему МастерскаяФорм85 и включайте общие команды без параметра в её командный интерфейс. Каждый отдельный блок запуска вставляется в Общие → Общие команды → указанное имя команды → Модуль команды. Не вставляйте его в модуль формы.
Статические проверки сверяют установленное API 8.5.1.1343, но не компилируют и не запускают 1С. Доступность контролов, порядок событий, сохранность завершённого ввода, новая компоновка и размещение окон требуют ручных контрольных действий на подготовленном стенде.
В Общие → Общие формы создайте управляемые УчебныйПультДоступности85 и УчебноеРабочееОкно85. Полный основной код вставьте в УчебныйПультДоступности85 → Модуль формы. Отдельный полный блок УчебноеРабочееОкно85 вставьте в её собственный Модуль формы; оба события ПриСозданииНаСервере назначаются своим одноимённым процедурам.
В пульте создайте реквизит КлючРабочейФормы типа Строка длиной 36; на форму его не выводите. Создайте СостояниеУрока типа Строка длиной 300 и поле ввода ПолеСостоянияУрока с ПутьКДанным=СостояниеУрока, ТолькоПросмотр=Истина.
В пульте создайте команды ОткрытьРабочуюФорму, ОтключитьРабочуюФорму, ВосстановитьРабочуюФорму с одноимёнными действиями и ИзменяетСохраняемыеДанные=Ложь. Разместите три кнопки с заголовками Открыть рабочее окно, Отключить рабочее окно, Восстановить рабочее окно. Не помещайте эти кнопки в рабочую форму.
В рабочей форме создайте реквизиты Количество и ПодтверждённоеКоличество с единственным типом Число длиной 3, точность 0, допустимый знак Неотрицательный. Создайте ВводПодтверждён типа Булево и СостояниеРабочегоОкна типа Строка длиной 200. ПодтверждённоеКоличество и ВводПодтверждён не выводите на форму и не разрешайте их ручное изменение.
Выведите Количество полем ввода ПолеКоличества с ПутьКДанным=Количество, заголовок Количество, ТолькоПросмотр=Ложь. Выведите СостояниеРабочегоОкна полем ПолеСостоянияРабочегоОкна с одноимённым путём, ТолькоПросмотр=Истина. Код ограничивает ввод числа диапазоном 0–99, а полный обработчик ПриИзменении и команды дополнительно проверяют целое числовое значение.
В рабочей форме создайте команды ПодтвердитьКоличество и ДобавитьОдну, действия одноимённые, ИзменяетСохраняемыеДанные=Ложь. Разместите кнопки Подтвердить количество и Добавить одну. Событие поля ПриИзменении вручную не дублируйте: рабочий серверный обработчик назначает КоличествоИзменилось через УстановитьДействие.
Создайте общую команду ОткрытьПультДоступности85. Полный отдельный блок запуска ОткрытьПультДоступности85 вставьте в Модуль команды этого объекта. Он открывает только ОбщаяФорма.УчебныйПультДоступности85. Пульт сам получает подготовленную рабочую форму через ПолучитьФорму с собственным ключом UUID и владельцем ЭтаФорма.
Рабочая форма перед Открыть получает РежимБлокировкиПриОткрытииОкна=РежимБлокировкиПриОткрытииОкнаФормы.НеБлокировать. Это точное новое значение 8.5.1, не устаревшее Независимый другого перечисления. Пульт тоже открывается без блокировки; его Доступность код не выключает.
До команды пульта завершите редактирование количества и нажмите рабочую кнопку Подтвердить количество. Не сравнивайте незавершённый текст редактора с реквизитом. После любой ручной правки или Добавить одну подтверждение становится Ложь, и пульт отказывается отключать форму до нового подтверждения.
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если ТекущийВариантИнтерфейсаКлиентскогоПриложения() <> ВариантИнтерфейсаКлиентскогоПриложения.Версия8_5 Тогда
ВызватьИсключение "В своём учебном стенде нужен интерфейс Версия 8.5";
КонецЕсли;
ЭтаФорма.КлючРабочейФормы = Строка(Новый УникальныйИдентификатор);
ЭтаФорма.РежимБлокировкиПриОткрытииОкна = РежимБлокировкиПриОткрытииОкнаФормы.НеБлокировать;
ЭтаФорма.СостояниеУрока = "Откройте своё рабочее окно, завершите ввод и подтвердите количество";
КонецПроцедуры
&НаКлиенте
Функция ПолучитьСвоюРабочуюФорму()
ПараметрыРабочей = Новый Структура;
Рабочая = ПолучитьФорму("ОбщаяФорма.УчебноеРабочееОкно85", ПараметрыРабочей, ЭтаФорма, ЭтаФорма.КлючРабочейФормы);
Если Рабочая = Неопределено Тогда
ВызватьИсключение "Собственное рабочее окно не было получено";
КонецЕсли;
Если ТипЗнч(Рабочая) <> Тип("ФормаКлиентскогоПриложения") Тогда
ВызватьИсключение "Ожидалась собственная управляемая форма";
КонецЕсли;
Возврат Рабочая;
КонецФункции
&НаКлиенте
Процедура ОткрытьРабочуюФорму(Команда)
Рабочая = ПолучитьСвоюРабочуюФорму();
Если Не Рабочая.Открыта() Тогда
Рабочая.РежимБлокировкиПриОткрытииОкна = РежимБлокировкиПриОткрытииОкнаФормы.НеБлокировать;
КонецЕсли;
Рабочая.Открыть();
ЭтаФорма.СостояниеУрока = "Своё рабочее окно открыто без блокировки пульта. Завершите ввод его кнопкой подтверждения";
КонецПроцедуры
&НаКлиенте
Процедура ОтключитьРабочуюФорму(Команда)
Рабочая = ПолучитьСвоюРабочуюФорму();
Если Не Рабочая.Открыта() Тогда
ЭтаФорма.СостояниеУрока = "Сначала откройте своё рабочее окно";
Возврат;
КонецЕсли;
Если Не Рабочая.ВводПодтверждён Или Рабочая.Количество <> Рабочая.ПодтверждённоеКоличество Тогда
ЭтаФорма.СостояниеУрока = "В рабочем окне завершите ввод и нажмите Подтвердить количество";
Возврат;
КонецЕсли;
ДоОтключения = Рабочая.Количество;
Рабочая.Доступность = Ложь;
Если Рабочая.Количество <> ДоОтключения Или Рабочая.ПодтверждённоеКоличество <> ДоОтключения Тогда
Рабочая.Доступность = Истина;
ВызватьИсключение "Отключение доступности изменило своё подтверждённое количество";
КонецЕсли;
ЭтаФорма.СостояниеУрока = СтрШаблон("Рабочая форма: Доступность=%1; подтверждённое количество %2 сохранилось. Пульт доступен для восстановления",
Рабочая.Доступность, Рабочая.Количество);
КонецПроцедуры
&НаКлиенте
Процедура ВосстановитьРабочуюФорму(Команда)
Рабочая = ПолучитьСвоюРабочуюФорму();
Если Не Рабочая.Открыта() Тогда
ЭтаФорма.СостояниеУрока = "Рабочее окно закрыто. Откройте его заново: будут собственные начальные данные";
Возврат;
КонецЕсли;
ДоВосстановления = Рабочая.Количество;
ПодтверждениеДоВосстановления = Рабочая.ПодтверждённоеКоличество;
Рабочая.Доступность = Истина;
Если Рабочая.Количество <> ДоВосстановления
Или Рабочая.ПодтверждённоеКоличество <> ПодтверждениеДоВосстановления Тогда
ВызватьИсключение "Восстановление доступности изменило свои локальные значения";
КонецЕсли;
ЭтаФорма.СостояниеУрока = СтрШаблон("Рабочая форма: Доступность=%1; количество %2. Можно снова редактировать и подтверждать",
Рабочая.Доступность, Рабочая.Количество);
КонецПроцедурыУчебноеРабочееОкно85
Конфигуратор → Общие → Общие формы → УчебноеРабочееОкно85 → Модуль формы
Полный отдельный модуль собственной общей управляемой формы УчебноеРабочееОкно85; не часть основного модуля. Здесь 1С не запускалась.
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если ТекущийВариантИнтерфейсаКлиентскогоПриложения() <> ВариантИнтерфейсаКлиентскогоПриложения.Версия8_5 Тогда
ВызватьИсключение "В своём учебном стенде нужен интерфейс Версия 8.5";
КонецЕсли;
ЭтаФорма.Количество = 3;
ЭтаФорма.ПодтверждённоеКоличество = 3;
ЭтаФорма.ВводПодтверждён = Ложь;
ЭтаФорма.СостояниеРабочегоОкна = "Количество 3. До опыта нажмите Подтвердить количество";
ЭтаФорма.Элементы.ПолеКоличества.МинимальноеЗначение = 0;
ЭтаФорма.Элементы.ПолеКоличества.МаксимальноеЗначение = 99;
ЭтаФорма.Элементы.ПолеКоличества.УстановитьДействие("ПриИзменении", "КоличествоИзменилось");
КонецПроцедуры
&НаКлиенте
Процедура КоличествоИзменилось(Элемент)
ПроверитьСвоёКоличество();
ЭтаФорма.ВводПодтверждён = Ложь;
ЭтаФорма.СостояниеРабочегоОкна = "Ввод изменился. Нажмите Подтвердить количество до переключения доступности";
КонецПроцедуры
&НаКлиенте
Процедура ПодтвердитьКоличество(Команда)
ПроверитьСвоёКоличество();
ЭтаФорма.ПодтверждённоеКоличество = ЭтаФорма.Количество;
ЭтаФорма.ВводПодтверждён = Истина;
ЭтаФорма.СостояниеРабочегоОкна = СтрШаблон("Завершённый ввод подтверждён: %1", ЭтаФорма.Количество);
КонецПроцедуры
&НаКлиенте
Процедура ДобавитьОдну(Команда)
ПроверитьСвоёКоличество();
Если ЭтаФорма.Количество = 99 Тогда
ЭтаФорма.СостояниеРабочегоОкна = "Учебная верхняя граница 99 достигнута";
Возврат;
КонецЕсли;
ЭтаФорма.Количество = ЭтаФорма.Количество + 1;
ЭтаФорма.ВводПодтверждён = Ложь;
ЭтаФорма.СостояниеРабочегоОкна = "Добавлена одна локальная единица. Подтвердите новое количество";
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьСвоёКоличество()
Если ТипЗнч(ЭтаФорма.Количество) <> Тип("Число") Тогда
ВызватьИсключение "Своё количество должно быть числом";
КонецЕсли;
Если ЭтаФорма.Количество < 0 Или ЭтаФорма.Количество > 99 Или ЭтаФорма.Количество <> Цел(ЭтаФорма.Количество) Тогда
ВызватьИсключение "Нужно целое собственное количество от 0 до 99";
КонецЕсли;
КонецПроцедурыОткрытьПультДоступности85
Конфигуратор → Общие → Общие команды → ОткрытьПультДоступности85 → Модуль команды
Полный отдельный модуль собственной общей команды; открывает только указанную собственную основную форму. Здесь 1С не запускалась.
&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
ОткрытьФорму("ОбщаяФорма.УчебныйПультДоступности85");
КонецПроцедурыРазбор по шагам
В своём учебном разделе откройте пульт, затем его кнопкой получите настоящее рабочее окно. Оно начинается с количеством 3 и неподтверждённым вводом. Пульт остаётся доступен благодаря НеБлокировать.
В рабочем окне введите 5, завершите ввод и нажмите Подтвердить количество. Рабочий обработчик проверяет число/границы, сохраняет отдельное ПодтверждённоеКоличество=5 и ВводПодтверждён=Истина.
Перейдите в пульт и нажмите Отключить рабочее окно. ПолучитьФорму ищет именно собственный тип формы, владельца и ключ этого пульта. После проверок Открыта и подтверждения Доступность рабочей формы получает Ложь.
Код сравнивает собственные Количество и ПодтверждённоеКоличество с их значением до отключения. При неожиданном изменении немедленно возвращает Доступность=Истина и возбуждает исключение, а не сообщает успех.
Попробуйте редактировать количество и нажать Добавить одну в рабочем окне. При отключённой доступности форма не должна разрешать эти действия. Это ручная проверка интерфейса; сообщение пульта с Ложь само по себе её не подтверждает.
В отдельном пульте нажмите Восстановить рабочее окно. Восстановление не требует нового подтверждения в отключённой форме: пульт сначала снимком читает свои значения, возвращает Доступность=Истина и сравнивает значения после.
В рабочем окне нажмите Добавить одну: теперь количество 6, подтверждение снято. Попробуйте отключение до Подтвердить количество: пульт должен отказаться и оставить окно доступным. Подтвердите 6 и повторите цикл отключения/восстановления.
Повторите с подтверждённым количеством 0: ноль допустим. Если количество 99, Добавить одну отказывается увеличивать его, не создавая 100. Отключение и восстановление не должны подменять 0 или 99 исходной тройкой.
Закройте только своё рабочее окно. Команды отключения/восстановления после проверки Открыта отказываются работать с закрытой формой. ПолучитьФорму может создать новый ещё не открытый экземпляр: он не выдаётся за прежнее открытое окно. Нажмите Открыть рабочее окно — начинается новый опыт с 3.
Как проверить результат
После подтверждённого 5 отключение даёт Доступность=Ложь и количество 5; поле и рабочая команда действительно недоступны, а три кнопки пульта работают.
Восстановление с пульта даёт Истина и прежние 5. Добавить одну снова работает и даёт 6, после чего требуется повторное подтверждение.
Неподтверждённый ввод не отключается. Проверяйте поле СостояниеУрока пульта и фактическую доступность рабочего окна отдельно.
Подтверждённые 0 и 99 сохраняются при обоих переключениях. Статическая проверка кода не доказывает завершение текста редактора: перед каждым опытом нажимайте Подтвердить количество.
Закрытая рабочая форма не считается открытой; новые начальные данные появляются только в новом собственном экземпляре. Доступность пульта не менялась вместе с рабочей формой.
Ожидаемый результат
Отключение ввода собственной формы обратимо из отдельного доступного пульта; завершённые локальные количества сравниваются до/после. Фактическую недоступность контролов и восстановление нужно проверить вручную; 1С здесь не запускалась.
На что обратить внимание
Доступность формы не является блокировкой записи, транзакцией, правами пользователя или запретом серверного вызова. Не переносите учебный пульт на рабочие формы или чужие экземпляры.
Изменение Доступность на клиенте требует обращения к серверу по нативному контракту. Здесь оно происходит из обычной клиентской команды, не из ОбработкаВыбора или НачалоВыбора.
Не выключайте Доступность самого пульта: тогда исчезнет интерактивный путь восстановления. Не заменяйте НеБлокировать на БлокироватьВладельца или БлокироватьВесьИнтерфейс.
Подтверждение относится к завершённому реквизиту, не к ещё редактируемому тексту. Данный урок не гарантирует автоматическое сохранение незавершённого редактора при отключении формы.
ПолучитьФорму может вернуть Неопределено или создать ещё закрытую форму. Код проверяет тип и Открыта; новый закрытый экземпляр не считается доказательством существования прежнего окна.
Закрывайте только свои окна и завершайте опыт восстановлением доступности. Переключение не записывает количество в базу, не меняет пользовательский профиль и не сохраняет чужие настройки.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.