![]() |
|
1C ---> WORD не переносится форматирование | ☑ | ||
---|---|---|---|---|
0
dGU
17.02.16
✎
15:56
|
Добрый день!
Заполняю шаблон word из 1С. Нужно перенести кусок в таком формате (с сохранением переноса строк): 1. Федеральный закон «Об оценочной деятельности в Российской федерации» от 29.07.1998 №135-ФЗ (в актуальной редакции). 2. Федеральные Стандарты оценки: 2.1. «Общие понятия оценки, подходы и требования к проведению оценки (ФСО №1)», утвержденные приказом Минэкономразвития России от 20 мая 2015 г. №297. 2.2. «Цель оценки и виды стоимости (ФСО №2)», утвержденный приказом Минэкономразвития России от 20 мая 2015 г. №298. Выполняю: Замена.Execute(Строка(ЭлементСтруктуры.Ключ), Ложь, Истина, Ложь, , , Истина, , Ложь, Строка(ЭлементСтруктуры.Значение), 2); В документе получается вот так: 1. Федеральный закон «Об оценочной деятельности в Российской федерации» от 29.07.1998 №135-ФЗ (в актуальной редакции). 2. Федеральные Стандарты оценки: 2.1. «Общие понятия оценки, подходы и требования к проведению оценки (ФСО №1)», утвержденные приказом Минэкономразвития России от 20 мая 2015 г. №297.2.2. «Цель оценки и виды стоимости (ФСО №2)», утвержденный приказом Минэкономразвития России от 20 мая 2015 г. №298. Как сохранить форматирование при переносе, возможно какие-то настройки в ворде сделать? Кто знает? |
|||
1
dGU
17.02.16
✎
16:26
|
Как оказалось тут две проблемы:
1. Что нельзя заменять строки значениями больше 250 больше 250 символов (исключительная ситуация word). 2. Почему-то при переносе затирается символ стандартный символ абзаца (код символа - 10). Было принято решение менять символ 10 на символ 13 - перенос строки. Чудом все получилось. Убил часа 3 на это. Код: Процедура Команда1(Команда) СтрокаСЗамененнымиАбзацами = СтрЗаменить(ЗначениеЗаполнения, Символ(10), Символ(13)); MsWord = Новый COMОбъект("Word.Application"); MsWord.Documents.Open("d:\DOC1.DOCX", Истина); MsWord.Application.Visible = 1; Документ = MsWord.Documents(1); Документ.Activate(); Параметр = Новый Структура; Параметр.Вставить("МеняНадоЗаменить" , СтрокаСЗамененнымиАбзацами); ПроверитьПараметрыНаДлиннуБольше250Символов(Параметр); Для Каждого ЭлементСтруктуры Из Параметр Цикл Замена = Документ.Content.Find; Замена.Execute(Строка(ЭлементСтруктуры.Ключ), Ложь, Истина, Ложь, , , Истина, , Ложь, Строка(ЭлементСтруктуры.Значение), 2); КонецЦикла; MsWord.Application.Visible = 1; MsWord.Documents.Open("d:\DOC1.DOCX", Истина); КонецПроцедуры Процедура ПроверитьПараметрыНаДлиннуБольше250Символов(Параметры) Экспорт Для Каждого ЭлементСтруктуры Из Параметры Цикл КорректируемаяСтрока = Строка(ЭлементСтруктуры.Значение); Ключ = Строка(ЭлементСтруктуры.Ключ); Если СтрДлина(КорректируемаяСтрока) > 250 Тогда КлючПродолжения = "_Продолжение"+Ключ; Сч = 0; КоличествоСимволов = 180; Пока СтрДлина(КорректируемаяСтрока) > 250 Цикл КорректируемаяДлинна = СтрДлина(КлючПродолжения+Сч); Параметры.Вставить(Ключ, Лев(КорректируемаяСтрока, КоличествоСимволов)+КлючПродолжения+Сч); КорректируемаяСтрока = Сред(КорректируемаяСтрока, КоличествоСимволов + 1, СтрДлина(КорректируемаяСтрока)); Ключ = КлючПродолжения+Сч; Сч = Сч + 1; КонецЦикла; Параметры.Вставить(Ключ, КорректируемаяСтрока); КонецЕсли; КонецЦикла; КонецПроцедуры // ПроверитьПараметрыНаДлиннуБольше250Символов() |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |