Обновление Журнала Изменений

Привет всем.

Наблюдаю у заказчика странное поведение ЖИ.
Делаю изменение в наблюдаемом объекте, перехожу в ЖИ и не наблюдаю логирования сделанных изменений. Чтобы увидеть обновления журнала приходится либо обновлять основной грид вручную, либо задействовать фильтр по категориям "Разделы" или "Справочники".
Такое поведение предусмотрено? Если предусмотрено, то на какое событие в каком сервисе можно повесить обновление датасета журнала?
Спасибо.

Версия клиента 3.2.0.60.

Нравится

9 комментариев

Добрый день, Сергей!

Как вариант, можете реализовать автоматическое обновление реестра по таймеру или же через системный параметр.

Примеры прикреплены к сообщению.

Спасибо, Татьяна! Попробую.

Татьяна, функции вроде amiAccountsOnExecute для DatabaseLog в скрипте scr_Main нет.

Не хочется использовать таймер — всё-таки обновление требуется производить именно при переходе к разделу, что может происходить как раз в день, так и каждые 10 секунд.

"Працюк Сергей" написал:Татьяна, функции вроде amiAccountsOnExecute для DatabaseLog в скрипте scr_Main нет.
Не хочется использовать таймер — всё-таки обновление требуется производить именно при переходе к разделу, что может происходить как раз в день, так и каждые 10 секунд.

amiAccountsOnExecute "привязан" ко всем кнопкам разделов, достаточно в этой функции сравнить значение переменной WorkspaceUSI с нужным разделом и обновить его.
--------------------------------------------
Лабитек
Центр разработки приложений

Я должен в функцию, обслуживающую "Контрагенты" добавить обновление "Журнала Изменений"?

Да, потому что эта функция вызывается для любой кнопки в меню разделов.
Напишите debugger в начале функции - и в отладчике увидите, что какой бы раздел Вы не выбрали, всегда попадаете в этот обработчик. А дальше, в конце обработчика добавляете что-то такое:

    if (WorkspaceUSI == 'код раздела')
    {
        var CurrentWorkspaceWindow = wndWorkspace.Window;
        if (!CurrentWorkspaceWindow) {
            return;            
        }
        var BaseWorkspaceScript = CurrentWorkspaceWindow.ScriptControl.CodeObject.scr_BaseWorkspace;
        if (!BaseWorkspaceScript) {
            return;
        }
        BaseWorkspaceScript.RefreshWorkspace();
    }

--------------------------------------------
Лабитек
Центр разработки приложений

Спасибо за решение, Валерий! Я правильно понимаю, что у меня нет возможности создать свою функцию для DatabaseLog и привязать её к событию кнопки меню разделов?

Если не секрет, с чем связано такое положение вещей? Как это выглядит в новых версиях?

Можно создать и свой обработчик для кнопки, но лучше обойтись минимальными корректировками существующего.
То, что обработчик один на все кнопки, связано с тем, что логика работы при выборе раздела одинакова, и нет смысла делать на каждую кнопку свою функцию.
В разных версиях Террасофт текст функции выглядит по-разному, но по-прежнему один на все кнопки :)
--------------------------------------------
Лабитек
Центр разработки приложений

Всё, понял. Посмотрел в wnd_Main привязку к amiAccountsOnExecute и до меня дошло. Никакого исключительного отношения к "Контрагентам" эта функция не имеет, она действительно общая для всех пунктов меню, а имя ей присвоено автоматически и его просто никто не стал исправлять.

Думаю, это не только меня собьёт с толку.

Показать все комментарии