gifts2017

Подчеркивание текста в макете

Опубликовал Сергей Харламов (zatoichi) в раздел Программирование - Практика программирования

Часто возникала проблема с тем, что в макете нужно выводить частично подчеркнутый, "динамический" текст. То бишь с различного содержания, разной длины (пять слов или сто пять - неважно). Но всегда используется определенный текст, к примеру: "статья УК РФ №666 п.666".
И если в этом тексте еще и требуется подчеркнуть что-то отдельно, к примеру: "статья УК РФ №666 п.666", то это была просто трагедия. Приходилось корячить макет вдоль и поперек, чтобы все красиво отображалось.

Если автовысота строк в таком случае спасает, то как быть с подчеркиванием строковой переменной подобной статье?

Как всегда, помогла смекалка.

Есть один символ, похожий на подчеркивание "_".  в 1С этот символ вставляется как Символ(863)

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

Функция ПодчеркнутьТекстВМакете(Строка)  
  Результат = "";
  Для Индекс = 1 По СтрДлина(Строка) Цикл
      Если Сред(Строка, Индекс, 1) <> " " И Сред(Строка, Индекс, 1) <> "_" И Сред(Строка, Индекс, 1) <> "-" Тогда 
          Результат = Результат + Символ(863);
      КонецЕсли;
  Результат = Результат + Сред(Строка, Индекс, 1);
 КонецЦикла;

Возврат Результат;
КонецФункции

На выходе получаем красивый текст с подчеркиванием нужных нам слов.

 

P.S. Не нашел здесь такой статьи, так как, может, плохо искал. Не серчайте, если продублировал.

В файле пример того же кода.

Скачать файлы

Наименование Файл Версия Размер
Подчеркивание 6
.epf 7,65Kb
11.01.16
6
.epf 1 7,65Kb Скачать

См. также

Подписаться Добавить вознаграждение
Комментарии
1. Сергей Лесовой (Synoecium) 11.01.16 10:58
Интересный способ, я уж думал кроме как корячиться вариантов нет, спасибо
2. Michael Rybakin (Mr.Rm) 11.01.16 22:04
Точнее было бы использовать Символ(818) - UNICODE 0332 COMBINING LOW LINE.
3. Сергей Харламов (zatoichi) 13.01.16 10:16
спасибо за скачивание, коплю sm )))
4. bulpi bulpi (bulpi) 13.01.16 10:43
Молодец, но где ж ты раньше был ?
5. Дмитрий Кудинов (ZloyProger) 13.01.16 10:55
мм.. не совсем понял, но по идее поглядел код и разве не будет так: имеем строку "строка" получим "с_т_р_о_к_а"? Проверить пока негде, конфигуратора под рукой нет..
6. Виктория Дорохина (vikad) 13.01.16 11:08
(5) ZloyProger, проверить можно и в ворде. Нажимайте по порядку клавиши {с}, {Alt+8+6+3} (или Alt+8+1+8 - главное, не отпускать Alt), {т} и т.д.
7. Марина Воробьева (LadyMara) 13.01.16 11:15
(6) vikad, проверила в ворде: при {Alt+8+6+3} из "строка" получилось "ссттррооккаа", т.е. {Alt+8+6+3} повторял предыдущий символ. А вот {Alt+8+1+8} не получается вообще, т.к. {Alt+8+1} выводит диалог сохранения документа. Надо проверить все-таки в 1С (тоже пока не могу добраться).
8. Виктория Дорохина (vikad) 13.01.16 11:17
(7) LadyMara, главное, не отпускать Alt) и да, цифры должны набираться на цифровой клавиатуре
9. Семён Павлюков (7OH) 13.01.16 13:50
А с большой буквы тоже так же красиво ??
В ворде по крайней мере выходит разрыв в подчеркивании.
10. Виктория Дорохина (vikad) 13.01.16 14:06
(9) 7OH, так автор и предложил символ 863, у которого разрывов не возникает (разрыв возникает только при использовании символа 818)
11. Сергей Харламов (zatoichi) 13.01.16 15:17
(5) ZloyProger, нет, разрывов не будет. в обработинке пример, в котором выводится введенный текст в различные элементы, чтобы посмотреть как будет отображаться в ТабДоке, поле, ну и на что фантазии хватит.
12. Сергей Харламов (zatoichi) 13.01.16 15:19
(9) 7OH, и с больщой буквы и с маленькой и цыфры. все норм. проверял
13. Семён Павлюков (7OH) 13.01.16 17:06
(12) zatoichi, спасибо.
Набирал в ворде - там без разрыва было в обоих вариантах - но при вставке в макет 1С - у меня показывает разрывы после большой буквы.
14. Сергей Харламов (zatoichi) 13.01.16 17:20
(13) 7OH, вставлял прям такой функцией как описал? или Ctrl+C Ctrl+V ?
15. Руслан (lrs) 14.01.16 11:19
А есть ли что-то подобное для выделения куска текста жирным шрифтом?
16. kiruha Дронов (kiruha) 14.01.16 13:20
И что будет с таким текстом если например его копи пастить ?
Кто будет объяснять что это не "настоящий" ИНН
Вообщем прикольно , но не практично
17. Сергей Харламов (zatoichi) 14.01.16 13:45
(16) kiruha, а зачем его копипастить?
18. Ильдар Тагиров (pentanom) 18.01.16 17:23
Из приведенного текста хотел подчеркнуть только УК РФ. Не получается :(
А если подчеркивается весь текст, то можно использовать настройку шрифта.
19. Сергей Харламов (zatoichi) 18.01.16 18:14
(18) pentanom, что-то сделали не так. обработка работает?
20. Stepan Tyumentsev (st-ty@ngs.ru) 21.01.16 23:19
не совсем понял речь идет о макете или о поле с типом строка?