gifts2017

Пример вывода нескольких ФорматированныхДокументов в HTML поле в виде последовательных комментариев с вложениями

Опубликовал Алексей Семешин (Sirus Virus) в раздел Программирование - Практика программирования

Пример вывода списка Форматированных документов в виде комментариев с вложениями в HTML поле.

В ходе работы над 1 из проектов столкнулся с написанной еще до меня системой обращений к ИТ, которая представляла собой Бизнесс-процесс (далее БП) с рядом этапов реализации, возможностью добавления комментариев пользователем и исполнителем в ходе работы в поля типа "ФорматированныйДокумент" (далее ФД).

Но так как система была написана давно и имела свои недоработки мне поручили ее тюнинг и улучшение.

Изначально в системе был реализован БП в котором на этапе инициализации пользователь описывал свое обращение к отделу ИТ в поле типа "ФД" УФ (Управляемая форма), далее это обращение сохранялось вместе с сохранением и стартом БП.

 В результате появлялась первая задача в которой начальник отдела ИТ определял исполнителя, ориентировочные сроки реализации, важность задачи и прочее, а так же вводил свой ккомментарий в поле типа "ФД".

И так далее на каждом этапе работы (отдельная задача БП).

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

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

Суть проблемы была в следующем: "ФД" разбирался на HTML текст и вложения (метод объект "ФД" - ПолучитьHTML), после разбора текст шел в состав общего HTML документа (списка комментариев), но всвязи с тем, что ссылки в формате 1С на вложения "ФД" выгруженые в структуру получить невозможно, а значит нельзя и вставить в тело HTML документа ссылки на вложения были мертвыми (объект "Структура" физически хранится лишь в памяти до окончания работы алгоритма формирования HTML документа).

 В результате изысканий мной было (к сожалению) придумано лишь 1 решение :

HTML текст поддерживает возможность вставки элементов вложений в виде Base64 кодировки и т.к.ФД позволяет вставлять в виде вложений лишь картинки был написан следующий код, который позволяет получить чистый код HTML вставки "ФД" с вложениями в виде кодировки Base64 (в демо-конфигурации это функция общего модуля).

Код общего модуля 

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

Собственно код УФ обработки выглядел так:

КодМодуляФормыОбработки

На форме обработки находится HTML поле куда компануются комментарии и 2 поля типа "ФД" в которые можно забить данные для теста.

Смотрите скрин или пример конфигурации.

Форма обработки и тестовых полей до вывода комментариев

Результат выполнения алгоритма вывода списка комментариев из 2 ФД:

 

Результат работы алгоритма


P.S: Статьи пишу редко Sealed так что просьба за оформление текста сильно не гневаться и ногами не пинать.

P.S.S: Код 1С пришлось заменить картинками, т.к. некоторые части содержали HTML теги и в результате залива статьи текст кода становился кривым и неверным. Все реальные коды можно получить из приложенной конфы или методом перенабора со скринов Innocent

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

Наименование Файл Версия Размер Кол. Скачив.
Пример конфигурация
.cf 10,26Kb
20.09.13
17
.cf 10,26Kb 17 Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Алексей Семешин (Sirus Virus) 20.09.13 10:47
При желании можно формировать упорядоченный "СписокЗначений" (значения типа "ФД") и написать алгоритм их вывода в виде ленты.
2. Александр Капустин (kapustinag) 20.09.13 20:26
Может быть, лучше для хранения картинок и файлов иного формата выделить файловый ресурс?
Тогда в тексте HTML можно использовать тэги типа IMG SRC=..., или ссылки на эти файлы.
При этом инф.база не будет засоряться двоичными данными.
3. Алексей Семешин (Sirus Virus) 21.09.13 00:12
В компании где это используется жесткая политика безопасности и вариантов доступа к файловым ресурсам нет.
Изначально пытался сделать сохранение рисунков во временные файлы из тела ФД при парсе и обработке, но увы не взлетело и поэтому был изобретен такой вот велосипед :)

Да решение может и не совсем удобное, но пример выложен лишь как вариант на случай "а может кому пригодится" :)
4. Сергей Ожерельев (Поручик) 21.09.13 01:03
(0) Спасибо, я-то голову ломал, как же картинки в тексте письма отправлять. И главное дело, знал про вставку изображений в виде кодированных по base64.
Пошёл убиваться об стенку, Акела лоханулся. Теперь попробую ваш метод.
5. Игорь Steelvan (Steelvan) 25.02.15 22:24
Оформление кода такое, как будто делал тупой американец.

А, понял почему звездочки раздражают, они же на их флаге :)
6. Игорь Steelvan (Steelvan) 25.02.15 22:26
Два слеша + текст более чем достаточно для описания блока небольшого блока строк.
7. Алексей Семешин (Sirus Virus) 26.02.15 12:42
(6) Ну извини :) привык подробно комментировать свой код да и тем кто приходит работать после проще разобраться и в целом он становится читабельней.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа