Расширение поля формы для поля ввода.РедактированиеТекста

Свойства · TextEdit

Тип: Булево. Определяет доступность редактирования текста в поле ввода (не влияет на использование кнопок).

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

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

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

РедактированиеТекста (TextEdit)

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

Использование:
Чтение и запись.
Описание:
Тип: Булево.
Определяет доступность редактирования текста в поле ввода (не влияет на использование кнопок).
Доступность:

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

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

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

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

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

Выбрать статус из списка и отличить значение от представления

Пользователь выбирает Черновик/Опубликован/Закрыт, а реквизит хранит draft/published/closed. Список задаётся полностью в коде формы.

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

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

Подготовка

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

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

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

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

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    Новые = Новый Массив;
    ТипРеквизита = Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(24));
    Новые.Добавить(Новый РеквизитФормы("ЗначениеПримера", ТипРеквизита));
    ЭтаФорма.ИзменитьРеквизиты(Новые);
    ЭтаФорма.ЗначениеПримера = "draft";
    Поле = Элементы.Добавить("ПолеПримера", Тип("ПолеФормы"));
    Поле.Вид = ВидПоляФормы.ПолеВвода;
    Поле.ПутьКДанным = "ЗначениеПримера";
    Поле.Заголовок = "Статус учебной карточки";
    Поле.СписокВыбора.Добавить("draft", "Черновик");
    Поле.СписокВыбора.Добавить("published", "Опубликован");
    Поле.СписокВыбора.Добавить("closed", "Закрыт");
    Поле.РежимВыбораИзСписка = Истина;
    Поле.РедактированиеТекста = Ложь;
    Поле.КнопкаСпискаВыбора = Истина;
    Поле.КнопкаВыпадающегоСписка = Истина;
    Поле.КнопкаОчистки = Истина;
    Поле.ВысотаСпискаВыбора = 3;
    Поле.ШиринаВыпадающегоСписка = 24;
    Поле.ОтметкаОбязательногоЗаполнения = Истина;
    Поле.АвтоВыборНезаполненного = Ложь;
    Поле.АвтоОтметкаНезаполненного = Истина;

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

&НаКлиенте
Процедура УчебноеДействие(Команда)
    Если ЗначениеПримера <> "draft" И ЗначениеПримера <> "published"
        И ЗначениеПримера <> "closed" Тогда
        Сообщить("Выберите один из трёх статусов. Пустой/неизвестный статус не обработан.");
        Возврат;
    КонецЕсли;
    Сообщить("Хранимый код статуса: " + ЗначениеПримера);
    Сообщить("Карточка в базе или на сайте не изменена");
КонецПроцедуры

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

  1. СписокВыбора — существующий СписокЗначений поля. Его наполняют методом Добавить; присваивать новую коллекцию свойству не нужно.

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

  3. РежимВыбораИзСписка и запрет редактирования текста направляют пользователя к подготовленным вариантам.

  4. КнопкаОчистки оставлена для демонстрации отсутствующего значения; команда в этом случае отказывается от обработки.

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

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

  1. Выберите Опубликован, затем кнопку: выводится код published, а не слово Опубликован.

  2. После очистки выводится просьба выбрать статус; значение не отправляется в сервис.

  3. В списке три варианта и нет автоматического назначения первого при пустом поле.

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

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

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

  1. Это учебный набор, не реальные состояния API Авито. Перед интеграцией сверяйте контракт сервиса.

  2. Представление может меняться или переводиться, поэтому обмен должен использовать код, а не подпись.

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

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

Открыть собственную форму выбора штатной кнопкой поля

ФормаВыбора задаёт реальную общую форму для одного собственного реквизита-перечисления. Штатная кнопка поля или F4 ведёт к своим двум командам выбора; обработчик поля раздельно фиксирует старый реквизит и предложенный результат до стандартной подстановки, а ПриИзменении проверяет уже новое значение. Это не повтор урока АвтоВводНезаполненного и не ручной ОткрытьФорму вместо изучаемого свойства.

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

