Имя: Пароль:
1C
1С v8
Обмен с клиентами и конвертация изображений.
,
0 vicof
 
09.07.21
12:14
1. Клиент хочет выгружать для своих клиентов гибко настраиваемый список объектов и полей этих объектов. Это работает. Поля и отборы задаются на СКДшке, все норм. Выгрузка идет через FTP, причем FTPшников может быть указано несколько.
2. При этом у клиента есть PDFки, которые он хочет отправлять клиенту, конвертируя в PNG/JPG с разными ширинами и высотами картинок. Здесь как бы тоже все работает. Через imagemagick все конвертируется. 1 картинка примерно 5 сек.
3. А потом он хочет в выгружаемых объектах из п.1 указывать ссылки на выгруженные картинки, соответствующие этим объектам. И чтобы все работало прям быстро-быстро.

И вот тут у меня наступает когнитивный диссонанс.
Нужно понимать, что выгрузилась картинка или нет. Это опрашивать все FTP на наличие картинки в таком-то разрешении с таким-то форматом.
Нужно максимально уменьшить время выгрузки, поскольку клиентов может быть куча.
И понимать, выгружать картинки с указанными параметрами из 2. для данного клиента на указанный FTP, или нет. Но по времени это пипец как долго будет.
1 клиент * 200 объектов * 3 картинки на объект * 5 секунд на картинку. И это только на выгрузку. Т.е. на одного клиента примерно 1 час на выгрузку.
Можно процессы выгрузки картинок и объектов разделить. Но тогда надо понимать, что мы выгрузили, что нет.

Думал, про веб-сервисы. Чтобы клиент сам указывал, что он хочет по какой настройке в каких форматах, получить. Но тогда конвертация картинок при выгрузке также будет происходить долгое время.
Может, у кого-нибудь будут еще взгляды, как можно сделать выгрузку быстрой, но при этом гибко настраиваемой?
1 1Сергей
 
09.07.21
12:16
Вроде как, пока файл не записался полностью, имеет размер 0 байт. Можно на это проверять
2 ДенисЧ
 
09.07.21
12:16
Чтобы картинка конвертировалась быстрей - нужно взять более мощный компьютер...
3 Kassern
 
09.07.21
12:17
(0) вопрос, а зачем вообще конвертировать pdf в картинку?? Проще сразу pdf выплевывать клиенту. Он нормально в вебе открывается
4 Kassern
 
09.07.21
12:18
(0) если все же нужно время на обработку, делайте через токены. Клиент запрашивает, вы ему сразу возвращаете токен. Далее клиент по этому токену получает сконвертированные файлы, если они готовы.
5 ДенисЧ
 
09.07.21
12:18
(3) pdf уже можно вставить в <img../> ? С каких пор?
6 Kassern
 
09.07.21
12:19
(5) а накой вам в img вставлять? можете ссылку на pdf скидывать, либо в теле возвращать
7 rozer76
 
09.07.21
12:20
а почему не складывать картинки в облако и не давать на них ссылки
8 Kassern
 
09.07.21
12:20
(0) Если же нужно ускорить фтп, могу посоветовать winscp библиотеку. Через нее гораздо быстрее отрпавка и получение отрабатывает, так же есть возможность работать с sftp
9 Kassern
 
09.07.21
12:22
(5) типа такой ссылки давать да и все https://www.cryptopro.ru/sites/default/files/products/pdf/files/CryptoProPDF_UserGuide.pdf
10 Kassern
 
09.07.21
12:25
(0) В общем, если получится договориться без конверта в картинку, то просто выгружаете свой файл обмена с привязкой к ссылке на pdf. Файлик этот выплевываете после того как через winscp библиотеку успешно выгрузка прошла pdfок, там приходит ответ от библиотеки. И будет вам счастье.
11 vicof
 
09.07.21
12:27
(1) Не понял. Как это повлияет на скорость выгрузки картинок?
(3) Не хотят отдавать pdf-ку, хотят изображения. Один отдел готовит эти pdf-ки, а во что они будут сконвертированы и куда отправлены им уже пофиг.
(7) Можно. Но как связать, что вот эта вот картинка нужна вот в этой вот настройке выгрузки и если уже выгружена, то не выгружать?
(8) Знаем, есть такая. Но непонятно, как она поможет ускорить выгрузку. Т.е. 1 файл конвертируется 5 сек. А Xml-ка выгружается секунд 30. В основном время тратится на отбор нужных объектов.
(10) Не получится договориться, уже проверено) А потом клиент удалил картинку, и нам надо понимать, выгружать картинку заново или нет. Или мы удалили, у клиента тоже эта картинка должна удалиться.
12 Вафель
 
09.07.21
12:27
А в чем проблема то?
Ты же знаешь куда картинка ляжет
13 vicof
 
09.07.21
12:30
(12) Проблема в том, что картинок может быть куча. А в момент выгрузки картинки я или не знаю, какому объекту она принадлежит, если выгружать данные и картинки разными процедурами. Или знаю, но конвертация картинки происходит долгое время, что тоже не устраивает клиента.
14 1Сергей
 
09.07.21
12:32
(13) чот бардак какой-то. нельзя структурированно раскладывать файлы на ftp?
15 Kassern
 
09.07.21
12:32
(13) ну так в имени картинки привяжи ее к объекту
16 Вафель
 
09.07.21
12:33
(13) но ты же знаешь заранее что картинки будут и в каком формате тоже известно
17 Вафель
 
09.07.21
12:34
Чтобы не было битых ссылок, сначала выгружай картинки
18 Kassern
 
09.07.21
12:34
(11) эта библиотека возвращает ответ, когда ты файлы передаешь. Это помогает на 100% удостовериться, что файл ушел на фтп. А после грузишь уже свою xml/jsn с привязкой ссылки на картинку к нужному объекту
19 rozer76
 
