1С поле форматированного документа

1С:Предприятие 8.3.14. Документация
Глава 7. Формы

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

Для работы с форматированным документом предназначен объект ФорматированныйДокумент, с помощью которого можно выполнять программную обработку документа, и поле вида Поле форматированного документа, который предназначен для интерактивного изменения форматированного документа.

В информационной базе форматированный документ рекомендуется хранить в реквизите типа ХранилищеЗначения, в который помещается объект типа ФорматированныйДокумент.

Для того чтобы предоставить пользователю возможность интерактивного изменения документа, следует выполнить следующие шаги:

● Создать реквизит формы типа ФорматированныйДокумент и установить для него свойство Сохраняемые данные.

● Создать элемент формы типа Поле ввода вида Поле форматированного документа и связать его с ранее созданным реквизитом.

● При чтении данных формы (обработчик ПриЧтенииНаСервере()) загрузить в реквизит формы документ (метод УстановитьHTML()), который необходимо редактировать, предварительно получив его из информационной базы.

● Перед записью данных формы (обработчик ПередЗаписьюНаСервере()) получить результат (метод ПолучитьHTML()) редактирования документа и поместить его в реквизит, сохраняемый в информационной базе.

В процессе работы с документом можно использовать закладки. Закладка описывает положение некоторого символа в документе. При определении положения нужно учитывать следующие особенности:

● содержимое документа считается одной последовательностью символов;

● перенос строки считается одним символом;

● картинка считается одним символом.

Если положение символа, с которым связана закладка, изменится, то закладка будет отслеживать положение связанного символа. Если удаляется символ, с которым связана закладка, то закладка пытается привязаться к следующему символу, а если этого символа нет ‑ закладка будет указывать на конец документа. Если заменить целиком весь форматированный документ, то все закладки в этом документе станут невалидными.

С помощью закладок можно получать и устанавливать выделение или позицию курсора в редакторе, добавлять и удалять элементы текста в документе (собственно текст, картинка, перевод строки).

Если при получении выделения позиция начала и позиция окончания совпадают, это значит, что выделение отсутствует и получено положение курсора. Так же и при установке выделения: если начальная и конечная позиция выделения совпадают, происходит изменение позиции курсора, без выделения. При программном изменении текста собственно отображение выделения в поле форматированного документа не изменится. Если перед изменением текста выполнялось получение границ выделения, то после изменения текста, закладки могут изменить свою позицию, сохранив при этом свое положение. Другими словами, если вставка происходила внутрь выделения, то позиция закладки, описывающей окончание выделения, увеличится на размер вставленного текста и т. д.

Приведем пример получения и установки выделения в редакторе форматированного документа.

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

Если в форматированном документе присутствуют гиперссылки и форматированный документ отображается в режиме Только просмотр, то гиперссылки доступны для перехода. Переход выполняется в новом окне веб-браузера.

Также имеется возможность программного доступа к тексту форматированного документа. Сам текст состоит из объектов типа ПараграфФорматированногоДокумента, который доступен через свойство Элементы объекта ФорматированныйДокумент. При этом каждый параграф состоит из объектов типа

  • ТекстФорматированногоДокумента,
  • ПереводСтрокиФорматированногоДокумента
  • КартинкаФорматированногоДокумента (элементы форматированного документа).
Читайте также:  Gopro hero как видеорегистратор

Доступ к этой коллекции обеспечивается через свойство Элементы объекта ПараграфФорматированногоДокумента. Границей элемента не обязательно является граница слова.

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

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

При программной работе с текстом также могут помочь методы ПолучитьЭлементы() и СформироватьЭлементы(). Эти методы возвращают массив элементов форматированного документа. Чтобы увидеть разницу в работе этих методов, рассмотрим пример форматированного документа, содержащего следующую строку: 012 456 890. Строка состоит из 11 символов, где на месте символов 4 и 8 расположены пробелы. Необходимо получить элементы, которые расположены между позициями 2 и 9 этого документа.

Разница в работе этих методов будет в том, что метод ПолучитьЭлементы() возвращает все элементы, которые попадают между заданными закладками (включая все граничные элементы), т. е. рассматриваемом примере будет выведен следующий текст:

Другими словами, при использовании метода СформироватьЭлементы() система формирует набор элементов таким образом, чтобы он включал в себя только то содержимое форматированного документа, которое ограничено закладками.

Такой результат будет даже в том случае, если полученный, после вызова СформироватьЭлементы(), набор элементов никак не изменялся.

Поступила задача разработки печатной формы документа с наклонами, выделением текста и т.д.

Ничего особенного. Получил задачу – исполняй. Но оказалось, что таких печатных форм много. Захотелось облегчить свою жизнь и как-то все оптимизировать. Запустил в свой мозг задачу на сон грядущий и умище с утра выдало такое.

Итак, как мне создать печатную форму 1С и сохранить в формате WORD?

Поле HTML документа – это что? Обычная строка.

