Лог измененных документов (программно или интерактивно)| Внешняя компонента для журналирования сохраненных или вновь созданных документов.
Компонента проверена на 25 релизе 1С:Предприятие 7.7. | | Автор статьи: romix | Редакторы: Последняя редакция №7 от 16.10.06 | История URL: http://kb.mista.ru/article.php?id=380 | |
Ключевые слова: перехват, запись, изменение, документ, платформа, журнал, лог, МОД, УРБД
Файл для скачивания:
http://x-romix.narod.ru/vk_log_write_doc.rar
(Скачивать ЛЕВОЙ кнопкой мыши, ~72 килобайта)
Приложена работающая тестовая конфигурация.
Приложен исходный код (компилятор - Delphi 6).
Часто (например, при реализации обмена между информационными базами 1С/не 1С) требуется знать, какие объекты (например, документы 1С) пользователи (или не пользователи, а программисты) изменяли за промежуток времени.
Приведенная компонента перехватывает программное (док.Записать()) или интерактивное сохранение документов.
Также перехватываются действия:
- Создание новых документов
- Пометка на удаление
- Снятие пометки на удаление
- Проведение
- Отмена проведения
- Изменение времени документа
Перехват инициализируется в глобальном модуле 7.7 так:
var vk_log Экспорт;
Перем глИмяФайла Экспорт;
///////////////////////////////////////////////////////////////////////
//Предопределенная процедура 1С
Процедура ПриНачалеРаботыСистемы()
глИмяФайла="c:\vk_log_write_doc.log";
каталог="..\";//Каталог, где лежит внешняя компонента
ЗагрузитьВнешнююКомпоненту(каталог+"vk_log_write_doc.dll");
vk_log=СоздатьОбъект("Addin.vk_log_write_doc");
vk_log.ФайлЖурнала=глИмяФайла;//Имя файла журнала
vk_log.ПерехватЗаписиДокументов();
КонецПроцедуры // ПриНачалеРаботыСистемы
Работающий образец использования внешней компоненты приведен в тестовой конфигурации (папка BASE_V77).
Для первого запуска компоненты требуются права администратора или привилегированного пользователя Windows.
Компонента протестирована только для 25 релиза 1С:Предприятие 7.7.
Под другими релизами использование не рекомендуется и работоспособность не гарантируется, поскольку внутреннее устройство платформы может (или могло) измениться.
Журнал имеет следующий вид:
----------
Объект={"O","0","0","0","0","0"," 12 62193782 "}
Действие=ЗаписьДокументаПрограммно
User=romix
Comp=ROMIX
Время=16.10.2006, 03:34:51
----------
Объект={"O","0","0","0","0","0"," 12 62193782 "}
Действие=Проведение
User=romix
Comp=ROMIX
Время=16.10.2006, 03:34:51
----------
Объект={"O","0","0","0","0","0"," 19 62193921 "}
Действие=НовыйДокумент
User=romix
Comp=ROMIX
Время=16.10.2006, 03:34:56
----------
Объект={"O","0","0","0","0","0"," 19 62193921 "}
Действие=Проведение
User=romix
Comp=ROMIX
Время=16.10.2006, 03:34:56
----------
Объект={"O","0","0","0","0","0"," 19 62193921 "}
Действие=ОтменаПроведения
User=romix
Comp=ROMIX
Время=16.10.2006, 03:35:00
----------
Объект={"O","0","0","0","0","0"," 19 62193921 "}
Действие=УдалениеДокументаПрограммно
User=romix
Comp=ROMIX
Время=16.10.2006, 03:35:01
Объект можно извлечь из журнала при помощи функции ЗначениеИзСтрокиВнутр(). |