Тип: Булево. Содержит признак того, что текстовый документ открыт в режиме просмотра. В режиме просмотра содержимое текстового документа не доступно для редактирования. Истина - режим просмотра.
Полное описание, параметры и ограничения
ТекстовыйДокумент.ТолькоПросмотр (TextDocument.ReadOnly)
ТекстовыйДокумент (TextDocument)
ТолькоПросмотр (ReadOnly)
Доступен, начиная с версии 8.0.
Использование:
Чтение и запись.
Описание:
Тип: Булево.
Содержит признак того, что текстовый документ открыт в режиме просмотра. В режиме просмотра содержимое текстового документа не доступно для редактирования.
Истина - режим просмотра.
Доступность:
Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение.
Использование в версии:
Доступен, начиная с версии 8.0.
Методическая информация
Практические примеры
Асинхронно показать свой протокол 125 без чтения и записи файлов
Две учебные цены складываются в памяти. Настоящий ТекстовыйДокумент передаётся в ОткрытьЗначениеАсинх, а результат настоящего обещания проверяется отдельно от содержимого.
Где и как запускать
Полный клиентский модуль собственной общей управляемой формы ПросмотрПротокола125. Настоящая кнопка запускает Асинх Процедура; ни серверные процедуры, ни RPC не используются.
Подготовка
Работайте только в своей новой пустой учебной файловой базе на 8.5.1.1343, не в рабочей конфигурации. Никаких справочников, файлов, внешних объектов, учётных записей сервисов или сетевых ресурсов не нужно.
Конфигуратор → корень Конфигурация → Основной режим запуска: Управляемое приложение; Режим совместимости: НеИспользовать. Сохраните конфигурацию и обновите конфигурацию базы данных.
Конфигуратор → Общие → Общие формы → Добавить. Имя: ПросмотрПротокола125, тип: управляемая форма. Реквизиты и обработчики открытия для этого примера не нужны.
В редакторе формы на вкладке Команды создайте ПоказатьПротокол125. Для её Действия назначьте процедуру ПоказатьПротокол125. Перетащите команду в дерево элементов формы, чтобы получить настоящую кнопку.
Вставьте весь показанный блок на верхнем уровне модуля этой формы, заменив созданную заготовку обработчика. Не вставляйте Асинх Процедура внутрь другой процедуры и не вызывайте её вручную с выдуманным параметром Команда.
В редакторе рабочей области начальной страницы добавьте только свою общую форму ПросмотрПротокола125. Обновите свою учебную базу, запустите её толстым клиентом в управляемом режиме и один раз нажмите кнопку. Новичку не требуется писать дополнительный запускной модуль.
Всё создание базы и формы — будущая ручная подготовка пользователя. Здесь не запускались 1С, диалог, конфигуратор, запись БД или файловые операции.
&НаКлиенте
Асинх Процедура ПоказатьПротокол125(Команда)
#Если ТолстыйКлиентУправляемоеПриложение Тогда
Если ТипЗнч(Команда) <> Тип("КомандаФормы") Тогда
ВызватьИсключение "Запустите настоящую команду своей учебной формы";
КонецЕсли;
Если Команда.Имя <> "ПоказатьПротокол125" Тогда
ВызватьИсключение "Нужна команда ПоказатьПротокол125";
КонецЕсли;
ЦенаА = 50;
ЦенаБ = 75;
Итого = ЦенаА + ЦенаБ;
Протокол = СтрШаблон("Учебный протокол: A=%1; B=%2; итого=%3", ЦенаА, ЦенаБ, Итого);
Документ = Новый ТекстовыйДокумент;
Документ.УстановитьТекст(Протокол);
Документ.ТолькоПросмотр = Истина;
Если Документ.КоличествоСтрок() <> 1
Или Документ.ПолучитьСтроку(1) <> Протокол
Или Не Документ.ТолькоПросмотр Тогда
ВызватьИсключение "Не подготовлен собственный протокол в памяти";
КонецЕсли;
РезультатПоказа = Ждать ОткрытьЗначениеАсинх(Документ);
Если РезультатПоказа <> Неопределено Тогда
ВызватьИсключение "Нарушен документированный контракт результата обещания";
КонецЕсли;
Если Документ.КоличествоСтрок() <> 1
Или Документ.ПолучитьСтроку(1) <> Протокол
Или Не Документ.ТолькоПросмотр Тогда
ВызватьИсключение "Содержимое собственного протокола изменилось";
КонецЕсли;
Сообщить("Вызов просмотра завершён. Это не подтверждение прочтения или сохранения документа.");
#Иначе
ВызватьИсключение "Запустите собственную учебную форму толстым клиентом в управляемом режиме";
#КонецЕсли
КонецПроцедурыРазбор по шагам
Директива &НаКлиенте и модификатор Асинх относятся к настоящему обработчику кнопки. Препроцессор оставляет рабочую ветку только в толстом управляемом клиенте.
Команда — штатный параметр события кнопки. Проверяем его фактический тип и имя, а не передаём неизвестный ИсходныйОбъект.
ЦенаА=50 и ЦенаБ=75 — собственные учебные числа. Итого вычисляется сложением; СтрШаблон включает фактический результат в одну строку.
Новый ТекстовыйДокумент создаёт объект в памяти; УстановитьТекст наполняет его нашей строкой. ТолькоПросмотр запрещает редактирование его содержимого в режиме просмотра.
Перед показом перечитываем фактическое число строк, строку 1 и режим просмотра. ОткрытьЗначениеАсинх получает именно этот проверенный объект.
Ждать потребляет настоящее обещание метода. Его документированный результат — Неопределено, а не Истина, выбранная строка или отредактированный документ.
После наполнения обещания снова перечитываем тот же объект. Сообщение сообщает только о завершении вызова; оно не утверждает, что пользователь прочитал текст, закрыл окно или сохранил файл.
Как проверить результат
В диалоге просмотра должен быть собственный текст: Учебный протокол: A=50; B=75; итого=125. Сравните все три числа с исходниками и сложением.
Попробуйте изменить текст в режиме просмотра: ТолькоПросмотр=Истина означает, что содержимое не доступно для редактирования. Не используйте команды сохранения или печати.
После наполнения обещания выполняется контроль Неопределено и повторное чтение. Если возникло исключение, это не успешный показ и не повод подставлять ожидаемый текст.
В новой учебной проверке измените только ЦенаА на 60: ожидаемые A=60, B=75, итого=135. Объект и показ должны содержать вычисленные новые значения.
Один запуск кнопки создаёт один собственный документ. Для повторного опыта завершите предыдущий просмотр и снова нажмите кнопку вручную; автоматических повторов и таймеров нет.
Ожидаемый результат
Настоящий собственный текстовый документ показан через асинхронный API. Содержимое читается из того же объекта до и после вызова; Неопределено трактуется как результат обещания, а не пользовательское согласие.
На что обратить внимание
Справка не обещает, что завершение этого обещания означает закрытие окна или прочтение человеком. Код не использует эти недоказанные выводы.
Здесь показан только ТекстовыйДокумент: не любой тип гарантированно поддерживает диалог. Для ссылок, форм и других объектов действует их собственный контракт.
ТолькоПросмотр не является защитой от копирования, снимка экрана или отдельной пользовательской команды сохранения. Наш код не вызывает запись, печать, запуск программ или сеть.
Проверка строк не заменяет визуальную проверку настоящего диалога. Блоки и сигнатуры проверены статически, запуск в 1С не выполнен.
Не переносите Ждать в обычную процедуру: оператор допустим только в Асинх. Не заменяйте настоящее обещание заранее созданным Обещание или ручным вызовом продолжения.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.
Открыть учебную памятку только для просмотра и отличить имя сохранения от файла
Клиентская команда показывает новую памятку, запрещает редактирование/вывод и отдельно проверяет, что назначение ИспользуемоеИмяФайла не создало файл.
Где и как запускать
Модуль пустой управляемой формы учебной внешней обработки; тонкий или толстый клиент Windows. Вставьте весь модуль. Это не серверный код.
Подготовка
Создайте учебную внешнюю обработку с пустой управляемой основной формой. Создайте команду УчебныйПример и кнопку этой команды.
В свойстве команды Действие выберите процедуру УчебныйПример. Вставьте полный приведённый модуль формы.
Откройте EPF в тонком или толстом клиенте Windows и нажмите кнопку. Не переносите Ждать и Асинх в серверный общий модуль.
Пример работает только со своими данными в памяти; записи в базу, файлы и сеть нет.
&НаКлиенте
Процедура УчебныйПример(Команда)
Документ = Новый ТекстовыйДокумент;
Документ.УстановитьТекст("Учебная памятка" + Символы.ПС + "Книга: 3 × 250 = 750 руб.");
Документ.ТолькоПросмотр = Истина;
Документ.Вывод = ИспользованиеВывода.Запретить;
ПредлагаемоеИмя = ПолучитьИмяВременногоФайла("txt");
Документ.ИспользуемоеИмяФайла = ПредлагаемоеИмя;
ФайлПроверки = Новый Файл(ПредлагаемоеИмя);
Сообщить(Документ.ТолькоПросмотр);
Сообщить(Документ.Вывод = ИспользованиеВывода.Запретить);
Сообщить(Документ.ИспользуемоеИмяФайла = ПредлагаемоеИмя);
Сообщить(Не ФайлПроверки.Существует());
Документ.Показать("Учебная памятка — без записи на диск");
КонецПроцедурыРазбор по шагам
Документ — локальная переменная команды, не реквизит формы. Для реквизита формы Показать вызвал бы исключение.
ТолькоПросмотр ограничивает интерактивное редактирование. Вывод=Запретить задаёт ограничение печати, сохранения и работы с буфером обмена.
ИспользуемоеИмяФайла — имя, которое используется при пользовательском сохранении. Само присваивание не вызывает Записать.
Проверяем отсутствие по этому имени ДО Показать и открываем отдельное окно просмотра без второго аргумента имени файла.
Закройте окно после визуальной проверки; в задаче нет программного сохранения или печати.
Как проверить результат
Четыре сообщения Истина; окно содержит заголовок и итог 750 руб.
Попытка редактировать текст не меняет содержимое; команды вывода ограничены согласно настройке.
Проверка файла подтверждает отсутствие записи при присваивании имени, не поведение любых последующих пользовательских действий.
Ожидаемый результат
Открыта самостоятельная памятка с явно разделёнными режимом просмотра, политикой вывода и рекомендуемым именем.
На что обратить внимание
Ограничение Вывод не является криптографической защитой информации от снимков экрана или других каналов.
ТолькоПросмотр не запрещает программное изменение объекта встроенным языком.
Если разрешить вывод или изменить настройки, пользовательское сохранение — отдельное действие и может создать файл.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.