Расширение поля формы для поля ввода.МаксимальноеЗначение

Свойства · MaxValue

Максимальное значение, допустимое в поле ввода. Имеет смысл для реквизитов типа Число.

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

Расширение поля формы для поля ввода.МаксимальноеЗначение (Form field extension for a text box.MaxValue)

Расширение поля формы для поля ввода (Form field extension for a text box)

МаксимальноеЗначение (MaxValue)

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

Использование:
Чтение и запись.
Описание:
Максимальное значение, допустимое в поле ввода.
Имеет смысл для реквизитов типа Число.
Доступность:

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

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

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

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

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

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

ГоризонтальноеПоложение выравнивает текст в конкретной колонке таблицы. Количество вводится в собственный числовой реквизит 0–99, ПриИзменении пересчитывает итог, а переключение Лево/Центр/Право проверяет сохранность уже завершённого ввода.

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

Полный модуль собственной общей управляемой формы УчебныеКолонкиТакси85. Пустой стенд 8.5.1.1343, desktop Такси, тонкий или толстый клиент Windows. Сервер создаёт три локальные строки и связывает ПриИзменении; клиент редактирует 0–99, пересчитывает итог и меняет выравнивание.

Подготовка

  1. Создайте отдельную новую пустую базу платформы 8.5.1.1343. Имя конфигурации — УчебнаяКонфигурацияКолонокТакси85, язык встроенного языка Русский, ОсновнойРежимЗапуска=УправляемоеПриложение, режим совместимости Не использовать.

  2. В свойствах корня конфигурации задайте РежимСовместимостиИнтерфейса=Такси. Обновите только свой учебный стенд и запустите тонкий или толстый управляемый клиент Windows. Мобильные приложения и интерфейс Версия 8.5 не являются средой этих двух уроков; текущий вариант интерфейса проверяется до создания локальных строк.

  3. В Общие → Общие формы создайте управляемую форму УчебныеКолонкиТакси85. Для каждого урока используйте отдельную копию своего пустого стенда и только полный модуль выбранного урока. Модуль вставляется целиком на верхнем уровне, а не внутрь созданного обработчика.

  4. В форме создайте реквизит Книги с типом ТаблицаЗначений. Его колонки: Название — Строка длиной 100; Количество — Число длиной 3, точность 0, допустимый знак Неотрицательный. Это локальные строки формы; справочники, документы, регистры и файлы не используются.

  5. Перетащите Книги на форму как таблицу. Таблица — ТаблицаКниг, ПутьКДанным=Книги. Её поля-колонки — КнигиНазвание с путём Книги.Название и заголовком Название; КнигиКоличество с путём Книги.Количество и заголовком Количество. Не создавайте одноимённых обычных полей вне таблицы.

  6. В ТаблицаКниг отключите изменение состава строк и изменение порядка строк. МножественныйВыбор код устанавливает в Ложь. Колонку названия код делает ТолькоПросмотр: пользователю доступно только то редактирование количества, которое явно включено конкретным уроком.

  7. Создайте строковый реквизит СостояниеУрока длиной 300 и поле ПолеСостоянияУрока с ПутьКДанным=СостояниеУрока, ТолькоПросмотр=Истина. АвтоматическоеСохранениеДанныхВНастройках формы оставьте НеИспользовать.

  8. Событие ПриСозданииНаСервере формы назначьте одноимённой процедуре полного модуля. Сервер создаёт ровно три строки Книга/3, Тетрадь/4, Блокнот/0. Название поля и реквизита Количество должны совпадать с кодом.

  9. Для запуска создайте общую команду ОткрытьУчебныеКолонкиТакси85 без параметра и включите её в командный интерфейс собственной учебной подсистемы УчебныеКолонкиТакси85. Полный модуль общей команды:
    &НаКлиенте
    Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
    ОткрытьФорму("ОбщаяФорма.УчебныеКолонкиТакси85");
    КонецПроцедуры
    Разрешите открытие своей формы и команды в учебной роли и выполните команду в учебном разделе.

  10. Код не меняет интерфейс сеанса, настройки пользователя или предметные данные. Все учебные изменения строк остаются в памяти экземпляра общей формы. Запуск в 1С не выполнялся: исходный модуль проверен статически и сверен с локальным API; внешний вид и события требуют будущего ручного опыта на этом стенде.

  11. Создайте команду ПереключитьВыравнивание, клиентское действие — одноимённая процедура. ИзменяетСохраняемыеДанные=Ложь. Разместите кнопку с заголовком Переключить выравнивание. КарточкаКниги и команды исторического урока здесь не нужны.

  12. Количеству задайте достаточно широкую колонку, например Ширина=20 в редакторе поля КнигиКоличество, чтобы разницу Лево/Центр/Право можно было видеть. Ширина — подготовка визуального наблюдения; новое свойство ГоризонтальноеПоложение не меняет ширину и порядок колонок.

  13. Не назначайте второй обработчик ПриИзменении: на сервере УстановитьДействие связывает КнигиКоличество с КоличествоСвоейКнигиИзменилось. Тип реквизита Число(3,0), Неотрицательный задаётся в редакторе, а код поля дополнительно ограничивает значения МинимальноеЗначение=0 и МаксимальноеЗначение=99.

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    Если ТекущийВариантИнтерфейсаКлиентскогоПриложения() <> ВариантИнтерфейсаКлиентскогоПриложения.Такси Тогда
        ВызватьИсключение "Этот урок подготовлен только для desktop-интерфейса Такси";
    КонецЕсли;
    ЭтаФорма.Книги.Очистить();
    ДобавитьСвоюКнигу("Книга", 3);
    ДобавитьСвоюКнигу("Тетрадь", 4);
    ДобавитьСвоюКнигу("Блокнот", 0);
    Элементы.ТаблицаКниг.МножественныйВыбор = Ложь;
    Элементы.КнигиНазвание.ТолькоПросмотр = Истина;
    Элементы.ТаблицаКниг.ТолькоПросмотр = Ложь;
    Элементы.КнигиКоличество.ТолькоПросмотр = Ложь;
    Элементы.КнигиКоличество.МинимальноеЗначение = 0;
    Элементы.КнигиКоличество.МаксимальноеЗначение = 99;
    Элементы.КнигиКоличество.ГоризонтальноеПоложение = ГоризонтальноеПоложениеЭлемента.Право;
    Элементы.КнигиКоличество.УстановитьДействие("ПриИзменении", "КоличествоСвоейКнигиИзменилось");
    Элементы.ТаблицаКниг.Подвал = Истина;
    Элементы.КнигиКоличество.ОтображатьВПодвале = Истина;
    Элементы.КнигиКоличество.ТекстПодвала = Строка(ЭтаФорма.Книги.Итог("Количество"));
    ЭтаФорма.СостояниеУрока = "Количество 0–99, целое. Текст в колонке справа; исходный итог 7";
КонецПроцедуры

&НаСервере
Процедура ДобавитьСвоюКнигу(Знач Название, Знач Количество)
    НоваяКнига = ЭтаФорма.Книги.Добавить();
    НоваяКнига.Название = Название;
    НоваяКнига.Количество = Количество;
КонецПроцедуры

&НаКлиенте
Процедура КоличествоСвоейКнигиИзменилось(Элемент)
    Если Элемент <> Элементы.КнигиКоличество Тогда
        Возврат;
    КонецЕсли;
    ПересчитатьСвойИтог();
    ЭтаФорма.СостояниеУрока = "После пользовательского изменения итог: " + Элементы.КнигиКоличество.ТекстПодвала;
КонецПроцедуры

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

&НаКлиенте
Процедура ПересчитатьСвойИтог()
    Для Каждого Книга Из ЭтаФорма.Книги Цикл
        Если ТипЗнч(Книга.Количество) <> Тип("Число") Тогда
            ВызватьИсключение "Своё количество должно быть числом";
        КонецЕсли;
        Если Книга.Количество < 0 Или Книга.Количество > 99 Или Книга.Количество <> Цел(Книга.Количество) Тогда
            ВызватьИсключение "Допустимо целое количество от 0 до 99";
        КонецЕсли;
    КонецЦикла;
    Элементы.КнигиКоличество.ТекстПодвала = Строка(ЭтаФорма.Книги.Итог("Количество"));
КонецПроцедуры

&НаКлиенте
Функция СигнатураСвоихКниг()
    Значения = Новый Массив;
    Для Каждого Книга Из ЭтаФорма.Книги Цикл
        Значения.Добавить(СтрШаблон("%1=%2", Книга.Название, Книга.Количество));
    КонецЦикла;
    Возврат СтрСоединить(Значения, ";");
