Там иначе нужно хранить хеш от связки - он же все равно знает 1 из 2 параметров
|
Роман Косинцев,
Делали что-то подобное (фиксирование голосва - за/против с новым возвращаемым значением - кто не успел проголосовать). Сказу скажу - нормальных хендлеров мы не нашли, поэтому - копируем код активити и в нем уже дописываем кастомный код. 1) Необходимо продумать как вы будете фиксировать в каком блоке какого бп будет происходить логгирование и как вы будете доставать результаты. Это нужно сделать в методе Subscribe. Но опираться нужно на $this->GetWorkflowInstanceId() - потому что многие другие переменные будут утеряны, при голосовании (потеря контекста). 2) Далее фиксировать голоса нужно одновременно в 2х функциях: - OnExternalEvent - туда попадает все, но при отправки от агента сразу же уходит на другую функцию. Соответственно тут можно и нужно фиксировать голоса за и против. - ExecuteOnNonApprove - сюда попадает интепретатор в двух случаях - когда кто-то сказал нет и работа блока окончена и когда от агента пришло сообщение об окончании времени голосования. 3) Сами голоса в рамках всего контекта вы можете получить в $this->arApproveResults - ассоциативный массив Пользователь-Голос(true/false) [для всех проголосовавших пользователей] и в OnExternalEvent - $arEventParameters["APPROVE"] или $approve [при голосовании сотрудника]
Голосуй за идеи по развитию API Bitrix:
|
|
|
|
|
|
Ирина Скорикова, тут просто скопировать не подойдет - нужно и код переписывать (названия модуля менять)
Голосуй за идеи по развитию API Bitrix:
|
|
|
|
|
|
[QUOTE]Александр Яровой написал:
Установил на сервер Sphinx[/QUOTE] А как именно установили? [URL=https://dev.1c-bitrix.ru/learning/course/index.php?COURSE_ID=32&LESSON_ID=6517&LESSON_PATH=3903.4862.6488.6517]По инструкции ?[/URL] |
|
|
|
|
|
Андрей Головизнин, вижу, что никто не хочет отвечать на вопрос, а он достаточно интересный по своей сути.
Сразу скажу - готового кода тут нет, скорее советы и размышления. Во-первый, способ который сейчас существует - CFile::GetPath - можете посмотреть как он устроен и в цикле (например foreach) перебирать его значения. В таком случае в самом худшем варианте вы породите N запросов к БД (N - число id файлов в параметре MORE_PHOTO), а в лучшем - зайдете N раз в кеш Во-вторых, можно сделать быстрый костыльный способ - если сложить upload path (по дефолту - /upload/ ), к нему добавить из БД: SUBDIR, а потом "/", а потом FILE_NAME, то вы можете получить все пути за 1 запрос к БД, но это стоит делать лишь когда вы 100% уверены, что работаете с инфоблоками, что вы НЕ используете облачные хранилища, что файлы у вас именно загружены в инфоблок и что вы сознательно игнорируете событие OnGetFileSRC. Подробнее про получение можно посмотреть тут: [URL=http://bxapi.ru/src/?module_id=main&name=CFile::GetFileSRC]http://bxapi.ru/src/?module_id=main&name=CFile::GetFileSRC[/URL] Для 2 варианта - если попробуете использовать ORM, дополните его Runtime-полем - "LINK" как результат SQL-комманды CONCAT_WS (погуглите), то можете даже использовать ванильное кеширование - что позволит в лучшем случае даже не делать этого запроса и быстро оперировать сразу путем к файлу |
|
|
|
|