— Можно использовать возможности объекта ТекстовыйДокумент? Можно.

После таких умозаключений разделил макет, тип ТекстовыйДокумент с HTML разметкой на области (#Область Имя области #КонецОбласти) .


И набросал две простенькие функции. Жизнь стала прекрасна !

Функция ПолучитьОбласть ( МакетHTML,ИмяОбласти )

ТекОбласть = МакетHTML.ПолучитьОбласть ( ИмяОбласти );

//Удаляем строки с определением области #Область, #КонецОбласти

Функция ВывестиОбласть ( Область,Параметры = Неопределено)

Если ТипЗнч ( Параметры ) = Тип ( "Структура" ) и Параметры.Количество () Тогда

Для каждого Эл из Параметры Цикл

Текст = СтрЗаменить ( Текст , "[" + Эл.Ключ + "]" , Эл.Значение );

Далее простая обработка.
Например:

МакетHTML = РеквизитФормыВЗначение ( "Объект" ) .ПолучитьМакет ( "МакетПечати" );

ОбластьШапка = ПолучитьОбласть ( МакетHTML ,"Шапка" );

ОбластьШапкаТаблицы = ПолучитьОбласть ( МакетHTML ,"ШапкаТаблицы" );

ОбластьСтрока = ПолучитьОбласть ( МакетHTML ,"Строка" );

ОбластьПодвал = ПолучитьОбласть ( МакетHTML ,"Подвал" );

ПараметрыШапки = Новый Структура ( "Номер,Дата,Контрагент"

, "ООО Рога и Копыта" );

ТекстHTML = ТекстHTML + Символы.ПС

+ ВывестиОбласть ( ОбластьШапка , ПараметрыШапки );

ТекстHTML = ТекстHTML + Символы.ПС

Для Сч = 1 по 10 Цикл

Рандом = Новый ГенераторСлучайныхЧисел ( 150 * Сч );

Артикул = Рандом.СлучайноеЧисло ( 10000,30000 );

Рандом = Новый ГенераторСлучайныхЧисел ( 15 *Сч );

Цена = Окр ( Рандом.СлучайноеЧисло ( 100,30000 )/ 100,2 );

Рандом = Новый ГенераторСлучайныхЧисел ( Сч );

Количество = Рандом.СлучайноеЧисло ( 1,20 );

Сумма = Окр ( Цена * Количество, 2 );

СуммаИтог = СуммаИтог + Сумма ;

ПараметрыСтроки = Новый Структура ( "НомерСтроки,Артикул,Товар,Количество,Цена,Сумма"

, "Товар такойто " + Строка ( Сч )

, Формат ( Цена, "ЧДЦ=2" )

, Формат ( Сумма, "ЧДЦ=2" ));

ПараметрыПодвала = Новый Структура( "Сумма" ,Формат ( СуммаИтог , "ЧДЦ=2" ));

ТекстHTML = ТекстHTML + Символы.ПС

+ ВывестиОбласть ( ОбластьПодвал , ПараметрыПодвала );

ПС: Как получить макет с HTML разметкой в 1С? Все знают, что 1С таблицу или документ WORD можно сохранить как HTML.

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

Такое поле может использоваться, например, при создании сообщения электронной почты или для редактирования простейшего html-документа.

Если поле форматированного документа находится в режиме Только просмотр, то пользователь может переходить по ссылкам, которые содержит документ. Переход выполняется в новом окне браузера.

С помощью команд главного меню Файл -Сохранить и Сохранить как форматированный документ может быть сохранен как текстовый файл или html-документ.

Форматирование документа выполняется с помощью команд командной панели форматированного документа.

Кратко перечислим предоставляемые возможности форматирования.

Изменение шрифта

Шрифт документа можно изменить двумя способами:

● Выберите команду Изменение Шрифта и в диалоге Выбор шрифта выберите шрифт, размер шрифта, стиль начертания (Жирный, Подчеркнутый, Наклонный, Зачеркнутый) и нажмите кнопку OK.

● Выделите текст, шрифт которого нужно изменить, и с помощью соответствующих команд панели инструментов увеличьте или уменьшите размер шрифта пошагово, установите стиль шрифта (полужирный, курсив или подчеркнутый).

Выбор цвета фона и текста

Система «1С:Предприятие» обеспечивает возможность выделить текст цветом фона и цветом текста. Для этого выделите текст, на панели инструментов выберите команду Изменение цвета фона (чтобы изменить цвет фона текста) или Изменение цвета текста (чтобы изменить цвет текста. В открывшемся диалоге Выбор цвета выберите необходимый цвет и нажмите кнопку OK.

Вставка гиперссылки

Текст форматированного документа может содержать ссылки.

Выделите объект (текст или картинку), выберите пункт Вставить гиперссылку. На экран выводится диалог формирования В поле Ссылка укажите адрес гиперссылки и нажмите кнопку ОK.

Выделенный объект форматируется в соответствии со стилем гиперссылки. Обычно это синий цвет текста с подчеркиванием.

Вставка картинки

В форматированный документ можно вставлять картинки.

Для вставки картинки выберите пункт Вставить картинку и выберите файл в стандартном диалоге выбора файла.

Вставка символов

Используйте команду Вставить символ для добавления в текст символов из списка.

Вставка списка

Используйте команду Маркированный список, чтобы начать маркированный список, или Нумерованный список, чтобы начать нумерованный. Введите текст.

Чтобы добавить следующий элемент списка, нажмите клавишу Enter.

Чтобы завершить список, нажмите клавишу Enter дважды, или нажмите клавишу Backspace, чтобы удалить последний маркер или цифру списка.

Настройка выравнивания

Текст документа может быть выровнено по левому краю, по правому краю или по ширине документа.

Выделите текст, который необходимо выровнять и нажмите кнопку Влево / Вправо / По центру / По ширине.

Текст с отступами

Можно увеличить или уменьшить отступ от края поля для одного или нескольких абзацев текста.

Выделите текст и нажмите кнопку Увеличить отступ, чтобы увеличить отступ или Уменьшить отступ, если необходимо его уменьшить.

Междустрочный интервал

Чтобы настроить междустрочный интервал, выделите текст и выберите команду Междустрочный интервал. В открывшемся окне введите размер интервала с клавиатуры или с помощью кнопок и нажмите ОК.

Операции перетаскивания

В «1С:Предприятии» реализован механизм поддержки операций перетаскивания. С его помощью можно осуществлять перенос данных между разными элементами формы. Например, можно переносить элементы списка из одной группы в другую, переносить данные из таблицы в поле табличного документа или перенести список выделенных файлов из проводника Microsoft Windows в какой-либо элемент формы.

Операции перетаскивания поддерживают следующие элементы управления: таблица, поле табличного документа, поле календаря и поле картинки.

Возможность использования операций перетаскивания определяется при конфигурировании каждого элемента управления. Указание такой возможности следует искать в описании работы с конфигурацией. Далее приводится описание основных действий для элементов управления, для которых операции перетаскивания определены.

Для каждого объекта может быть определена возможность начала перетаскивания (из данного объекта можно производить перетаскивание) и возможность перетаскивания (разрешено перетаскивание в данный объект). Указание данных свойств производится при конфигурировании и может быть изменено средствами встроенного языка.

Процесс перетаскивания производится с помощью мыши и в основных приемах совпадает со стандартным, применяемым в Microsoft Windows.

Если при конфигурировании не производилось переопределение обработки событий перетаскивания, то выполняется простое перетаскивание. При этом результат перетаскивания зависит от вида элементов управления и типа исходных данных.

Возможность простого (без обработки) перетаскивания представлена в таблице.

Читайте также:  15360 Мб это сколько гб
Приемник Источник Поле календаря Поле табличного документа Таблица Поле картинки
Поле календаря Нет Да Нет Нет
Поле табличного документа Нет Да Нет Нет
Таблица Нет Да Да Нет
Поле картинки Нет Нет Нет Нет

Нет — указывает на невозможность простого перетаскивания.

Да — простое перетаскивание возможно.

При перетаскивании в поле табличного документа происходит преобразование перетаскиваемого значения в текстовое представление. При этом данные, для которых определено основное представление (например, для списка в виде кода или наименования), перетаскиваются как значение основного представления. Так, данные из поля календаря имеют тип значения Дата и преобразуются в строку в соответствии с текущими региональными установками. Если в таблице отображаются данные таблицы значений, то в поле табличного документа будет помещен индекс строки таблицы значений.

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

В таблице, отображающей статические данные (табличные части, таблицы значений, списки значений, дерево значений), допускается изменение порядка следования строк.

При этом действуют следующие правила перетаскивания:

● Если перемещается строка снизу на строку, расположенную над перемещаемой, то она вставляется перед строкой, на которую перемещается.

● Если перемещается строка вверху на строку, расположенную ниже, то она вставляется после строки, на которую перемещается.

● Если перемещается несколько строк, то действия для них аналогичны действиям при перемещении одной строки, за исключением ситуации, когда строки выбраны не последовательно, а через промежуток. В этом случае выделенные строки группируются (располагаются рядом друг с другом). Позиция выделенной группы в любом случае выбирается исходя из пунктов 1 или 2.

Читайте также:  Как открыть планшет oysters

● Чтобы переместить строку перед последней, нужно переместить ее перед предпоследней, если строка перемещается сверху.

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

Помимо операций перетаскивания между элементами управления «1С:Предприятие» позволяет осуществлять перетаскивание данных из других приложений в элементы управления. Также можно перетащить мышью текст и список файлов.

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

Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ — конструкции, предназначен­ные для поддерживания проводов на необходимой высоте над землей, водой.

Механическое удерживание земляных масс: Механическое удерживание земляных масс на склоне обеспечивают контрфорсными сооружениями различных конструкций.