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

18.07.18

Интеграция - Загрузка и выгрузка в Excel

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

Скачать исходный код

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

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

 

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

См. также

Загрузка номенклатуры из Excel в УТ11, КА 2, ERP 2, Розница 2. Дополнительные реквизиты и сведения, характеристики, картинки, цены, остатки

Загрузка и выгрузка в Excel Розничная торговля Логистика, склад и ТМЦ Ценообразование, анализ цен Прайсы Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Розница 2 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Управленческий учет Платные (руб)

Загрузка из файлов xls, xlsx, ods, csv, mxl в УТ11, КА 2, ERP 2, Розница 2. Задействованы все возможности конфигурации - заполнение реквизитов номенклатуры, дополнительных реквизитов и сведений, характеристики, доп.реквизиты и сведения характеристик. Дополнительные обработки для расширения возможностей.

10560 руб.

29.10.2014    211252    630    526    

446

Загрузка номенклатуры c картинками (несколько потоков одновременно) и сопутствующими данными в базу и любые документы из yml, xls, xlsx, xlsm, ods, ots, csv для УТ 10.3, УТ 11 (все), БП 3, КА 2, ERP 2, УНФ 1.6/3.0, Розница 2

Загрузка и выгрузка в Excel Логистика, склад и ТМЦ Ценообразование, анализ цен Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Платные (руб)

Эволюция не стоит на месте - новая удобная версия функциональной обработки для Вашего бизнеса! Что же Вы получаете? Удобный и интуитивно понятный интерфейс с 3-мя этапами работы. 2 режима - автоматический и ручной. Чтение XLSX, XLSM, CSV, XML/YML форматов без офиса, на любом сервере! Визуальное связывание колонок файла и реквизитов простым перетаскиванием колонок. Создание или обновление номенклатуры с иерархией, характеристик, доп. реквизитов, упаковок, загрузка практически неограниченного количества картинок на одну номенклатуру (с возможностью загрузки в несколько потоков одновременно), с хранением в томах или в базе. Загрузка номенклатуры поставщиков или поиск по их данным номенклатуры. Загрузка доп. реквизитов в характеристики. Загрузка штрихкодов с генерацией новых. Создание элементов справочников и ПВХ "на лету" для выбранных реквизитов. (Обновление от 09.04.2024, версия 9.9 - 9.10)

14400 руб.

20.11.2015    151457    367    376    

503

Маркетплейсный загрузчик для 12-ти маркетплейсов в 1С:БП 3, УТ 11, КА 2, ERP, УНФ

Загрузка и выгрузка в Excel Маркетплейсы Платформа 1С v8.3 Бухгалтерский учет 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Бухгалтерский учет Управленческий учет Платные (руб)

Реальный помощник, с помощью которого Вы сделаете необходимые документы для Wildberries, OZON, ЯндексМаркет, Мегамаркет, Aliexpress, "Детский мир", Казань-Экспресс, "Леруа Мерлен", ЭНФАНТА (Акушерство), ЛаМода, Летуаль, "Твой дом" в документы "Отчет комиссионера (агента) о продажах" и другие, может работать в "Бухгалтерия 3", "Бухгалтерия 3 КОРП", УТ 11, УНФ, КА 2, ERP. Возможность подключить любые маркетплейсы. Анализ продаж ОЗОН. 30 дней БЕСПЛАТНОГО пользования!

1800 руб.

12.08.2021    32332    242    64    

122

SALE! 30%

Распознавание и загрузка сканов в 1С "одним нажатием": УПД, ТОРГ-12, накладные, счета, номенклатура, заказы и т.д.

Загрузка и выгрузка в Excel Документооборот и делопроизводство (СЭД) Учет документов Распознавание документов и образов Управляемые формы 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Управление холдингом 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Бухгалтерский учет Управленческий учет Платные (руб)

Универсальная программа для распознавания ЛЮБЫХ СКАНОВ ИЛИ ФОТО ТОВАРНЫХ ДОКУМЕНТОВ в 1С. Не требует указания параметров и предварительной настройки. Просто выбираете файл (PDF, JPG, DOC, XLS, HTML и т.д.) выбираете документ 1С и нажимаете кнопку "Распознать и загрузить".

6000 5520 руб.

04.06.2019    101877    298    173    

314

SALE! 20%

Загрузка документов и номенклатуры из Excel в 1С "одним нажатием": УПД, ТОРГ-12, отчеты маркетплейсов, заказы, счета, прайсы

Загрузка и выгрузка в Excel Оптовая торговля Платформа 1С v8.3 Управляемые формы Платформа 1C v8.2 Конфигурации 1cv8 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Бухгалтерский учет Управленческий учет Платные (руб)

Универсальная обработка для загрузки документов из Excel в 1С. Не требует указания параметров (номера колонок, номер первой строки таблицы и т.д.) и предварительной настройки. Просто выбираете файл Excel, документ 1С и нажимаете кнопку "Загрузить". Обработка сама находит таблицу в файле Excel, необходимые для загрузки данные в ней (номенклатура, количество, НДС, цена, сумма) и загружает ее в 1С. Вместе с номенклатурой может найти контрагента, номер и дату документа, штрих-коды, серии ГТД, страну и т.д. Распознает документы ЛЮБОЙ ФОРМЫ (УПД, ТОРГ-12, заказ, отчет комиссионера и т.д.). Не требует MS Office. Для поиска таблиц используются методы эвристического поиска. Загружает только то, что нужно, т.е. пропускает повторы шапки таблицы, заголовки, промежуточные итоги, подписи и т.д. Содержит модуль работы с электронной почтой и api-загрузчик отчетов о продажах маркетплейсов.

5000 4000 руб.

09.11.2016    215976    933    886    

943

Загрузка данных отчета о реализации товаров из Excel файла СберМегаМаркет

Загрузка и выгрузка в Excel Маркетплейсы Платформа 1С v8.3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Управление нашей фирмой 3.0 Бухгалтерский учет Управленческий учет Платные (руб)

Загрузка данных отчета о реализации товаров из сервиса СберМегаМаркет для конфигурации: Бухгалтерия предприятия, редакция 3.0; Управление торговлей, редакция 11 и Управление нашей фирмой, редакция 3.0 в документ "Отчет комиссионера (агента) о продажах".

4800 руб.

07.06.2022    15389    82    0    

63
Вознаграждение за ответ
Показать полностью
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Leon75 18.07.18 11:26 Сейчас в теме
Ну воспринимает она (платформа в макете) квадратную скобку как параметр, а если заполнить значение параметра формулой?
2. _root 166 18.07.18 11:46 Сейчас в теме
(1) "С простыми формулами типа "=RC[-2]-RC[-1]" все было замечательно - внести как текст и все ок, но, когда потребовалось реализовать формулу чуть посложнее, типа "=СУММ(R[1]C:R[КоличествоСтрок]C)", то тут ждал облом..."
3. Leon75 18.07.18 12:11 Сейчас в теме
(2)теоретически можно наверное поставить другие два символа вместо открытой и закрытой квадратных скобок, не встречающиеся в формулах и в цикле заменять на скобки.
6. vechiy 35 13.07.21 09:53 Сейчас в теме
(2) а как решить следующую проблему - при внесении формулы как текст и последующей выгрузке в эксель (ТабДок.Записать(.....xls)) - формулы выводятся в ячейка эксель, и "становятся" формулами только после двойного щелчка по каждой ячейке
Прикрепленные файлы:
7. _root 166 13.07.21 10:09 Сейчас в теме
(6) Это значит, что при сохранении в эксель у вас не прошла процедура инициализации каждой ячейки. Инициализация проходит в алгоритме находящемся в #Область ФормированиеExcel.
8. vechiy 35 13.07.21 10:15 Сейчас в теме
(7) так и есть, сохраняю просто как ТабДок.Записать(...эксель)

приведенный код у меня не отрабатывает (возможно, из-за отсутствия эксель на сервере?) Но можно ли как-то это обойти?
Прикрепленные файлы:
9. _root 166 13.07.21 13:54 Сейчас в теме
(6) Это значит, что не
(8)Можно, сделать это на клиенте. Но лучше установить эксель на сервере.
10. vechiy 35 13.07.21 15:10 Сейчас в теме
(9) но сохранять файлы предполагается всегда на клиенте. а серверов будет несколько.
вообще, на сервере сейчас стоит эксель 2016 32 бита, и ожидает регистрации продукта.. может быть в этом проблема? в разрядности или в сбое активации?
15. sewell 29.06.22 11:06 Сейчас в теме
(7) Подскажите, плиз. Никак не могу понять, как мне провести инициализацию каждой ячейки ?
(
16. sewell 29.06.22 13:56 Сейчас в теме
(7) Подскажите, плиз. Никак не могу понять, как мне провести инициализацию каждой ячейки ?
4. ak313 14.05.19 22:53 Сейчас в теме
Может и поздно, но сам искал как вывести Артикул товара в шаблоне наименования в квадратных скобках.
В итоге оказалось все просто.
Символ(91)+[Артикул]+Символ(93)
91 и 93 это коды Unicode для скобок [ и ]
lavren116; Cmapnep; tivanitsky; dmbarchenkov; klaus38; +5 Ответить
5. vechiy 35 12.07.21 16:39 Сейчас в теме
Такая ошибка может быть из-за отсутствия excel на сервере? А можно ли только на клиенте?
Прикрепленные файлы:
11. vechiy 35 13.07.21 21:02 Сейчас в теме
12. vechiy 35 13.07.21 23:19 Сейчас в теме
(11)

проблема с записью решена, запись работает прекрасно на клиенте.
осталась проблема с одной формулой - =СУММ(R[-16]C[3]:R[-1]C[3])
она формируется в зависимости от числа строк (16)
и данная формула не "встаёт" в эксель, вместо неё встает сначала ?ИМЯ , а после двойного щелчка уже превращается в формулу. почему так?
13. _root 166 13.07.21 23:51 Сейчас в теме
(12)Не было таких проблем, все формулы вставали без проблем. Вы уверены что для этой ячейки отрабатывает этот участок: "Если СтрНачинаетсяС(Значение, "=") Тогда //Формулам зададим формат..." ?
14. antonimo 17.11.21 09:56 Сейчас в теме
Коллега, приветствую.
Только что решил схожую проблему с сохранением формулы в Excel программно.
Особенность в том, что формулы на русском языке в Excel выводятся для удобства пользователя программы. На самом деле все формулы хранятся на родном английском языке.
Поэтому при вставке формулы программно, нужно писать формулу на английском языке.
Например, СУММ нужно заменить на SUM.
Например,

Cell = Лист.Cells(41, 6);
Cell.FormulaR1C1 = "=SUM(R[-35]C:R[-1]C)";

Все прекрасно работает, а вот с формулой на кириллице ("=СУММ(R[-35]C:R[-1]C)") не работает.

Много времени потратил на это, надеюсь, кому-нибудь сэкономит время.
RibD; savant; LomayaZakat; +3 Ответить
17. savant 57 07.09.22 15:32 Сейчас в теме
(14)
Cell = Лист.Cells(41, 6);

Спасибо помогло!
Если вам нужно записать диапазон вместо ";" надо ставить ","
Cell.FormulaR1C1 = "=SUM(R[-35]C:R[-1]C,R[-55]C:R[-30]C)";
18. Middle2People 02.04.24 23:15 Сейчас в теме
Я бы на моменте когда осознал ошибку "[]" ОднойСистемы, я бы сразу им бы и написсал и сросил бы, нужна ли помощь в создании такой обработки (если был таким же опытным, спросил бы:) вот в такой форме если ее делать, вот к такому числу.
Сказал бы, что у мен дедлайн и что другую форму могу им отправить вот такого числа, если нужно

Да и вообще поговорить интересно по работе с большими
Оставьте свое сообщение