ВЖС: Внешний Журнал Событий - хранение истории изменения объектов в БД PostgreSQL

Администрирование - Журнал регистрации

Очередная вариация на тему "Кто накосячил".
Позволяет вести подробный протокол что было и что стало в реквизитах документов и элементов справочников.
Основная изюминка - данные хранятся во внешнем хранилище, используя бесплатную СУБД.
В архиве выгрузка конфигурации с необходимыми объектами.

Принцип работы:
С помощью подписок на события все регистрируется и складывается в справочник ВЖС_ЖурналРегистрацииСобытий. Затем фоновое задание, запущенное от имени служебного пользователя забирает все из этого справочника и складывает в PostgreSQL-БД. Отчетом смотрим что на что кто и когда менял.

Краткий инструктаж:
1. Качаем и ставим последний релиз PostgreSQL http://www.postgresql.org/
2. Для Win-платформы качаем последний ODBC-драйвер http://www.postgresql.org/ftp/odbc/versions/msi/
3. Создаем базу данных через PGAdmin
4. Запускаем конфигурацию от имени администратора и настраиваем константы
5. Вносим/правим тестовые данные
6. Запускаем конфигурацию от имени пользователя "ФоновыеЗадания"
7. Ждем минутку
8. В сеансе администратора формируем отчет и, если до этого все было правильно настроено, видим протокол изменений от имени администратора
9. Интегрируем в свои конфы
10. Плюсуем, комментируем :)

 Плюшки:
1. Самая очевидная, ради которой все и затевалось - не пухнет основная база, что особо критично для файлового варианта
2. Записываются не только изменения, но и начальное состояние реквизитов при записи нового объекта
3. В отчете есть возможность отобрать историю изменений отдельных реквизитов, не засоряя вывод всей остальной информацией
4. Возможность врEменной блокировки ведения истории, когда программист точно уверен что не надо протоколировать изменения, достаточно "поднять" флаг приостановки, выполнить свое черное дело и потом не забыть его "опустить"
5. Возможность записи произвольных событий, я например складываю в протокол события печати некоторых документов с указанием имени печатной формы документа
6. В протокол записывается имя клиентского сеанса, что актуально для терминального варианта работы с базой - фиксируется имя клиентского компьютера, с которого был открыт терминальный сеанс
7. Для ссылочных данных записывается не только старое и новое значение, но и текстовое представление ссылочного объекта, что дает возможность увидеть объект именно в том виде, в котором он был во время записи события
8. Разработка абсолютно бесплатная и поставляется AS IS


Для автоматического сброса накопленных изменений можно запустить 1С как службу. Лично я для этих целей использую чудный продукт AnVir Task Manager http://www.anvir.net а точнее его возможность запуска приложений как служб.

зы: на моих базах успешно катается уже полгода, нареканий нет, 1С-база не пухнет и все довольны
ззы: при интеграции в коммерческие продукты авторский "откат" приветствуется :)

Скачать файлы

Наименование Файл Версия Размер
выгрузка ИБ
.dt 67,00Kb
09.11.12
61
.dt 67,00Kb 61 Скачать

См. также

Комментарии
1. Ярослав Радкевич (WKBAPKA) 201 10.11.12 11:41 Сейчас в теме
спасибо за разработку, заинтересовала работа с СУБД, буду колупать...
2. Вадим Скакун (UncleVader) 125 20.11.12 03:54 Сейчас в теме
Народ, кто пишет в личку (Антон Тимченко) - ответить не могу, ибо минус на счету, а пополнять SM лениво, поэтому все вопросы и ответы тут.
Отвечаю на вопрос

затык на месте
Не могу подключиться к базе!!!
{ОбщийМодуль.ВЖС.Модуль(334)}: Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [Microsoft][Диспетчер драйверов ODBC] Источник данных не найден и не указан драйвер, используемый по умолчанию

1. драйвер поставил тот что я линканул? Проверь его название в источнике данных ODBC
2. покажи настройки скриншотом или перечисли текстом в формате "Параметр = Значение"
3. Татьяна Цымбал (citana) 13 20.11.12 15:09 Сейчас в теме
очень полезная штука, проверено еще в 77)))
4. Несынов Михаил (mixa_gr) 53 23.11.12 09:38 Сейчас в теме
Скажите, быстродействие базы сильно упало? И как быть с групповым перепроведением?
5. Вадим Скакун (UncleVader) 125 23.11.12 11:19 Сейчас в теме
Быстродействие специально не мерял, субъективно замедления не ощущается. Единственный момент связан с корректировкой документов с огромными таб. частями, там да - возможна некоторая задержка. По ситуации решается программной приостановкой ведения истории.
В плане группового проведения есть 2 варианта - опять-же либо программно отключать ведение протокола на время проведения, либо не отключать :)
Лично для меня второй вариант более предпочтительный во-первых потому что во время проведения может на самом деле что-то меняться в документах или справочниках, а во-вторых "стоимость" хранения истории во внешней базе совсем невысокая.
6. Вадим Скакун (UncleVader) 125 06.12.12 16:48 Сейчас в теме
И что, так никто и не заюзал?
7. andrey dyak (dyak84) 12.01.13 22:57 Сейчас в теме
Автор скажы пожалуйста как твоя разработка будет работать в очень больших базах даних 500 и более ГБ. Нее будет ли тормозить работу пользователей. Зарание спасибо за ответ
8. Вадим Скакун (UncleVader) 125 12.01.13 23:34 Сейчас в теме
(7)Данная разработка добавляет одинаковую задержку в работе с базой любого размера, т.к. зависит только от интенсивности вносимых изменений пользователями и размер тут ни причем. Ну так... чисто гипотетически, ибо возможности потестить на таких объемах не имею.
Другими словами, если кратко - не должна.
9. Alex Maltsev (malets1980) 28.10.13 13:03 Сейчас в теме
то же самое , не могу подключиться
10. Вадим Скакун (UncleVader) 125 28.10.13 13:08 Сейчас в теме
(9) К чему не удается подключиться?
11. Alex Maltsev (malets1980) 28.10.13 15:28 Сейчас в теме
сообщение как во 2 комментарии точно, драйвер последний ODBC для 64 бит, при запуске фонового задания пишет что не может подключиться к базе
12. Вадим Скакун (UncleVader) 125 28.10.13 15:37 Сейчас в теме
(11) Какая архитектура БД, файловая или клиент-серверная?
13. Alex Maltsev (malets1980) 28.10.13 18:53 Сейчас в теме
(12) UncleVader, Клиент-Сервер на postgres
14. Вадим Скакун (UncleVader) 125 28.10.13 19:10 Сейчас в теме
(13) тогда еще вопросы
1. сервер на линуксе?
2. драйвер установлен на сервере?

вообще надо бы вынести механизмы выгрузки данных на клиентскую сторону, я в своих базах уже так сделал, надо и тут обновить
15. Alex Maltsev (malets1980) 28.10.13 19:14 Сейчас в теме
(14) UncleVader, сервер на win2008, драйвер на сервере
16. Вадим Скакун (UncleVader) 125 28.10.13 19:30 Сейчас в теме
(15) Тогда придется таки обновить публикацию. Как сделаю отпишусь тут в комментариях
17. Alex Maltsev (malets1980) 28.10.13 19:30 Сейчас в теме
Оставьте свое сообщение