КонструкторЗапроса.ОткрытьМодально

Методы · DoModal

Открывает модально конструктор запроса.

Синтаксис

ОткрытьМодально()
Полное описание, параметры и ограничения

КонструкторЗапроса.ОткрытьМодально (QueryWizard.DoModal)

КонструкторЗапроса (QueryWizard)

ОткрытьМодально (DoModal)

Доступен, начиная с версии 8.0.

Синтаксис:
ОткрытьМодально()
Возвращаемое значение:
Тип: Булево.
Истина - редактирование завершено нажатием на кнопку "ОК"; Ложь - в противном случае.
Описание:

Открывает модально конструктор запроса.

Доступность:

Толстый клиент.

См. также:
КонструкторЗапроса, метод ОткрытьАсинх
КонструкторЗапроса, метод Показать

Использование в версии:

Доступен, начиная с версии 8.0.

Описание изменено в версии 8.3.18.

Методическая информация

Практические примеры

Прочитать Текст только после подтверждения модального редактора

ОткрытьМодально возвращает Булево. Сам изменённый текст читается из свойства конструктора.

Где и как запускать

Полный модуль собственной управляемой формы. Диалог только редактирует учебный черновик.

Подготовка

  1. Собственная учебная конфигурация УчебнаяКонфигурацияСинтаксиса, платформа 8.5.1.1343. Создайте новую внешнюю обработку с пустой управляемой основной формой.

  2. В форме создайте команду ОткрытьУчебныйКонструктор, её кнопку и назначьте действие одноимённой процедуре. Назначьте событие ПриОткрытии обработчику из кода. Каждый урок — отдельный полный модуль формы.

  3. Асинхронный и callback-уроки выполняются на клиенте Windows; модальный вариант — только толстый клиент собственной базы, где модальные вызовы уже разрешены. Режим рабочей конфигурации ради урока не меняйте.

  4. Черновик из двух параметров не содержит ИЗ и не читает таблицы базы. Диалог может показывать структуру вашей учебной конфигурации, но этот код не выполняет даже принятый текст.

  5. Первый опыт: измените состав полей в редакторе и нажмите Отмена. Второй опыт: снова откройте, измените псевдоним поля и нажмите ОК. Сверяйте сообщение с черновиком, показанным перед открытием.

  6. Учебный черновик хранится в переменной этого экземпляра формы; закрытие формы его теряет. Записи базы, файлов, рабочих настроек и автоматического запуска полученного запроса нет.

Перем СобственныйЧерновик;
Перем КонструкторЗанят;

&НаКлиенте
Процедура ПриОткрытии(Отказ)
    СобственныйЧерновик = "ВЫБРАТЬ &Название КАК Наименование, &Количество КАК Количество";
    КонструкторЗанят = Ложь;
КонецПроцедуры


&НаКлиенте
Процедура ОткрытьУчебныйКонструктор(Команда)
    Если КонструкторЗанят Тогда
        Сообщить("Сначала завершите уже открытый собственный конструктор");
        Возврат;
    КонецЕсли;
    Если ТипЗнч(СобственныйЧерновик) <> Тип("Строка") Тогда
        ВызватьИсключение "Назначьте событие ПриОткрытии обработчику урока";
    КонецЕсли;
    ИсходныйТекст = СобственныйЧерновик;
    Сообщить("Исходный черновик: " + ИсходныйТекст);
    Конструктор = Новый КонструкторЗапроса(ИсходныйТекст);
    Конструктор.АвтоДобавлениеПредставлений = Ложь;
    Конструктор.РежимКомпоновкиДанных = Ложь;
    Сообщить(Конструктор.Текст = ИсходныйТекст);
    Сообщить(НЕ Конструктор.АвтоДобавлениеПредставлений);
    Сообщить(НЕ Конструктор.РежимКомпоновкиДанных);
    КонструкторЗанят = Истина;
    Попытка
        Принято = Конструктор.ОткрытьМодально();
    Исключение
        КонструкторЗанят = Ложь;
        ВызватьИсключение "Модальный учебный конструктор не завершён: " + ОписаниеОшибки();
    КонецПопытки;
    КонструкторЗанят = Ложь;
    Если Принято Тогда
        ПолученныйТекст = Конструктор.Текст;
        Если ТипЗнч(ПолученныйТекст) = Тип("Строка") Тогда
            Если ПустаяСтрока(ПолученныйТекст) Тогда
                Сообщить("Пустой текст не принят; собственный черновик сохранён");
                Сообщить(СобственныйЧерновик = ИсходныйТекст);
            Иначе
                СобственныйЧерновик = ПолученныйТекст;
                Сообщить("Принятый черновик, без выполнения: " + СобственныйЧерновик);
                Сообщить(СобственныйЧерновик = ПолученныйТекст);
            КонецЕсли;
        Иначе
            Сообщить("Текст не получен; собственный черновик сохранён");
            Сообщить(СобственныйЧерновик = ИсходныйТекст);
        КонецЕсли;
    Иначе
        Сообщить("Отмена модального конструктора; собственный черновик сохранён");
        Сообщить(СобственныйЧерновик = ИсходныйТекст);
    КонецЕсли;
КонецПроцедуры

Разбор по шагам

  1. Урок запускается в толстом клиенте собственной базы с разрешёнными модальными вызовами.

  2. Создаём отдельный редактор текущего черновика; собственная переменная не передаётся как изменяемая ссылка.

  3. После Истина читаем Конструктор.Текст и принимаем непустую строку.

  4. После Ложь не применяем содержимое редактора и проверяем сохранение исходного черновика.

  5. Ошибка сбрасывает занятость и повторно сообщает причину, не выдавая её за Отмену.

Как проверить результат

  1. До открытия три Истина. Отмена даёт Истина проверки сохранённого черновика.

  2. ОК с непустым текстом показывает принятый черновик; он не выполняется и не записывается в базу.

Ожидаемый результат

Разделены булев результат подтверждения и строковое содержимое редактора.

На что обратить внимание

  1. Метод недоступен тонкому/веб-клиенту; доступность самого типа не означает доступность каждого метода.

  2. Не меняйте рабочую конфигурацию или системные режимы ради запуска этого примера.

  3. Не применяйте текст в ветке отмены даже если внутренний редактор его уже изменил.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.