|
21.10.2014, 18:41 | #1 |
Участник
|
Суть проблемы:
1. Необходимо обеспечить логирование изменений в справочных таблицах (количество будет ограничено настроечной таблицей). 2. Необходимо логировать максимально возможные пути (изменение/добавление/удаление данных руками, кодом). Логов будет немного - причем будет регулярная очистка. 3. От SQL пока откажусь - писать кодеюнит для запросов пока не готов... Хотя возможно придется. Что удалось наковырять: 1. Стандартный Change Log Entry у нас переписан, логирование выполнено кодом в тригерах полей (переписывал подрядчик-внедренец еще на стадии внедрения) 2. Через кодеюнит 1 ApplicationManagement вроде как есть возможность сделать аналог стандартного Change Log Entry, создав свои функции - но пока в этом направлении глухо... (код добавленый в OnGlobalInsert, OnGlobalModify и т.п. не отработал - м.б. change listener такие изменения сходу не тянет?) Может у кого-нибудь есть ссылки на код стандартного функционала? Либо есть знания? Или хоть какие подсказки) Готовым решением естественно поделюсь)) P.S. Пока в статусе "I NEED HELP!!!" - но завтра будет новый день и будем рыть)))
__________________
Как только вы проиграете, все ваши прошлые победы забудут. |
|
21.10.2014, 18:56 | #2 |
Участник
|
В стандарте:
OnGlobalInsert, OnGlobalModify в 1 кодеюните отрабатывают только если изменения делались пользователем через форму. Отчеты, кю, датапорты и тп. никак не связаны с этим, т.е. если через них изменять данные, то это в лог не запишется. Если только в этих отчетах на каждое изменение не прописать вызов соотв. функций из ChangelogManagment. Можно в SQL на триггерах таблиц прописать код, тогда будет все логироваться. В 2008 sql добавлена какая-то возможность логирования, которую можно задать через интерфейс Менеджмент Студио, но это будет влиять на производительность. ЧТобы не ковыряться в том, что вам переписали внедренцы в НАВ - установите демо базу Кронуса.
__________________
MBS Certified Master in Navision Developer |
|
21.10.2014, 19:01 | #3 |
Участник
|
Цитата:
Цитата:
Сообщение от Роман
Отчеты, кю, датапорты и тп. никак не связаны с этим, т.е. если через них изменять данные, то это в лог не запишется. Если только в этих отчетах на каждое изменение не прописать вызов соотв. функций из ChangelogManagment.
Можно в SQL на триггерах таблиц прописать код, тогда будет все логироваться. В 2008 sql добавлена какая-то возможность логирования, которую можно задать через интерфейс Менеджмент Студио, но это будет влиять на производительность. ЧТобы не ковыряться в том, что вам переписали внедренцы в НАВ - установите демо базу Кронуса. Спасибо в виде "+") завтра продолжу дальнейшие изыскания в этом направлении.
__________________
Как только вы проиграете, все ваши прошлые победы забудут. |
|
21.10.2014, 19:16 | #4 |
Участник
|
Цитата:
И не забывайте, что property codeunit 423 SingleInstance = Yes. |
|
22.10.2014, 11:27 | #5 |
Участник
|
Цитата:
Цитата:
Сообщение от AlexB
Если изменения кодом логировать не надо, то тогда остаются изменения, сделанные пользователем: тогда вообще не нужно ничего программировать, настраиваете в Change Log Setup (Table) / Change Log Setup (Field) нужные вам таблицы / поля и тип изменений и всё, логирование производится автоматом.
__________________
Как только вы проиграете, все ваши прошлые победы забудут. |
|
22.10.2014, 13:21 | #6 |
Участник
|
У вас в codeunit 1 небыло до сих пор триггера OnGlobalInsert()? Ничего себе... Попробуйте проставить в дописанном вами триггере OnGlobalInsert() в properties ID = 21. O вообще сравните ID всех триггериов для логирования в вашей ДБ и в голом cronus'e.
|
|
21.10.2014, 20:49 | #7 |
Участник
|
Если изменения кодом логировать не надо, то тогда остаются изменения, сделанные пользователем: тогда вообще не нужно ничего программировать, настраиваете в Change Log Setup (Table) / Change Log Setup (Field) нужные вам таблицы / поля и тип изменений и всё, логирование производится автоматом.
|
|
22.10.2014, 15:46 | #8 |
Участник
|
триггер восстановлен, продолжаю ковыряться дальше)) помогло восстановление ID.
__________________
Как только вы проиграете, все ваши прошлые победы забудут. |
|