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

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

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

20 ответов

197 просмотров

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

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

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

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

30500 за редактор? )
Владимир
47
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
1
Он в одиночку это дело запилил или была какая-то команда?
Aquinary
12
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Карта сайта