Глобальный контекст.ВвестиЧисло

Методы · InputNumber

Вызывает диалог для ввода числа. При вызове метода в веб-клиенте генерируется исключение.

Синтаксис

ВвестиЧисло(<Число>, <Подсказка>, <Длина>, <Точность>)

Примеры платформы

Количество = 1;
Если ВвестиЧисло(Количество, "Введите количество", 10, 2) Тогда
КонецЕсли;
Полное описание, параметры и ограничения

Глобальный контекст.ВвестиЧисло (Global context.InputNumber)

Глобальный контекст (Global context)

ВвестиЧисло (InputNumber)

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

Синтаксис:
ВвестиЧисло(<Число>, <Подсказка>, <Длина>, <Точность>)
Параметры:

<Число> (обязательный)
Тип: Число.
Имя доступной в модуле переменной. В эту переменную будет помещено введенное число. Начальное значение переменной будет использовано в качестве начального значения в диалоге.

<Подсказка> (необязательный)
Тип: Строка.
Текст заголовка окна диалога ввода числа. Может использоваться в качестве подсказки пользователю.
Значение по умолчанию: Пустая строка.

<Длина> (необязательный)
Тип: Число.
Длина вводимого числа включая дробную часть (символы разделителей не учитываются).
Значение по умолчанию: 0.

<Точность> (необязательный)
Тип: Число.
Количество знаков в дробной части вводимого числа.
Значение по умолчанию: 0.
Возвращаемое значение:
Тип: Булево.
Истина - число введено; Ложь - пользователь отказался от ввода.
Описание:

Вызывает диалог для ввода числа.
При вызове метода в веб-клиенте генерируется исключение.

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

Тонкий клиент, мобильный клиент, толстый клиент, мобильное приложение (клиент).

Внимание: Данный метод не поддерживается при работе через COM-соединение
Примечание:
Если для конфигурации свойство РежимИспользованияМодальности установлено в НеИспользовать, следует использовать метод ПоказатьВводЧисла.
Пример:

Количество = 1;
Если ВвестиЧисло(Количество, "Введите количество", 10, 2) Тогда
// обработка введенного количества

КонецЕсли;

См. также:
Глобальный контекст, метод ВвестиЧислоАсинх

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

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

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

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

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

ВвестиЧисло: отличить булево подтверждение от самого количества

Синхронный диалог изменяет отдельную локальную переменную по ссылке. Возвращаемое Булево используется лишь как разрешение продолжить собственный расчёт.

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

Модуль новой управляемой формы учебной внешней обработки. Код содержит готовые процедуры с директивами; вставляйте на уровне модуля, не внутрь другого обработчика. Каждую задачу запускайте в отдельной копии формы.

Подготовка

  1. В отдельной учебной базе платформы 8.5.1.1343 создайте внешнюю обработку УчебнаяФорма85 с пустой управляемой основной формой. Используйте тонкий клиент Windows.

  2. В свойствах формы → События назначьте ПриСозданииНаСервере. Вставьте полный модуль урока, включая клиентские и серверные помощники, на уровне модуля.

  3. Не создавайте вручную ЗначениеПримера, ПолеПримера и кнопку: код создаёт их полностью. Каждый урок запускайте в отдельной копии своей формы.

  4. Сохраните свою EPF и откройте её в учебной базе. Собственное количество начинается с 3, цена книги задана в коде как 250; исходный расчёт равен 750.

  5. Связанный реквизит помечен как СохраняемыеДанные для изучения поведения формы. Это признак реквизита формы, а не автоматическая запись книги, файла или документа в базу.

  6. Команда расчёта имеет ИзменяетСохраняемыеДанные = Ложь. Уроки изменяют только свой интерфейс и значения собственной формы, не конфигурацию и не рабочие данные.

  7. Запуск и вид в 1С не проверены. Компоновку, сочетания клавиш и расположение команд осмотрите вручную в указанном клиенте; не переносите настройки на рабочие формы без отдельной проверки.

  8. В этой партии каждое окно ввода запускает собственная кнопка УчебноеДействие. Изучайте один полный модуль за раз; никакие значения ввода не исполняются как код.

  9. Только для синхронного варианта создайте отдельную пустую учебную конфигурацию с техническим именем УчебныеДиалоги85 и заранее разрешённой модальностью. Читайте её режим в конфигураторе; не меняйте рабочую базу ради урока. При ином имени или НеИспользовать пример откажется до диалога.

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


    КомандаДействия = ЭтаФорма.Команды.Добавить("УчебноеДействие");
    КомандаДействия.Действие = "УчебноеДействие";
    КомандаДействия.Заголовок = "Выполнить собственный учебный шаг";
    КомандаДействия.Подсказка = "Действие только над данными учебной формы";
    КомандаДействия.ИзменяетСохраняемыеДанные = Ложь;
    Кнопка = Элементы.Добавить("КнопкаУчебноеДействие", Тип("КнопкаФормы"));
    Кнопка.ИмяКоманды = КомандаДействия.Имя;
    Кнопка.Заголовок = КомандаДействия.Заголовок;
