Проблема с назначением групп пользователю при создании через API Битрикс
Обновление (20.08.25): проблема всё ещё актуальна.
Необходимо автоматически создать пользователя в Битрикс24 через скрипт, задав пароль, группы и прочие настройки. Все шаги, кроме назначения групп, выполняются корректно. Группы с ID 3, 4 и 12 не применяются.
Исходный код (базовый вариант)
Ниже представлен код, который успешно выполняет авторизацию, получение CSRF-токена и отправку данных, но группы не назначаются:
import requests
from bs4 import BeautifulSoup
# 1. Авторизация в админ-панели
session = requests.Session()
login_url = f"{PORTAL_URL}/bitrix/admin/"
login_data = {
"AUTH_FORM": "Y",
"TYPE": "AUTH",
"USER_LOGIN": ADMIN_USER,
"USER_PASSWORD": ADMIN_PASS,
"Login": "Войти"
}
# 2. Получение CSRF-токена
admin_page = session.get(f"{PORTAL_URL}/bitrix/admin/user_edit.php")
soup = BeautifulSoup(admin_page.text, 'html.parser')
csrf_token = soup.find('input', {'name': 'sessid'})['value']
# 3. Создание пользователя через внутренний API
user_data = {
"sessid": csrf_token,
"lang": "ru",
"ACTION": "ADD",
"LOGIN": USER_EMAIL,
"EMAIL": USER_EMAIL,
"NAME": "Тест",
"LAST_NAME": "Пользователь",
"SECOND_NAME": "",
"PERSONAL_GENDER": "M",
"NEW_PASSWORD": USER_PASSWORD,
"NEW_PASSWORD_CONFIRM": USER_PASSWORD,
"GROUP_ID": [3, 4, 12],
"ACTIVE": "Y",
"UF_DEPARTMENT[]": [1],
"WORK_DEPARTMENT": "test",
"WORK_POSITION": 'test',
"apply": "Y"
}
create_response = session.post(
f"{PORTAL_URL}/bitrix/admin/user_edit.php",
data=user_data
)Попытка исправить: структура GROUP_ID как в PHP
В документации для PHP указана следующая структура:
[GROUP_ID] => Array (
[0] => Array (
[GROUP_ID] => 10
[DATE_ACTIVE_FROM] => 24.07.2007
[DATE_ACTIVE_TO] => 24.07.2008
),
[1] => Array (
[GROUP_ID] => 20
[DATE_ACTIVE_FROM] =>
[DATE_ACTIVE_TO] =>
)
)Была выполнена адаптация под Python:
GROUPS = [
{
"GROUP_ID": 3,
"DATE_ACTIVE_FROM": "",
"DATE_ACTIVE_TO": ""
},
{
"GROUP_ID": 4,
"DATE_ACTIVE_FROM": "",
"DATE_ACTIVE_TO": ""
},
{
"GROUP_ID": 12,
"DATE_ACTIVE_FROM": "",
"DATE_ACTIVE_TO": ""
}
]
group_fields = {}
for i, group in enumerate(GROUPS):
group_fields[f"GROUP_ID[{i}][GROUP_ID]"] = group["GROUP_ID"]
group_fields[f"GROUP_ID[{i}][DATE_ACTIVE_FROM]"] = group["DATE_ACTIVE_FROM"]
group_fields[f"GROUP_ID[{i}][DATE_ACTIVE_TO]"] = group["DATE_ACTIVE_TO"]
user_data = {
"sessid": csrf_token,
"lang": "ru",
"ACTION": "ADD",
"apply": "Y",
"LOGIN": USER_EMAIL,
"EMAIL": USER_EMAIL,
"NAME": "Тест",
"LAST_NAME": "Пользователь",
"SECOND_NAME": "",
"PERSONAL_GENDER": "M",
"NEW_PASSWORD": USER_PASSWORD,
"NEW_PASSWORD_CONFIRM": USER_PASSWORD,
"ACTIVE": "Y",
"UF_DEPARTMENT[]": [1],
"WORK_DEPARTMENT": "test",
"WORK_POSITION": 'test',
**group_fields
}Результат: группы по-прежнему не назначаются.
Вопрос
В чём может заключаться проблема? Как правильно передать данные о группах при создании пользователя через внутренний API Битрикс24 на Python?