• Paranoid - курс по анонимности и безопасности в сети от команды codeby. Защита персональных данных, анонимность в сети интернет, настройка виртуальных машин, безопасная передача данных, анти форензика и еще много всего полезного. Подробнее ...

История Изменений

Cleric-Lviv

Lotus team
03.01.2008
600
0
#1
Всем привет!
вот хочу замутить мульку. Надо сделать сабформу типа history чтоб в нее записивались дание о редактировании доки кто когда ето делал, может кто имее уже готовий вариант :(
 
S

Sandr

#2
Ну Вы даете.. там 2 поля и 3 строчки собак... а можно и одним полем обойтись...
 

Omh

Lotus team
04.07.2007
2 210
1
#3
Sandr
А если потом надо будет на бекграунде апдетить?
Я бы лучше сразу не стал бы заморачиваться с кампутед полями, а сделал бы связку сабформа + библиотека.
 

Cleric-Lviv

Lotus team
03.01.2008
600
0
#4
Ну Вы даете.. там 2 поля и 3 строчки собак... а можно и одним полем обойтись...
2 поля 3 собаки ето вам просто а мне уви не очень как говорят москва не сразу строилась вот и я не все сразу научусь делать:)

Я бы лучше сразу не стал бы заморачиваться с кампутед полями, а сделал бы связку сабформа + библиотека.
ето как подскажи:)
 
30.05.2006
1 345
11
#5
Ну Вы даете.. там 2 поля и 3 строчки собак... а можно и одним полем обойтись...
Ну, на все @IsDocBeingSaved (или PostSave в LS) отловить и за-журналировать действительно не сложно. Но лишнего много будет. Мне, к примеру, хотелось повторные редактирования одного и того-же юзера объединять - уже усложнение.

А потом клиЭнт потребует, что-б регистрировалось не только кем, но и ЧТО менялось :blink:
 

Cleric-Lviv

Lotus team
03.01.2008
600
0
#6
мне просто надо кто и когда редактировал документ, но как ето сделать уви незнаю

[codebox]
REM {ListSize contains the number of document saves that will be shown in the document};
ListSize := 5;

REM {See if the document is being saved. If not, exit without change.};
@If(IsDocBeingSaved; @True; @Return(SaveHistory));
EditList := SaveHistory;

REM {Document is being saved. Determine the number of the prior save.};
REM {For example, if A is 6, that indicates the document has been saved 6 times and this current save will be the seventh.};
A := @Word(EditList; "-"; 1);

REM {Calculate the current save number, taking into account the number 1-9 are only one character long.};
NEWNUM := @Text(@TextToNumber("0" + @Word(@Implode(A); " "; 1)) + 1);

REM {Build the new edit line(format the date correctly)};
REM {Notice the second parameter on the @Text function. This seldom used};
REM {parameter allows us to automatically format a date/time argument};
REM {In this case, it strips off the seconds from @Now.};
NEWLINE := NEWNUM + "-" + @Text(@Now; "D0T1") + "-" + @UserName; @Trim(@Subset(NEWLINE : EditList; ListSize))
[/codebox]
вот нарил код но чуть не то он показивает когда било последнее изминение:blink:
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
1
#7
В самом простом случае это многозначное Computed поле(с галкой Compute After Validation) и формулой типа:
Код:
@If(@IsDocBeingSaved; @Trim((@UserName + " " + @Text(@Now)) : @ThisValue); @ThisValue)
 

Cleric-Lviv

Lotus team
03.01.2008
600
0
#8
А потом клиЭнт потребует, что-б регистрировалось не только кем, но и ЧТО менялось blink.gif
в 10 только что мне ето предявили.............блин.... сказали чтоб возле юзера которий редактировал било ещо например полеА имеет значение "1" а после имеет значение "2" чтоб ето тоже показивало "било" и "стало"

В самом простом случае это многозначное Computed поле(с галкой Compute After Validation) и формулой типа:
спасибо большое но уви мало:)
 

Omh

Lotus team
04.07.2007
2 210
1
#11
Вот тебе одна моя библиотечка для отслеживаняи полей, можешь посмотреть.
Юзать примерно так:
Form Globals Declarations -> тут аррай нужного размера:
Код:
Dim Watches(3) As DWElem
Form Globals Initialize -> тут сетишь наблюдаемые айтемы:
Код:
Watches(0).ItemName = "Name"
Watches(1).ItemName = "Position"
Watches(2).ItemName = "Env"
Watches(3).ItemName = "UseProjectDelivery"
На PostOpen заполняешь:
Код:
Call DWInit(Doc, Watches)
В нужный момент проверяешь:
Код:
If DWEModified(Doc, Watches, "Name") Then... 'изменилось ли одно значение
If DWModified(Doc, Watches) Then... 'изменилось ли хоть что-то
Апдейтить (обычно на PostSave), так же как и при открытии:
Код:
Call DWInit(Doc, Watches)
А заполнять поля истории - сам :)
 

Вложения

  • 635 байт Просмотры: 41

AmintasVik

New member
13.10.2016
4
0
#13
День добрый.
Подскажите, в аналогичном вопросе...
"Историзм" по отправленным сообщениям и изменениям по документу в виде таблицы (дата создания, дата отправки, текст сообщения, получатель и т.п.)