Полный основной модуль общей управляемой формы УчебноеПолеВыбора85. Два других модуля приведены отдельными блоками с собственными точными владельцами. Собственная новая база/пользователь 8.5.1.1343, тонкий или толстый управляемый клиент Windows; только локальный одиночный выбор собственного перечисления.

Подготовка

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

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

  3. В дереве Перечисления создайте своё перечисление УчебныйФормат85 с ровно двумя значениями: имя Книга, синоним Книга; имя Тетрадь, синоним Тетрадь. Не используйте неизвестное перечисление существующей конфигурации. Ни одного справочника, документа, регистра или предметной записи для урока не нужно.

  4. В Общие → Общие формы создайте две разные управляемые формы УчебноеПолеВыбора85 и УчебныйВыборФормата85. В обеих АвтоматическоеСохранениеДанныхВНастройках оставьте НеИспользовать. Не объединяйте три модуля урока в один.

  5. В форме УчебноеПолеВыбора85 создайте два реквизита Формат и ОжидаемыйФормат с единственным типом ПеречислениеСсылка.УчебныйФормат85. ОжидаемыйФормат на форму не выводите. Создайте реквизиты ДоПодстановки, Предложенное, ПослеПодстановки типа Строка длиной 100 и СостояниеУрока типа Строка длиной 300.

  6. Перетащите Формат на основную форму как поле ввода ПолеФормата, ПутьКДанным=Формат, заголовок Формат, ТолькоПросмотр=Ложь, РежимВыбораИзСписка=Ложь. Не создавайте СписокВыбора и не подключайте НачалоВыбора: он не должен перехватывать штатное открытие формы.

  7. Перетащите четыре строковых реквизита основной формы в отдельные поля ввода: ПолеДоПодстановки, ПолеПредложенного, ПолеПослеПодстановки, ПолеСостоянияУрока. Пути — соответственно ДоПодстановки, Предложенное, ПослеПодстановки, СостояниеУрока. У всех четырёх ТолькоПросмотр=Истина; заголовки До подстановки, Предложено, После подстановки, Состояние.

  8. Создайте на основной форме команду ПроверитьВыбор, действие ПроверитьВыбор, ИзменяетСохраняемыеДанные=Ложь. Разместите её кнопку с заголовком Проверить результат. Полный основной код вставьте в Конфигуратор → Общие → Общие формы → УчебноеПолеВыбора85 → Модуль формы, на уровне модуля, не внутрь другой процедуры. Событие формы ПриСозданииНаСервере свяжите с одноимённой процедурой.

  9. События поля ОбработкаВыбора и ПриИзменении вручную второму обработчику не назначайте: основной серверный обработчик назначает реальные процедуры через УстановитьДействие. Сигнатура ОбработкаВыбора поля содержит Элемент плюс четыре документированных параметра; не подменяйте её двухпараметрической сигнатурой одноимённого события всей формы.

  10. В форме УчебныйВыборФормата85 реквизиты и таблицы не нужны. Создайте команды ВыбратьКнигу и ВыбратьТетрадь, действия — одноимённые клиентские процедуры, ИзменяетСохраняемыеДанные=Ложь. Разместите их кнопки с заголовками Выбрать Книгу и Выбрать Тетрадь. Полный отдельный блок УчебныйВыборФормата85 вставьте в Общие → Общие формы → УчебныйВыборФормата85 → Модуль формы; событию ПриСозданииНаСервере назначьте её собственную одноимённую процедуру.

  11. Создайте общую команду ОткрытьУчебноеПоле85 без параметра и свою подсистему УчебныйВыборПоля85. Включите команду в командный интерфейс этой подсистемы. Полный отдельный блок запуска вставьте в Общие → Общие команды → ОткрытьУчебноеПоле85 → Модуль команды. Не вставляйте этот блок в модуль формы. У своей учебной роли разрешите перечисление, обе общие формы и общую команду, затем обновите только новый учебный стенд.

  12. ФормаВыбора присваивается на сервере точной строкой ОбщаяФорма.УчебныйВыборФормата85. НачалоВыбора не переписывается; ни одна команда основной формы не вызывает ОткрытьФорму для дочернего выбора. В поддерживающем модуле запуска открывается только основная форма.

  13. Основной серверный код выключает историю выбора поля через ИсторияВыбораПриВводе.НеИспользовать, запрещает текстовое редактирование, скрывает кнопки открытия и очистки, но оставляет настоящую кнопку выбора. Это изолированный опыт в своей новой базе/пользователе, не чтение или очистка истории рабочего пользователя.

  14. Нативные контракты сверены с установленной справкой 8.5.1.1343. Появление своей формы от стандартной кнопки/F4, фактическая подстановка, события и вид кнопок требуют ручного запуска. Статические проверки не подтверждают интерфейс и не заменяют протокол испытания.

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

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

