Статья: Реализация системы логирования для 1С(SQL)
<p>Скорее всего многие сталкивались с ситуациями когда шеф просит выяснить кто
сделал изменения в документе в результате которых фирма потеряла деньги. Другая
ситуация когда программист пытается доказать пользователю что это он сделал
изменения а пользователь в свою очередь говорит, что это несовершенная программа
выполнила эти изменения. Бывают ситуации когда необходимо кого-то поймать на
воровстве, манипуляции с данными в БД. Иногда просто необходимо получить список
измененных объектов в той последовательности в которой они изменялись. Все
эти ситуации попадают под разряд решений аудита и логирования. </p>
<p>Я не буду в этой статье говорить о всех недостатках существующей системы аудита
в 1С. Она не выдерживает никакой критики. Пользы практически никакой. </p>
<p>В этой статье я хочу рассказать об системе логирования для БД под 1С 7.7.(SQL).
Для начала пожалуй стоит остановится на системе идентификации пользователей
в среде MSSQL в контексте работы под 1С. Эта статья не про безопасность в среде
1С поэтому просто расскажу про две возможные реализации идентификации пользователей. </p>
<p><strong>Первая реализация- </strong></p>
<p>Создаем линовочную таблицу в которой будет два поля (spid - процесс пользователя
,username - имя пользователя(предпочтительно NT)). При начале работы системы
1С в соответствующей процедуре прописываем процедуру которая будет делать запись
в линковочную таблицу о соответствии пользователя к процессу. Таким образом
в дальнейшем при обработке триггера мы сможем из этой таблицы по процессу @@spid
получить соответствующего ему пользователя. </p>
<p><strong>Вторая реализация- </strong></p>
<p>Меняем в библиотеке bkend.dll строку коннекта заменяя server=%s;uid=%s;pwd=%s;
на trusted_connected=yes; Таким образом все пользователи будут входить с Window
NT authorization. Это нам дает возможность в триггере идентифицировать пользователя.
Нужно сказать что такой способ дает еще ряд преимуществ - например при работе
в терминале можно идентифицировать пользователей из Enterprize Managar. Ну
и вообще NT безопасность на порядок выше 1С поэтому мне этот способ нравится
больше. Правда при этой реализации нужно пользователям не забывать выдавать
права к БД на уровне SQL(кстати используя эту технологию можно на качественно
другом уровне решить вопросы безопасности в 1С но это пожалуй материал другой
статьи). А также не забывать использовать хранимые процедуры типа sp_addalias... </p>
<p>Следующий шаг это реализация собственно самой системы логирования. Реализовать
ее можно несколькими способами например прописав модулях документов соответствующие
процедуры которые будут делать записи об изменениях. Но эта технология не надежная
и неэффективная по ряду причин. По этому остановлюсь на другой технологии.
Лог таблица-ы об изменениях будет вестись на основании отработки триггеров.
Читать всю статью: http://www.klerk.ru/soft/1c?8776