Получает текущий вариант интерфейса.
Синтаксис
ТекущийВариантИнтерфейса()Полное описание, параметры и ограничения
КлиентскоеПриложение.ТекущийВариантИнтерфейса (ClientApplication.CurrentInterfaceVariant)
КлиентскоеПриложение (ClientApplication)
ТекущийВариантИнтерфейса (CurrentInterfaceVariant)
Доступен, начиная с версии 8.3.10.
Синтаксис:
ТекущийВариантИнтерфейса()
Возвращаемое значение:
Тип: ВариантИнтерфейсаКлиентскогоПриложения.
Описание:
Получает текущий вариант интерфейса.
Доступность:
Тонкий клиент, веб-клиент, сервер, толстый клиент.
Использование в версии:
Доступен, начиная с версии 8.3.10.
Методическая информация
Практические примеры
Изменить режим штатного состояния формирования и вернуть исходное свойство
АвтоОтображениеСостояния управляет штатным состоянием собственного отчёта. Три явных режима проверяются вместе с настоящими событиями компоновки, затем возвращается 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.
Не удлиняйте опыт блокирующим ожиданием/внешним запросом ради индикатора. Если быстрый собственный отчёт не даёт заметного состояния, честно фиксируйте визуальную проверку как неподтверждённую.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.
Дополнить стандартную подсказку фактической области отчёта
Новая native подсказка 8.5.1 вызывается именно фактической областью события собственного ПолеРезультата. Базовая ФорматированнаяСтрока не выдумывается: она поступает из ПолучитьПодсказку(Область) и первым фрагментом входит в документированный массив. Проверка callback/типа отделена от ручного hover и чисел отчёта.
Где и как запускать
Полный модуль Отчёты → УчебныеТемпературы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 → Модуль формы. Заменяйте только исходный модуль этой своей новой учебной формы. Стандартную команду Сформировать оставьте доступной, команды сохранения/печати в опыте не используйте.
Создайте ДополнятьПодсказку и ПодсказкаДополнена типа Булево, ВызововПодсказки типа Число длиной 6/точность 0/неотрицательный, ФактическаяОбласть типа Строка неограниченной длины. Все собственные поля наблюдения сделайте ТолькоПросмотр=Истина; изменение ДополнятьПодсказку происходит командами, не чужой настройкой.
Создайте команды/кнопки СформироватьУчебныйОтчет, ВключитьДополнение, ВернутьСтандартнуюПодсказку с одноимёнными обработчиками. Исходно ДополнятьПодсказку=Ложь: сначала наблюдается штатная обработка.
У своего поля табличного документа ПолеРезультата в событиях назначьте ПриФормированииТекстаПодсказки → ТекстУчебнойПодсказки. Native сигнатура ровно Область, ТекстПодсказки, СтандартнаяОбработка, без выдуманного первого Элемент.
Для native hover остановите указатель на actual ячейке результата минимум на 2 сек, когда панель множественного выделения не отображается. Событие также может приходить для панели действий/смены выделения при уже открытой её подсказке; точное число вызовов на действие не обещается.
Включённый обработчик оставляет actual базовый объект первым элементом Фрагменты, добавляет только свою подпись вторым, создаёт ФорматированнуюСтроку и ставит СтандартнаяОбработка=Ложь. Содержимое штатной части заранее не задано и может быть пустым.
Полный отдельный модуль запуска ОткрытьУчебнаяПодсказка85 вставьте в Общие → Общие команды → ОткрытьУчебнаяПодсказка85 → Модуль команды. Команду без параметра включите в командный интерфейс нового учебного приложения. Новый UUID ключа уникальности каждого запуска не должен случайно переиспользовать предыдущий экземпляр.
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если КлиентскоеПриложение.ТекущийВариантИнтерфейса() <> ВариантИнтерфейсаКлиентскогоПриложения.Такси Тогда
Отказ = Истина;
ВызватьИсключение "Подготовьте собственный учебный сеанс Такси";
КонецЕсли;
ЭтаФорма.РежимБлокировкиПриОткрытииОкна = РежимБлокировкиПриОткрытииОкнаФормы.НеБлокировать;
Если ЭтаФорма.ТипФормыОтчета <> ТипФормыОтчета.Основная Тогда
Отказ = Истина;
ВызватьИсключение "Нужна управляемая форма собственного отчёта Основная";
КонецЕсли;
ОбъектОтчета = ЭтаФорма.РеквизитФормыВЗначение("Отчет");
Схема = УчебныеВзаимодействияОтчета85.СоздатьСхемуТемператур();
ОбъектОтчета.СхемаКомпоновкиДанных = Схема;
ОбъектОтчета.КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(Схема));
ОбъектОтчета.КомпоновщикНастроек.ЗагрузитьНастройки(Схема.НастройкиПоУмолчанию);
ЭтаФорма.ЗначениеВРеквизитФормы(ОбъектОтчета, "Отчет");
ЭтаФорма.СобытийДо = 0;
ЭтаФорма.СобытийПосле = 0;
ЭтаФорма.КомпоновкаЗавершена = Ложь;
ЭтаФорма.СостояниеУрока = "Собственная схема готова; взаимодействие и числа ещё не проверены";
ЭтаФорма.ДополнятьПодсказку = Ложь;
ЭтаФорма.ПодсказкаДополнена = Ложь;
ЭтаФорма.ВызововПодсказки = 0;
ЭтаФорма.ФактическаяОбласть = "";
КонецПроцедуры
&НаСервере
Процедура ПриКомпоновкеРезультата(СтандартнаяОбработка)
СтандартнаяОбработка = Истина;
ЭтаФорма.КомпоновкаЗавершена = Ложь;
ЭтаФорма.СобытийДо = ЭтаФорма.СобытийДо + 1;
КонецПроцедуры
&НаСервере
Процедура ПослеКомпоновкиРезультата(Результат, СтандартнаяОбработка)
СтандартнаяОбработка = Истина;
ЭтаФорма.КомпоновкаЗавершена = Ложь;
ЭтаФорма.СобытийПосле = ЭтаФорма.СобытийПосле + 1;
Если ТипЗнч(Результат) <> Тип("ТабличныйДокумент") Тогда
ЭтаФорма.СостояниеУрока = "Событие не передало ТабличныйДокумент; взаимодействие остановлено";
Возврат;
КонецЕсли;
ЭтаФорма.КомпоновкаЗавершена = Истина;
ЭтаФорма.СостояниеУрока = "Событие передало фактический ТабличныйДокумент. Это не сверка чисел отчёта";
КонецПроцедуры
&НаКлиенте
Процедура СформироватьУчебныйОтчет(Команда)
До = ЭтаФорма.СобытийДо;
После = ЭтаФорма.СобытийПосле;
Попытка
ЭтаФорма.СкомпоноватьРезультат(РежимКомпоновкиРезультата.Непосредственно);
Если ЭтаФорма.СобытийДо <> До + 1 Или ЭтаФорма.СобытийПосле <> После + 1 Или Не ЭтаФорма.КомпоновкаЗавершена Тогда
ВызватьИсключение "Нет подтверждённого маршрута двух событий формы";
КонецЕсли;
Исключение
ЭтаФорма.КомпоновкаЗавершена = Ложь;
ЭтаФорма.СостояниеУрока = "Формирование не подтверждено: " + ОписаниеОшибки();
КонецПопытки;
Сообщить(ЭтаФорма.СостояниеУрока);
КонецПроцедуры
&НаКлиенте
Процедура ВключитьДополнение(Команда)
ЭтаФорма.ДополнятьПодсказку = Истина;
ЭтаФорма.ПодсказкаДополнена = Ложь;
ЭтаФорма.СостояниеУрока = "Дополнение включено. Это ещё не вызов события и не подтверждение hover";
КонецПроцедуры
&НаКлиенте
Процедура ВернутьСтандартнуюПодсказку(Команда)
ЭтаФорма.ДополнятьПодсказку = Ложь;
ЭтаФорма.ПодсказкаДополнена = Ложь;
ЭтаФорма.СостояниеУрока = "Для следующего события возвращена стандартная обработка подсказки";
КонецПроцедуры
&НаКлиенте
Процедура ТекстУчебнойПодсказки(Область, ТекстПодсказки, СтандартнаяОбработка)
СтандартнаяОбработка = Истина;
ЭтаФорма.ВызововПодсказки = ЭтаФорма.ВызововПодсказки + 1;
ЭтаФорма.ПодсказкаДополнена = Ложь;
ЭтаФорма.ФактическаяОбласть = "";
Если Не ЭтаФорма.ДополнятьПодсказку Тогда
ЭтаФорма.СостояниеУрока = "Событие подсказки получено; оставлена штатная обработка";
Возврат;
КонецЕсли;
СтандартнаяОбработка = Ложь;
ТекстПодсказки = "";
Попытка
Если Не ЭтаФорма.КомпоновкаЗавершена Тогда
ВызватьИсключение "Сначала сформируйте собственный отчёт";
КонецЕсли;
Если ТипЗнч(Область) <> Тип("ОбластьЯчеекТабличногоДокумента") Тогда
ВызватьИсключение "Событие не передало фактическую область ячеек";
КонецЕсли;
ЭтаФорма.ФактическаяОбласть = СтрШаблон("R%1C%2:R%3C%4", Область.Верх, Область.Лево, Область.Низ, Область.Право);
БазоваяПодсказка = ЭтаФорма.ПолучитьПодсказку(Область);
Если ТипЗнч(БазоваяПодсказка) <> Тип("ФорматированнаяСтрока") Тогда
ВызватьИсключение "Нативный метод не вернул ФорматированнуюСтроку";
КонецЕсли;
Фрагменты = Новый Массив;
Фрагменты.Добавить(БазоваяПодсказка);
Фрагменты.Добавить(" | Учебные температуры: только три локальные записи");
ТекстПодсказки = Новый ФорматированнаяСтрока(Фрагменты);
Если ТипЗнч(ТекстПодсказки) <> Тип("ФорматированнаяСтрока") Тогда
ВызватьИсключение "Дополненный текст не сохранил тип форматированной строки";
КонецЕсли;
ЭтаФорма.ПодсказкаДополнена = Истина;
ЭтаФорма.СостояниеУрока = "Событие и сборка actual подсказки подтверждены для " + ЭтаФорма.ФактическаяОбласть + ". Hover и числа отчёта не проверены программно";
Исключение
ЭтаФорма.ПодсказкаДополнена = Ложь;
ТекстПодсказки = "";
ЭтаФорма.СостояниеУрока = "Дополнение подсказки остановлено: " + ОписаниеОшибки();
КонецПопытки;
КонецПроцедурыУчебныеВзаимодействияОтчета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 ячейке. ВызововПодсказки должен увеличиться при реальном событии; СтандартнаяОбработка остаётся Истина, входной текст не переписывается.
Нажмите ВключитьДополнение. Одна эта кнопка не устанавливает ПодсказкаДополнена: сначала нужен настоящий следующий callback.
Вызовите hover ещё раз при условиях native. Область берётся из события; её actual Верх/Лево/Низ/Право только читаются для диагностического адреса, не используются как придуманная фиксированная координата.
ПолучитьПодсказку(Область) возвращает реальную штатную ФорматированнуюСтроку. Массив из неё и собственной подписи передаётся документированному конструктору; возвращённый тип снова проверяется.
ПодсказкаДополнена подтверждает выполнение сборки actual текста, но сам hover и сохранение визуального оформления проверьте вручную. Текст штатной части не сравнивается с выдуманным ожидаемым содержимым.
Нажмите ВернутьСтандартнуюПодсказку, снова выполните hover. Дополнение выключено, флаг сброшен, callback оставляет штатную обработку. При ошибке активного дополнения текст пуст, положительного флага нет.
Как проверить результат
До actual callback после включения ПодсказкаДополнена=Ложь. Только пригодная область события + native базовая ФорматированнаяСтрока + конструктор позволяют Истина.
В ФактическаяОбласть виден адрес, прочитанный из самой области события. Не ожидайте конкретных R/C или имени авто-области.
В отладчике БазоваяПодсказка имеет реальный возвращённый тип ФорматированнаяСтрока и передана первым фрагментом без замены учебным текстом.
Визуально в реальной подсказке найдите только нашу добавленную подпись. Штатная часть может быть пустой; её содержимое/вид не обещаны. Статические тесты hover не подтверждают.
В выключенной ветке incoming ТекстПодсказки не изменяется и СтандартнаяОбработка=Истина. В ошибке включённой ветки СтандартнаяОбработка=Ложь, текст пуст и ПодсказкаДополнена=Ложь.
Точный счётчик на одиночное наведение не задан: native допускает несколько разных оснований вызова. Числа отчёта проверяются вручную отдельно.
Ожидаемый результат
Подготовлен native event → actual область → actual стандартная подсказка → массив фрагментов → собственное дополнение → возврат штатной обработки.
На что обратить внимание
Runtime 0. Полученное свойство/тип/счётчик события не доказывает визуальное отображение или правильность числового отчёта; все три температуры и реальный UI проверяются вручную.
Стандартная СКД может использовать собственную разметку/порядок. В этих уроках нет придуманной фиксированной координаты, имени auto-области или автоматического reader чисел.
Платформа может выполнять серверные вызовы и системное сохранение/историю. Наш код не сохраняет профили, файлы или прикладные записи, но это не гарантия отсутствия внутренних операций платформы.
Работайте только с собственными подготовленными формами, новым пользователем и новой базой. Не открывайте/закрывайте чужие окна и не переносите опыт на рабочего пользователя.
Не отключайте диагностику и не ставьте подтверждающие флаги вручную. Ошибка API, неверный тип или неподтверждённый маршрут оставляют соответствующую проверку отрицательной.
ПолучитьПодсказку доступен на desktop-клиенте, но не в обычном серверном обработчике формы. Не переносите его в &НаСервере; возможный внутренний серверный вызов не меняет контракт.
Пустой ТекстПодсказки по native не отображается. Catch намеренно не выдаёт прежнюю успешную подсказку при отказе текущего callback.
Ссылка-параметр конструктора ФорматированнаяСтрока не задаётся: добавленная учебная подпись не открывает внешние ресурсы.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.