По теме из базы знаний
- Полезные сведения о языке запросов 1С 8.2
- Особенности работы с методами ПолучитьHTML() и УстановитьHTML() объекта ФорматированныйДокумент
- Вставляем форматированный документ 1С в файл Word (Ворд) с сохранением форматирования и рисунков
- Исследование технологического журнала 1С при помощи регулярных выражений в блокноте
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) Вы пишите "мне нужно их них сделать один.
Есть идея преобразовать их в html, соединить и загрузить в ФорматированныйДокумент, но может есть способ проще"
Всё зависит от того, что вы потом собираетесь делать?
Используйте методы
Куда уж проще.
Вообще ФорматированныйДокумент используется для редактирования в формах.
Или вы редактируете несколько закладок а потом хотите слить в один файл?
Есть идея преобразовать их в html, соединить и загрузить в ФорматированныйДокумент, но может есть способ проще"
Всё зависит от того, что вы потом собираетесь делать?
Используйте методы
Добавить()
Вставить()
Вставить()
Куда уж проще.
Вообще ФорматированныйДокумент используется для редактирования в формах.
Или вы редактируете несколько закладок а потом хотите слить в один файл?
(5) Ага, пробовал. 8.3.10 уходит непонятно куда при выполнении:
когда тип параграфа - маркированный список.
Какая-то непонятка с этим Типом параграфа... Как пишет СП, тип значения ТипПараграфаФорматированногоДокумента доступен только в толстом клиенте. А у меня код на сервере. Возможно, из-за этого глючит.
НовыйПараграф.ТипПараграфа = Параграф.ТипПараграфа;
когда тип параграфа - маркированный список.
Какая-то непонятка с этим Типом параграфа... Как пишет СП, тип значения ТипПараграфаФорматированногоДокумента доступен только в толстом клиенте. А у меня код на сервере. Возможно, из-за этого глючит.
(1) Переделал процедуру из ссылки, которую тоже привел Алексей в (5).
Похоже, что проблема в том, что платформа глючит при добавлении подряд нескольких нумерованных или маркированных параграфов.
Итого, код приобрел такой вид:
Вроде пока работает.
Похоже, что проблема в том, что платформа глючит при добавлении подряд нескольких нумерованных или маркированных параграфов.
Итого, код приобрел такой вид:
Процедура СоединитьФорматированныеДокументы(ИсходныйДокумент, ДокументПолучатель)
ТекМаркСписок = Неопределено;
ТекНумСписок = Неопределено;
Для Каждого Параграф Из ИсходныйДокумент.Элементы Цикл
ЭтоМаркСписок = Параграф.ТипПараграфа=ТипПараграфа.МаркированныйСписок;
ЭтоНумСписок = Параграф.ТипПараграфа=ТипПараграфа.НумерованныйСписок;
ЭтоОбычныйСписок = Параграф.ТипПараграфа=ТипПараграфа.Обычный;
Если ЭтоМаркСписок И ТекМаркСписок<>Неопределено Тогда
НовыйПараграф = ТекМаркСписок;
ИначеЕсли ЭтоНумСписок И ТекНумСписок<>Неопределено Тогда
НовыйПараграф = ТекНумСписок;
Иначе
НовыйПараграф = ДокументПолучатель.Элементы.Добавить();
ЗаполнитьЗначенияСвойств(НовыйПараграф, Параграф);
ТекМаркСписок = ?(ЭтоМаркСписок, НовыйПараграф, Неопределено);
ТекНумСписок = ?(ЭтоНумСписок, НовыйПараграф, Неопределено);
КонецЕсли;
Для Каждого ЭлементПараграфа Из Параграф.Элементы Цикл
Если Тип(ЭлементПараграфа) = Тип("ТекстФорматированногоДокумента") Тогда
НовыйТекст = НовыйПараграф.Элементы.Добавить(ЭлементПараграфа.Текст);
НовыйТекст.НавигационнаяСсылка = ЭлементПараграфа.НавигационнаяСсылка;
НовыйТекст.ЦветТекста = ЭлементПараграфа.ЦветТекста;
НовыйТекст.ЦветФона = ЭлементПараграфа.ЦветФона;
НовыйТекст.Шрифт = Новый Шрифт(ЭлементПараграфа.Шрифт);
ИначеЕсли Тип(ЭлементПараграфа) = Тип("ПереводСтрокиФорматированногоДокумента") Тогда
НовыйПараграф.Элементы.Добавить(, Тип("ПереводСтрокиФорматированногоДокумента"));
ИначеЕсли Тип(ЭлементПараграфа) = Тип("КартинкаФорматированногоДокумента") Тогда
НоваяКартинка = НовыйПараграф.Элементы.Добавить(ЭлементПараграфа.Картинка, Тип("КартинкаФорматированногоДокумента"));
НоваяКартинка.НавигационнаяСсылка = ЭлементПараграфа.НавигационнаяСсылка;
НоваяКартинка.Ширина = ЭлементПараграфа.Ширина;
НоваяКартинка.Высота = ЭлементПараграфа.Высота;
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецПроцедуры
ПоказатьВроде пока работает.
(8) Странно, что работает.
Возникла такая же необходимость объединить доки. Версия платформы 8.3.18
При создании объекта "НовыйТекст" - тип был неопределено, соответственно ничего дальше не летело.
Исправил на:
Возникла такая же необходимость объединить доки. Версия платформы 8.3.18
При создании объекта "НовыйТекст" - тип был неопределено, соответственно ничего дальше не летело.
Исправил на:
Процедура СоединитьФорматированныеДокументы(ИсходныйДокумент, ДокументПолучатель) Экспорт
ТекМаркСписок = Неопределено;
ТекНумСписок = Неопределено;
Для Каждого Параграф Из ИсходныйДокумент.Элементы Цикл
ЭтоМаркСписок = Параграф.ТипПараграфа=ТипПараграфа.МаркированныйСписок;
ЭтоНумСписок = Параграф.ТипПараграфа=ТипПараграфа.НумерованныйСписок;
ЭтоОбычныйСписок = Параграф.ТипПараграфа=ТипПараграфа.Обычный;
Если ЭтоМаркСписок И ТекМаркСписок<>Неопределено Тогда
НовыйПараграф = ТекМаркСписок;
ИначеЕсли ЭтоНумСписок И ТекНумСписок<>Неопределено Тогда
НовыйПараграф = ТекНумСписок;
Иначе
НовыйПараграф = ДокументПолучатель.Элементы.Добавить();
ЗаполнитьЗначенияСвойств(НовыйПараграф, Параграф);
ТекМаркСписок = ?(ЭтоМаркСписок, НовыйПараграф, Неопределено);
ТекНумСписок = ?(ЭтоНумСписок, НовыйПараграф, Неопределено);
КонецЕсли;
Для Каждого ЭлементПараграфа Из Параграф.Элементы Цикл
Если Тип(ЭлементПараграфа) = Тип("ТекстФорматированногоДокумента") Тогда
НовыйТекст = НовыйПараграф.Элементы.Добавить(ЭлементПараграфа, Тип("ТекстФорматированногоДокумента"));
ЗаполнитьЗначенияСвойств(НовыйТекст, ЭлементПараграфа);
ИначеЕсли Тип(ЭлементПараграфа) = Тип("ПереводСтрокиФорматированногоДокумента") Тогда
НовыйПараграф.Элементы.Добавить(ЭлементПараграфа, Тип("ПереводСтрокиФорматированногоДокумента"));
ИначеЕсли Тип(ЭлементПараграфа) = Тип("КартинкаФорматированногоДокумента") Тогда
НоваяКартинка = НовыйПараграф.Элементы.Добавить(ЭлементПараграфа, Тип("КартинкаФорматированногоДокумента"));
ЗаполнитьЗначенияСвойств(НоваяКартинка, ЭлементПараграфа);
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецПроцедуры
Показать
Пробовал добавить(), но не понял как сделать, что бы текст оставался форматированным, и желательно с картинками.
Собственно форматированные документы лежат в реквизитах справочника(хранилища значений) и мне надо их показать как один форм док, с форматированием.
Собственно форматированные документы лежат в реквизитах справочника(хранилища значений) и мне надо их показать как один форм док, с форматированием.
(16)
Чуви ) вот это "чюдо" ниже в принципе не может работать
ЭтоМаркСписок = Параграф.ТипПараграфа=ТипПараграфа.МаркированныйСписок;
ЭтоНумСписок = Параграф.ТипПараграфа=ТипПараграфа.НумерованныйСписок;
ЭтоОбычныйСписок = Параграф.ТипПараграфа=ТипПараграфа.Обычный;
не говоря что о том что код нечитабелен и нет описания.
конкретно у вас это работает ?
Чуви ) вот это "чюдо" ниже в принципе не может работать
ЭтоМаркСписок = Параграф.ТипПараграфа=ТипПараграфа.МаркированныйСписок;
ЭтоНумСписок = Параграф.ТипПараграфа=ТипПараграфа.НумерованныйСписок;
ЭтоОбычныйСписок = Параграф.ТипПараграфа=ТипПараграфа.Обычный;
не говоря что о том что код нечитабелен и нет описания.
конкретно у вас это работает ?
(17)
Вот рабочий вариант, исправлена процедура (9).
Процедура СоединитьФорматированныеДокументы(ИсходныйДокумент, ДокументПолучатель)
Для Каждого Параграф Из ИсходныйДокумент.Элементы Цикл
НовыйПараграф = ДокументПолучатель.Элементы.Добавить();
ЗаполнитьЗначенияСвойств(НовыйПараграф, Параграф);
Для Каждого ЭлементПараграфа Из Параграф.Элементы Цикл
Если Тип(ЭлементПараграфа) = Тип("ТекстФорматированногоДокумента") Тогда
НовыйТекст = НовыйПараграф.Элементы.Добавить(ЭлементПараграфа.Текст);
НовыйТекст.НавигационнаяСсылка = ЭлементПараграфа.НавигационнаяСсылка;
НовыйТекст.ЦветТекста = ЭлементПараграфа.ЦветТекста;
НовыйТекст.ЦветФона = ЭлементПараграфа.ЦветФона;
НовыйТекст.Шрифт = Новый Шрифт(ЭлементПараграфа.Шрифт);
ИначеЕсли Тип(ЭлементПараграфа) = Тип("ПереводСтрокиФорматированногоДокумента") Тогда
НовыйПараграф.Элементы.Добавить(, Тип("ПереводСтрокиФорматированногоДокумента"));
ИначеЕсли Тип(ЭлементПараграфа) = Тип("КартинкаФорматированногоДокумента") Тогда
НоваяКартинка = НовыйПараграф.Элементы.Добавить(ЭлементПараграфа.Картинка, Тип("КартинкаФорматированногоДокумента"));
НоваяКартинка.НавигационнаяСсылка = ЭлементПараграфа.НавигационнаяСсылка;
НоваяКартинка.Ширина = ЭлементПараграфа.Ширина;
НоваяКартинка.Высота = ЭлементПараграфа.Высота;
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецПроцедуры
Вот рабочий вариант, исправлена процедура (9).
Процедура СоединитьФорматированныеДокументы(ИсходныйДокумент, ДокументПолучатель)
Для Каждого Параграф Из ИсходныйДокумент.Элементы Цикл
НовыйПараграф = ДокументПолучатель.Элементы.Добавить();
ЗаполнитьЗначенияСвойств(НовыйПараграф, Параграф);
Для Каждого ЭлементПараграфа Из Параграф.Элементы Цикл
Если Тип(ЭлементПараграфа) = Тип("ТекстФорматированногоДокумента") Тогда
НовыйТекст = НовыйПараграф.Элементы.Добавить(ЭлементПараграфа.Текст);
НовыйТекст.НавигационнаяСсылка = ЭлементПараграфа.НавигационнаяСсылка;
НовыйТекст.ЦветТекста = ЭлементПараграфа.ЦветТекста;
НовыйТекст.ЦветФона = ЭлементПараграфа.ЦветФона;
НовыйТекст.Шрифт = Новый Шрифт(ЭлементПараграфа.Шрифт);
ИначеЕсли Тип(ЭлементПараграфа) = Тип("ПереводСтрокиФорматированногоДокумента") Тогда
НовыйПараграф.Элементы.Добавить(, Тип("ПереводСтрокиФорматированногоДокумента"));
ИначеЕсли Тип(ЭлементПараграфа) = Тип("КартинкаФорматированногоДокумента") Тогда
НоваяКартинка = НовыйПараграф.Элементы.Добавить(ЭлементПараграфа.Картинка, Тип("КартинкаФорматированногоДокумента"));
НоваяКартинка.НавигационнаяСсылка = ЭлементПараграфа.НавигационнаяСсылка;
НоваяКартинка.Ширина = ЭлементПараграфа.Ширина;
НоваяКартинка.Высота = ЭлементПараграфа.Высота;
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецПроцедуры
(2) на данный момент так и реализовано, хотелось бы сделать именно форматированный текст! что бы была возможность вставлять ссылки выделять текст шрифтом и тд...
(4)
через конвертацию в HTML
т.е. конвертируем из формы в HTML , далее пишем в реквизит (ПолучитьHTML). при открытии читаем строку HTML и выводим на форму. (УстановитьHTML)
(4)
(2) на данный момент так и реализовано, хотелось бы сделать именно форматированный текст! что бы была возможность вставлять ссылки выделять текст шрифтом и тд...
через конвертацию в HTML
&НаСервере
Процедура ПриОткрытииНаСервере()
СтруктураВложения = Новый Структура;
СтрокаДляЧтения = Объект.СтрокаHTML;
СтруктураВложения = Новый Структура;
ЭтаФорма.HTML.УстановитьHTML(СтрокаДляЧтения, СтруктураВложения );
КонецПроцедуры
&НаСервере
Процедура ПерезаписатьШаблонНаСервере()
СтруктураВложения = Новый Структура;
ПерСтрокаHTML = ЭтаФорма.HTML;
ЭтаФорма.HTML.ПолучитьHTML(ПерСтрокаHTML,СтруктураВложения);
Объект.ШаблонHTML = ПерСтрокаHTML;
Записать();
КонецПроцедуры
Показатьт.е. конвертируем из формы в HTML , далее пишем в реквизит (ПолучитьHTML). при открытии читаем строку HTML и выводим на форму. (УстановитьHTML)
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот