Асинхронная функция. Открывает немодально конструктор запроса.
Синтаксис
ОткрытьАсинх()Полное описание, параметры и ограничения
КонструкторЗапроса.ОткрытьАсинх (QueryWizard.DoAsync)
КонструкторЗапроса (QueryWizard)
ОткрытьАсинх (DoAsync)
Доступен, начиная с версии 8.3.18.
Синтаксис:
ОткрытьАсинх()
Возвращаемое значение:
Тип: Обещание.
Результат выполнения обещания - текст, если конструктор был закрыт нажатием кнопки "OK".
Описание:
Асинхронная функция. Открывает немодально конструктор запроса.
Доступность:
Тонкий клиент, веб-клиент, толстый клиент.
См. также:
КонструкторЗапроса, метод Показать
Использование в версии:
Доступен, начиная с версии 8.3.18.
Методическая информация
Практические примеры
Открыть редактор запроса через Ждать и принять только текст
Результат обещания — текст при ОК, не булево подтверждение и не РезультатЗапроса.
Где и как запускать
Полный модуль собственной управляемой формы. Диалог только редактирует учебный черновик.
Подготовка
Собственная учебная конфигурация УчебнаяКонфигурацияСинтаксиса, платформа 8.5.1.1343. Создайте новую внешнюю обработку с пустой управляемой основной формой.
В форме создайте команду ОткрытьУчебныйКонструктор, её кнопку и назначьте действие одноимённой процедуре. Назначьте событие ПриОткрытии обработчику из кода. Каждый урок — отдельный полный модуль формы.
Асинхронный и callback-уроки выполняются на клиенте Windows; модальный вариант — только толстый клиент собственной базы, где модальные вызовы уже разрешены. Режим рабочей конфигурации ради урока не меняйте.
Черновик из двух параметров не содержит ИЗ и не читает таблицы базы. Диалог может показывать структуру вашей учебной конфигурации, но этот код не выполняет даже принятый текст.
Первый опыт: измените состав полей в редакторе и нажмите Отмена. Второй опыт: снова откройте, измените псевдоним поля и нажмите ОК. Сверяйте сообщение с черновиком, показанным перед открытием.
Учебный черновик хранится в переменной этого экземпляра формы; закрытие формы его теряет. Записи базы, файлов, рабочих настроек и автоматического запуска полученного запроса нет.
Перем СобственныйЧерновик;
Перем КонструкторЗанят;
&НаКлиенте
Процедура ПриОткрытии(Отказ)
СобственныйЧерновик = "ВЫБРАТЬ &Название КАК Наименование, &Количество КАК Количество";
КонструкторЗанят = Ложь;
КонецПроцедуры
&НаКлиенте
Асинх Процедура ОткрытьУчебныйКонструктор(Команда)
Если КонструкторЗанят Тогда
Сообщить("Сначала завершите уже открытый собственный конструктор");
Возврат;
КонецЕсли;
Если ТипЗнч(СобственныйЧерновик) <> Тип("Строка") Тогда
ВызватьИсключение "Назначьте событие ПриОткрытии обработчику урока";
КонецЕсли;
ИсходныйТекст = СобственныйЧерновик;
Сообщить("Исходный черновик: " + ИсходныйТекст);
Конструктор = Новый КонструкторЗапроса(ИсходныйТекст);
Конструктор.АвтоДобавлениеПредставлений = Ложь;
Конструктор.РежимКомпоновкиДанных = Ложь;
Сообщить(Конструктор.Текст = ИсходныйТекст);
Сообщить(НЕ Конструктор.АвтоДобавлениеПредставлений);
Сообщить(НЕ Конструктор.РежимКомпоновкиДанных);
КонструкторЗанят = Истина;
Попытка
ПолученныйТекст = Ждать Конструктор.ОткрытьАсинх();
Исключение
КонструкторЗанят = Ложь;
ВызватьИсключение "Учебный конструктор не завершён: " + ОписаниеОшибки();
КонецПопытки;
КонструкторЗанят = Ложь;
Если ТипЗнч(ПолученныйТекст) = Тип("Строка") Тогда
Если ПустаяСтрока(ПолученныйТекст) Тогда
Сообщить("Пустой текст не принят; собственный черновик сохранён");
Сообщить(СобственныйЧерновик = ИсходныйТекст);
Иначе
СобственныйЧерновик = ПолученныйТекст;
Сообщить("Принятый черновик, без выполнения: " + СобственныйЧерновик);
Сообщить(СобственныйЧерновик = ПолученныйТекст);
КонецЕсли;
Иначе
Сообщить("Текст не получен; собственный черновик сохранён");
Сообщить(СобственныйЧерновик = ИсходныйТекст);
КонецЕсли;
КонецПроцедурыРазбор по шагам
Показываем исходный черновик и создаём отдельный КонструкторЗапроса из его копии.
Явно выключаем режим СКД и автоматические представления. Три проверки показывают исходную настройку.
Ждать получает завершённый результат, не сам объект Обещание. Занятость сбрасывается и при исключении.
В ветке получения строки принимаем только непустой текст; другие результаты не изменяют черновик.
Сообщение выводит принятый текст для изучения. Никакой вызов Запрос.Выполнить не следует за ОК.
Как проверить результат
Перед диалогом три Истина. При отмене или непринятом пустом тексте контроль сохранения черновика — Истина.
После ОК с непустым текстом сравнение принятого черновика — Истина; текст показан без выполнения.
Повторное нажатие команды до завершения диалога не создаёт второй конструктор.
Ожидаемый результат
Отредактированный текст принят только в память собственного экземпляра формы.
На что обратить внимание
Не сравнивайте результат ОткрытьАсинх с Истина: его документированное полезное значение — текст.
Отсутствие принятого текста не означает успешный пустой запрос.
Диалог синтаксической настройки не является гарантией правильной бизнес-логики или безопасного выполнения.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.
Увидеть дополнительные закладки режима компоновки данных
РежимКомпоновкиДанных включает Характеристики и Компоновка данных; он не создаёт схему СКД сам.
Где и как запускать
Полный модуль собственной управляемой формы. Диалог только редактирует учебный черновик.
Подготовка
Собственная учебная конфигурация УчебнаяКонфигурацияСинтаксиса, платформа 8.5.1.1343. Создайте новую внешнюю обработку с пустой управляемой основной формой.
В форме создайте команду ОткрытьУчебныйКонструктор, её кнопку и назначьте действие одноимённой процедуре. Назначьте событие ПриОткрытии обработчику из кода. Каждый урок — отдельный полный модуль формы.
Асинхронный и callback-уроки выполняются на клиенте Windows; модальный вариант — только толстый клиент собственной базы, где модальные вызовы уже разрешены. Режим рабочей конфигурации ради урока не меняйте.
Черновик из двух параметров не содержит ИЗ и не читает таблицы базы. Диалог может показывать структуру вашей учебной конфигурации, но этот код не выполняет даже принятый текст.
Первый опыт: измените состав полей в редакторе и нажмите Отмена. Второй опыт: снова откройте, измените псевдоним поля и нажмите ОК. Сверяйте сообщение с черновиком, показанным перед открытием.
Учебный черновик хранится в переменной этого экземпляра формы; закрытие формы его теряет. Записи базы, файлов, рабочих настроек и автоматического запуска полученного запроса нет.
Перем СобственныйЧерновик;
Перем КонструкторЗанят;
&НаКлиенте
Процедура ПриОткрытии(Отказ)
СобственныйЧерновик = "ВЫБРАТЬ &Название КАК Наименование, &Количество КАК Количество";
КонструкторЗанят = Ложь;
КонецПроцедуры
&НаКлиенте
Асинх Процедура ОткрытьУчебныйКонструктор(Команда)
Если КонструкторЗанят Тогда
Сообщить("Сначала завершите уже открытый собственный конструктор");
Возврат;
КонецЕсли;
Если ТипЗнч(СобственныйЧерновик) <> Тип("Строка") Тогда
ВызватьИсключение "Назначьте событие ПриОткрытии обработчику урока";
КонецЕсли;
ИсходныйТекст = СобственныйЧерновик;
Сообщить("Исходный черновик: " + ИсходныйТекст);
Конструктор = Новый КонструкторЗапроса(ИсходныйТекст);
Конструктор.АвтоДобавлениеПредставлений = Ложь;
Конструктор.РежимКомпоновкиДанных = Истина;
Сообщить(Конструктор.Текст = ИсходныйТекст);
Сообщить(НЕ Конструктор.АвтоДобавлениеПредставлений);
Сообщить(Конструктор.РежимКомпоновкиДанных);
КонструкторЗанят = Истина;
Попытка
ПолученныйТекст = Ждать Конструктор.ОткрытьАсинх();
Исключение
КонструкторЗанят = Ложь;
ВызватьИсключение "Учебный конструктор не завершён: " + ОписаниеОшибки();
КонецПопытки;
КонструкторЗанят = Ложь;
Если ТипЗнч(ПолученныйТекст) = Тип("Строка") Тогда
Если ПустаяСтрока(ПолученныйТекст) Тогда
Сообщить("Пустой текст не принят; собственный черновик сохранён");
Сообщить(СобственныйЧерновик = ИсходныйТекст);
Иначе
СобственныйЧерновик = ПолученныйТекст;
Сообщить("Принятый черновик, без выполнения: " + СобственныйЧерновик);
Сообщить(СобственныйЧерновик = ПолученныйТекст);
КонецЕсли;
Иначе
Сообщить("Текст не получен; собственный черновик сохранён");
Сообщить(СобственныйЧерновик = ИсходныйТекст);
КонецЕсли;
КонецПроцедурыРазбор по шагам
Создаём тот же параметрический черновик в отдельном экземпляре редактора.
Включаем только РежимКомпоновкиДанных, АвтоДобавлениеПредставлений оставляем выключенным.
После открытия найдите закладки Характеристики и Компоновка данных. Их наличие — визуальная проверка реального клиента.
Закройте Отменой, затем сравните с первым уроком, где режим выключен.
ОК принимает лишь текст; схема, настройки и процессор СКД этим уроком не создаются.
Как проверить результат
Три предварительные проверки Истина. Дополнительные закладки доступны в реальном редакторе.
Отмена сохраняет черновик; ОК не запускает запрос или отчёт.
Python/HTML-проверки не подтверждают фактическое наличие закладок: это проверяется при запуске 1С.
Ожидаемый результат
Объяснена настройка интерфейса редактора без подмены её построением отчёта СКД.
На что обратить внимание
Одинаковый текст может не измениться после переключения режима: различается доступность настройки в диалоге.
Параметры &Название и &Количество не становятся автоматически значениями параметров СКД.
Не называйте полученную строку МакетКомпоновкиДанных.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.