КонецПроцедуры

&НаКлиенте
Процедура УчебноеДействие(Команда)
    #Если ВебКлиент Тогда
    Сообщить("Синхронный урок не выполняется в веб-клиенте; используйте обратный вызов");
    Возврат;
    #Иначе
    Если Не РазрешёнСобственныйСинхронныйВвод() Тогда
        Сообщить("Синхронный ввод недоступен для этого собственного стенда; настройки базы не менялись");
        Возврат;
    КонецЕсли;
    ДоВвода = ЗначениеПримера;
    Введено = ЗначениеПримера;
    Принято = ВвестиЧисло(Введено, "Сколько собственных книг: целое число от 1 до 10", 2, 0);
    Если Не Принято Тогда
        Сообщить("Отмена: собственные данные не менялись");
        Возврат;
    КонецЕсли;
    Если Введено = Неопределено Тогда
        Сообщить("Отмена: собственные данные не менялись");
        Возврат;
    КонецЕсли;
    Если ЗначениеПримера <> ДоВвода Тогда
        Сообщить("Количество изменилось за время диалога. Повторите ввод для актуальной заявки");
        Возврат;
    КонецЕсли;
    Если ТипЗнч(Введено) <> Тип("Число") Тогда
        ВызватьИсключение "Введённое количество должно быть числом";
    КонецЕсли;
    Если Введено < 1 ИЛИ Введено > 10 ИЛИ Введено <> Цел(Введено) Тогда
        ВызватьИсключение "Для собственной заявки нужно целое количество от 1 до 10";
    КонецЕсли;
    Цена = 250;
    Сумма = Введено * Цена;
    ЗначениеПримера = Введено;
    Сообщить(Сумма >= 250 И Сумма <= 2500);
    Сообщить(Сумма / Цена = ЗначениеПримера);
    Сообщить(СтрШаблон("Собственные книги: %1 × %2 = %3", ЗначениеПримера, Цена, Сумма));
    #КонецЕсли

КонецПроцедуры

&НаСервереБезКонтекста
Функция РазрешёнСобственныйСинхронныйВвод()
    Возврат Метаданные.РежимИспользованияМодальности <> Метаданные.СвойстваОбъектов.РежимИспользованияМодальности.НеИспользовать;
КонецФункции

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

  1. Сначала исключить веб-клиент препроцессором и проверить режим своей конфигурации на сервере. Отказ проверки не меняет настройки базы.

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

  3. ВвестиЧисло получает Введено, подсказку, длину 2 и точность 0. Принято — Булево; после OK число читается из Введено.

  4. При Ложь выйти до любых присваиваний реквизиту. После Истина проверить тип/диапазон/целочисленность и актуальность собственного снимка.

  5. Только допустимое число присвоить собственной форме и пересчитать книги по 250. Не умножать цену на Принято.

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

  1. В своей разрешённой конфигурации ввод 5 даёт количество 5, две Истина и 1250. При отмене реквизит не меняется.

  2. При имени конфигурации, отличном от УчебныеДиалоги85, или запрещённой модальности окно не вызывается. Для нового немодального кода используйте соседний урок.

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

Старый синхронный контракт разобран полностью, без принудительной смены режима рабочей конфигурации.

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

  1. В веб-клиенте такой вызов вызывает исключение; в примере синхронная ветка исключена до него.

  2. Принято=Истина не означает количество 1. Новое число находится в изменённой локальной переменной Введено.

  3. НеИспользовать — основание отказаться от синхронного опыта. Пример не предлагает переключать модальность рабочей базы.

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

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

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

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

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