&НаКлиенте
Процедура ФорматПриИзменении(Элемент)
    ПроверитьСвойРезультат();
    ЭтаФорма.СостояниеУрока = СтрШаблон("ПриИзменении: реквизит уже %1. Ожидаемый выбор совпал",
        ЭтаФорма.ПослеПодстановки);
КонецПроцедуры

&НаКлиенте
Процедура ПроверитьВыбор(Команда)
    ПроверитьСвойРезультат();
    ЭтаФорма.СостояниеУрока = СтрШаблон("Проверка после выбора или отмены: формат %1, совпадение Истина",
        ЭтаФорма.ПослеПодстановки);
КонецПроцедуры

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

Конфигуратор → Общие → Общие формы → УчебныйВыборФормата85 → Модуль формы

Полный отдельный модуль собственной формы выбора. Штатное открытие принадлежит полю основной формы; здесь 1С не запускалась.

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    ЭтаФорма.Заголовок = "Собственная форма выбора: Книга или Тетрадь";
    ЭтаФорма.ЗакрыватьПриВыборе = Истина;
КонецПроцедуры

&НаКлиенте
Процедура ВыбратьКнигу(Команда)
    ЭтаФорма.ОповеститьОВыборе(Перечисления.УчебныйФормат85.Книга, Ложь);
КонецПроцедуры

&НаКлиенте
Процедура ВыбратьТетрадь(Команда)
    ЭтаФорма.ОповеститьОВыборе(Перечисления.УчебныйФормат85.Тетрадь, Ложь);
КонецПроцедуры
ОткрытьУчебноеПоле85

Конфигуратор → Общие → Общие команды → ОткрытьУчебноеПоле85 → Модуль команды

Полный отдельный клиентский модуль своей общей команды. Открывает только основную форму, не дочерний выбор.

&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
    ОткрытьФорму("ОбщаяФорма.УчебноеПолеВыбора85");
