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

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

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

20 ответов

115 просмотров

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

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к записей.

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

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

а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Добрый день. Хочу сделать отрисовку по команде на панели. Почему-то рисуется только при втором вызове. С чем может быть связано, не подскажете? procedure TForm1.FormDblClick(...
Kirill Filippenok
20
Всем доброго дня! Подскажите может кто использовал связку Pagebuilder + Clientsetting. Сами параметры с типом pagebuilder в модуле Clientsetting работают нормально, можно такж...
Александр Добриков
12
А почему в си некоторые вещи работают с двойными кавычками некоторые с одинарными? Нельзя было все сделать с одними или чтоб работало с разными? например чтоб выводить строки ...
.
15
Всем привет! Нужен совет от опытных. Переношу свой проект с Делфи 10.2 Токио на Лазарус 3.2 установленный через инсталлятор fpcupdeluxe-x86_64-win64. При импортировании проект...
Дмитрий Завгородний
7
Эх кто-то пришел и весь праздник испортил :( You need complex FBX scene importing setup to change things on import? good luck with that. You need navigation and pathfinding? g...
Serg Gini
5
Всем привет! procedure TForm1.FormCreate(Sender: TObject); type TStartEnd = record S: Byte; E: Byte; end; var a, b: TStartEnd; begin {1} a.S := 1; {2} a.E := 2; ...
Руслан Михайлович
10
Всем привет!) я тут новенький и пытаюсь освоить evolution методом тыка. У меня при переходе между папками файлов выскакивают вот такие уведомления Можете подсказать как их от...
Диман Samoed
10
Всем привет! Подскажите. Я написал приложение на Delphi 10.2 Tokyo под Windows 10. И передо мной стал вопрос о том чтобы сделать это приложение кроссплатформенным (под Linux и...
Дмитрий Завгородний
24
Какого хера? /Sources/App/Modules/User/Models/UserLinkApple.swift:21:20: warning: stored property '_id' of 'Sendable'-conforming class 'UserLinkApple' is mutable @ID(...
Alexander Sherbakov
14
Карта сайта