КонецФункции

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

  1. Откройте свою форму: Книга/3, Тетрадь/4, Блокнот/0. В подвале Количество исходный итог 7. Поле названия только для просмотра; количество доступно для собственного учебного ввода.

  2. Измените количество Книги с 3 на 8 и завершите ввод переходом в другую ячейку. ПриИзменении вызывает полный клиентский ПересчитатьСвойИтог: проверяется тип и диапазон каждой собственной строки, затем подвал получает Итог("Количество").

  3. После изменения Книги ожидается итог 12: 8+4+0. Это арифметика локальных строк, не остаток склада и не число записей. Укажите всем трём книгам 0: ноль допустим, итог становится 0.

  4. Восстановите количества 3, 4, 0 собственным вводом. При смене выравнивания завершение ввода выполняется через ЗакончитьРедактированиеСтроки(Ложь), то есть без отмены редактирования; затем пересчитывается итог.

  5. Нажмите Переключить выравнивание: Право → Лево → Центр → Право. Свойство задано именно полю КнигиКоличество внутри ТаблицаКниг. Наблюдайте положение текста чисел в достаточно широкой колонке.

  6. Сигнатура значений берётся после завершения ввода и до смены свойства. После смены сравнивается фактическая сигнатура; при различии выполнение прерывается, а сообщение о сохранности не выводится.

  7. Проверьте границы 0 и 99. Ввод отрицательного числа и 100 должен ограничиваться подготовленным типом и свойствами поля; точную реакцию редактора фиксируйте вручную. Для дробного текста действует целый тип Число(3,0), поэтому не обещается сохранение исходной текстовой записи дроби.

  8. Оставьте количество одной книги изменённым, снова переключите выравнивание и проверьте сохранность именно нового значения, а не автоматический возврат к исходным 3/4/0. Закройте свою форму: никаких записей базы для сохранения этих значений нет.

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

  1. Исходный итог 7; после Книга=8 итог 12; после всех нулей итог 0. Подвал обновляется после пользовательского изменения и после команды завершения ввода.

  2. После каждой смены выравнивания состояние сообщает Значения после завершённого ввода сохранились. Названия, введённые количества и итог прежние; изменилось только расположение текста колонки.

  3. Ручная проверка различает левое, центральное и правое расположение текста в активной теме Такси. Статическая сверка enum и присваиваний не доказывает видимый эффект.

  4. В форме нет отрицательных и превышающих 99 допустимых количеств. Если редактор не ограничивает ввод согласно подготовке, сначала проверьте настоящий тип Количество, поле-ввод и пути данных своего стенда.

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

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

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

  1. ГоризонтальноеПоложение имеет смысл только для ПолеФормы внутри таблицы. Это выравнивание текста ячеек, не размещение всей таблицы, заголовка или подвала.

  2. Реквизит Количество — Число(3,0), Неотрицательный; дополнительный диапазон урока 0–99. Значения поля и проверка диапазона — разные уровни: полный обработчик проверяет уже полученное числовое значение.

  3. ЗакончитьРедактированиеСтроки(Истина) отменяет редактирование; в уроке передаётся Ложь. Нативная справка предупреждает: метод не действует, если таблица не отображается или её соответствующая команда недоступна. Завершение ввода проверяется вручную.

  4. ПриИзменении вызывается при пользовательском изменении поля. Массовая программная замена реквизита может требовать явного пересчёта; этот модуль не подменяет событие молчаливым изменением значений.

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

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

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

Создать поле цены с границами, регулированием и отдельной проверкой

Учебная цена начинается с 12.34. Ограничиваем ввод диапазоном 0–9999.99, показываем формат редактирования и не подменяем проверку данных оформлением поля.

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

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

Подготовка

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

  2. Не добавляйте вручную реквизит ЗначениеПримера, поле ПолеПримера и команду УчебноеДействие: их создаст код.

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

  4. Сохраните учебную EPF и откройте через Файл → Открыть в тонком или толстом клиенте Windows. Рабочие данные не читаются и не записываются.

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    Новые = Новый Массив;
    ТипРеквизита = Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(12, 2));
    Новые.Добавить(Новый РеквизитФормы("ЗначениеПримера", ТипРеквизита));
    ЭтаФорма.ИзменитьРеквизиты(Новые);
    ЭтаФорма.ЗначениеПримера = 12.34;
    Поле = Элементы.Добавить("ПолеПримера", Тип("ПолеФормы"));
    Поле.Вид = ВидПоляФормы.ПолеВвода;
    Поле.ПутьКДанным = "ЗначениеПримера";
    Поле.Заголовок = "Учебная цена";
    Поле.МинимальноеЗначение = 0;
    Поле.МаксимальноеЗначение = 9999.99;
    Поле.КнопкаРегулирования = Истина;
    Поле.КнопкаОчистки = Истина;
    Поле.КнопкаВыбора = Ложь;
    Поле.КнопкаОткрытия = Ложь;
    Поле.КнопкаСоздания = Ложь;
    Поле.ФорматРедактирования = "ЧДЦ=2; ЧН=0";
    Поле.ВыделятьОтрицательные = Истина;
    Поле.Ширина = 18;
    Поле.ЦветТекста = Новый Цвет(25, 45, 70);

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

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

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

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

  2. МинимальноеЗначение и МаксимальноеЗначение ограничивают интерактивное поле. КнопкаРегулирования включает стандартные стрелки изменения числа.

  3. Неиспользуемые кнопки выбора, создания и открытия скрываем: это простое число, не ссылка на справочник.

  4. ФорматРедактирования задаёт вид текста, а не алгоритм расчёта НДС или суммы документа.

  5. Команда отдельно проверяет диапазон значения до дальнейшей обработки. Серверные бизнес-операции должны повторять проверку перед записью.

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

  1. Начальная цена 12.34 показана в принятом региональными настройками формате числа.

  2. Введите 0 и 9999.99: проверка разрешает оба граничных значения.

  3. Проверьте стрелки регулирования и попытку ручного ввода отрицательной цены/10000. Не должно быть записи рабочего документа.

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

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

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

  1. Ноль здесь разрешён: ЗначениеЗаполнено не подходит как единственная проверка цены.

  2. Цвет выделения отрицательных не является защитой от некорректного значения.

  3. Внешние данные могут попасть в реквизит без интерактивного поля, поэтому ограничения интерфейса не заменяют серверную проверку.

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

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

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

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

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