departments
This commit is contained in:
parent
826d161eae
commit
ca54af0f13
54
README.md
54
README.md
@ -1877,3 +1877,57 @@ timeman.start(fields)
|
|||||||
```lua
|
```lua
|
||||||
timeman.stop(fields)
|
timeman.stop(fields)
|
||||||
```
|
```
|
||||||
|
|
||||||
|
# Отделы
|
||||||
|
|
||||||
|
```lua
|
||||||
|
local departments = require("bitrix.departments")
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Создать подразделение `departments.add`
|
||||||
|
|
||||||
|
[departments.add](https://apidocs.bitrix24.ru/api-reference/departments/departments-add.html)
|
||||||
|
|
||||||
|
```lua
|
||||||
|
departments.add(fields)
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Изменить подразделение `departments.update`
|
||||||
|
|
||||||
|
[departments.update](https://apidocs.bitrix24.ru/api-reference/departments/departments-update.html)
|
||||||
|
|
||||||
|
```lua
|
||||||
|
departments.update(id, fields)
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Получить подразделение по ID `departments.get`
|
||||||
|
|
||||||
|
[departments.get](https://apidocs.bitrix24.ru/api-reference/departments/departments-get.html)
|
||||||
|
|
||||||
|
```lua
|
||||||
|
departments.get(id)
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Получить список подразделений `departments.getlist`
|
||||||
|
|
||||||
|
[departments.getlist](https://apidocs.bitrix24.ru/api-reference/departments/departments-getlist.html)
|
||||||
|
|
||||||
|
```lua
|
||||||
|
departments.getlist(order, filter, select, start)
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Получить справочник полей подразделения `departments.fields`
|
||||||
|
|
||||||
|
[departments.fields](https://apidocs.bitrix24.ru/api-reference/departments/departments-fields.html)
|
||||||
|
|
||||||
|
```lua
|
||||||
|
departments.fields()
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Удалить подразделение `departments.delete`
|
||||||
|
|
||||||
|
[departments.delete](https://apidocs.bitrix24.ru/api-reference/departments/departments-delete.html)
|
||||||
|
|
||||||
|
```lua
|
||||||
|
departments.delete(id)
|
||||||
|
```
|
||||||
|
|||||||
54
bitrix/department.lua
Normal file
54
bitrix/department.lua
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
local _M = require('bitrix.api')
|
||||||
|
local array = require('utils.array')
|
||||||
|
|
||||||
|
_M.departments = {}
|
||||||
|
|
||||||
|
--[[
|
||||||
|
Департаменты (departments.*)
|
||||||
|
--]]
|
||||||
|
|
||||||
|
-- https://apidocs.bitrix24.ru/api-reference/departments/departments-add.html
|
||||||
|
|
||||||
|
function _M.departments.add(fields)
|
||||||
|
return _M.post('department.add', { ['fields'] = fields })
|
||||||
|
end
|
||||||
|
|
||||||
|
-- https://apidocs.bitrix24.ru/api-reference/departments/departments-update.html
|
||||||
|
|
||||||
|
function _M.departments.update(id, fields)
|
||||||
|
return _M.post('department.update', { ['ID'] = id, ['fields'] = fields })
|
||||||
|
end
|
||||||
|
|
||||||
|
-- https://apidocs.bitrix24.ru/api-reference/departments/departments-get.html
|
||||||
|
|
||||||
|
function _M.departments.get(id)
|
||||||
|
return _M.post('department.get', { ['ID'] = id })
|
||||||
|
end
|
||||||
|
|
||||||
|
-- https://apidocs.bitrix24.ru/api-reference/departments/departments-getlist.html
|
||||||
|
|
||||||
|
function _M.departments.getlist(order, filter, select, start)
|
||||||
|
select = select or {'*'}
|
||||||
|
return _M.fetchAllPages(function(startPos)
|
||||||
|
return _M.post('department.getlist', {
|
||||||
|
['order'] = order,
|
||||||
|
['filter'] = filter,
|
||||||
|
['select'] = select,
|
||||||
|
['start'] = startPos
|
||||||
|
}, true)
|
||||||
|
end, start)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- https://apidocs.bitrix24.ru/api-reference/departments/departments-fields.html
|
||||||
|
|
||||||
|
function _M.departments.fields()
|
||||||
|
return _M.post('department.fields', {})
|
||||||
|
end
|
||||||
|
|
||||||
|
-- https://apidocs.bitrix24.ru/api-reference/departments/departments-delete.html
|
||||||
|
|
||||||
|
function _M.departments.delete(id)
|
||||||
|
return _M.post('department.delete', { ['ID'] = id })
|
||||||
|
end
|
||||||
|
|
||||||
|
return _M
|
||||||
118
test_department.lua
Normal file
118
test_department.lua
Normal file
@ -0,0 +1,118 @@
|
|||||||
|
local json = require('cjson')
|
||||||
|
local log = require('utils.log')
|
||||||
|
local departments = require('bitrix.departments')
|
||||||
|
|
||||||
|
-- Настройка логирования
|
||||||
|
log.outfile = 'logs/tests_departments_live_'..os.date('%Y-%m-%d_%H-%M-%S')..'.log'
|
||||||
|
log.level = 'trace'
|
||||||
|
log.info("===== СТАРТ ТЕСТИРОВАНИЯ (РЕЖИМ LIVE) =====")
|
||||||
|
|
||||||
|
--=== ТЕСТЫ ===--
|
||||||
|
|
||||||
|
local function test_departments_fields()
|
||||||
|
log.info('--- Тест: Получение справочника полей (fields) ---')
|
||||||
|
|
||||||
|
local result, error_response = departments.departments.fields()
|
||||||
|
|
||||||
|
if result then
|
||||||
|
log.info('Тест полей: УСПЕШНО.')
|
||||||
|
log.debug('Пример поля: NAME - ' .. result.NAME)
|
||||||
|
else
|
||||||
|
log.error('Тест полей: ПРОВАЛЕНО.')
|
||||||
|
if error_response then log.error(error_response) end
|
||||||
|
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
|
||||||
|
|
||||||
|
log.info('--- Тест: Получение списка подразделений (getlist) ---')
|
||||||
|
|
||||||
|
-- Используем фильтр по имени, чтобы найти наш только что созданный отдел
|
||||||
|
local filter = {
|
||||||
|
NAME = dept_name
|
||||||
|
}
|
||||||
|
|
||||||
|
local result_list, error_response = departments.departments.getlist({'NAME'}, filter, {'ID', 'NAME'}, 0)
|
||||||
|
|
||||||
|
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)
|
||||||
|
log.info("===== ЗАВЕРШЕНИЕ ТЕСТИРОВАНИЯ =====")
|
||||||
Loading…
x
Reference in New Issue
Block a user