Фильтр на журнал
Модераторы: m0p3e, edward_K, Модераторы
-
- Постоянный гость
- Сообщения: 69
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Москва
- Контактная информация:
Re: Фильтр на журнал
Новое в Support 4.35.18
Журнализация
Обеспечена возможность поиска в журнале по содержимому информации, занесенной в журнал. Поиск возмо-жен не только по полям таблицы X$JOURNAL, но и по memo-полям, в которых содержится информация о произведенных изменениях в базе данных.
Журнализация
Обеспечена возможность поиска в журнале по содержимому информации, занесенной в журнал. Поиск возмо-жен не только по полям таблицы X$JOURNAL, но и по memo-полям, в которых содержится информация о произведенных изменениях в базе данных.
С уважением,
Климин Андрей
Климин Андрей
-
- Местный житель
- Сообщения: 645
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: г.Королев МО ООО "Эффективная Комплексная Автоматизация- СОФТ"
Re: Фильтр на журнал
Лучше бы они в таблицу журнала добавили нужные индексы для поиска..по тем, что есть ничего найти невозможно.
На самое деле нужна прикладная отчетность по журналу, а не системная и не таблицам, а по документам. Типа..какие изменения были в приходных накладных за период...... каким пользователем...По изменненым сказать, кто ввел эти записи первый раз, когда..сколько раз и кто правил и опять НЕ ТАБЛИЦЫ, а ДОКУМЕНТЫ. В принципе написать такое не сложно и код небольшой, но просто Галактика почему то не хочет, а у меня нет такого крутого клиента, чтобы был готов такое оплатить. Видимо не сильно нужно..и так находят. Вот когда будет пользователей человек 100, когда видимо без этого вообще не обойтись. Да и такая огромная тыблица за неделю на 100 пользователей, что ее надо периодически копировать в отдельный файл, а текущую чистить. При этом вся прикладная журнализация должна уметь работать, при необходимости, и с архивом журнала (т.е. сразу со множеством таблиц журнала!). А по полям искать, находящемся в мемо - это для маленькой организации и не нужно, а для большой - будешь сидеть день, чтобы понять всю картину исправлений задним числом в базе.
На самое деле нужна прикладная отчетность по журналу, а не системная и не таблицам, а по документам. Типа..какие изменения были в приходных накладных за период...... каким пользователем...По изменненым сказать, кто ввел эти записи первый раз, когда..сколько раз и кто правил и опять НЕ ТАБЛИЦЫ, а ДОКУМЕНТЫ. В принципе написать такое не сложно и код небольшой, но просто Галактика почему то не хочет, а у меня нет такого крутого клиента, чтобы был готов такое оплатить. Видимо не сильно нужно..и так находят. Вот когда будет пользователей человек 100, когда видимо без этого вообще не обойтись. Да и такая огромная тыблица за неделю на 100 пользователей, что ее надо периодически копировать в отдельный файл, а текущую чистить. При этом вся прикладная журнализация должна уметь работать, при необходимости, и с архивом журнала (т.е. сразу со множеством таблиц журнала!). А по полям искать, находящемся в мемо - это для маленькой организации и не нужно, а для большой - будешь сидеть день, чтобы понять всю картину исправлений задним числом в базе.
Некоммерческое общение в форуме
-
- Постоянный гость
- Сообщения: 89
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Казахсктан Аксуский завод ферросплавов
- Контактная информация:
Re: Фильтр на журнал
2 Автор: Косякин Игорь
Дата: 18-06-03 14:40 MSK+2
В Первасиве есть возможность создать внешние индексы
Дата: 18-06-03 14:40 MSK+2
В Первасиве есть возможность создать внешние индексы
-
- Местный житель
- Сообщения: 645
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: г.Королев МО ООО "Эффективная Комплексная Автоматизация- СОФТ"
Re: Фильтр на журнал
Да она и в ВИПе есть такая возможность Так что создать можно..конечно потом могут быть проблемы с Галактикой (уже писал ранее, что добавление индексов может привести к проблемам с интерфейсами отчетами конвертером).НО дел то не в этом..я о штатной версии. Я чего..всем клиентам буду делать декомпиляцию словаря?
Некоммерческое общение в форуме
-
- Постоянный гость
- Сообщения: 89
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Казахсктан Аксуский завод ферросплавов
- Контактная информация:
Re: Фильтр на журнал
2 Автор: Косякин Игорь
Дата: 18-06-03 14:40 MSK+2
В Первасиве есть возможность создать внешние индексы
Дата: 18-06-03 14:40 MSK+2
В Первасиве есть возможность создать внешние индексы
Re: Фильтр на журнал
Если добавят индексы на журнал, то он будет дольше записываться.
А т.к. запись идет постоянно, а просмотр журнала - это исключение, то малое число индексов, на мой взгляд, вполне оправданно.
А т.к. запись идет постоянно, а просмотр журнала - это исключение, то малое число индексов, на мой взгляд, вполне оправданно.
-
- Местный житель
- Сообщения: 645
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: г.Королев МО ООО "Эффективная Комплексная Автоматизация- СОФТ"
Re: Фильтр на журнал
По-моему, об эффективности журнализации никто не думал. Иначе в журнал не попадали бы просто пустые записи Вы можете просто зайти в интерфес и выйти и уже буду записи в журнале. Так что никакого глубокого смысла там нет. И вообще, исторя написания журнализации идет от корпоративного обмена. Журнал был нужен именно для него и появился для него. Потом уже по нему сделали маленькие интерфейсы просмотра. ПОэтому и индексы там сделаны были для корпоративного обмена - просто отслеживание измененей таблиц. А задача контроля за пользователями при этом вообще не ставилась. Так что отсутствие индексов для контроля - это скорее исторические корни, чем какае-то логика эффективности.
И во вторых,можно не увеличивать число индексов, а просто сделать индексы сегментными. Время добавления такого индекса увеличивается несущественно, польза очевидна.
И во вторых,можно не увеличивать число индексов, а просто сделать индексы сегментными. Время добавления такого индекса увеличивается несущественно, польза очевидна.
Некоммерческое общение в форуме
Re: Фильтр на журнал
Получил, наконец, то, что хотел.
Спасибо всем за помощь, особая благодарность Косякину Игорю.
Если кому интересно, высылаю пример ARD-отчета:
(все лишнее убрал, что бы была видна логика)
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! Ф-ия GetNewFieldValueFromJournal(p1,p2,p3,p4,p5)
! p1 - поле, которое нужно вытащить
! p2 - число - берется из X$FILES.XF$RECORDFIXED для нужной таблицы
! p3 - X$JOURNAL.DATAREC - мемо поле
! p4 - X$JOURNAL.Operation
! p5 - переменная, в которую пишется результат(того же типа, что и поле)
!
! В данном примере, показываю даты проводок
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.Form 'Журнализация'
.ard
.var pNew, pOld: Date;
nr: Comp;
.endvar
.create view t1 as
select DATAREC, Operation, nrec, TABLENREC
from X$JOURNAL
where ((9011==TABLECODE));
.fields
TABLENREC
pNew
pOld
.endfields
.begin
nr := -1;
GetFirst X$JOURNAL;
end.
-----------------------------------------------
| nrec | Дата нов. | Дата старая
-----------------------------------------------
.{WHILE nr <> X$JOURNAL.NREC
.begin
GetNewFieldValueFromJournal(OBOROT.DATOB,566 , DATAREC, Operation, pNew);
GetOldFieldValueFromJournal(OBOROT.DATOB,566 , DATAREC, Operation, pOld);
end.
^ ^ ^
.begin
nr := X$JOURNAL.NREC;
GetNext X$JOURNAL;
end.
.}
.endform
Спасибо всем за помощь, особая благодарность Косякину Игорю.
Если кому интересно, высылаю пример ARD-отчета:
(все лишнее убрал, что бы была видна логика)
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! Ф-ия GetNewFieldValueFromJournal(p1,p2,p3,p4,p5)
! p1 - поле, которое нужно вытащить
! p2 - число - берется из X$FILES.XF$RECORDFIXED для нужной таблицы
! p3 - X$JOURNAL.DATAREC - мемо поле
! p4 - X$JOURNAL.Operation
! p5 - переменная, в которую пишется результат(того же типа, что и поле)
!
! В данном примере, показываю даты проводок
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.Form 'Журнализация'
.ard
.var pNew, pOld: Date;
nr: Comp;
.endvar
.create view t1 as
select DATAREC, Operation, nrec, TABLENREC
from X$JOURNAL
where ((9011==TABLECODE));
.fields
TABLENREC
pNew
pOld
.endfields
.begin
nr := -1;
GetFirst X$JOURNAL;
end.
-----------------------------------------------
| nrec | Дата нов. | Дата старая
-----------------------------------------------
.{WHILE nr <> X$JOURNAL.NREC
.begin
GetNewFieldValueFromJournal(OBOROT.DATOB,566 , DATAREC, Operation, pNew);
GetOldFieldValueFromJournal(OBOROT.DATOB,566 , DATAREC, Operation, pOld);
end.
^ ^ ^
.begin
nr := X$JOURNAL.NREC;
GetNext X$JOURNAL;
end.
.}
.endform
-
- Постоянный обитатель
- Сообщения: 175
- Зарегистрирован: 29 июн 2006, 14:39
- Контактная информация:
Разрешите вернуться к теме... Уже второй день мучаюсь и ничего не могу поделать... Вот кусок кода:
Соотвественно, при выполнении ни одно сообщение не появляется... Просматривается около 4000 тыс. записей, среди которым полно модификаций поля TitleDoc.wStatus, но сообщения Message('!!!') все равно нет!... Подскажите, где я ошибся?....
Код: Выделить всё
_loop X$Journal where ((Word(25043) == X$Journal.TableCode)) {
if (X$Journal.Operation = Word(4)) {
if (not GetOldFieldValueFromJournal(TitleDoc.wStatus, Word(271), X$Journal.DataRec, X$Journal.Operation, wOld)) Message('Old!!!');
if (not GetNewFieldValueFromJournal(TitleDoc.wStatus, Word(271), X$Journal.DataRec, X$Journal.Operation, wNew)) Message('New!!!');
if (wOld <> wNew) Message('!!!');
}
}
Я делала подобный отчет, все работает, тока очень меделенно при большом журнале.
не нашла X$Journal.Operation = Word(4)
X$Journal.Operation = 0 - Добавление
X$Journal.Operation = 1 - Модификация
X$Journal.Operation = 2 - Удаление
Из доки:
GetOldFieldValueFromJournal-
Возвращается значение поля ДО изменения (параметр value). Функция возвращает true, если операция прошла успешно, иначе возвращается false. Аналогично GetNewFieldValueFromJournal, только ПОСЛЕ.
я бы так написала :
_loop X$Journal where ((Word(25043) == X$Journal.TableCode)) {
GetOldFieldValueFromJournal(TitleDoc.wStatus, Word(271), X$Journal.DataRec, X$Journal.Operation, wOld);
GetNewFieldValueFromJournal(TitleDoc.wStatus, Word(271), X$Journal.DataRec, X$Journal.Operation, wNew);
if (wOld <> wNew) Message('!!!');
}
не нашла X$Journal.Operation = Word(4)
X$Journal.Operation = 0 - Добавление
X$Journal.Operation = 1 - Модификация
X$Journal.Operation = 2 - Удаление
Из доки:
GetOldFieldValueFromJournal-
Возвращается значение поля ДО изменения (параметр value). Функция возвращает true, если операция прошла успешно, иначе возвращается false. Аналогично GetNewFieldValueFromJournal, только ПОСЛЕ.
я бы так написала :
_loop X$Journal where ((Word(25043) == X$Journal.TableCode)) {
GetOldFieldValueFromJournal(TitleDoc.wStatus, Word(271), X$Journal.DataRec, X$Journal.Operation, wOld);
GetNewFieldValueFromJournal(TitleDoc.wStatus, Word(271), X$Journal.DataRec, X$Journal.Operation, wNew);
if (wOld <> wNew) Message('!!!');
}
-
- Постоянный обитатель
- Сообщения: 175
- Зарегистрирован: 29 июн 2006, 14:39
- Контактная информация:
И ничего бы не получилось.....я бы так написала :
_loop X$Journal where ((Word(25043) == X$Journal.TableCode)) {
GetOldFieldValueFromJournal(TitleDoc.wStatus, Word(271), X$Journal.DataRec, X$Journal.Operation, wOld);
GetNewFieldValueFromJournal(TitleDoc.wStatus, Word(271), X$Journal.DataRec, X$Journal.Operation, wNew);
if (wOld <> wNew) Message('!!!');
}
-
- Постоянный обитатель
- Сообщения: 175
- Зарегистрирован: 29 июн 2006, 14:39
- Контактная информация:
Не статусов, а операций... Статус (поле X$JOURNAL.STATUS) у всех записей журнала равен 1. А с разными операциями их полно!А в support в журнале точно есть записи модификации с разными значениями статусов?
Просматривается около 4000 тыс. записей, среди которым полно модификаций поля TitleDoc.wStatus, но сообщения Message('!!!') все равно нет!...