Тип: Булево. Содержит признак возможности/невозможности редактирования отображаемых данных. Данное свойство имеет смысл только для тех данных, редактирование которых не запрещено прикладным смыслом и ограничениями по правам. Также некоторые виды полей не обладают возможностью редактировать отображаемые данные.
Полное описание, параметры и ограничения
ПолеФормы.ТолькоПросмотр (FormField.ReadOnly)
ПолеФормы (FormField)
ТолькоПросмотр (ReadOnly)
Доступен, начиная с версии 8.2.
Использование:
Чтение и запись.
Описание:
Тип: Булево.
Содержит признак возможности/невозможности редактирования отображаемых данных.
Данное свойство имеет смысл только для тех данных, редактирование которых не запрещено прикладным смыслом и ограничениями по правам. Также некоторые виды полей не обладают возможностью редактировать отображаемые данные.
Доступность:
Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.
Изменение свойства на клиенте может потребовать обращения к серверу.
Использование в версии:
Доступен, начиная с версии 8.2.
Методическая информация
Практические примеры
Получить закладки выделения и заменить собственное слово в памятке
Выделение форматированного текста определяется закладками, а не четырьмя номерами строк и колонок. Меняем Книга на КНИГА и восстанавливаем диапазон по числовым позициям.
Где и как запускать
Модуль новой управляемой формы учебной внешней обработки. Код содержит готовые процедуры с директивами; вставляйте на уровне модуля, не внутрь другого обработчика. Каждую задачу запускайте в отдельной копии формы.
Подготовка
В отдельной учебной базе 8.5.1.1343 создайте внешнюю обработку УчебныеПоляДокументов85 с пустой управляемой основной формой. Запускайте в тонком клиенте Windows; веб-клиент в этот урок не входит.
Не создавайте вручную УчебныйДокумент, ПолеДокумента или учебную команду. Модуль программно добавляет их при открытии формы.
В свойствах формы → События назначьте ПриСозданииНаСервере. Вставьте весь код одного урока на уровне модуля, сохраните свою EPF и откройте её в учебной базе.
Поле связано с реквизитом УчебныйДокумент типа ФорматированныйДокумент. Объект документа содержит данные, элемент ПолеДокумента отвечает за отображение и пользовательские действия.
Документ создаётся заново из собственных констант. Книга: 3 штуки по 250, сумма 750. Реальные документы, справочники, файлы, сертификаты и сетевые адреса не используются.
Каждый урок запускайте в отдельной копии формы. Изменения текста и оформления живут в памяти открытой учебной формы; код не сохраняет документ в файл, не печатает и не пишет в базу.
Размеры и ограничения элемента задаются на сервере создания формы. Кнопка выполняет клиентские проверки или явно описанное учебное изменение.
Фактический вид и запуск в 1С не проверены. Настройки компоновки формы, масштаб интерфейса и версия клиента могут влиять на отображение; сверяйте его вручную.
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
НовыеРеквизиты = Новый Массив;
НовыеРеквизиты.Добавить(Новый РеквизитФормы("УчебныйДокумент", Новый ОписаниеТипов("ФорматированныйДокумент")));
ЭтаФорма.ИзменитьРеквизиты(НовыеРеквизиты);
Документ = Новый ФорматированныйДокумент;
Документ.УстановитьФорматированнуюСтроку(Новый ФорматированнаяСтрока("Книга: 3 × 250 = 750"));
ЭтаФорма.УчебныйДокумент = Документ;
Поле = Элементы.Добавить("ПолеДокумента", Тип("ПолеФормы"));
Поле.Вид = ВидПоляФормы.ПолеФорматированногоДокумента;
Поле.ПутьКДанным = "УчебныйДокумент";
Поле.ТолькоПросмотр = Ложь;
КомандаДействия = ЭтаФорма.Команды.Добавить("УчебноеДействие");
КомандаДействия.Действие = "УчебноеДействие";
КомандаДействия.Заголовок = "Заменить своё слово";
КомандаДействия.Подсказка = "Действие только над данными учебной формы";
КомандаДействия.ИзменяетСохраняемыеДанные = Ложь;
Кнопка = Элементы.Добавить("КнопкаУчебноеДействие", Тип("КнопкаФормы"));
Кнопка.ИмяКоманды = КомандаДействия.Имя;
Кнопка.Заголовок = КомандаДействия.Заголовок;
КонецПроцедуры
&НаКлиенте
Процедура УчебноеДействие(Команда)
Поле = Элементы.ПолеДокумента;
Если Поле.ВыделенныйТекст <> "Книга" Тогда
Сообщить("Выделите только слово Книга в собственной памятке");
Возврат;
КонецЕсли;
Начало = Неопределено;
Конец = Неопределено;
Поле.ПолучитьГраницыВыделения(Начало, Конец);
Если ТипЗнч(Начало) <> Тип("ЗакладкаФорматированногоДокумента") ИЛИ ТипЗнч(Конец) <> Тип("ЗакладкаФорматированногоДокумента") Тогда
ВызватьИсключение "Не получены закладки собственного выделения";
КонецЕсли;
ПозицияНачала = УчебныйДокумент.ПолучитьПозициюПоЗакладке(Начало);
ПозицияКонца = УчебныйДокумент.ПолучитьПозициюПоЗакладке(Конец);
Сообщить(СтрДлина(Поле.ВыделенныйТекст) = 5);
Сообщить("Позиции выделения: " + Строка(ПозицияНачала) + " … " + Строка(ПозицияКонца));
Поле.ВыделенныйТекст = "КНИГА";
НовоеНачало = УчебныйДокумент.ПолучитьЗакладкуПоПозиции(ПозицияНачала);
НовыйКонец = УчебныйДокумент.ПолучитьЗакладкуПоПозиции(ПозицияКонца);
Поле.УстановитьГраницыВыделения(НовоеНачало, НовыйКонец);
Сообщить(Поле.ВыделенныйТекст = "КНИГА");
Сообщить(СтрНайти(УчебныйДокумент.ПолучитьТекст(), "750") > 0);
КонецПроцедуры
Разбор по шагам
Перед нажатием выделяем ровно Книга. Любое другое выделение вызывает только инструкцию, без замены.
ПолучитьГраницыВыделения возвращает два объекта ЗакладкаФорматированногоДокумента через переменные.
До изменения переводим закладки в числовые позиции. Длину пяти букв проверяем по ВыделенныйТекст, а реальные позиции выводим диагностически: справка этого метода не объявляет разность границ длиной строки.
После записи ВыделенныйТекст старые закладки изменённого фрагмента не используем: заново получаем их по сохранённым позициям.
Новая строка имеет ту же длину, поэтому границы диапазона сохраняются. Метод установки выделения принимает две новые закладки.
Как проверить результат
После правильного выделения ожидаются три Истина: длина текста 5, выделенное КНИГА и нетронутая сумма 750, а также строка фактических позиций.
Нажмите без нужного выделения: памятка не изменится. Повторный исходный опыт выполняйте после нового открытия формы.
Ожидаемый результат
Выделение форматированного документа разобрано с правильными объектами границ и явным сохранением позиций.
На что обратить внимание
Не подставляйте четыре координаты обычного текста в метод форматированного поля.
Закладки удалённого или изменённого фрагмента не следует молча считать действительными.
При замене текстом другой длины нужно пересчитать конечную позицию; этот урок использует только равную длину.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.
Задать фон форматированного поля именно в таблице формы
Создаём две собственные памятки и показываем их в колонке таблицы. Это правильный контекст применения ЦветФона, в отличие от отдельного форматированного поля.
Где и как запускать
Модуль новой управляемой формы учебной внешней обработки. Код содержит готовые процедуры с директивами; вставляйте на уровне модуля, не внутрь другого обработчика. Каждую задачу запускайте в отдельной копии формы.
Подготовка
Создайте отдельную учебную внешнюю обработку с пустой управляемой основной формой на 8.5.1.1343; тонкий клиент Windows.
Не добавляйте вручную Памятки, ТаблицаПамяток или ПолеДокумента: реквизиты, строки и элементы создаются модулем.
Назначьте событию формы ПриСозданииНаСервере этот обработчик, вставьте весь модуль и откройте свою EPF.
Две строки с форматированными памятками Книга и Ручка создаются в памяти. Никакие документы конфигурации не используются.
Здесь поле находится внутри ТаблицаФормы. Это существенно: ЦветФона расширения форматированного поля по установленной справке применяется только при размещении в таблице.
Запуск и вид в 1С не проверены. Код не записывает данные базы или файл, не отправляет и не печатает документ.
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Реквизиты = Новый Массив;
Реквизиты.Добавить(Новый РеквизитФормы("Памятки", Новый ОписаниеТипов("ТаблицаЗначений")));
Реквизиты.Добавить(Новый РеквизитФормы("Текст", Новый ОписаниеТипов("ФорматированныйДокумент"), "Памятки", "Учебная памятка"));
ЭтаФорма.ИзменитьРеквизиты(Реквизиты);
Данные = Новый ТаблицаЗначений;
Данные.Колонки.Добавить("Текст", Новый ОписаниеТипов("ФорматированныйДокумент"));
Для Каждого Название Из СтрРазделить("Книга,Ручка", ",") Цикл
Документ = Новый ФорматированныйДокумент;
Документ.УстановитьФорматированнуюСтроку(Новый ФорматированнаяСтрока("Учебный товар: " + Название));
СтрокаПамятки = Данные.Добавить();
СтрокаПамятки.Текст = Документ;
КонецЦикла;
ЭтаФорма.ЗначениеВРеквизитФормы(Данные, "Памятки");
Таблица = Элементы.Добавить("ТаблицаПамяток", Тип("ТаблицаФормы"));
Таблица.ПутьКДанным = "Памятки";
Таблица.Заголовок = "Две собственные памятки";
Таблица.РастягиватьПоГоризонтали = Истина;
Поле = Элементы.Добавить("ПолеДокумента", Тип("ПолеФормы"), Таблица);
Поле.Вид = ВидПоляФормы.ПолеФорматированногоДокумента;
Поле.ПутьКДанным = "Памятки.Текст";
Поле.ТолькоПросмотр = Истина;
Поле.ЦветФона = Новый Цвет(232, 243, 255);
КомандаДействия = ЭтаФорма.Команды.Добавить("УчебноеДействие");
КомандаДействия.Действие = "УчебноеДействие";
КомандаДействия.Заголовок = "Проверить фон колонки";
КомандаДействия.Подсказка = "Действие только над данными учебной формы";
КомандаДействия.ИзменяетСохраняемыеДанные = Ложь;
Кнопка = Элементы.Добавить("КнопкаУчебноеДействие", Тип("КнопкаФормы"));
Кнопка.ИмяКоманды = КомандаДействия.Имя;
Кнопка.Заголовок = КомандаДействия.Заголовок;
КонецПроцедуры
&НаКлиенте
Процедура УчебноеДействие(Команда)
Поле = Элементы.ПолеДокумента;
Сообщить(Поле.ЦветФона = Новый Цвет(232, 243, 255));
Сообщить(Памятки.Количество() = 2);
Сообщить(Поле.ТолькоПросмотр);
КонецПроцедуры
Разбор по шагам
Добавляем табличный реквизит формы и его подчинённое поле типа ФорматированныйДокумент.
В ТаблицаЗначений создаём два самостоятельных документа и загружаем таблицу в реквизит формы.
ПолеДокумента создаётся с родителем ТаблицаПамяток и путём Памятки.Текст, поэтому это колонка таблицы.
ЦветФона назначаем расширению форматированного поля в разрешённом контексте. ТолькоПросмотр защищает учебные строки от случайного редактирования через поле.
Кнопка проверяет заданный цвет, две строки и режим просмотра; вид фона дополнительно осматриваем в клиенте.
Как проверить результат
Ожидаются три Истина. В таблице видны Учебный товар: Книга и Учебный товар: Ручка.
Сравните с отдельным полем из урока настройки памятки: фон не переносится туда с обещанием того же поведения.
Ожидаемый результат
Ограниченное по контексту свойство разобрано на полноценной собственной таблице, а не неработающем присваивании вне неё.
На что обратить внимание
Колонка имеет подчинённый путь Памятки.Текст; путь только Текст не относится к этому реквизиту.
Наличие значения цвета не доказывает фактический оттенок в конкретной теме клиента.
Не путайте форматированный документ с многострочной строкой или ТабличныйДокумент.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.