Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Как использовать символы типов фильтрации в FILTER? Ошибка KeyError #71

Closed
jobinfopy opened this issue Oct 14, 2020 · 7 comments · Fixed by #73
Assignees
Labels
bug Something isn't working

Comments

@jobinfopy
Copy link

lists = b.get_all('crm.deal.list', params={ 'FILTER': { '!STAGE_ID': 'C11:WON', } })
При попытке использовать символы типов фильтрации '!', '<', '>' и др. получается ошибка KeyError: '%21STAGE_ID'.
Символ перед полем кодируется например в %21 и в итоге KeyError. Как исправить или правильно записать данную конструкцию?

@leshchenko1979
Copy link
Owner

А можно полную трассировку ошибки увидеть? @jobinfopy

@leshchenko1979 leshchenko1979 self-assigned this Oct 14, 2020
@leshchenko1979 leshchenko1979 added the bug Something isn't working label Oct 14, 2020
@leshchenko1979
Copy link
Owner

И второй вопрос: пробовали вместо ! писать <> или !=?

@leshchenko1979 leshchenko1979 added bug Something isn't working and removed bug Something isn't working labels Oct 14, 2020
@leshchenko1979
Copy link
Owner

leshchenko1979 commented Oct 14, 2020

Удалось воспроизвести ошибку. Она возникает в недрах импортированного модуля php, используемого для закодирования вложенных массивов параметров в URI-строку. Поищем другие модули.

См. также #3, #5 и #62

@leshchenko1979
Copy link
Owner

Также у лида фильтровать надо по полю STATUS_ID, а не STAGE_ID.

@leshchenko1979
Copy link
Owner

Готово, все работает. Обновляйтесь.

@jobinfopy
Copy link
Author

Спасибо за столь быструю реакцию))
Обнаружился ещё момент с выборкой пустых/непустых значений. Работа со списками. Фильтрует если передавать False. Но при этом получаем RuntimeWarning и только первые 50 значений. Хотя в прогресс-баре указывается общее правильное количество элементов подходящих под условия фильтра:

14%|█▍ | 50/355 [00:00<?, ?it/s]
\user_request.py:142: RuntimeWarning: Number of results returned (50) doesn't equal 'total' from the server reply (355)
RuntimeWarning)

lists = b.get_all('lists.element.get', params={ 'IBLOCK_TYPE_ID': 'lists', 'IBLOCK_ID': '29', 'FILTER': { '%PROPERTY_199': False, } })

@leshchenko1979
Copy link
Owner

Перенёс в #75. Посмотрю.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants