Независимый форум, посвященный системе БОСС-Кадровик и всему, что с ней связано
|
|
Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
tveritin
Зарегистрирован: 26.01.2016 Сообщения: 191 Откуда: Санкт-Петербург
|
|
Вернуться к началу |
|
 |
vviktor
Зарегистрирован: 09.01.2019 Сообщения: 105 Откуда: Пермь
|
Добавлено: Пн Июн 07, 2021 10:36 Заголовок сообщения: |
|
|
картинка 1
Код: |
select * from zrp_acc_anal
select * from HR_CUSTOMER
|
картинка 2
функция вернула дерево подчинённости из таблицы 'Structs'
Код: |
[dbo].[UDF_pr_structs_tree]
|
|
|
Вернуться к началу |
|
 |
tveritin
Зарегистрирован: 26.01.2016 Сообщения: 191 Откуда: Санкт-Петербург
|
Добавлено: Пн Июн 07, 2021 17:38 Заголовок сообщения: |
|
|
Спасибо.
Действительно, в HR_CUSTOMER нужные значения есть.
Но, как это связать с работником? |
|
Вернуться к началу |
|
 |
tveritin
Зарегистрирован: 26.01.2016 Сообщения: 191 Откуда: Санкт-Петербург
|
Добавлено: Пн Июн 07, 2021 18:08 Заголовок сообщения: |
|
|
1. Через structs.cust_id связал.
2. [dbo].[UDF_pr_structs_tree] - не нашел такой функции у себя в базе.
Можете прислать содержимое? |
|
Вернуться к началу |
|
 |
vviktor
Зарегистрирован: 09.01.2019 Сообщения: 105 Откуда: Пермь
|
Добавлено: Ср Июн 09, 2021 09:47 Заголовок сообщения: |
|
|
Код: |
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
--*********************************************************************************************************************************************************************************************
-- ВНИМАНИЕ !!! Функция в первую очередь предназначена для формирования ПРИКАЗОВ
--*********************************************************************************************************************************************************************************************
-- Функция возвращает полный путь до указанного подразделения
-- Возвращается полный путь (перечень) подразделений от указанного до подразделения верхнего уровня
-- Описание параметров:
-- @struct_code - код подразделения из таблицы STRUCTS
-- @separation - разделитель меду названиями подразделений разных уровней. По умолчанию равно '-'
-- @type - способ формирования строки с путем
-- 0 - подразделение 0-го уровня + "искомое" подразделение
-- 1 - перечисляются подразделения в именительном падеже, начиная с верхнего уровня
-- 2 - перечисляются подразделения в именительном падеже, начиная с нижнего уровня
-- 3 - перечисляются подразделения начиная с нижнего уровня, первое название в именительном падеже, остальные - в родительном
--*********************************************************************************************************************************************************************************************
ALTER FUNCTION [dbo].[UDF_pr_tree_name](@struct_code INTEGER, @separation varchar(255) = ' - ' )
RETURNS varchar(2048)
AS
BEGIN
DECLARE @s varchar(255),
@tree_name varchar (2048),
@type integer,
@id_firm integer,
@no_print tinyint
Select @id_firm = id_firm From structs Where struct_code = @struct_code
Select @tree_name = ''
Select @type = Cast([dbo].[pr_global_var] ('PR_FLAG_TREE', @id_firm, default, default, '0') as integer)
if @type = 0 BEGIN
DECLARE Tree_Cursor CURSOR FAST_FORWARD FOR
SELECT Struct_name, no_print FROM
(SELECT structs.Struct_name, structs.struct_lev, structs.no_print
FROM structs structs_root WITH (NOLOCK),
structs WITH (NOLOCK)
WHERE structs.struct_code = @struct_code
AND structs.struct_root = structs_root.struct_code
UNION ALL
SELECT structs_root.Struct_name, structs_root.struct_lev, structs_root.no_print
FROM structs structs_root WITH (NOLOCK),
structs WITH (NOLOCK)
WHERE structs.struct_code = @struct_code
AND structs.struct_root = structs_root.struct_code
AND structs.struct_root <> @struct_code) AS STRUCTS
ORDER BY struct_lev
END
if @type = 1 BEGIN
DECLARE Tree_Cursor CURSOR FAST_FORWARD FOR
SELECT structs.Struct_name
,structs.no_print
FROM tree WITH (NOLOCK),
structs WITH (NOLOCK)
WHERE structs.struct_code = tree.struct_parent
AND tree.struct_code = @struct_code
ORDER BY structs.struct_lev
END
if @type = 2 BEGIN
DECLARE Tree_Cursor CURSOR FAST_FORWARD FOR
SELECT structs.Struct_name
,structs.no_print
FROM tree WITH (NOLOCK),
structs WITH (NOLOCK)
WHERE structs.struct_code = tree.struct_parent
AND tree.struct_code = @struct_code
ORDER BY structs.struct_lev DESC
END
if @type >= 3 BEGIN
DECLARE Tree_Cursor CURSOR FAST_FORWARD FOR
SELECT CASE
WHEN structs.struct_name_R = '' OR structs.struct_name_R IS NULL OR structs.struct_code = @struct_code
OR structs.struct_code = (select top 1 struct_parent from structs WITH (NOLOCK) where struct_code = @struct_code and no_print = 1)
THEN structs.Struct_name
ELSE structs.struct_name_R
END
,structs.no_print
FROM tree WITH (NOLOCK),
structs WITH (NOLOCK)
WHERE structs.struct_code = tree.struct_parent
AND tree.struct_code = @struct_code
ORDER BY structs.struct_lev DESC
END
OPEN Tree_Cursor
FETCH NEXT FROM Tree_Cursor INTO @s, @no_print
if (@@FETCH_STATUS = 0 AND @no_print = 0) Select @tree_name = @s
WHILE @@FETCH_STATUS = 0
BEGIN
FETCH NEXT FROM Tree_Cursor INTO @s, @no_print
if (@@FETCH_STATUS = 0 AND @no_print = 0)
begin
if @tree_name = ''
Select @tree_name = @s
else
Select @tree_name = @tree_name + @separation + @s
end
END
CLOSE Tree_Cursor
DEALLOCATE Tree_Cursor
return LEFT(@tree_name, 2048)
END
|
|
|
Вернуться к началу |
|
 |
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|