При программной работе с документами Microsoft Word через COM-соединение из платформы 1С:Предприятие разработчики часто сталкиваются с обращением к стилям через коллекцию Styles с отрицательными числовыми индексами, например Документ.Styles(-1). Разберем подробно, что означает данный синтаксис, как устроена адресация стилей в объектной модели Word и как правильно применять эти знания в коде 1С.
В объектной модели Microsoft Word коллекция Styles позволяет обращаться к стилям документа несколькими способами:
Styles("Normal") или Styles("Обычный").Styles(1), где число обозначает порядковый номер стиля в документе.WdBuiltinStyle.Индекс -1 соответствует базовому стилю wdStyleNormal (в русскоязычной локализации Word — стиль «Обычный»).
Рассмотрим, каким числовым значениям соответствуют популярные встроенные стили Word:
-1-2-3-4-5-6-7-8-9-10Платформа 1С:Предприятие при работе с COM-объектами не импортирует символьные имена констант библиотек типов автоматически. Если написать в модуле 1С имя wdStyleHeading1, система выдаст ошибку необъявленной переменной. Поэтому у разработчика есть два пути: передавать локализованную строку либо использовать отрицательные числовые константы.
Преимущество отрицательных индексов: обращение по числовому коду (например, -1 или -2) является языково-независимым. Если написать Styles("Обычный"), такой код упадет с ошибкой на компьютере с англоязычным пакетом Microsoft Office, где стиль называется "Normal". Обращение через Styles(-1) корректно отработает на любой языковой версии Word.
Посмотрим на практический пример создания документа, добавления заголовка и основного текста с назначением стилей через числовые константы:
// Объявляем константы стилей Word
wdStyleNormal = -1;
wdStyleHeading1 = -2;
wdStyleHeading2 = -3;
Попытка
WordПриложение = Новый COMОбъект("Word.Application");
WordПриложение.Visible = Ложь;
Исключение
ВызватьИсключение "Не удалось инициализировать Microsoft Word: " + ОписаниеОшибки();
КонецПопытки;
Документ = WordПриложение.Documents.Add();
// Добавляем заголовок документа со стилем "Заголовок 1"
Параграф1 = Документ.Paragraphs.Add();
Параграф1.Range.Text = "Отчет о продажах за период";
Параграф1.Range.Style = Документ.Styles(wdStyleHeading1);
Параграф1.Range.InsertParagraphAfter();
// Добавляем основной текст со стилем "Обычный"
Параграф2 = Документ.Paragraphs.Add();
Параграф2.Range.Text = "Ниже представлены сводные показатели деятельности подразделения.";
Параграф2.Range.Style = Документ.Styles(wdStyleNormal);
Параграф2.Range.InsertParagraphAfter();
WordПриложение.Visible = Истина;
При использовании COM-объекта Word.Application важно учитывать следующие ограничения:
.docx предпочтительно использовать прямое формирование файлов через объекты ЧтениеZipФайла и ЗаписьZipФайла с модификацией XML-структуры, либо выгружать данные через ТабличныйДокумент штатными средствами 1С.