Как в форматированном документе отобразить таблицу?
Подскажите пожалуйста как в форматированном документе отобразить таблицу? В область текста документа Исходящее электронное письмо нужно вставить таблицу. А область текста в этом документе форматированный документ.
(1) Выделить нужное количество ячеек и вставить, форматирование только будет не из оригинальной таблицы. Ну или свою область нарисовать и программно выводить.
(3) почему то не получается. Не выресовывает.
(1) походу никак, видимо форматированный документ — это достаточно урезанный html.
Сделал один и тот же текст страницы, подпихнул его в поле HTML и в поле Форматированного документа.
Результат на скрине.
Как мы видим ФД — просто игнорит таблицу
(12) так в самом письме скорее всего, форматированный документ — это лишь для ввода пользователем,
а физически, наверняка это html документ, который потом из этого форматированного документа вычленяется.
В каких то конфигурациях, даже переключатель режимов просмотра есть.
Программно отправить сможешь что угодно, у абонента приемника — обычным почтовым клиентом должно нормально отобразится.
Какая конфигурация ?
Почему бы не сделать всё в ТабДоке, сохранить во временный файл в формате HTML, получить текст HTML из файла.
ИмяВременногоФайла = ПолучитьИмяВременногоФайла(); ТабДок.Записать(ИмяВременногоФайла, ТипФайлаТабличногоДокумента.HTML); ЧтениеТекста = Новый ЧтениеТекста(ИмяВременногоФайла); Тело = ЧтениеТекста.Прочитать(); ЧтениеТекста.Закрыть();
Прикрепил скрин с ожидаемым результатом. Хотелось чтобы так отображалось в документе Исходящее электронное письмо.
(17)
ну, как я и говорил.
реквизит письма там обычный текст, а не форматированный документ.
Форматированный документ — это лишь для удобства редактирования применяется, на форме.
А при записи объекта — из него извлекается текст — и сохраняется в реквизите — ТекстHTML
&НаСервере Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, РежимЗаписи, РежимПроведения) ДокументHTMLТекущегоПисьмаПодготовлен = Ложь; //Подготовим документ HTML из содержимого форматированного документа Если ФорматСообщения = Перечисления.СпособыРедактированияЭлектронныхПисем.HTML И ТекущийОбъект.СтатусПисьма = Перечисления.СтатусыИсходящегоЭлектронногоПисьма.Черновик Тогда ТаблицаСоответствийИменВложенийИдентификаторам.Очистить(); СтруктураВложений = Новый Структура; ТекстПисьмаФорматированныйДокумент.ПолучитьHTML(ТекущийОбъект.ТекстHTML,СтруктураВложений); Для каждого Вложение Из СтруктураВложений Цикл НоваяСтрока = ТаблицаСоответствийИменВложенийИдентификаторам.Добавить(); НоваяСтрока.ИмяФайла = Вложение.Ключ; НоваяСтрока.ИдентификаторФайлаДляHTML = Новый УникальныйИдентификатор; НоваяСтрока.Картинка = Вложение.Значение; КонецЦикла;
оттого что, сам объект — у нас не поддерживает таблицы, ничего не мешает, программно в реквизите нам прописать структуру письма с таблицами и отправить клиенту.
У клиента в свою очередь, если почтовик не в базе 1С, а обычный ящик — отразится нормально с таблицами.
(17) ну а если ты прямо хочешь у себя в базе, открывая форму письма исходящего — лицезреть именно с таблицами, тогда придется дорабатывать документ, и запиливать отображение письма в поле HTML.
(19)спасибо большое) А что нужно сделать для того, чтобы так стало отображаться, можете в двух словах описать?
(20) вот в 9-том сообщении, я сделал обработку, которая отражает один и тот же текст в разных реквизитах.
В форматированный документ текст помещается методом УстановитьHTML
В поле HTML Докмуента — там в сам реквизит связанный текст помещаем, и событие поля — сформирован тело документа устанавливаем.
а источником и для того и для другого у тебя один и тот же реквизит ТекстHTML будет.
Только все это надо делать, там чтобы функционал документа не попортить. Переключатель режимов там сделать, или на вкладках разных. уж там как фантазии и умения хватит
Особенности работы с методами ПолучитьHTML() и УстановитьHTML() объекта ФорматированныйДокумент
О некоторых проблемах в работе метода ФорматированныйДокумент.УстановитьHTML(), в результате которых теряется форматирование текста, уже было известно, когда я с ними столкнулся. Решения в интернете не нашлось, но мне очень хотелось использовать этот объект и метод. О том как я решил данную проблему, и как реализовал некоторые функции по работе с объектом ФорматированныйДокумент читайте в этой статье.
Хотел бы поделиться опытом работы с объектом ФорматированныйДокумент, потому что решение искал довольно долго (несколько часов), а в инете не нашел ничего, кроме описания самой проблемы (
Небольшое предисловие.
Специфика выполняемой задачи предполагала использование объекта который бы хранил в себе форматированный текст с картинками и предоставлял пользователю инструменты для правки. Мои сомнения насчет стандартных возможностей 1С 8.2.11 (с этой версии начинается история «ФорматированногоДокумента») развеяла статья //infostart.ru/public/74958/. Вдохновленный ею я принялся за работу и вскоре наткнулся на проблему. Мне необходимо было программно соединять и построчно вклеивать друг в друга два форматированных документа, написал необходимые функции, в которых я использовал метод ПолучитьHTML(), менял HTML-код и записывал обратно в объект, используя метод УстановитьHTML(). Но почему то форматирование некоторых блоков терялось. Я решил все проверить, и понял что форматирование теряется, даже если просто ПолучитьHTML() и тут же УстановитьHTML() никак не меняя HTML-код. И я понял что это ошибка платформы. (если бы это было видео, я бы даже вставил здесь какую-нибудь эпичную музыку, потому что шире вселенной было горе мое). Отказываться от использования этого объекта я не хотел и начал искать способ решения данной проблемы.
Решение проблемы
Как оказалось проблема в следующем: если в свойстве style=’некое css форматирование’ блока параграфа, который ФорматированныйОбъект использует для хранения текста, последнее css свойство не закрыто символом «;» то метод УстновитьHTML() игнорирует все форматирование. При этом либо метод ПолучитьHTML() иногда читает html не закрывая последнее свойство css точкой с запятой, либо объект ФорматированныйДокумент странным, непонятным образом хранит html-форматирование. Получается, что при вызове метода ПрочитатьHTML и за ним УстановитьHTML, даже никак не меняя текст HTML, можно потерять форматирование некоторых блоков (я проверял). Например: Такой код, после применения метода УстановитьHTML(), не будет размещать текст в центре, потому что css-свойство «text-align» блока не было закрыто символом «;»:
p style='line-height: 1.15; text-align: center'
Если же добавить символ «;», то метод УстановитьHTML() отработает корректно, и текст будет размещен в центре:
p style='line-height: 1.15; text-align: center;'
ТекстХТМЛ=СтрЗаменить (ТекстХТМЛ, "center'", "center;'"); ТекстХТМЛ=СтрЗаменить (ТекстХТМЛ, "right'", "right;'"); ТекстХТМЛ=СтрЗаменить (ТекстХТМЛ, "justify'", "justify;'");
Вы же конечно можете использовать более универсальные конструкции, зная в чем проблема работы метода.
Приложение
Хотел приложить две функции для работы с объектами ФорматированныйДокумент, учитывающие описанные в этой статье особенности (назовем этот баг так). Но как ни пытался экранировать html-теги — все равно неадекватно отображается на странице. Если кому то будет необходимо — можете написать мне на realturik@mail.ru — вышлю текстом. Функция «СклеитьДокументы (Документ1, Документ2)» возвращает ФорматированныйДокумент содержащий оба документа, следующие друг за другом. Функция «ВклеитьДокумент (Документ1, Документ2)» возвращает ФорматированныйДокумент содержащий оба документа, соединенные построчно (к каждой строке Документа1 приписывается соответстующая строка Документа2, и дописывается остаток текста болльшего из них). Спасибо за внимание!
Использование форматированного документа для создания описаний на сайте
В 1С хранится номенклатура, которая в последствии выгружается на сайт.
Для каждой выгружаемой номенклатуры нужно указать описание! Но не обычный текст, а хорошо оформленный, со списками, курсив, выделение:
Реализовано следующим образом:
- Реквизит объекта ОписаниеОсновное
- Реквизит формы фдОсновноеОписание
Код, который при изменении форматированного документа, помещает кусок HTML кода находящегося в BODY в реквизит ОписаниеОсновное:
&НаКлиенте
Процедура фдОсновноеОписаниеПриИзменении(Элемент)
Вложение = Новый Структура; текТекст ="";
фдОсновноеОписание.ПолучитьHTML(текТекст,Вложение);
//Поправим валидность кода
текТекст=СтрЗаменить (текТекст, "center'", "center;'");
текТекст=СтрЗаменить (текТекст, "right'", "right;'");
текТекст=СтрЗаменить (текТекст, "justify'", "justify;'");
//Получим текст из BODY
Содержимое=текТекст; НачалоБлока = ""; КонецБлока = "";
текТекст = Сред(Содержимое, Найти(Содержимое, НачалоБлока) + СтрДлина(НачалоБлока), Найти(Содержимое, КонецБлока) - Найти(Содержимое, НачалоБлока) - СтрДлина(НачалоБлока));
Объект.ОписаниеОсновное = СокрЛП(текТекст);
КонецПроцедуры
Похожие FAQ
Как заполнить табличную часть формы программно? 8
Нужно по кнопке Заполнить — сформировать данные для заполнения табличных частей и заполнить их. Форма имеет вид: Рядом с кнопкой Записать и закрыть добавлена кнопка Заполнить документ , код ее команды: // Код заполнения ТЧ НаСервере П 17 правил для составления оптимального ЗАПРОСа к данным базы 1С 50
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ 1C и Google Maps 21
была поставлена задача отображения на географической карте медицинских учреждений. После обзора предлагаемых решений был выбран сервис google. Но так же подобного рода подход будет работать и с картами сервиса yandex. Во время решения задачи было реш 1С 8.x : Как убрать лидирующие нули в номере Документа (вариант2) 0
Скопировать строку с номером, с лидирующими нулями, в числовом поле (с форматом без групп, без группировки), и вернуть(скопировать) обратно в строковом поле с номером. Возвращает без нулей. COM-подключение к базе 7.7 из 8.2 1С 6
Если код выполняется на стороне клиента, то необходимо наличие базы 7.7 на локальной машине. Пример (На форме объекта присутствует реквизит Таблица(ТаблицаЗначений)): НаКлиенте Процедура Загрузки() ПутьКБазе=» D:ВашаБаза1с77″ ; Пользователь= Посмотреть все результаты поиска похожих
Еще в этой же категории
Выгрузка форматированного документа 1С на свой сайт 1
Пользователи в 1с ведут описание объектов, которые редактируются в объекте ФорматированныйДокумент. Необходимо обеспечить выгрузку форматированного документа на фтп. Для решения этой задачи воспользуемся методом форматированного документа ПолучитьHT Форматированный документ 0
Форматированный документ предназначен для оформление текста. Его можно выделить жирным, подчеркнуть, увеличить/уменьшить шрифт, центрировать и т.д. Также можно добавить картинку. Т.е. в 1С теперь можно отформатировать текст, примерно, как в MS Word Получение и установка выделения в редакторе форматированного документа 0
В процессе разработки прикладных решений возникает необходимость предоставить пользователю возможность выполнять редактирование текстов с оформлением (далее форматированный документ). В качестве примера такой необходимости можно привести написание пи Посмотреть все в категории Форматированный документ