This commit is contained in:
Татьяна Фарбер 2026-04-04 11:40:52 +04:00
parent ca54af0f13
commit f54ea595eb
5 changed files with 38 additions and 159 deletions

View File

@ -1643,24 +1643,6 @@ user.field.delete(id)
user.field.getlist(order, filter) user.field.getlist(order, filter)
``` ```
#### Получить статус пользователя `user.status.get`
[user.status.get](https://apidocs.bitrix24.ru/api-reference/user/user-status-get.html)
```lua
user.status.get(user_id)
```
#### Получить аватар пользователя `user.avatar.get`
[user.avatar.get](https://apidocs.bitrix24.ru/api-reference/user/user-avatar-get.html)
```lua
user.avatar.get(user_id, size) -- size: 'small', 'big' или nil (оригинал)
```
Конечно. Вот документация для модуля Chats в формате Markdown, отформатированная согласно вашим требованиям (пустая строка после подзаголовков).
``` ```
# Чаты # Чаты

View File

@ -1,36 +1,36 @@
local _M = require('bitrix.api') local _M = require('bitrix.api')
local array = require('utils.array') local array = require('utils.array')
_M.departments = {} _M.department = {}
--[[ --[[
Департаменты (departments.*) Департаменты (department.*)
--]] --]]
-- https://apidocs.bitrix24.ru/api-reference/departments/departments-add.html -- https://apidocs.bitrix24.ru/api-reference/department/department-add.html
function _M.departments.add(fields) function _M.department.add(fields)
return _M.post('department.add', { ['fields'] = fields }) return _M.post('department.add', { ['fields'] = fields })
end end
-- https://apidocs.bitrix24.ru/api-reference/departments/departments-update.html -- https://apidocs.bitrix24.ru/api-reference/department/department-update.html
function _M.departments.update(id, fields) function _M.department.update(id, fields)
return _M.post('department.update', { ['ID'] = id, ['fields'] = fields }) return _M.post('department.update', { ['ID'] = id, ['fields'] = fields })
end end
-- https://apidocs.bitrix24.ru/api-reference/departments/departments-get.html -- https://apidocs.bitrix24.ru/api-reference/department/department-get.html
function _M.departments.get(id) function _M.department.get(id)
return _M.post('department.get', { ['ID'] = id }) return _M.post('department.get', { ['ID'] = id })
end end
-- https://apidocs.bitrix24.ru/api-reference/departments/departments-getlist.html -- https://apidocs.bitrix24.ru/api-reference/department/department-getlist.html
function _M.departments.getlist(order, filter, select, start) function _M.department.getlist(order, filter, select, start)
select = select or {'*'} select = select or {'*'}
return _M.fetchAllPages(function(startPos) return _M.fetchAllPages(function(startPos)
return _M.post('department.getlist', { return _M.post('department.get', {
['order'] = order, ['order'] = order,
['filter'] = filter, ['filter'] = filter,
['select'] = select, ['select'] = select,
@ -39,15 +39,15 @@ function _M.departments.getlist(order, filter, select, start)
end, start) end, start)
end end
-- https://apidocs.bitrix24.ru/api-reference/departments/departments-fields.html -- https://apidocs.bitrix24.ru/api-reference/department/department-fields.html
function _M.departments.fields() function _M.department.fields()
return _M.post('department.fields', {}) return _M.post('department.fields', {})
end end
-- https://apidocs.bitrix24.ru/api-reference/departments/departments-delete.html -- https://apidocs.bitrix24.ru/api-reference/department/department-delete.html
function _M.departments.delete(id) function _M.department.delete(id)
return _M.post('department.delete', { ['ID'] = id }) return _M.post('department.delete', { ['ID'] = id })
end end

View File

@ -20,7 +20,7 @@ end
function _M.user.getlist(order, filter, select, params, start) function _M.user.getlist(order, filter, select, params, start)
select = select or {'*'} select = select or {'*'}
return _M.fetchAllPages(function(startPos) return _M.fetchAllPages(function(startPos)
return _M.post('user.getlist', { return _M.post('user.get', {
['order'] = order, ['order'] = order,
['filter'] = filter, ['filter'] = filter,
['select'] = select, ['select'] = select,
@ -86,17 +86,5 @@ function _M.user.status.get(user_id)
return _M.post('user.status.get', { ['USER_ID'] = user_id }) return _M.post('user.status.get', { ['USER_ID'] = user_id })
end end
--[[
Аватары (user.avatar.*)
--]]
-- https://apidocs.bitrix24.ru/api-reference/user/user-avatar-get.html
function _M.user.avatar.get(user_id, size)
-- size может быть 'small', 'big' или nil (оригинал)
local params = { ['USER_ID'] = user_id }
if size then params['SIZE'] = size end
return _M.post('user.avatar.get', params)
end
return _M return _M

View File

@ -1,18 +1,18 @@
local json = require('cjson') local json = require('cjson')
local log = require('utils.log') local log = require('utils.log')
local departments = require('bitrix.departments') local department = require('bitrix.department')
-- Настройка логирования -- Настройка логирования
log.outfile = 'logs/tests_departments_live_'..os.date('%Y-%m-%d_%H-%M-%S')..'.log' log.outfile = 'logs/tests_department_live_'..os.date('%Y-%m-%d_%H-%M-%S')..'.log'
log.level = 'trace' log.level = 'trace'
log.info("===== СТАРТ ТЕСТИРОВАНИЯ (РЕЖИМ LIVE) =====") log.info("===== СТАРТ ТЕСТИРОВАНИЯ (РЕЖИМ LIVE) =====")
--=== ТЕСТЫ ===-- --=== ТЕСТЫ ===--
local function test_departments_fields() local function test_department_fields()
log.info('--- Тест: Получение справочника полей (fields) ---') log.info('--- Тест: Получение справочника полей (fields) ---')
local result, error_response = departments.departments.fields() local result, error_response = department.department.fields()
if result then if result then
log.info('Тест полей: УСПЕШНО.') log.info('Тест полей: УСПЕШНО.')
@ -23,96 +23,24 @@ local function test_departments_fields()
end end
end end
local function test_departments_add() local function test_department_getlist()
log.info('--- Тест: Создание подразделения (add) ---')
-- Создадим тестовый отдел с уникальным именем
local dept_name = "Test Dept - " .. os.date("%H-%M-%S")
local fields = {
NAME = dept_name,
SORT = 100,
PARENT_ID = 1 -- Родительский отдел (обычно 1 - компания)
}
local result, error_response = departments.departments.add(fields)
if result and result.ID then
log.info(string.format('Тест создания: УСПЕШНО. ID нового отдела: %d', result.ID))
return result.ID -- Возвращаем ID для тестов обновления и удаления
else
log.error('Тест создания: ПРОВАЛЕНО.')
if error_response then log.error(error_response) end
return nil
end
end
local function test_departments_getlist(dept_name)
-- Этот тест запускается после создания отдела, чтобы найти его в списке
if not dept_name then return end
log.info('--- Тест: Получение списка подразделений (getlist) ---') log.info('--- Тест: Получение списка подразделений (getlist) ---')
-- Используем фильтр по имени, чтобы найти наш только что созданный отдел local filter = {}
local filter = {
NAME = dept_name
}
local result_list, error_response = departments.departments.getlist({'NAME'}, filter, {'ID', 'NAME'}, 0)
local result_list, error_response = department.department.getlist({'NAME'}, filter, {'ID', 'NAME'}, 0)
print(json.encode(result_list))
if result_list and #result_list > 0 then if result_list and #result_list > 0 then
log.info(string.format('Тест getlist: УСПЕШНО. Найдено отделов по фильтру: %d', #result_list)) log.info(string.format('Тест getlist: УСПЕШНО. Найдено отделов по фильтру: %d', #result_list))
-- Проверим, что имя первого найденного отдела совпадает с искомым
if result_list[1].NAME == dept_name then
log.debug('Проверка имени: УСПЕШНО. Найден отдел: ' .. result_list[1].NAME)
else
log.warning('Найден отдел, но имя не совпадает с искомым.')
end
else else
log.error('Тест getlist: ПРОВАЛЕНО. Отдел не найден в списке.') log.error('Тест getlist: ПРОВАЛЕНО. Отдел не найден в списке.')
if error_response then log.error(error_response) end if error_response then log.error(error_response) end
end end
end end
local function test_departments_update(new_dept_id)
if not new_dept_id then return end
log.info('--- Тест: Обновление подразделения (update) ---')
local fields = {
NAME = "Updated Test Dept - " .. os.date("%H-%M-%S") -- Меняем имя
}
local result, error_response = departments.departments.update(new_dept_id, fields)
if result and result.result then
log.info('Тест обновления: УСПЕШНО.')
else
log.error('Тест обновления: ПРОВАЛЕНО.')
if error_response then log.error(error_response) end
end
end
local function test_departments_delete(new_dept_id)
if not new_dept_id then return end
log.info('--- Тест: Удаление подразделения (delete) ---')
local result, error_response = departments.departments.delete(new_dept_id)
if result and result.result then
log.info('Тест удаления: УСПЕШНО.')
else
log.error('Тест удаления: ПРОВАЛЕНО.')
if error_response then log.error(error_response) end
end
--=== ЗАПУСК ТЕСТОВ ===-- --=== ЗАПУСК ТЕСТОВ ===--
test_departments_fields() test_department_fields()
local dept_name_for_list = "Test Dept - " .. os.date("%H-%M-%S") -- Сохраняем имя для теста getlist test_department_getlist() -- <-- ЗДЕСЬ ВЫЗОВ getlist
local new_dept_id = test_departments_add()
test_departments_getlist(dept_name_for_list) -- <-- ЗДЕСЬ ВЫЗОВ getlist
test_departments_update(new_dept_id)
test_departments_delete(new_dept_id)
log.info("===== ЗАВЕРШЕНИЕ ТЕСТИРОВАНИЯ =====") log.info("===== ЗАВЕРШЕНИЕ ТЕСТИРОВАНИЯ =====")

View File

@ -1,5 +1,6 @@
local json = require('cjson') local json = require('cjson')
local log = require('utils.log') local log = require('utils.log')
local user = require('bitrix.user')
-- Настройка логирования -- Настройка логирования
log.outfile = 'logs/tests_user_live_'..os.date('%Y-%m-%d_%H-%M-%S')..'.log' log.outfile = 'logs/tests_user_live_'..os.date('%Y-%m-%d_%H-%M-%S')..'.log'
@ -7,8 +8,6 @@ log.level = 'trace'
log.info("===== СТАРТ ТЕСТИРОВАНИЯ (РЕЖИМ LIVE) =====") log.info("===== СТАРТ ТЕСТИРОВАНИЯ (РЕЖИМ LIVE) =====")
-- Подключаем модуль. Настройки подключения берутся из bitrix.api
local user = require('bitrix.user')
-- ID пользователя для тестов. Обычно 1 - это администратор. -- ID пользователя для тестов. Обычно 1 - это администратор.
local test_user_id = 1 local test_user_id = 1
@ -17,10 +16,10 @@ local test_user_id = 1
local function test_user_get() local function test_user_get()
log.info('--- Тест: Получение пользователя (get) ---') log.info('--- Тест: Получение пользователя (get) ---')
local result, error_response = user.get(test_user_id) local result, error_response = user.user.get(test_user_id)
if result and result.users and result.users[1] then if result and result[1] then
local user_data = result.users[1] local user_data = result[1]
log.info(string.format('Тест получения пользователя: УСПЕШНО. Имя: "%s %s"', user_data.NAME or '', user_data.LAST_NAME or '')) log.info(string.format('Тест получения пользователя: УСПЕШНО. Имя: "%s %s"', user_data.NAME or '', user_data.LAST_NAME or ''))
else else
log.error('Тест получения пользователя: ПРОВАЛЕНО.') log.error('Тест получения пользователя: ПРОВАЛЕНО.')
@ -40,11 +39,11 @@ local function test_user_getlist()
EMAIL = '%@%' EMAIL = '%@%'
} }
local result_list, error_response = user.getlist({'LAST_NAME', 'NAME'}, filter, {'ID', 'NAME', 'LAST_NAME', 'EMAIL'}, nil, 0) local result_list, error_response = user.user.getlist({'LAST_NAME', 'NAME'}, filter, {'ID', 'NAME', 'LAST_NAME', 'EMAIL'}, nil, 0)
print(json.encode(result_list))
if result_list and result_list.users and #result_list.users > 0 then if result_list and #result_list > 0 then
log.info(string.format('Тест листинга пользователей: УСПЕШНО. Найдено пользователей: %d', #result_list.users)) log.info(string.format('Тест листинга пользователей: УСПЕШНО. Найдено пользователей: %d', #result_list))
elseif result_list and result_list.users and #result_list.users == 0 then elseif result_list and #result_list == 0 then
log.warning('Тест листинга пользователей: Пользователи не найдены по фильтру.') log.warning('Тест листинга пользователей: Пользователи не найдены по фильтру.')
else else
log.error('Тест листинга пользователей: ПРОВАЛЕНО.') log.error('Тест листинга пользователей: ПРОВАЛЕНО.')
@ -56,7 +55,7 @@ end
local function test_user_current() local function test_user_current()
log.info('--- Тест: Получение текущего пользователя (current) ---') log.info('--- Тест: Получение текущего пользователя (current) ---')
local result, error_response = user.current() local result, error_response = user.user.current()
if result and result.ID then if result and result.ID then
log.info(string.format('Тест текущего пользователя: УСПЕШНО. Вы вошли как: "%s %s"', result.NAME or '', result.LAST_NAME or '')) log.info(string.format('Тест текущего пользователя: УСПЕШНО. Вы вошли как: "%s %s"', result.NAME or '', result.LAST_NAME or ''))
@ -68,26 +67,8 @@ local function test_user_current()
end end
end end
local function test_user_avatar_get()
log.info('--- Тест: Получение аватара пользователя (avatar.get) ---')
local result, error_response = user.avatar.get(test_user_id, 'big') -- Получаем большой аватар
if result and result.result then
log.info('Тест получения аватара: УСПЕШНО.')
-- Результат обычно содержит URL до изображения
log.debug('URL аватара: ' .. tostring(result.result))
else
log.error('Тест получения аватара: ПРОВАЛЕНО.')
if error_response then
log.error('Ответ сервера: ' .. json.encode(error_response))
end
end
end
--=== ЗАПУСК ТЕСТОВ ===-- --=== ЗАПУСК ТЕСТОВ ===--
test_user_get() test_user_get()
test_user_getlist() test_user_getlist()
test_user_current() test_user_current()
test_user_avatar_get()
log.info("===== ЗАВЕРШЕНИЕ ТЕСТИРОВАНИЯ =====") log.info("===== ЗАВЕРШЕНИЕ ТЕСТИРОВАНИЯ =====")