При выгрузке табличного документа в excel иногда требуется сохранить структуру и форматирование, аналогичное 1С. К сожалению, не все свойства таб.дока доступны стандартными методами, и тогда приходится придумывать «нечто». На оригинальность, конечно, не претендую, просто оформил в виде маленькой обработочки.
1. Области объединенных ячеек.
Чтобы объединить / разъединить области ячеек, у них есть соответствующие методы, но найти метод, который возвращает нам список этих областей, не удалось. Для поиска этих областей обходим все ячейки и сравниваем Лево/Право и Верх/Низ каждой (оказывается, у одной ячейки они могут быть не равны).
Если текОбласть.Лево <> текОбласть.Право ИЛИ текОбласть.Верх <> текОбласть.Низ Тогда
//
КонецЕсли;
2. Группировка строк.
При выводе данных в таб.док, мы можем группировать строки по нашему усмотрению, но в готовом документе получить список этих самых групп уже не представляется возможным. В этом случае нам поможет сериализация в xml.
СериализаторXDTO.ЗаписатьXML(ЗаписьXML, ТабДок, "item");
После чего, используя ПостроительDOM, можем успешно прочитать созданный файл и, находя узлы с именами «b» и «e», определить границы группируемых строк.
3. Цвет.
Казалось бы, что может быть проще? Получили цвет из свойства ЦветФона, записали в ЯчейкаЕ.Interior.Color.
Но, оказывается, excel не воспринимает цвета в hex формате, да еще и цвет в 1С может скрывать от нас его сущность, возвращая -1 в rgb свойствах.
Первую проблему можно решить, применив (для определения кода цвета в эксель) чудо-формулу: RGB_B*256*256 + RGB_G*256 + RGB_R.
Определить rgb составляющие посредством сериализации не представляется возможным. Поэтому для цветов вида НЕ Абсолютный, приходится формировать вспомогательный табличный документ и выгружать его во временный xls файл. Также можно выгружать в html файл и в тексте искать код установки свойства background-color, но для webцветов платформа выгружает не hex значение, а его предопределенное имя, что не подходит для нашего случая. Поэтому используем временный xls и кэширование ранее выгруженых.