gifts2017

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

Опубликовал UncleVader (UncleVader) в раздел Администрирование - Журнал регистрации

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

Принцип работы:
С помощью подписок на события все регистрируется и складывается в справочник ВЖС_ЖурналРегистрацииСобытий. Затем фоновое задание, запущенное от имени служебного пользователя забирает все из этого справочника и складывает в 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С-база не пухнет и все довольны
ззы: при интеграции в коммерческие продукты авторский "откат" приветствуется :)

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

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

См. также

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

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

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

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