КонструкторФорматнойСтроки.Показать

Методы · Show

Открывает немодальное окно конструктора форматной строки.

Синтаксис

Показать(<ОписаниеОповещенияОЗакрытии>)
Полное описание, параметры и ограничения

КонструкторФорматнойСтроки.Показать (FormatStringWizard.Show)

КонструкторФорматнойСтроки (FormatStringWizard)

Показать (Show)

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

Синтаксис:
Показать(<ОписаниеОповещенияОЗакрытии>)
Параметры:

<ОписаниеОповещенияОЗакрытии> (необязательный)
Тип: ОписаниеОповещения.
Содержит описание процедуры, которая будет вызвана после закрытия диалога конструктора со следующими параметрами:
<Текст> - Текст - конструктор закрыли по кнопке "OK"; Неопределено - в противном случае,

<ДополнительныеПараметры> - значение, которое было указано при создании объекта ОписаниеОповещения.
Если параметр не указан или имеет тип Неопределено, то по завершении никакая процедура вызвана не будет.
Описание:

Открывает немодальное окно конструктора форматной строки.

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

Тонкий клиент, веб-клиент, толстый клиент.

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

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

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

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

Получить формат через обратный вызов и сохранить собственный конструктор до закрытия

Показать не возвращает выбранную строку. Её получает экспортный обработчик закрытия вместе с собственными дополнительными параметрами.

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

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

Подготовка

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

  2. Добавьте команду НастроитьФормат и её кнопку, обработчик НастроитьФормат. Модуль целиком вставьте на уровне формы, не внутрь существующей процедуры.

  3. Назначьте событию ПриСозданииНаСервере одноимённый обработчик. Число, строка формата и образец создаются кодом. Не добавляйте одноимённые реквизиты вручную.

  4. Используйте тонкий/толстый клиент Windows 8.5.1.1343. Для первого опыта нажмите Отмена; для второго выберите иной формат числа и нажмите OK.

  5. ИсходноеЧисло=750 находится только в памяти формы. Меняется формат и его строковое представление, не число, не цена товара и не данные базы.

  6. Модальный урок намеренно откажется при режиме НеИспользовать. Не меняйте режим рабочей конфигурации ради упражнения; основной современный вариант — асинхронный.

&НаКлиенте
Перем Занято;
&НаКлиенте
Перем УчебныйКонструктор;
&НаКлиенте
Перем УчебныйКонтекст;

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    Реквизиты = Новый Массив;
    Реквизиты.Добавить(Новый РеквизитФормы("ИсходноеЧисло", Новый ОписаниеТипов("Число")));
    Реквизиты.Добавить(Новый РеквизитФормы("ФорматСуммы", Новый ОписаниеТипов("Строка")));
    Реквизиты.Добавить(Новый РеквизитФормы("Образец", Новый ОписаниеТипов("Строка")));
    ЭтаФорма.ИзменитьРеквизиты(Реквизиты);
    ИсходноеЧисло = 750;
    ФорматСуммы = "ЧДЦ=2;ЧГ=0";
    Образец = Формат(ИсходноеЧисло, ФорматСуммы);
    Для Каждого Имя Из СтрРазделить("ИсходноеЧисло,ФорматСуммы,Образец", ",") Цикл
        Поле = ЭтаФорма.Элементы.Добавить("УчебноеПоле" + Имя, Тип("ПолеФормы"));
        Поле.Вид = ВидПоляФормы.ПолеНадписи;
        Поле.ПутьКДанным = Имя;
        Поле.Заголовок = Имя;
    КонецЦикла;
КонецПроцедуры

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

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

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

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

  1. Держать конструктор и уникальный контекст в клиентских переменных модуля, а не очищать их сразу после Показать.

  2. ОписаниеОповещения указывает экспортный обработчик своей формы. Его сигнатура Результат, ДополнительныеПараметры, без выдуманного третьего параметра ошибки.

  3. Показать только запускает диалог. Выбранный формат приходит после закрытия в callback, не возвращается из Показать.

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

  5. Освободить свои ссылки и занятость только после обработки закрытия. При неопределённой ошибке запуска не начинать второй диалог поверх потенциально первого.

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

  1. При Отмена число, формат и образец остаются прежними; после callback команду можно нажать снова.

  2. При OK число сохраняет значение 750 и числовой тип, образец соответствует выбранному формату.

  3. При ошибке запуска блокировка сохраняется: закройте только собственную учебную форму, не чужие окна приложения.

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

Полный немодальный пример показывает передачу результата, время жизни конструктора и принадлежность callback.

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

  1. Не присваивайте Показать переменной результата.

  2. Обработчик закрытия должен быть Экспорт, иначе его не найдёт оповещение.

  3. Формат чисел не является безопасной маской пароля или проверкой диапазона введённого значения.

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

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

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

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

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