Итак, задача следующая — нужно выгрузить отчет сразу в Excel, отчет с кучей формул, формулы сложные, с выделением групп и т.п., отчет за свою жизнь будет не раз правиться, и формулы будут становится всё "ужаснее" и сложнее, структура отчета, как это ни странно, изменяться будет не часто и не сильно.
Отчетов таких была написана куча и на доработку каждого требовалось куча времени. Я захотел попробовать найти какой-нибудь новый подход — все формулы засунуть в макет. Но меня поджидал облом… С простыми формулами типа "=RC[-2]-RC[-1]" все было замечательно — внести как текст и все ок, но, когда потребовалось реализовать формулу чуть посложнее, типа "=СУММ(R[1]C:R[КоличествоСтрок]C)", то тут ждал облом… Тут сразу напрашивается шаблон, но как оказалось, шаблон никак не хотел выводить символ "[", т.к. для 1С это служебный символ, определяющий параметры для шаблона. Поиск в инете типа "как вывести квадратные скобки в шаблоне макета" ничего не дал, вообще ничего не дал! Путем проб и ошибок выяснилось, чтоб вывести "КакойТоТекст[1]" нужно задать "КакойТоТекст[[1]". А вот чтоб задать "КакойТоТекст[1]ещё[КоличествоСтрок]", где КоличествоСтрок — это параметр, который нужно менять, то тут нужно извратиться по жёсткому — "КакойТоТекст[][[1]ещё[][[[КоличествоСтрок]]". Конструкция [] — нужна, чтоб не удалялся текст — "КакойТоТекст".
Итого: копируем формулу Excel, модифицируем её:
1. заменяем ";" на ","
2. к неизменным значениям в скобках добавляем спереди [][
3. изменяемые значения в скобках обворачиваем [][[изменяемое значение в скобках]. И макет готов.
И тогда весь код при формировании Excel будет минимальным:
ФормированиеExcel
Как вы будете использовать макет — это ваше дело, хотите формируйте отчет через СКД используя Макет, хотите выводите отчет алгоритмически. В приложенном файле, я использую алгоритмическое формирование табличного документа (через СКД не получилось получить КоличествоСтрок), а затем формирую Excel файл из него. Приложенный файл это шаблон для ознакомления с подходом, он будет запускаться в Бухгалтерии, УТ, в общем там где есть регистр сведений ЦеныНоменклатуры.
Конечно формула в таком виде "=КакойТоТекст[][[1]ещё[][[[КоличествоСтрок]]" мне не очень нравится. Если кто-нибудь знает, как можно представить формулу в более наглядном виде, был бы рад узнать…
Версия платформы, на которой тестировался отчет: 8.3.10.2299.
Ну воспринимает она (платформа в макете) квадратную скобку как параметр, а если заполнить значение параметра формулой?
(1) «С простыми формулами типа «=RC[-2]-RC[-1]» все было замечательно — внести как текст и все ок, но, когда потребовалось реализовать формулу чуть посложнее, типа «=СУММ(R[1]C:R[КоличествоСтрок]C)», то тут ждал облом…»
(2)теоретически можно наверное поставить другие два символа вместо открытой и закрытой квадратных скобок, не встречающиеся в формулах и в цикле заменять на скобки.
Может и поздно, но сам искал как вывести Артикул товара в шаблоне наименования в квадратных скобках.
В итоге оказалось все просто.
Символ(91)+[Артикул]+Символ(93)
91 и 93 это коды Unicode для скобок [ и ]