Пример скрипта конвертации. Изменился тип данных свойства
<< Click to Display Table of Contents >> Разработка > Элементы разработки > Модуль > Публикация Пример скрипта конвертации. Изменился тип данных свойства |
Предположим, в справочнике «Право подписи» (SignatureSetting) у свойства Основание меняется тип со строки на перечисление. Имя свойства в базе данных – Reason.
В процессе публикации модуля будет удалено свойство типа Строка и создастся свойство типа Перечисление.
Конвертация необходима, чтобы перенести данные сначала из старого поля с типом Строка во временную таблицу (скрипт до публикации), а потом из временной таблицы в новое поле с типом Перечисление (скрипт после публикации). Таким образом исключается потеря данных, и они преобразуются по заданному алгоритму.
Добавьте скрипт До публикации (MS SQL) в модуль «Документооборот» (Docflow):
if exists (select * from information_schema.tables where table_name = 'SignatureSettingsReason')
drop table SignatureSettingsReason
if exists (select * from information_schema.COLUMNS where table_name = 'Sungero_Docflow_SignSettings' and COLUMN_NAME = 'Reason')
and not exists (select * from information_schema.COLUMNS where table_name = 'Sungero_Docflow_SignSettings' and COLUMN_NAME = 'DocumentInfo')
begin
execute('create table SignatureSettingsReason(Id bigint, Reason nvarchar(250))
insert into SignatureSettingsReason
select s.Id, s.Reason from Sungero_Docflow_SignSettings s')
end
Добавьте скрипт После публикации (MS SQL) в модуль «Документооборот» (Docflow):
if exists (select * from information_schema.tables where table_name = 'SignatureSettingsReason')
and exists (select * from information_schema.COLUMNS where table_name = 'Sungero_Docflow_SignSettings'
and COLUMN_NAME = 'DocumentInfo')
and exists (select * from information_schema.COLUMNS where table_name = 'Sungero_Docflow_SignSettings'
and COLUMN_NAME = 'Reason')
begin
update
s
set
Reason =
case
when lower(tmp.Reason) in ('устав', 'charter')
then 'Duties'
else 'Other'
end,
DocumentInfo =
case
when lower(tmp.Reason) in ('устав', 'charter')
then ''
else tmp.Reason
end
from SignatureSettingsReason tmp
join Sungero_Docflow_SignSettings s on tmp.Id = s.Id
drop table SignatureSettingsReason
end
© Компания Directum, 2024 |