КонструкторЗапроса.АвтоДобавлениеПредставлений

Свойства · AutoAppendPresentations

Тип: Булево. Признак необходимости автоматического добавления представления поля при добавлении в запрос ссылочного поля.

Полное описание, параметры и ограничения

КонструкторЗапроса.АвтоДобавлениеПредставлений (QueryWizard.AutoAppendPresentations)

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

АвтоДобавлениеПредставлений (AutoAppendPresentations)

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

Использование:
Чтение и запись.
Описание:
Тип: Булево.
Признак необходимости автоматического добавления представления поля при добавлении в запрос ссылочного поля.
Доступность:

Сервер, толстый клиент, внешнее соединение.

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

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

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

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

Открыть редактор запроса через Ждать и принять только текст

Результат обещания — текст при ОК, не булево подтверждение и не РезультатЗапроса.

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

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

Подготовка

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

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

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

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

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

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

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

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


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

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

  1. Показываем исходный черновик и создаём отдельный КонструкторЗапроса из его копии.

  2. Явно выключаем режим СКД и автоматические представления. Три проверки показывают исходную настройку.

  3. Ждать получает завершённый результат, не сам объект Обещание. Занятость сбрасывается и при исключении.

  4. В ветке получения строки принимаем только непустой текст; другие результаты не изменяют черновик.

  5. Сообщение выводит принятый текст для изучения. Никакой вызов Запрос.Выполнить не следует за ОК.

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

  1. Перед диалогом три Истина. При отмене или непринятом пустом тексте контроль сохранения черновика — Истина.

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

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

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

Отредактированный текст принят только в память собственного экземпляра формы.

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

  1. Не сравнивайте результат ОткрытьАсинх с Истина: его документированное полезное значение — текст.

  2. Отсутствие принятого текста не означает успешный пустой запрос.

  3. Диалог синтаксической настройки не является гарантией правильной бизнес-логики или безопасного выполнения.

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

Принять текст в обработчике закрытия конструктора

Показать возвращает управление сразу; callback получает Текст и собственное Состояние.

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

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

Подготовка

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

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

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

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

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

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

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

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


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

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

&НаКлиенте
Процедура УчебныйКонструкторОшибка(Ошибка, СтандартнаяОбработка, Состояние) Экспорт
    КонструкторЗанят = Ложь;
    СтандартнаяОбработка = Истина;
    Сообщить("Ошибка собственного конструктора: " + Ошибка.Описание);
    Сообщить(СобственныйЧерновик = Состояние.ИсходныйТекст);
КонецПроцедуры

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

  1. Состояние содержит маркер, исходный текст и ссылку на собственный конструктор до завершения диалога.

  2. ОписаниеОповещения связывает точное имя экспортной процедуры с этим состоянием.

  3. Callback имеет два параметра: текст/Неопределено и дополнительные параметры; это не bool/результат запроса.

  4. Ошибка оповещения обрабатывается отдельной экспортной процедурой с тремя параметрами; стандартная обработка сохраняется.

  5. ОК принимает непустую строку, Отмена оставляет свой черновик. После любой ветки разрешено снова открыть редактор.

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

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

  2. ОК с изменённым непустым текстом выводит этот текст и Истина его принятия.

  3. Повторная кнопка при открытом диалоге показывает сообщение занятости.

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

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

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

  1. Не читайте окончательный Текст сразу после Показать: пользователь ещё не завершил редактирование.

  2. Назначьте ПриОткрытии: иначе собственный черновик не инициализирован.

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

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

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

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

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

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