Форматированная строка

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

Или вот такое предупреждение

Сейчас мы научимся с ней работать.

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

ФормСтрока = Новый ФорматированнаяСтрока(«Это новая форматированная строка»);

В этом случае она ни чем не будет отличаться от обычной строки.
Ознакомимся с её синтаксисом. У форматированной строки, два вида конструктора.
Конструктор первый:

Новый ФорматированнаяСтрока(<Содержимое>, <Шрифт>, <ЦветТекста>, <ЦветФона>, <Ссылка>)

Где:
Содержимое – содержимое форматированной строки, может быть строка, форматированная строка (да-да, форматированную строку можно сделать на основании форматированной строки), картинка и массив, который должен состоять из строк, форматированных строк и картинок.
Шрифт – это шрифт форматированной строки (тип Шрифт, что понятно);
ЦветТекста , ЦветФона – цвет текста и цвет фона форматированной строки (Тип Цвет, что тоже понятно);
Ссылка – тип строка, можно задать ссылку на какой-то объект и тогда форматированная строка станет в виде гиперссылки.
Конструктор второй:

Новый ФорматированнаяСтрока(<Содержимое1,…,СодержимоеN>)

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

 

&НаКлиенте
Процедура ВывестиПредупреждение(Команда)

ФормСтрока1 = Новый ФорматированнаяСтрока(«Очередное предупреждение!!!»);
ПоказатьПредупреждение(,ФормСтрока1);

КонецПроцедуры

 

В этом случае наше предупреждение ни чем не будет отличаться от предупреждения с обычной строкой.
Изменим цвет, но попробуем не просто написать какой-то цвет, а взять цвет из стиля. Дело в том, что тип ЦветСтиля доступен только на сервере, поэтому нам придется использовать безконтекстный серверный вызов.
В этом случае код будет следующим

 

&НаСервереБезКонтекста
Функция ВернутьЦветОсобогоТекстаНаСервере()

Возврат ЦветаСтиля.ЦветОсобогоТекста;

КонецФункции

&НаКлиенте
Процедура ВывестиПредупреждение(Команда)

ФормСтрока1 = Новый ФорматированнаяСтрока(«Очередное предупреждение!!!»,,ВернутьЦветОсобогоТекстаНаСервере());
ПоказатьПредупреждение(,ФормСтрока1);

КонецПроцедуры

 

И результат его работы:

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

 

&НаСервереБезКонтекста
Функция ВернутьЦветОсобогоТекстаНаСервере()

Возврат ЦветаСтиля.ЦветОсобогоТекста;

КонецФункции

&НаСервереБезКонтекста
Функция ВернутьШрифтИзСтиляНаСервер()

Возврат ШрифтыСтиля.ОченьКрупныйШрифтТекста

КонецФункции

&НаКлиенте
Процедура ВывестиПредупреждение(Команда)

ЦветСтиль = ВернутьЦветОсобогоТекстаНаСервере();
ШрифтСтиль= ВернутьШрифтИзСтиляНаСервер();
ШрифтДляСтроки = Новый Шрифт(ШрифтСтиль,,,,,Истина);

ФормСтрока1 = Новый ФорматированнаяСтрока(«Очередное предупреждение!!!»,ШрифтДляСтроки,ЦветСтиль);
ПоказатьПредупреждение(,ФормСтрока1);

КонецПроцедуры

 

Результат будет следующий:

Теперь научимся объединять строки – создадим три разные строки, объединим и выведем в уже знакомом предупреждении.

 

&НаСервереБезКонтекста
Функция ВернутьЦветОсобогоТекстаНаСервере()
Возврат
ЦветаСтиля.ЦветОсобогоТекста;
КонецФункции

&НаСервереБезКонтекста
Функция ВернутьШрифтИзСтиляНаСервер()
Возврат
ШрифтыСтиля.ОченьКрупныйШрифтТекста;
КонецФункции

&НаКлиенте
Процедура ВывестиПредупреждение(Команда)

ЦветСтиль = ВернутьЦветОсобогоТекстаНаСервере();
ШрифтСтиль= ВернутьШрифтИзСтиляНаСервер();
ШрифтДляСтроки1 = Новый Шрифт(ШрифтСтиль,,,Истина);
ШрифтДляСтроки2 = Новый Шрифт(ШрифтСтиль,,,,Истина);
ШрифтДляСтроки3 = Новый Шрифт(ШрифтСтиль,,,,,,Истина);

ФормСтрока1 = Новый ФорматированнаяСтрока(«Последнее»,ШрифтДляСтроки1,ЦветСтиль);
ФормСтрока2 = Новый ФорматированнаяСтрока(«китайское»,ШрифтДляСтроки2,ЦветСтиль);
ФормСтрока3 = Новый ФорматированнаяСтрока(«предупреждение!»,ШрифтДляСтроки3,ЦветСтиль);

Массив = Новый Массив;
Массив.Добавить(ФормСтрока1);
Массив.Добавить(Символы.ПС);
Массив.Добавить(ФормСтрока2);
Массив.Добавить(Символы.ПС);
Массив.Добавить(ФормСтрока3);

ФормСтрока = Новый ФорматированнаяСтрока(Массив);

ПоказатьПредупреждение(,ФормСтрока);

КонецПроцедуры

 

Результат этого кода будет следующим:

А теперь вставим ссылку.

 

&НаКлиенте
Процедура ВывестиПредупреждение(Команда)

ЦветСтиль = ВернутьЦветОсобогоТекстаНаСервере();
ШрифтСтиль= ВернутьШрифтИзСтиляНаСервер();
ШрифтДляСтроки1 = Новый Шрифт(ШрифтСтиль,,,Истина);

ФормСтрока = Новый ФорматированнаяСтрока(«Прочитать информацию о платформе 1С»,ШрифтДляСтроки1,ЦветСтиль,,«http://v8.1c.ru/overview/»);

ПоказатьПредупреждение(,ФормСтрока);

КонецПроцедуры

 

Точно так же можно вставить любую навигационную ссылку

Книга «Программировать в 1С за 9 шагов»

Изучите программирование в 1С с помощью моей книги «Программировать в 1С за 9 шагов»

  1. Без сложных технических терминов.
  2. Более 500 страниц практического материала.
  3. Каждое задание сопровождается рисунком (скриншот).
  4. Сборник задач для домашней проработки.
  5. Книга написана понятным и простым языком — для новичка.
  6. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!

Промо-код на скидку в 16%: vCph8bW3rE

Я стараюсь как можно чаще выпускать различные интересные бесплатные статьи и видеоуроки. Поэтому буду очень рад, если Вы поддержите мой проект перечислив любую сумму:

Вступайте в мои группы:

Вконтакте: https://vk.com/1c_prosto
Фейсбуке: https://www.facebook.com/groups/922972144448119/
ОК: http://ok.ru/group/52970839015518
Твиттер: https://twitter.com/signum2009

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

шестнадцать − 1 =