Выгрузка отчета в Excel с формулами, используя заполнение - шаблон макета для сложных формул

Публикация № 869535

Обмен - Загрузка и выгрузка в Excel

квадратные скобки в шаблоне макета [ в шаблоне макета формула excel через шаблон макета как вывести квадратные скобки в шаблоне макета

6
Каждому программисту 1с, хоть раз, да приходилось писать выгрузку отчета из 1С в Excel с формулами. Есть много вариантов как это сделать. Но мне захотелось это сделать "по нормальному", используя как можно меньше кода выгрузки в excel, и так чтобы проще было дорабатывать. Идея была проста, все формулы засунуть в макет, и при выводе в Excel просто "проинициализировать" их. Но меня ждал облом, который мне пришлось героически преодолевать. Спойлер - в итоге все получилось...)

Итак, задача следующая - нужно выгрузить отчет сразу в 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.

 

6

Скачать файлы

Наименование Файл Версия Размер
Выгрузка отчета в Excel с формулами, используя заполнение - шаблон макета для сложных формул:
.erf 12,43Kb
17.07.18
10
.erf 12,43Kb 10 Скачать

См. также

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо
1. Leon75 18.07.18 11:26 Сейчас в теме
Ну воспринимает она (платформа в макете) квадратную скобку как параметр, а если заполнить значение параметра формулой?
2. _root 128 18.07.18 11:46 Сейчас в теме
(1) "С простыми формулами типа "=RC[-2]-RC[-1]" все было замечательно - внести как текст и все ок, но, когда потребовалось реализовать формулу чуть посложнее, типа "=СУММ(R[1]C:R[КоличествоСтрок]C)", то тут ждал облом..."
3. Leon75 18.07.18 12:11 Сейчас в теме
(2)теоретически можно наверное поставить другие два символа вместо открытой и закрытой квадратных скобок, не встречающиеся в формулах и в цикле заменять на скобки.
4. ak313 14.05.19 22:53 Сейчас в теме
Может и поздно, но сам искал как вывести Артикул товара в шаблоне наименования в квадратных скобках.
В итоге оказалось все просто.
Символ(91)+[Артикул]+Символ(93)
91 и 93 это коды Unicode для скобок [ и ]
Оставьте свое сообщение