Имя: Пароль:
1C
1C 7.7
v7: Помогите написать триггер
,
0 v4442
 
21.01.12
16:30
Помогите новичку написать триггер.
В файле УРБД _1SUPDTS нужно удалять в соответствии значению поля документа.
В документе есть поле, по котором выбирается значение и по этому значению нужно пересылать документ в соответствующую распределенную базу.
Сразу по учебному коду есть проблемы.
CREATE TRIGGER URBD  ON dbo._1SUPDTS
   FOR   INSERT
 AS
BEGIN
   DECLARE
          @DBSign  char(3)
   SELECT @DBSign = i.DBSign
      FROM inserted i
   IF (@DBSIGN ='SS2')
          begin
              rollback
          end
END

Удалятся записи со значением  SS1, SS2  поля DBSign,
SS3, SS4 …. Не удаляются.
Спец напишет  процедуру наверно за 5 мин.
Готов заплатить разумную цену за работающую процедуру
1 v4442
 
21.01.12
17:12
Up
2 Rie
 
21.01.12
17:27
(0) Что-то я не понял - а где ты что удаляешь? Да и вообще несколько странный код...
3 Рэйв
 
21.01.12
17:31
разумный совет.Бесплатно.
Ты откуда то не оттуда зпшел на решение своей задачи.
4 v4442
 
21.01.12
17:31
(2) Удаляю строку из таблицы _1SUPDTS, на sql.
Создал триггер в таблиице с кодом (0)
5 v4442
 
21.01.12
17:32
(3) какие предложения есть?
6 v4442
 
21.01.12
17:35
Ищу решения на
http://www.sql.ru/forum/afsearch.aspx?s=CREATE+TRIGGER&submit=%CD%E0%E9%F2%E8&bid=1
Пока не нашел :(
7 Rie
 
21.01.12
17:38
(4) Наверное, в (0) имелось в виду
SET @DBSIGN = (SELECT DBSIGN FROM INSERTED)
8 Rie
 
21.01.12
17:39
+(7) Но я так и не понял, что тебе надо удалить.
9 v4442
 
21.01.12
17:41
(7) спасибо поробую
(8) нужно удалять запись в таблице
10 Rie
 
21.01.12
17:45
(9) Ты бы задачу сформулировал по-человечески. А то я тупой, телетяпией не страдаю, и так и не понял - что за строку ты собрался удалять из _1SUPDTS при вставке другой строки.
11 v4442
 
21.01.12
17:53
(10) При изменении документа в центральной базе , в таблице _1SUPDTS
создаются записи, по которой данный документ мигрирует в распреленные базу. У документа признак миграции стоит во все базы . Нужно анализировать поле ТТТ в документе и по значению его , создавать запись не для всех распределенных баз, а анализировать поле NNN и по его значение создавать нужную запись.
12 Rie
 
21.01.12
17:56
(11) А просто исключить эту базу из списка баз, в которые идёт миграция документа - религия не позволяет?
Ну и наконец, твой триггер сработает при любой вставке в _1SUPDTS, не только для данного документа. Наверное, это неправильно?
13 v4442
 
21.01.12
17:58
(12) Базы все нужны, как раз и нужна такая логика, чтоб мигрировали документы по адресантам.
14 Rie
 
21.01.12
18:00
(13)
"Как хотел бы я покрасить
Бакенбарды в цвет зелёный,
В руки веер взять побольше,
Чтобы их никто не видел"
(c) Л.Кэррол

У данного документа (и только у него) в Миграция не включай в список баз ту, куда ему нельзя мигрировать - и наступит счастье.
А триггер твой - всё равно имеет хороший шанс быстро погибнуть при первой же реструктуризации базы.
15 v4442
 
21.01.12
18:01
(12) когда заработает код (0), буду анализировать поле  typeid
в таблице _1SUPDTS
16 v4442
 
21.01.12
18:02
(14) Триггер не гибнет.
17 Rie
 
21.01.12
18:04
(15) А светлая идея - воспользоваться штатным механизмом - почему не нравится?
18 v4442
 
21.01.12
18:04
http://www.asd-dnepr.com/urbd/index1.html

Таблица, в которой буферизируются изменения - _1SUPDTS. Очень полезная таблица,применять ее можно в задачах, лежащих за областью применения УРБД. Например, одно из моих решений в области аналитических систем для пополнения своей базы данных из базы 1С пользуется именно этой таблицей. В базе-источнике 1С заведена фиктивная периферийная база данных,изменения, которые отражены в этой таблице, обрабатываются уже моим механизмом, для которого важно иметь информацию об измененных с последнего импорта данных объектах.
19 v4442
 
21.01.12
18:06
(15) как можно штатными средствами это сделать? это 77, а не v8
20 Rie
 
21.01.12
18:10
(19) В 7.7 на закладке Миграция у документа поле "Дополнительно" видишь? Вот это оно (список баз, куда мигрировать - при выбранном переключателе "Место создания и центр").
Кроме того, можно отключить автоматическую регистрацию измерений и включать/отключать её в нужный момент программно.
21 v4442
 
21.01.12
18:13
Документ мигрирует во все базы, но нужно по одному полю данного документа выбирать куда конкретный документ данного виду будет мигрировать.
22 Rie
 
21.01.12
18:17
(21) Хм... А в (0) написано нечто совсем иное...
Так исправленный код заработал?
23 v4442
 
21.01.12
18:18
(22) Пока выгружаю - загружаю базы.
24 v4442
 
21.01.12
19:44
(7) результат тот же
с даным триггером :(

CREATE TRIGGER URBD ON dbo._1SUPDTS
    AFTER INSERT
 AS
BEGIN

  DECLARE @DBSign  char(3),
          @TYPEID  INT
          SET @DBSIGN = (SELECT DBSIGN FROM INSERTED)

   IF (@DBSIGN ='SS2')
    rollback

END
25 rs_trade
 
21.01.12
19:59
(0) контакты в личке. за денежку легко забацаю любой каприз.
26 v4442
 
21.01.12
20:04
(25) скоко ?
27 rs_trade
 
21.01.12
20:05
(26) пиши в аську. возможно договоримся.
28 v4442
 
21.01.12
20:38
(27)написал в аську
29 rs_trade
 
21.01.12
21:54
(28) мало написал. пеши исчо. только завтра.