convert_after_mssql.sql
3.07 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
-- Установить свойство IsManyAddressees в служебной записке в False.
update Sungero_Content_EDoc
set MemoIsManyAddr_Docflow_Sungero = 'false'
where Discriminator = '95af409b-83fe-4697-a805-5a86ceec33f5'
and MemoIsManyAddr_Docflow_Sungero IS NULL
-- Синхронизировать единичного адресата в коллекцию адресатов.
if exists(select 1 from INFORMATION_SCHEMA.TABLES where table_name = 'Sungero_Docflow_MemoAddressees')
begin
declare @temp_AddresseesTable table
(
Id int identity(1,1),
DocId int,
AddresseeId int,
DepartmentId int
)
insert into @temp_AddresseesTable
select distinct
doc.Id,
doc.Addressee_Docflow_Sungero,
emp.Department_Company_Sungero
from Sungero_Content_EDoc as doc
left join Sungero_Docflow_MemoAddressees addr on doc.Id = addr.Edoc
left join Sungero_Core_Recipient emp on doc.Addressee_Docflow_Sungero = emp.Id
where doc.Discriminator = '95af409b-83fe-4697-a805-5a86ceec33f5'
and doc.Addressee_Docflow_Sungero is not null
and addr.EDoc is null
-- Дискриминатор свойства-коллекции адресатов служебной записки (5c815151-6faf-4b26-a47a-bd82f68c0c23).
declare @addresseesDiscriminator varchar(36) = '5c815151-6faf-4b26-a47a-bd82f68c0c23'
declare @addresseesNewId int
declare @documentToConvertCount int
declare @MemoAddresseesTableLastId int
-- Подсчет количества новых элементов.
select @documentToConvertCount = COUNT(DocId)
from @temp_AddresseesTable
-- Получение последнего ИД в таблице для свойства-коллекции адресатов служебной записки.
select @MemoAddresseesTableLastId = LastId
from Sungero_System_Ids
where TableName = 'Sungero_Docflow_MemoAddressees'
-- Резервирование id в таблице.
exec Sungero_System_GetNewId 'Sungero_Docflow_MemoAddressees', @addresseesNewId output, @documentToConvertCount
insert into Sungero_Docflow_MemoAddressees
(
[Id],
[Discriminator],
[EDoc],
[Number],
[Addressee],
[Department]
)
select
@MemoAddresseesTableLastId + t.Id,
@addresseesDiscriminator,
t.DocId,
1,
t.AddresseeId,
t.DepartmentId
from @temp_AddresseesTable as t
end
-- Заполнить ManyAddresseesLabel у одноадресных служебных записок.
update doc
set doc.MemoManyAddrLb_Docflow_Sungero = recip.Name
from Sungero_Content_EDoc doc
left join Sungero_Core_Recipient recip
on doc.Addressee_Docflow_Sungero = recip.Id
where doc.MemoIsManyAddr_Docflow_Sungero = 0
and doc.Addressee_Docflow_Sungero is not null
and doc.MemoManyAddrLb_Docflow_Sungero is null
-- Заполнение поля StageBase из значения поля Stage.
if exists(select *
from information_schema.columns
where table_name = 'Sungero_Docflow_RuleStages' and column_name = 'StageBase')
update Sungero_Docflow_RuleStages
set StageBase = Stage
where StageBase is null