| 
			
				|   Независимый форум, посвященный системе БОСС-Кадровик
 и всему, что с ней связано
 
 |  |  
 
	
		| Предыдущая тема :: Следующая тема |  
		| Автор | Сообщение |  
		| tveritin 
 
 
 Зарегистрирован: 26.01.2016
 Сообщения: 198
 Откуда: Санкт-Петербург
 
 |  |  
		| Вернуться к началу |  |  
		|  |  
		| 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
 Сообщения: 198
 Откуда: Санкт-Петербург
 
 | 
			
				|  Добавлено: Пн Июн 07, 2021 17:38    Заголовок сообщения: |   |  
				| 
 |  
				| Спасибо. Действительно, в HR_CUSTOMER нужные значения есть.
 Но, как это связать с работником?
 |  |  
		| Вернуться к началу |  |  
		|  |  
		| tveritin 
 
 
 Зарегистрирован: 26.01.2016
 Сообщения: 198
 Откуда: Санкт-Петербург
 
 | 
			
				|  Добавлено: Пн Июн 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
 
 | 
 |  |  
		| Вернуться к началу |  |  
		|  |  
		|  |  
  
	| 
 
 | Вы не можете начинать темы Вы не можете отвечать на сообщения
 Вы не можете редактировать свои сообщения
 Вы не можете удалять свои сообщения
 Вы не можете голосовать в опросах
 
 |  |