КонецПроцедуры

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

  1. В своём учебном разделе выполните общую команду. Открывается основная форма; её серверный обработчик проверяет имя стенда и версию, задаёт Формат=Книга и настраивает поле. ПослеПодстановки показывает Книга, две предыдущие подписи пустые.

  2. Нажмите реальную кнопку выбора у поля Формат либо установите фокус в этом поле и нажмите F4. Штатное НачалоВыбора должно открыть именно общую форму с заголовком Собственная форма выбора: Книга или Тетрадь. Это будущая ручная проверка применения ФормаВыбора, не вывод только присвоенной строки.

  3. В дочерней форме нажмите Выбрать Тетрадь. Её команда вызывает ЭтаФорма.ОповеститьОВыборе со своим значением перечисления и Ложь. Второй параметр управляет добавлением при множественном вводе; в данном одиночном поле он игнорируется, но передан явно.

  4. Владельцем стандартного выбора является поле. Его ОбработкаВыбора срабатывает до помещения значения. Код сначала запрещает стандартную обработку, проверяет собственный тип и одно из двух допустимых значений, затем отдельно читает старое Формат и новый ВыбранноеЗначение.

  5. Для перехода Книга → Тетрадь подпись ДоПодстановки получает Книга, Предложенное — Тетрадь. Код НЕ присваивает Формат в этом обработчике; только после проверок разрешает СтандартнаяОбработка=Истина. Серверные методы и свойства, вызывающие сервер, здесь не используются.

  6. Стандартная подстановка изменяет реквизит на Тетрадь. Обработчик ПриИзменении сравнивает его с ранее проверенным ОжидаемыйФормат и выводит ПослеПодстановки=Тетрадь. При несовпадении возникает исключение, а сообщение об успешном совпадении не выводится.

  7. Нажмите Проверить результат: тот же клиентский контроль подтверждает действительное значение реквизита. Затем откройте выбор снова и нажмите Выбрать Книгу. Теперь до подстановки Тетрадь, предложено Книга, после подстановки Книга.

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

  9. Для проверки маршрута ПриИзменении выбирайте другое значение. Повторный выбор того же значения не является изменением реквизита; урок не требует повторного события ПриИзменении в таком случае. Кнопка Проверить результат читает и сверяет фактическое значение независимо от этого.

  10. Закройте основную форму и откройте её своей общей командой заново: снова Книга и пустые ДоПодстановки/Предложенное. Никакие предметные данные, файлы или профили настроек не загружались и не записывались.

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

  1. Первый штатный выбор кнопкой/F4 открывает форму с двумя собственными кнопками и указанным заголовком; не стандартный список перечисления и не окно другой формы. Если маршрут иной, опыт не считается подтверждённым: проверьте полное имя формы и БыстрыйВыбор=Ложь.

  2. Выбор Тетрадь из начальной Книги даёт три разные роли значений: ДоПодстановки=Книга, Предложенное=Тетрадь, ПослеПодстановки=Тетрадь. Сообщение ПриИзменении появляется только после успешного сравнения фактического реквизита.

  3. Обратный выбор Книга даёт ДоПодстановки=Тетрадь, Предложенное=Книга, ПослеПодстановки=Книга. Нажатие Проверить результат подтверждает тип и равенство Формат=ОжидаемыйФормат.

  4. Крестик в форме выбора без нажатия её команд не изменяет Формат и не создаёт новое Предложенное. Сохраните скриншот/протокол до открытия и после отмены; статический тест не подтверждает этот результат.

  5. Ввод текста в ПолеФормата отключён, кнопка выбора доступна. Видимость и доступность реальной кнопки проверяются вручную на активной теме клиента. Включать ТолькоПросмотр всему полю нельзя: это другой запрет, не ограничение одного текстового редактирования.

  6. Повторное открытие основной формы возвращает исходную Книгу без записи/чтения предметных данных. Проверьте компиляцию каждого полного модуля в его собственном владельце: статическая проверка здесь не является компилятором 1С, а объединение модулей не является подготовкой этого урока.

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

Один новый член ФормаВыбора используется в настоящем штатном маршруте собственного поля: выбор своей общей формы, проверка результата до стандартной подстановки, контроль нового реквизита и отмена без выбора. Старое, предложенное и фактическое значения не смешиваются. Результат работы интерфейса здесь не подтверждён запуском 1С.

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

  1. АвтоВводНезаполненного уже имеет подробный урок form-auto-input-empty-table с пустой таблицей и переключением режима. Здесь он не повторяется и не привязывается: ФормаВыбора относится к расширению поля ввода, а не к ТаблицаФормы.

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

  3. ОбработкаВыбора вызывается до помещения нового значения в поле. Читать в ней Формат как уже выбранное значение неверно; новое приходит в ВыбранноеЗначение. Установка СтандартнаяОбработка=Ложь после успешной проверки остановила бы штатную подстановку.

  4. В ОбработкаВыбора нельзя вызывать &НаСервере методы формы и менять свойства, вызывающие сервер. В частности, ФормаВыбора уже задана в серверной подготовке; обработчик выбора её не меняет.

  5. ЗакрыватьПриВыборе=Истина работает с ОповеститьОВыборе. Дочерняя форма не возвращает результат через Закрыть(Значение), ОписаниеОповещенияОЗакрытии или ручное присваивание реквизиту чужой формы.

  6. Формат и ОжидаемыйФормат имеют одно и то же собственное перечисление, а не Строка. Пустая ссылка того же типа тоже проверяется и не принимается. Перечисления.УчебныйФормат85.Книга/Тетрадь допустимы только после точной собственной подготовки метаданных.

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

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

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

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

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

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