|
|
#1 |
|
китайский стажер
|
Нужен отчетик по тому, какие объекты менялись, когда, кем и желательно знать с каким проектом это связано.
Интернет на эту тему молчит (или ищу плохо...). Единственное упоминание: здесь, но я пока не понимаю как он это сделал. Может кто-нибудь даст дельный совет? Спасибо! |
|
|
|
|
#2 |
|
Мрачный тип
|
А он там ничего и не сделал вообще-то ...
Наивный чукотский мальчик из отсюда попытался logging включить на файле пользовательского слоя и с его помощью отследить изменения на этом файле и строить отчет по этим изменениям. Ему невдомек , что файл в хранилище приложения может изменяться не сразу, как нажали кнопку "сохранить". Плюс отсуствие инфы о пользователе, сделавшем изменение, в принципе имеет место быть - менять будет AOS, запущенный под специальной учеткой. Тупиковый вариант, без вариантов. Вот если бы класс TreeNode не был закрыт, то модифицировав его методы по работе с AOT можно было бы вести некое журналирование. Но в нашей ситуации - IMHO нерешаемо
__________________
Мы летаем, кружимся, нагоняем ужасы ... Последний раз редактировалось TasmanianDevil; 17.07.2008 в 08:55. |
|
|
|
|
#3 |
|
Участник
|
Цитата:
каждое изменение объектов будет проходить процедуру checkin/checkout в VSS. В 4ке реализовано не очень хорошо. В 5ке развили эту идею. |
|
|
|
| За это сообщение автора поблагодарили: Qaz Qwerty (1). | |
|
|
#4 |
|
китайский стажер
|
mazzy, спасибо, появился повод посмотреть в сторону VSS... Пока ничего не понятно, но может шеф даст указ разобраться.
Пока получился вот такое текст: X++: UtilElements _UtilElements;
Issi_utilversionwritetrack tmptable;
treenode node;
TimeOfDay TimeFrom, TimeTo;
;
#OCCRetryCount
if (! this.validate())
throw error("");
try
{
// ttsbegin;
if ( DateFrom <= str2date('01-01-1901',123) && DateTo <= str2date('01-01-1901',123))
{
DateFrom = systemdateget();
DateTo = systemdateget();
TimeFrom = timenow() - 360;
TimeTo = timenow();
}
else
{
TimeFrom = str2time('00:00:00');
TimeTo = str2time('23:59:59');
}
while select _utilelements where
((_utilElements.CreatedDate <= DateTo &&
_utilElements.CreatedDate >= DateFrom ) &&
(_utilElements.CreatedTime <= TimeTo &&
_utilElements.CreatedTime >= TimeFrom )) ||
(( _utilElements.ModifiedDate <= DateTo &&
(_utilElements.ModifiedDate >= DateFrom ) &&
(_utilElements.ModifiedTime <= TimeTo &&
_utilElements.ModifiedTime >= TimeFrom ))
)
{
tmptable.RecordType = enum2Value(_utilElements.RecordType);
tmptable.Name = _utilElements.Name;
tmptable.ParentId = utilElements.ParentId;
tmptable.parentName = xUtilElements::parentName(_utilElements);
tmptable.SaveCount = _utilElements.SaveCount;
tmptable.Version = _utilElements.version;
tmptable.BaseVersion = _utilElements.baseVersion;
tmptable.UtilLevel = enum2Value(_utilElements.utilLevel);
node = xUtilElements::getnode(_utilElements);
tmptable.Path = (node)?node.treeNodePath():'';
if ( _utilElements.ModifiedBy == '')
tmptable.UtilModifiedBy = _utilElements.CreatedBy;
else
tmptable.UtilModifiedBy = _utilElements.ModifiedBy;
if ( (_utilElements.ModifiedDate) <= str2date('01-01-1901',123))
tmptable.UtilModifiedDate = _utilElements.CreatedDate;
else tmptable.UtilModifiedDate = _utilElements.ModifiedDate;
if ( (_utilElements.ModifiedTime) == str2time('00:00:00'))
tmptable.UtilModifiedTime = _utilElements.CreatedTime;
else tmptable.UtilModifiedTime = _utilElements.ModifiedTime;
tmptable.UtilRecId = _utilElements.RecId;
tmptable.insert();
} |
|
|
|
|
#5 |
|
Участник
|
Цитата:
Если о DAX4 и выше, то смотрите в сторону VSS.
|
|
|
|
|
#6 |
|
Гость
|
|
|
|
|
|
#7 |
|
MCT
|
Цитата:
А в какую сторону смотреть в DAX3 ??
|
|
|
| Теги |
| ax4.0 |
|
|
|