Коллеги, Помоги разобраться!
Я создал такой триггер
|CREATE TRIGGER SpyForUzvwer |ON $Документ.Реализация |AFTER INSERT, UPDATE |AS | |SET NOCOUNT ON | |INSERT INTO $Справочник.РегистрацияДокументовДляВыгрузки |(ID, | DESCR, | ISMARK, | VERSTAMP, | $Справочник.РегистрацияДокументовДляВыгрузки.ДатаИзменения, | $Справочник.РегистрацияДокументовДляВыгрузки.ДатаДок) |SELECT (SELECT RIGHT(' ' + RTRIM(CAST(CASE WHEN MAX(Табл.Номер) IS NULL THEN 0 ELSE MAX(Табл.Номер) END + 1 AS varchar(6))) + | (SELECT DBSIGN from _1SSYSTEM), 9) FROM | (SELECT REPLACE(ID, (SELECT DBSIGN from _1SSYSTEM), '') AS Номер FROM $Справочник.РегистрацияДокументовДляВыгрузки) AS Табл), | Инсерт.IDDOC, | 0, | 0, | Инсерт.ДатаИзменения, | Инсерт.ДатаДокумента |FROM (SELECT REPLACE(Инсерт.IDDOC, ' ', '_') AS IDDOC, | GetDate() AS ДатаИзменения, | CAST(LEFT(Жур.DATE_TIME_IDDOC, 8) AS DATETIME) AS ДатаДокумента | FROM INSERTED AS Инсерт | INNER JOIN _1SjOURN AS Жур ON Инсерт.IDDOC = Жур.IDDOC | LEFT OUTER JOIN $Справочник.РегистрацияДокументовДляВыгрузки AS Спр ON | $Спр.ДатаИзменения = GetDate() | AND $Спр.ДатаДок = CAST(LEFT(Жур.DATE_TIME_IDDOC, 8) AS DATETIME) | AND REPLACE(Инсерт.IDDOC, ' ', '_') = Спр.DESCR | WHERE NOT ($Спр.ДатаИзменения = GetDate() | AND $Спр.ДатаДок = CAST(LEFT(Жур.DATE_TIME_IDDOC, 8) AS DATETIME) | AND REPLACE(Инсерт.IDDOC, ' ', '_') = Спр.DESCR) | |) AS Инсерт |
Но у меня возникли несколько проблем: 1) Как преобразовать число в шестнадцатиричную систему счисления? Или может быть можно получить новый ID какой либо функцией непосредственно в SQL? Это нужно для создания нового элемента. Сейчас это делается такой вот функцией:
SELECT (SELECT RIGHT(' ' + RTRIM(CAST(CASE WHEN MAX(Табл.Номер) IS NULL THEN 0 ELSE MAX(Табл.Номер) END + 1 AS varchar(6))) + | (SELECT DBSIGN from _1SSYSTEM), 9) FROM | (SELECT REPLACE(ID, (SELECT DBSIGN from _1SSYSTEM), '') AS Номер FROM $Справочник.РегистрацияДокументовДляВыгрузки) AS Табл),
Но так он получает следующий по порядку номер + код базы.
2) Скажите УРИБ будет ли корректно работать при прямом создании элемента?
3) Я из триггера создаю новый элемент справочника - он прекрасносоздается, но при попытке вручную его отредактировать пишет, что запись заблокирована.
|