Тип: РежимАвтоОтображенияСостояния. Содержит режим отображения состояния отчета. Значение Авто эквивалентно значению Отображать. По умолчанию данное свойство имеет значение Авто.
Полное описание, параметры и ограничения
Расширение формы клиентского приложения для отчета.АвтоОтображениеСостояния (Client application form extension for reports.AutoShowState)
Расширение формы клиентского приложения для отчета (Client application form extension for reports)
АвтоОтображениеСостояния (AutoShowState)
Доступен, начиная с версии 8.2.
Использование:
Чтение и запись.
Описание:
Тип: РежимАвтоОтображенияСостояния.
Содержит режим отображения состояния отчета.
Значение Авто эквивалентно значению Отображать. По умолчанию данное свойство имеет значение Авто.
Доступность:
Тонкий клиент, веб-клиент, сервер, толстый клиент, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.
Использование в версии:
Доступен, начиная с версии 8.2.
Методическая информация
Практические примеры
Изменить режим штатного состояния формирования и вернуть исходное свойство
АвтоОтображениеСостояния управляет штатным состоянием собственного отчёта. Три явных режима проверяются вместе с настоящими событиями компоновки, затем возвращается actual исходное значение. Появление индикатора и числовой результат отдельно проверяются вручную; быстрый отчёт может не дать заметного индикатора.
Где и как запускать
Полный модуль Отчёты → УчебныеТемпературы85 → Формы → УчебноеСостояние85 → Модуль формы. Все процедуры на уровне модуля; директивы уже включены. Только толстый управляемый desktop-клиент 8.5.1.1343, Такси; runtime не проверен.
Подготовка
Здесь фактический запуск 1С не выполнен. Статические/native проверки не компилируют и не запускают 1С, не доказывают появление индикатора, hover, окно или числовой состав сформированного отчёта.
Создайте новую отдельную пустую учебную базу платформы 8.5.1.1343. Имя конфигурации УчебныеВзаимодействияОтчета85; основной режим запуска УправляемоеПриложение; режим совместимости НеИспользовать; РежимСовместимостиИнтерфейса=Такси. Не используйте рабочую конфигурацию.
Создайте отдельного нового учебного пользователя только собственной новой базы. Запускайте именно толстый клиент в режиме управляемого приложения и интерфейсе Такси. Тонкий/web/мобильный стенд здесь не заявлен; не меняйте режим рабочего сеанса.
В этой своей новой конфигурации создайте учебную роль УчебныйДоступТемператур85 с доступом к собственному отчёту УчебныеТемпературы85, подготовленным общим формам и общим командам запуска. Назначьте её только отдельному новому учебному пользователю; роли и права рабочего пользователя не меняйте.
У собственной учебной роли отдельно разрешите глобальное право ТолстыйКлиент — запуск толстого клиента, и РежимОсновногоОкнаОбычный — запуск с обычным основным окном. Новый учебный сеанс использует обычный режим основного окна. Это НЕ ОбычноеПриложение: режим приложения остаётся управляемым, интерфейс Такси. Если запуск или основное окно запрещены правами, сначала проверьте права именно этого нового учебного пользователя; доступ к отчёту сам по себе не разрешает запуск приложения. Административные и чужие роли не копируйте.
В дереве конфигурации Отчёты создайте УчебныеТемпературы85. Прикладные реквизиты, справочники, документы, регистры и записи не требуются. Модуль объекта отчёта оставьте пустым: новые события ПриКомпоновкеРезультата/ПослеКомпоновкиРезультата назначаются ФОРМЕ, не объекту.
Полный отдельный серверный модуль УчебныеВзаимодействияОтчета85 вставьте в Общие → Общие модули → УчебныеВзаимодействияОтчета85 → Модуль. Включите Сервер; выключите Клиент, Глобальный и Вызов сервера. Функция вызывается только из серверных обработчиков собственных отчётных форм.
Схема создаётся полностью программно; файловый макет не нужен. Source УчебныйИсточникТемператур имеет ТипИсточникаДанных Local. Dataset УчебныеТемпературы выполняет приложенный запрос трёх собственных константных записей Утро/18, День/23, Вечер/19, без чтения прикладных данных.
Выбраны ровно два поля Период и Температура. В структуре одна используемая группировка без полей группировки — детальные записи с АвтоВыбраннымПолем. Ресурсы, итоги, параметры, пользовательские варианты и фиктивные auto-имена не создаются.
В каждой собственной отчётной форме создайте дополнительные реквизиты СостояниеУрока типа Строка неограниченной длины, СобытийДо и СобытийПосле типа Число длиной 6/точность 0/неотрицательный, КомпоновкаЗавершена типа Булево. Поля с путями к этим реквизитам сделайте ТолькоПросмотр=Истина.
В свойствах событий каждой ФОРМЫ назначьте ПриСозданииНаСервере → ПриСозданииНаСервере, ПриКомпоновкеРезультата → ПриКомпоновкеРезультата, ПослеКомпоновкиРезультата → ПослеКомпоновкиРезультата. Сигнатуры уже в полном модуле. Старое трёхпараметрическое событие объекта отчёта не используйте.
КомпоновкаЗавершена означает только получение параметра события типа ТабличныйДокумент; счётчики — только наблюдение вызовов. Это НЕ сверка чисел отчёта. Периоды и температуры прочитайте вручную из actual результата; значения не подменяются вычислениями или ожидаемым массивом.
Все четыре собственные формы при создании до открытия назначают РежимБлокировкиПриОткрытииОкна=РежимБлокировкиПриОткрытииОкнаФормы.НеБлокировать. Это native значение 8.5.1, доступное управляемому Taxi-стенду; пульт не должен блокироваться отчётным окном. Оно не доказывает визуальную активацию окна.
АвтоматическоеСохранениеДанныхВНастройках собственных форм оставьте НеИспользовать. Не выполняйте команды сохранения вариантов, профилей, настроек, файлов или печати. Новый пользователь/база изолируют внутренние действия платформы, но отсутствие явно вызванного сохранения НЕ доказывает отсутствие системных сохранений/истории.
После подготовки всех своих объектов, форм, модулей и команд в Конфигураторе выполните Конфигурация → Обновить конфигурацию базы данных (F7). Если получены ошибки собственной учебной конфигурации, исправьте их до запуска. Закройте старый учебный сеанс, заново откройте именно эту новую базу своим учебным пользователем в толстом управляемом клиенте Такси; не обновляйте рабочую базу.
В Отчёты → УчебныеТемпературы85 → Формы создайте управляемую форму отчёта УчебноеСостояние85 (Основная), не общую форму. Основной реквизит Отчет: ОтчетОбъект.УчебныеТемпературы85, признак Основной. Реквизит Результат: ТабличныйДокумент; собственное поле ПолеРезультата: поле табличного документа, ПутьКДанным=Результат. Проверяйте эти реальные имена, не угадывайте имена конструктора.
Полный модуль УчебноеСостояние85 вставьте целиком в Отчёты → УчебныеТемпературы85 → Формы → УчебноеСостояние85 → Модуль формы. Заменяйте только исходный модуль этой своей новой учебной формы. Стандартную команду Сформировать оставьте доступной, команды сохранения/печати в опыте не используйте.
Создайте реквизит ИсходноеАвтоОтображение типа РежимАвтоОтображенияСостояния (native допускает реквизиты управляемой формы), МаршрутРежимаПодтвержден и РежимВосстановлен типа Булево; их собственные поля сделайте ТолькоПросмотр=Истина.
Создайте команды и кнопки БезСостояния, СоСостоянием, ТолькоПриФормировании, ВосстановитьСостояние. Каждой назначьте одноимённый клиентский обработчик полного модуля. Отдельной команды СформироватьУчебныйОтчет в этой форме нет: каждая режимная команда формирует через общий используемый обработчик.
Снимок ИсходноеАвтоОтображение получает реальное исходное свойство при создании своего экземпляра; не заменяйте его предположением Авто и не перезаписывайте между кнопками.
Полный отдельный модуль запуска ОткрытьУчебноеСостояние85 вставьте в Общие → Общие команды → ОткрытьУчебноеСостояние85 → Модуль команды. Команду без параметра включите в командный интерфейс нового учебного приложения. Новый UUID ключа уникальности каждого запуска не должен случайно переиспользовать предыдущий экземпляр.
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если КлиентскоеПриложение.ТекущийВариантИнтерфейса() <> ВариантИнтерфейсаКлиентскогоПриложения.Такси Тогда
Отказ = Истина;
ВызватьИсключение "Подготовьте собственный учебный сеанс Такси";
КонецЕсли;
ЭтаФорма.РежимБлокировкиПриОткрытииОкна = РежимБлокировкиПриОткрытииОкнаФормы.НеБлокировать;
Если ЭтаФорма.ТипФормыОтчета <> ТипФормыОтчета.Основная Тогда
Отказ = Истина;
ВызватьИсключение "Нужна управляемая форма собственного отчёта Основная";
КонецЕсли;
ОбъектОтчета = ЭтаФорма.РеквизитФормыВЗначение("Отчет");
Схема = УчебныеВзаимодействияОтчета85.СоздатьСхемуТемператур();
ОбъектОтчета.СхемаКомпоновкиДанных = Схема;
ОбъектОтчета.КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(Схема));
ОбъектОтчета.КомпоновщикНастроек.ЗагрузитьНастройки(Схема.НастройкиПоУмолчанию);
ЭтаФорма.ЗначениеВРеквизитФормы(ОбъектОтчета, "Отчет");
ЭтаФорма.СобытийДо = 0;
ЭтаФорма.СобытийПосле = 0;
ЭтаФорма.КомпоновкаЗавершена = Ложь;
ЭтаФорма.СостояниеУрока = "Собственная схема готова; взаимодействие и числа ещё не проверены";
ЭтаФорма.ИсходноеАвтоОтображение = ЭтаФорма.АвтоОтображениеСостояния;
ЭтаФорма.МаршрутРежимаПодтвержден = Ложь;
ЭтаФорма.РежимВосстановлен = Ложь;
КонецПроцедуры
&НаСервере
Процедура ПриКомпоновкеРезультата(СтандартнаяОбработка)
СтандартнаяОбработка = Истина;
ЭтаФорма.КомпоновкаЗавершена = Ложь;
ЭтаФорма.СобытийДо = ЭтаФорма.СобытийДо + 1;
КонецПроцедуры
&НаСервере
Процедура ПослеКомпоновкиРезультата(Результат, СтандартнаяОбработка)
СтандартнаяОбработка = Истина;
ЭтаФорма.КомпоновкаЗавершена = Ложь;
ЭтаФорма.СобытийПосле = ЭтаФорма.СобытийПосле + 1;
Если ТипЗнч(Результат) <> Тип("ТабличныйДокумент") Тогда
ЭтаФорма.СостояниеУрока = "Событие не передало ТабличныйДокумент; взаимодействие остановлено";
Возврат;
КонецЕсли;
ЭтаФорма.КомпоновкаЗавершена = Истина;
ЭтаФорма.СостояниеУрока = "Событие передало фактический ТабличныйДокумент. Это не сверка чисел отчёта";
КонецПроцедуры
&НаКлиенте
Процедура БезСостояния(Команда)
СформироватьВСвоемРежиме(РежимАвтоОтображенияСостояния.НеОтображать);
КонецПроцедуры
&НаКлиенте
Процедура СоСостоянием(Команда)
СформироватьВСвоемРежиме(РежимАвтоОтображенияСостояния.Отображать);
КонецПроцедуры
&НаКлиенте
Процедура ТолькоПриФормировании(Команда)
СформироватьВСвоемРежиме(РежимАвтоОтображенияСостояния.ОтображатьПриФормировании);
КонецПроцедуры
&НаКлиенте
Процедура СформироватьВСвоемРежиме(ЗапрошенныйРежим)
ЭтаФорма.МаршрутРежимаПодтвержден = Ложь;
ЭтаФорма.РежимВосстановлен = Ложь;
До = ЭтаФорма.СобытийДо;
После = ЭтаФорма.СобытийПосле;
Попытка
ЭтаФорма.АвтоОтображениеСостояния = ЗапрошенныйРежим;
Если ЭтаФорма.АвтоОтображениеСостояния <> ЗапрошенныйРежим Тогда
ВызватьИсключение "Свойство не совпало с явно запрошенным режимом";
КонецЕсли;
ЭтаФорма.СкомпоноватьРезультат(РежимКомпоновкиРезультата.Непосредственно);
Если ЭтаФорма.СобытийДо <> До + 1 Или ЭтаФорма.СобытийПосле <> После + 1 Или Не ЭтаФорма.КомпоновкаЗавершена Тогда
ВызватьИсключение "Назначенные события формы не подтвердили формирование";
КонецЕсли;
ЭтаФорма.МаршрутРежимаПодтвержден = Истина;
ЭтаФорма.СостояниеУрока = СтрШаблон("Режим %1 и маршрут событий подтверждены. Появление состояния и температуры проверьте вручную", ЗапрошенныйРежим);
Исключение
ЭтаФорма.МаршрутРежимаПодтвержден = Ложь;
ЭтаФорма.СостояниеУрока = "Опыт режима остановлен: " + ОписаниеОшибки();
Попытка
ЭтаФорма.АвтоОтображениеСостояния = ЭтаФорма.ИсходноеАвтоОтображение;
ЭтаФорма.СостояниеУрока = ЭтаФорма.СостояниеУрока + СтрШаблон(". После попытки восстановления свойство %1", ЭтаФорма.АвтоОтображениеСостояния);
Исключение
ЭтаФорма.СостояниеУрока = ЭтаФорма.СостояниеУрока + ". Восстановление не выполнено: " + ОписаниеОшибки();
КонецПопытки;
КонецПопытки;
Сообщить(ЭтаФорма.СостояниеУрока);
КонецПроцедуры
&НаКлиенте
Процедура ВосстановитьСостояние(Команда)
ЭтаФорма.РежимВосстановлен = Ложь;
ЭтаФорма.МаршрутРежимаПодтвержден = Ложь;
Попытка
ЭтаФорма.АвтоОтображениеСостояния = ЭтаФорма.ИсходноеАвтоОтображение;
Если ЭтаФорма.АвтоОтображениеСостояния <> ЭтаФорма.ИсходноеАвтоОтображение Тогда
ВызватьИсключение "Исходное свойство не восстановилось";
КонецЕсли;
ЭтаФорма.РежимВосстановлен = Истина;
ЭтаФорма.СостояниеУрока = "Восстановлено реальное исходное свойство: " + Строка(ЭтаФорма.АвтоОтображениеСостояния);
Исключение
ЭтаФорма.РежимВосстановлен = Ложь;
ЭтаФорма.СостояниеУрока = "Восстановление не подтверждено: " + ОписаниеОшибки();
КонецПопытки;
Сообщить(ЭтаФорма.СостояниеУрока);
КонецПроцедурыУчебныеВзаимодействияОтчета85
Общие → Общие модули → УчебныеВзаимодействияОтчета85 → Модуль
Полный отдельный серверный общий модуль собственной учебной схемы. Толстый управляемый desktop-стенд 8.5.1.1343, Такси; запуск 1С не выполнен.
Функция СоздатьСхемуТемператур() Экспорт
Схема = Новый СхемаКомпоновкиДанных;
Источник = Схема.ИсточникиДанных.Добавить();
Источник.Имя = "УчебныйИсточникТемператур";
Источник.ТипИсточникаДанных = "Local";
Набор = Схема.НаборыДанных.Добавить(Тип("НаборДанныхЗапросСхемыКомпоновкиДанных"));
Набор.Имя = "УчебныеТемпературы";
Набор.ИсточникДанных = Источник.Имя;
Набор.АвтоЗаполнениеДоступныхПолей = Истина;
Набор.Запрос = "ВЫБРАТЬ
| ""Утро"" КАК Период,
| 18 КАК Температура
|ОБЪЕДИНИТЬ ВСЕ
|ВЫБРАТЬ ""День"", 23
|ОБЪЕДИНИТЬ ВСЕ
|ВЫБРАТЬ ""Вечер"", 19";
Настройки = Схема.НастройкиПоУмолчанию;
Для Каждого ИмяПоля Из СтрРазделить("Период,Температура", ",") Цикл
Выбранное = Настройки.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
Выбранное.Поле = Новый ПолеКомпоновкиДанных(ИмяПоля);
Выбранное.Использование = Истина;
КонецЦикла;
Детали = Настройки.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
Детали.Использование = Истина;
АвтоВыбор = Детали.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));
АвтоВыбор.Использование = Истина;
Возврат Схема;
КонецФункцииОткрытьУчебноеСостояние85
Общие → Общие команды → ОткрытьУчебноеСостояние85 → Модуль команды
Полный отдельный клиентский модуль общей команды запуска своей подготовленной формы, толстый управляемый desktop-клиент 8.5.1.1343, Такси.
&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
ОткрытьФорму("Отчет.УчебныеТемпературы85.Форма.УчебноеСостояние85", , , "temperature-workshop-" + Строка(Новый УникальныйИдентификатор));
КонецПроцедурыРазбор по шагам
Запустите ОткрытьУчебноеСостояние85 и запишите фактическое ИсходноеАвтоОтображение. Проверка версии/своей конфигурации/Такси и собственная схема выполняются на сервере.
Нажмите БезСостояния. Клиент назначает НеОтображать, сравнивает actual свойство и запускает штатную компоновку Непосредственно.
Назначенные серверные события формы должны увеличить оба счётчика ровно на один; параметр ПослеКомпоновкиРезультата проверяется только на тип ТабличныйДокумент.
МаршрутРежимаПодтвержден=Истина означает назначенный режим и эти вызовы, не видимый индикатор и не проверку 18/23/19. Прочитайте реальные три записи результата вручную.
Нажмите СоСостоянием: назначается Отображать. Отдельно наблюдайте штатное состояние во время/после формирования; длительность и фактический вид не гарантированы.
Нажмите ТолькоПриФормировании: назначается ОтображатьПриФормировании. Native требует отображать состояние только при формировании; короткое формирование может быть визуально незаметным.
Нажмите ВосстановитьСостояние. Setter возвращает actual сохранённое свойство, включая Авто, если именно оно было исходным; затем getter сравнивается с тем же снимком.
При ошибке режимный опыт остаётся отрицательным, код пробует вернуть исходное свойство и показывает реальное прочитанное значение. Отдельная команда восстановления остаётся доступной.
Как проверить результат
Каждая режимная команда подтверждает actual enum, рост двух счётчиков на 1 и тип документа события, либо сообщает диагностику без МаршрутРежимаПодтвержден.
Прочтите вручную полный actual набор Утро/18, День/23, Вечер/19. Счётчики и КомпоновкаЗавершена не являются проверкой этих чисел.
Появление/отсутствие состояния для НеОтображать, Отображать и ОтображатьПриФормировании подтверждается отдельно в реальном клиенте; статические тесты его не наблюдали.
Исходный снимок одинаков до и после всех трёх команд. Восстановление считается программно подтверждённым только при actual равенстве свойства снимку.
После диагностики МаршрутРежимаПодтвержден=Ложь; попытка восстановления в catch не объявляет положительный результат прежнего опыта.
Ожидаемый результат
Подготовлен полный маршрут изменения штатного состояния отчёта, наблюдения событий и возврата actual исходного свойства, с отдельной ручной проверкой индикатора/данных.
На что обратить внимание
Runtime 0. Полученное свойство/тип/счётчик события не доказывает визуальное отображение или правильность числового отчёта; все три температуры и реальный UI проверяются вручную.
Стандартная СКД может использовать собственную разметку/порядок. В этих уроках нет придуманной фиксированной координаты, имени auto-области или автоматического reader чисел.
Платформа может выполнять серверные вызовы и системное сохранение/историю. Наш код не сохраняет профили, файлы или прикладные записи, но это не гарантия отсутствия внутренних операций платформы.
Работайте только с собственными подготовленными формами, новым пользователем и новой базой. Не открывайте/закрывайте чужие окна и не переносите опыт на рабочего пользователя.
Не отключайте диагностику и не ставьте подтверждающие флаги вручную. Ошибка API, неверный тип или неподтверждённый маршрут оставляют соответствующую проверку отрицательной.
Авто именно в свойствах отчёта эквивалентно Отображать. Не переносите это утверждение на все другие владельцы enum.
Не удлиняйте опыт блокирующим ожиданием/внешним запросом ради индикатора. Если быстрый собственный отчёт не даёт заметного состояния, честно фиксируйте визуальную проверку как неподтверждённую.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.