ОтображениеСостояния — объект, получаемый из поля только для чтения. Его собственные свойства задают пояснение; сетевую загрузку урок не имитирует.
Где и как запускать
Модуль новой управляемой формы учебной внешней обработки. Код содержит готовые процедуры с директивами; вставляйте на уровне модуля, не внутрь другого обработчика. Каждую задачу запускайте в отдельной копии формы.
Подготовка
Создайте отдельную внешнюю обработку с новой пустой управляемой основной формой в учебной базе. ПриСозданииНаСервере назначьте одноимённой процедуре.
Вставьте полный модуль на уровне модуля формы. УчебныйДокумент, УчебноеПолеТаблицы и кнопку вручную не создавайте: их добавляет код.
Каждый урок — отдельная копия формы. Таблица содержит только собственную Книгу (3) и Ручку (1); это не печатная форма рабочего документа.
Настольный тонкий/толстый или веб-клиент. Для урока очистки выделения выберите интерфейс Версия 8.5: его поведение выделения отдельно отмечено в справке.
Код не вызывает печать, сохранение файла, сетевой обмен или запись базы. Внешняя кнопка остаётся вне табличного поля и его состояния.
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Новые = Новый Массив;
Новые.Добавить(Новый РеквизитФормы("УчебныйДокумент", Новый ОписаниеТипов("ТабличныйДокумент")));
ЭтаФорма.ИзменитьРеквизиты(Новые);
Документ = Новый ТабличныйДокумент;
Документ.Область(1, 1).Текст = "Товар";
Документ.Область(1, 2).Текст = "Количество";
Документ.Область(2, 1).Текст = "Книга";
Документ.Область(3, 1).Текст = "Ручка";
Для НомерСтроки = 2 По 3 Цикл
Ячейка = Документ.Область(НомерСтроки, 2);
Ячейка.СодержитЗначение = Истина;
Ячейка.ТипЗначения = Новый ОписаниеТипов("Число");
Если НомерСтроки = 2 Тогда
Ячейка.Значение = 3;
Иначе
Ячейка.Значение = 1;
КонецЕсли;
КонецЦикла;
Документ.Область(, 1, , 1).ШиринаКолонки = 25;
Документ.Область(, 2, , 2).ШиринаКолонки = 12;
Документ.Область(2, 1, 3, 2).Имя = "УчебныеТовары";
Документ.ТолькоПросмотр = Истина;
ЭтаФорма.УчебныйДокумент = Документ;
Поле = Элементы.Добавить("УчебноеПолеТаблицы", Тип("ПолеФормы"));
Поле.Вид = ВидПоляФормы.ПолеТабличногоДокумента;
Поле.ПутьКДанным = "УчебныйДокумент";
Поле.Редактирование = Ложь;
Поле.РазрешитьНачалоПеретаскивания = Ложь;
Поле.РазрешитьПеретаскивание = Ложь;
СостояниеПоля = Поле.ОтображениеСостояния;
СостояниеПоля.Текст = "Учебная таблица: данные только в памяти";
СостояниеПоля.ВариантОтображения = ВариантОтображенияСостояния.ТекущееСостояние;
СостояниеПоля.ДополнительныйРежимОтображения = ДополнительныйРежимОтображения.НеИспользовать;
СостояниеПоля.Картинка = Новый Картинка;
СостояниеПоля.ИмяКоманды = "";
СостояниеПоля.Видимость = Истина;
КомандаДействия = ЭтаФорма.Команды.Добавить("УчебноеДействие");
КомандаДействия.Действие = "УчебноеДействие";
КомандаДействия.Заголовок = "Проверить свою таблицу";
КомандаДействия.Подсказка = "Действие только над данными учебной формы";
КомандаДействия.ИзменяетСохраняемыеДанные = Ложь;
Кнопка = Элементы.Добавить("КнопкаУчебноеДействие", Тип("КнопкаФормы"));
Кнопка.ИмяКоманды = КомандаДействия.Имя;
Кнопка.Заголовок = КомандаДействия.Заголовок;
КонецПроцедуры
&НаКлиенте
Процедура УчебноеДействие(Команда)
Поле = Элементы.УчебноеПолеТаблицы;
СостояниеПоля = Поле.ОтображениеСостояния;
СостояниеПоля.Видимость = НЕ СостояниеПоля.Видимость;
Сообщить("Видимость пояснения: " + Строка(СостояниеПоля.Видимость));
Сообщить(СостояниеПоля.Текст = "Учебная таблица: данные только в памяти");
Сообщить(ЭтаФорма.УчебныйДокумент.Область(2, 2).Значение = 3);
Сообщить(ЭтаФорма.УчебныйДокумент.Область(3, 2).Значение = 1);
КонецПроцедурыРазбор по шагам
Ссылка Поле.ОтображениеСостояния доступна только для чтения. Присваивать туда Новый объект не нужно и нельзя.
Текст, вариант и дополнительный режим меняют полученный объект. Пустая картинка и пустое ИмяКоманды не создают несуществующей команды.
Внешняя кнопка переключает Видимость, поэтому остаётся возможность скрыть отображаемое состояние.
Это локальное пояснение уже подготовленных учебных данных, не настоящий прогресс запроса, соединения или фонового задания.
Как проверить результат
Три Истина и фактическая видимость. Первый клик скрывает пояснение, второй возвращает.
Проверьте отображение в выбранном клиенте: точная тема не проверена автоматически.
Ожидаемый результат
Пояснение состояния меняется без подмены readonly-ссылки и без изменения таблицы.
На что обратить внимание
Не показывайте текст Загружено из сервера, если код не выполнял загрузку.
Отображение состояния поля не равно глобальной процедуре Состояние.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.