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.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 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 })
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 })
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 })
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 {'*'}
return _M.fetchAllPages(function(startPos)
return _M.post('department.getlist', {
return _M.post('department.get', {
['order'] = order,
['filter'] = filter,
['select'] = select,
@ -39,15 +39,15 @@ function _M.departments.getlist(order, filter, select, start)
end, start)
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', {})
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 })
end

View File

@ -20,7 +20,7 @@ end
function _M.user.getlist(order, filter, select, params, start)
select = select or {'*'}
return _M.fetchAllPages(function(startPos)
return _M.post('user.getlist', {
return _M.post('user.get', {
['order'] = order,
['filter'] = filter,
['select'] = select,
@ -86,17 +86,5 @@ function _M.user.status.get(user_id)
return _M.post('user.status.get', { ['USER_ID'] = user_id })
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

View File

@ -1,18 +1,18 @@
local json = require('cjson')
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.info("===== СТАРТ ТЕСТИРОВАНИЯ (РЕЖИМ LIVE) =====")
--=== ТЕСТЫ ===--
local function test_departments_fields()
local function test_department_fields()
log.info('--- Тест: Получение справочника полей (fields) ---')
local result, error_response = departments.departments.fields()
local result, error_response = department.department.fields()
if result then
log.info('Тест полей: УСПЕШНО.')
@ -23,96 +23,24 @@ local function test_departments_fields()
end
end
local function test_departments_add()
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
local function test_department_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
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
log.error('Тест getlist: ПРОВАЛЕНО. Отдел не найден в списке.')
if error_response then log.error(error_response) 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()
local dept_name_for_list = "Test Dept - " .. os.date("%H-%M-%S") -- Сохраняем имя для теста 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)
test_department_fields()
test_department_getlist() -- <-- ЗДЕСЬ ВЫЗОВ getlist
log.info("===== ЗАВЕРШЕНИЕ ТЕСТИРОВАНИЯ =====")

View File

@ -1,5 +1,6 @@
local json = require('cjson')
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'
@ -7,8 +8,6 @@ log.level = 'trace'
log.info("===== СТАРТ ТЕСТИРОВАНИЯ (РЕЖИМ LIVE) =====")
-- Подключаем модуль. Настройки подключения берутся из bitrix.api
local user = require('bitrix.user')
-- ID пользователя для тестов. Обычно 1 - это администратор.
local test_user_id = 1
@ -17,10 +16,10 @@ local test_user_id = 1
local function test_user_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
local user_data = result.users[1]
if result and result[1] then
local user_data = result[1]
log.info(string.format('Тест получения пользователя: УСПЕШНО. Имя: "%s %s"', user_data.NAME or '', user_data.LAST_NAME or ''))
else
log.error('Тест получения пользователя: ПРОВАЛЕНО.')
@ -37,14 +36,14 @@ local function test_user_getlist()
-- Фильтр: активные пользователи, у которых есть email
local filter = {
ACTIVE = 'Y',
EMAIL = '%@%'
EMAIL = '%@%'
}
local result_list, error_response = user.getlist({'LAST_NAME', 'NAME'}, filter, {'ID', 'NAME', 'LAST_NAME', 'EMAIL'}, nil, 0)
if result_list and result_list.users and #result_list.users > 0 then
log.info(string.format('Тест листинга пользователей: УСПЕШНО. Найдено пользователей: %d', #result_list.users))
elseif result_list and result_list.users and #result_list.users == 0 then
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 > 0 then
log.info(string.format('Тест листинга пользователей: УСПЕШНО. Найдено пользователей: %d', #result_list))
elseif result_list and #result_list == 0 then
log.warning('Тест листинга пользователей: Пользователи не найдены по фильтру.')
else
log.error('Тест листинга пользователей: ПРОВАЛЕНО.')
@ -56,7 +55,7 @@ end
local function test_user_current()
log.info('--- Тест: Получение текущего пользователя (current) ---')
local result, error_response = user.current()
local result, error_response = user.user.current()
if result and result.ID then
log.info(string.format('Тест текущего пользователя: УСПЕШНО. Вы вошли как: "%s %s"', result.NAME or '', result.LAST_NAME or ''))
@ -68,26 +67,8 @@ local function test_user_current()
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_getlist()
test_user_current()
test_user_avatar_get()
log.info("===== ЗАВЕРШЕНИЕ ТЕСТИРОВАНИЯ =====")