09.07.21
12:34
(11) >>Можно. Но как связать, что вот эта вот картинка нужна вот в этой вот настройке выгрузки и если уже выгружена, то не выгружать?

ну как - взять и связать в РС )
20 Kassern
 
09.07.21
12:37
(11) при удалении картинки, так же вначале проверяешь на наличие, если есть, то удаляешь с фтп и выгружаешь свою xml/json с записью, что такая картинка удалена. К примеру добавить тек <deleted_picture>ГуидКартинки</deleted_picture> либо свойство добавить для блока картинки, типа <active>false</active>
21 Kassern
 
09.07.21
12:39
(20) тут конечно, лучше в обратном порядке, сначала файл удалением, а потом само удаление. Если же клиент сам удаляет картинку, то это надо через http сервис мутить.
22 Kassern
 
09.07.21
12:43
(11) Если же клиентов дофига и все же нужно конвертировать данные, то тогда лучше свою апишку поднять. Пускай клиенты сами запрашивают, что им надо. Как я и писал в (4) Клиент просит документы, ты ему даешь токен и пишешь в свою базу с привязкой массиву нужных данных для конверта и формат конверта. Далее, как у тебя по рег заданию все сконвертится сможешь по токену вернуть нужные данные.
23 Галахад
 
гуру
09.07.21
12:44
"1 клиент * 200 объектов * 3 картинки на объект * 5 секунд на картинку"

Запустить 600 фоновых заданий. И если сервак сдюжит, через 5 минут будет 600 картинок. :)
24 Галахад
 
гуру
09.07.21
12:45
(23) 5 секунд, конечно же.
25 Kassern
 
09.07.21
12:46
(24) он конвертит через какую то прогу, думаешь она поддержит 600 запусков параллельно?
26 Fragster
 
гуру
09.07.21
12:46
каждому клиенту своя версия картинки? рили?
27 Fragster
 
гуру
09.07.21
12:47
(25) какую-то, лол
28 Kassern
 
09.07.21
12:47
(27) не работал с ней, для меня какая то)
29 Fragster
 
гуру
09.07.21
12:50
схоронить у себя все картинки один раз, отдавать клиенту уже предварительно сконвертированные ранее не выгруженные картинки (например сделать план обмена с реквизитом "ftp" и на него регистрировать новые данные для выгрузки, в дальнейшем отдавать только новые данные)
30 Kassern
 
09.07.21
13:02
(29) тут все зависит от специфики и соотношения. Если нужно конвертировать всего 10% от общего числа файлов и файлов ооочень много, то лучше по запросу.
31 Aleksey
 
09.07.21
13:31
(23) Это так не работает. Даже на разбивку на 600 заданий требуется время
32 vicof
 
09.07.21
15:15
(14) не бардак. Я в момент создания настройки определяю не объекты, а отборы. Файлы структурированно раскладываются. А вот их добавление/обновление/удаление на FTP и синхронизация с базой, в которой эти картинки храниться не должны, а должны только выгружаться по запросу, вот это да, проблема.
(17) Да это понятно, ну представь, ты отправил запрос и ждешь 3 часа, пока выгрузятся картинки. Норм?)
(29) Наши отказываются у себя сохранять, потому что место будет сжираться очень быстро и много. А база уже и так немаленькая.
Планы обмена не подойдут, потому что я не знаю какие конкретно объекты по каким настройкам будут выгружаться, и соответственно, таблицу изменений в момент записи объектов заполнить не смогу. Или при записи каждого объекта надо будет читать кучу настроек, что тоже будет очень долго.
(21)(22) Про веб- и хттп-сервисы думал, но тогда время на получение картинок также получается большим, и ждать 3 часа одного вызова веб-сервиса как-то не комильфо) Или имеешь ввиду, что запрос сделал, время прошло, данные подготовились, результат куда-то выложился, и клиента оповестить?
33 Kassern
 
09.07.21
15:30
(32) зачем ждать 3 часа на один вызов, вызовы должны быть практически моментальными! У тебя Вася запросил УПДшку в формате jpg к примеру. Твой сервис вернул Васе токен 3355501123. У себя в базе записали например в регистр токен, нужный формат, нужный документ, строчка с путем для сформированного файла и признак, выгружен или нет. Далее делаешь рег задание, которое будет по этому регистру проходить, формировать картинки и пихать путь для них в него. Вася через какое то время заново долбится в твой веб сервис сообщая полученный токен, ты со своей стороны проверяешь, сформированы ли все пути по данному токену, если да, то возвращаешь васе пакет документов в виде ссылок. Если не готов, то так же сообщаешь. Как то так, можно регистр конечно обыграть по разному, это лишь один из примеров, который первый в голову пришел)
34 Kassern
 
09.07.21
15:32
(32) та же почта россии использует данный способ, когда хочешь получить историю по 3тыс посылок. Чтобы не заддосить, они дают токен, по нему готовят для тебя историю и через какое то время ты можешь получить всю историю по посылкам переданным в токен.
35 vicof
 
09.07.21
15:34
(33)(34) Понял, спасиб, подумаю.
36 lodger
 
09.07.21
16:32
(35) а ещё подумай, чтобы после каждого ресайза и формата сохранить у себя на сервере эту версию. тогда в следующий вызов с такими параметрами не нужно будет запускать конвертер, а достать из своей библиотеки миниатюр.
37 lodger
 
09.07.21
16:34
(32) "А база уже и так немаленькая." - так храни в томе.
38 lodger
 
09.07.21
16:34
(36) + (37) + регламент по очистке самых старых и ненужных миниатюр.
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший