Skip to content

Работа с файлами формате .docx (MS-Word) средствами языка 1С (bsl)

Notifications You must be signed in to change notification settings

VasilievAG/DocxEngine

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 

Repository files navigation

DocxEngine

Модуль для работы с файлами в формате .docx (MS-Word) средствами языка 1С (bsl)

Ниже приводится краткое описание экспортных подпрограмм модуля и пояснения по их использованию

Обработка любого файла .docx всегда начинается с вызова функции

Функция НовыйДокументDocx(ДвоичныеДанные, КаталогДляИзвлечения = "") Экспорт

в которую передается файл .docx в виде объекта ДвоичныеДанные. Функция распаковывает файл как zip-архив и считывает из распакованных файлов те, с котрыми будет работать (файл с основным содержимым документа, файлы с колонтитулами и некоторые другие). Когда работа с файлом будет завершена, новые версии файлов при сохранении заместят исходные, затем все файлы будут снова заархивированы в zip, соответствующий измененному файлу .docx. Опционально вторым параметром можно передать имя каталога, в который будет распакован zip, это имеет смысл только для удобства отладки. Если второй параметр не указан, распаковка архива будет произведена во временном каталоге. Каталог с распакованным архивом должен существовать все время пока идет работа с документом. Каталог с распакованным архивом удаляется в функции ЗаписатьДокументDocx. Функция НовыйДокументDocx возвращает объект ДокументDocx - структура содержащая всю необходимую информацию о редактируемом файле. Этот объект либо явно, либо косвенно требуется передавать во все остальные подпрограммы модуля.

После того, как объект ДокументDocx получен, можно выполнять поиск подстрок в документе, затем найденную подстроку можно заменить новой строкой, либо заменить картинкой в формате png или jpg. Информация о найденной подстроке храниться в объекте Range. Для поиска вхождения подстроки нужно вызвать функцию

Функция DocxFind(ДокументDocx, СтрокаПоиска, Range = Неопределено, ФайлXML = Неопределено, УчитыватьРегистр = Ложь) Экспорт

Функция возвращает объект Range, если вхождение подстроки СтрокаПоиска найдено и Неопределено, если вхождение не найдено. Если третим параметром передать объект Range, то поиск СтрокиПоиска будет производится только в тексте следующим за текстом, определенном этим параметром, т.е. функция работает как НайтиСледующий.

Следующие подпрограммы позволяют работать с текстом, определенным объектом Range

Функция RangeЗаменить(Range, СтрокаЗамены) Экспорт

Заменяет текст заданный параметром Range на текст СтрокаЗамены. Возвращает объект Range соответствующий тексту СтрокаЗамены.

Процедура RangeУстановитьЦветТекста(Range, Цвет) Экспорт

Устанавливает для текста заданного параметром Range новый цвет. Параметр Цвет должен быть строкой в формате "RRGGBB".

Процедура RangeВставитьКартинку(Range, ДвоичныеДанные) Экспорт

Заменяет текст заданный параметром Range картинкой формата png или jpg.

Процедура RangeУдалитьАбзац(Range) Экспорт

Удаляет весь абзац, к которому относится объект Range

Процедура УдалитьБлокАбзацев(Range1, Range2) Экспорт

Удаляет абзацы к которым относятся объекты Range1 и Range2, а также все абзацы между ними

Функция RangeТекст(Range) Экспорт

Возвращает строку текста, которую определяет объект Range.

Функция RangeАбзац(Range) Экспорт

Возвращает ссылку на абзац (объект Абзац), в котором находится объект Range. Полученный Абзац можно использовать в следующих подпрограммах модуля:

Функция ВставитьАбзацПеред(Абзац) Экспорт

Вставляет новый пустой абзац перед Абзацем-параметром и возвращает ссылку на него.

Функция ВставитьАбзацПосле(Абзац) Экспорт

Вставляет новый пустой абзац после Абзаца-параметра и возвращает ссылку на него.

Процедура АбзацУстановитьТекст(Абзац, Строка) Экспорт

Заменяет весь текст Абзаца на текст Строка

Функция АбзацПолучитьТекст(Абзац) Экспорт

Возвращает весь текст Абзаца в виде строки

Также в модуле содержатся дополнительные подпрограммы:

Функция НайтиИЗаменить(ДокументDocx, СтрокаПоиска, СтрокаЗамены, ЗаменитьВсе = Ложь, УчитыватьРегистр = Ложь) Экспорт

Объединяет в себе одновременно действия функций DocxFind и RangeЗаменить. Если третий параметр Истина, то заменяет все вхождения СтрокиПоиска в документе, в противном случае выполняет замену только первого вхождения. Возвращает количество осуществленных замен.

Функция RangeОбъеденить(Range1, Range2) Экспорт

Возвращает объект Range, соответствующий тексту между объектами Range1 и Range2, а также тексту самих объектов Range1 и Range2. Объекты Range1 и Range2 должны относится к одному абзацу.

Функция ТекстДокумента(ДокументDocx) Экспорт

Возвращает текст всего документа (включая колонтитулы, если они есть) одной строкой.

Работа с документом завершается вызовом функции

Функция ЗаписатьДокументDocx(ДокументDocx) Экспорт

Которая возвращает ДвоичныеДанные измененного файла .docx и удаляет каталог, в который файл был распакован.

About

Работа с файлами формате .docx (MS-Word) средствами языка 1С (bsl)

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors