208 похожих чатов

Доброе утро всем разработчикам. Подскажите, пжста, кто сталкивался. Задача: необходимо

выгружать из Битрикс в Excel данные по реализации и себестоимости товаров для расчета заработной платы. Видимо, через вебхуки... Может кто-то может помочь или подсказать или дать ссылки как это сделать?

20 ответов

136 просмотров

не обязательно веб хуки. как этим функционалом планируют пользоваться? его будут руками качать, или автоматически другая система будет запрашивать?

https://github.com/PHPOffice/PhpSpreadsheet для генерации эксельки.

Борис-Обрушников Автор вопроса
бзззззззз
не обязательно веб хуки. как этим функционалом пла...

Спасибо, что отписались. Предполагал, что в Excel данные будут попадать через запрос power query и вебхук автоматически

Борис-Обрушников Автор вопроса
Dao Cat
https://github.com/PHPOffice/PhpSpreadsheet для ге...

Большое спасибо посмотрю!

Борис Обрушников
Спасибо, что отписались. Предполагал, что в Excel ...

не нахожу каких-то секретных сложных моментов. нужен пхп файл, который будет получать от битрикса нужные данные, генерить по ним эксель библиотекой по ссылке выше, и отдавать на скачивание ( https://habr.com/ru/articles/151795/ ). оформить файл можно по-разному - просто файл, который будет содержать и получение данных по апи, и генерацию эксель, или контроллер (компонента/модуля). тут уже от предпочтений зависит. страшное слово "веб хук" особой магии не несет

Борис Обрушников
Большое спасибо посмотрю!

$spreadsheet = new PhpOffice\PhpSpreadsheet\Spreadsheet(); // Наполняем $spreadsheet данными по методам из доки PhpSpreadsheet // В конце делаем так. header('Content-Type: ' . $contentType); header( sprintf( 'Content-Disposition: attachment;filename="%s.%s"', $filename, mb_strtolower($writerType) ) ); header('Cache-Control: max-age=0'); $GLOBALS['APPLICATION']->RestartBuffer(); $writer = PhpOffice\PhpSpreadsheet\IOFactory::createWriter($spreadsheet, $writerType); $writer->save('php://output'); die(); // Будет скачиваться файл с экселькой.

А насколько большой объём данных и как долго будет генерироваться пакет данных для выгрузки в Excel? Рассматривался ли в таком случае некий кеш для предварительного сбора данных (например, дополнительная таблица или хайлоад-инфоблок) отдельным php-скриптом с определенным интервалом. А потом одним запросом другим php-скрипом вся информация из кеша идёт в Excel.

Владимир
А насколько большой объём данных и как долго будет...

Основная нагрузка будет при создании самого эксель файла

Владимир
А насколько большой объём данных и как долго будет...

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

бзззззззз
тут затрагивается вопрос реальных денег. не думаю ...

А что будет быстрее работать - выборка по куче таблиц с кучей джойнов или один-два запроса из кеш-таблицы?

Ildar K
Основная нагрузка будет при создании самого эксель...

Если нет формул, может csv-файл быстрее сделать?

Владимир
А что будет быстрее работать - выборка по куче таб...

запрос к кеш таблице будет быстрее. но все равно вряд ли сравнимо со временем обработки данных запроса и генерации файла

бзззззззз
запрос к кеш таблице будет быстрее. но все равно в...

На мой взгляд, плюс использования кеш-таблицы (хайлоад инфоблок) в том, что, если надо, можно написать и отладить прямой sql-запрос. Можно построить свои индексы для ускорения и при этом ядро и структуры таблиц Битрикса на затрагиваются вообще.

Борис Обрушников
Объем до 10К записей

Есть вероятность, что скрипт подвиснет. Если такое случится, то надо брать стандартный пример экспорта (или импорта) csv (Эксель) с перегрузкой скрипта. Потом были еще какие-то моменты с тем, что снадртный битриксовский инструмент формировал файл Эксель с сложностями прочтения на всех офисных программах, какие сейчас точно не помню.

Борис Обрушников
Объем до 10К записей

Я всех тонкостей не помню, было давненько. Но стандартный импорт в Эксель, который стоит в поставке, зависал где-то на 1 или 2 тысячах записях, которые нужно было экспортировать. Если такое будет у тебя, то нужно будет изгаляться

Vitaly Tatarintsev
Я всех тонкостей не помню, было давненько. Но стан...

Выглядит как проблемы с утечкой памяти. Как вариант - использовать свежую версию php и проверить, меняется ли число обработанных записей при увеличении выделяемой памяти для php в настройках php.ini.

Vitaly Tatarintsev
Есть вероятность, что скрипт подвиснет. Если такое...

Похоже на лишние символы в ячейках - двойные или одинарные кавычки, спецсимволы в записях в БД. Ловится долго и муторно - экспортом части записей, пока не найдется группа записей, которая создаёт проблему.

Владимир
Выглядит как проблемы с утечкой памяти. Как вариан...

Пусть посмотрит, может быть, у него пройдет на 10к записей.

Похожие вопросы

Обсуждают сегодня

А как старый хаскел с новым стыковать ? потому как тут работает https://play.haskell.org/saved/C3xpMzcd, а вот тут https://stepik.org/lesson/7602/step/9?unit=1473 нет ошибка C...
Fedor
131
Народ, кто шарит в расширенных разделах (EBR/EPR) на дисках с разметками MBR? Везде пишут (в вики рус/англ) в частности + другие источники смотрел, что первый сектор расширенн...
Eugene Krasnikov (ᴊɪɴ x)
1
что насчет пагинга? на осдеве непонятно(
Vi Chapmann 🪙
26
Вопрос я правильно понимаю что в коде newtype ArrowMap k v = ArrowMap { getArrowMap :: k -> Maybe v } getArrowMap есть функция типа k -> Maybe v, если да, то не понимаю задач...
Fedor
64
Ребят, что лучше для реверса: гидра или ида?
En Vind Av Sorg
26
Делаю велосипед логгер. К сообщению хочу прикрутить некоторую информацию, типа, кем отправлено, какой уровень, и всякое такое. И тут подумалось мне, почему бы не хранить весь...
Serjone
24
Как Вы считаете нормально ли в двадцатых годах 21 века в ВУЗах Российской Федерации обучать студентов работе с TASM? Не слишком ли это "архаично"? (Если оффтоп или флейм для э...
Spiker01
52
if (user?.choseType === 'oneDay') { await ctx.reply( 'Добро пожаловать в команду «Магнита»! Правда, на один день ☺️ ', ); await ctx.s...
Kokni
1
Комрады, хотел уточнить. Проперть в OnDestroy юнита-хозяина по-прежнему доступна? И еще уточнение: finalization юнита наступает раньше или позже OnDestroy?
Ed Doc
48
Продолжая диалог про свифт в проде – сейчас возник вопрос в активном наборе бекендеров. В основном в нашей компании мы фанаты Java Spring и полностью ей довольны. Однако найм ...
Guseyn
27
Карта сайта