Реализация системы логирования для 1С(SQL)

Скорее всего многие сталкивались с ситуациями когда шеф просит выяснить кто сделал изменения в документе в результате которых фирма потеряла деньги. Другая ситуация когда программист пытается доказать пользователю что это он сделал изменения а пользователь в свою очередь говорит, что это несовершенная программа выполнила эти изменения. Бывают ситуации когда необходимо кого-то поймать на воровстве, манипуляции с данными в БД.
4,2 тыс. 1,7 тыс.

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

Я не буду в этой статье говорить о всех недостатках существующей системы аудита в 1С. Она не выдерживает никакой критики. Пользы практически никакой.

В этой статье я хочу рассказать об системе логирования для БД под 1С 7.7.(SQL). Для начала пожалуй стоит остановится на системе идентификации пользователей в среде MSSQL в контексте работы под 1С. Эта статья не про безопасность в среде 1С поэтому просто расскажу про две возможные реализации идентификации пользователей.

Первая реализация-

Создаем линовочную таблицу в которой будет два поля (spid - процесс пользователя ,username - имя пользователя(предпочтительно NT)). При начале работы системы 1С в соответствующей процедуре прописываем процедуру которая будет делать запись в линковочную таблицу о соответствии пользователя к процессу. Таким образом в дальнейшем при обработке триггера мы сможем из этой таблицы по процессу @@spid получить соответствующего ему пользователя.

Вторая реализация-

Меняем в библиотеке bkend.dll строку коннекта заменяя server=%s;uid=%s;pwd=%s; на trusted_connected=yes; Таким образом все пользователи будут входить с Window NT authorization. Это нам дает возможность в триггере идентифицировать пользователя. Нужно сказать что такой способ дает еще ряд преимуществ - например при работе в терминале можно идентифицировать пользователей из Enterprize Managar. Ну и вообще NT безопасность на порядок выше 1С поэтому мне этот способ нравится больше. Правда при этой реализации нужно пользователям не забывать выдавать права к БД на уровне SQL(кстати используя эту технологию можно на качественно другом уровне решить вопросы безопасности в 1С но это пожалуй материал другой статьи). А также не забывать использовать хранимые процедуры типа sp_addalias...

Следующий шаг это реализация собственно самой системы логирования. Реализовать ее можно несколькими способами например прописав модулях документов соответствующие процедуры которые будут делать записи об изменениях. Но эта технология не надежная и неэффективная по ряду причин. По этому остановлюсь на другой технологии. Лог таблица-ы об изменениях будет вестись на основании отработки триггеров.

Рассмотрим следующий пример:

У нас в системе 1С имеется справочник Контрагенты в котором есть реквизит ДатаЗакрытия. Ему соответствует таблица SC125 а реквизиту ДатаЗакрытия соответствует реквизит Sp47. К этому справочнику в силу объективных причин имеет доступ несколько сотрудников и единственного ответственного сделать не получается. Предположим в любой момент времени необходимо иметь информацию о том кто и какие сделал изменения в этом справочнике. Для этого необходимо завести таблицу Copy_ SC125 в которой будут те же самые поля как и в SC125 плюс дополнительные UserName и Datetime. В эту таблицу будут записываться различные версии объектов справочника Контрагенты плюс в дополнительные поля информация о том кто и когда внес эти изменения. После чего необходимо создать триггер который будет вставлять новые записи в таблицу Copy_ SC125.Например для update будет следующий код.

CREATE TRIGGER [LogSC125] ON [dbo].[SC125]
FOR UPDATE
AS
insert into Copy_ SC125 select * ,suser_sname(),getdate() from deleted

Предположим нам необходимо иметь информацию о том кто и когда изменения делал по всем объектам плюс информация по списку измененных реквизитов(не по значениям). В этом случае имеет смысл сделать одну общую таблицу в которой будут поля (ТипИзменений,Пользователь,Время,Таблица,ИзмПоля,ПервичныйКлюч,ПервичныйКлюч1С) - значения этих полей я думаю комментировать излишне. Из триггеров прописанных в таблицах данных в эту таблицу будут попадать записи об изменениях.

insert into log_1s.dbo.ЖурналИзменений_demo1c(ТипИзменений,Пользователь,Время, Таблица,ИзмПоля,ПервичныйКлюч,ПервичныйКлюч1С) values('U',suser_sname(),getdate(),'SC_Валюты',@Fields,@PK,@PK1C)

Возникает вопрос о том трудоемкий ли процесс прописывания триггеров для каждой таблицы? Нисколько! Все триггера можно генерировать автоматически, а соответствия объектов SQL к объектам 1С получать, например, с помощью rainbow. Проблема удаления триггеров объекта при изменении структуры метаданных решается выносом информации об системе триггеров во внешние таблицы и добавлением системы контроля проверки актуальности системы например ПриНачалеРаботыСистемы. Проверка эта и перегенерация при нормальной реализации выполняется доли секунды. Возможно также вести отдельно лог об включении , отключении триггеров но это пожалуй материал не этой статьи. Нужно отметить, что схемы логирования оптимальной для абсолютно любой базы не существует. Для каждой базы должна быть своя схема т.к. не всегда имеет смысл вести полную систему логирования. Кроме этого в полноценной системе логирования должны быть решены вопросы поддержки различных версий MSSQL объектов т.к. структура объектов 1С может меняется.(с соответствующей поддержкой преобразования типов)

P.s. У автора имеется готовое решение прошедшее неоднократное внедрения с реализацией различных схем логирования и различными наборами отчетов. В том числе есть возможность прямо из интерфейса 1С просматривать различные версии объектов с возможностью отката к требуемой версии. Также решен вопрос автоматической перегенерации триггеров при изменении структуры метаданных а также проблемы поддержки различных версий объектов метаданных.

При использовании материалов данной статьи обязательна ссылка на информационный ресурс и автора статьи.

Автор статьи - Сердюк В.И.

Начать дискуссию

За уклонение от исправительных работ будут чаще сажать под стражу

Минюст разработал законопроекты, регулирующие вопрос заключения под стражу осужденных, которые уклоняются от принудительных работ.

Курсы повышения
квалификации

18
Официальное удостоверение с занесением в госреестр Рособрнадзора

«Утренний бухгалтер» № 5608. Будут изменения по имущественным налогам

Законопроект уже внесен в думу.

УСН

⚡ Срочное разъяснение ФНС: как заполнить уведомление о переходе на УСН

В форме 26.2-1 ювелиры должны ставить код налогоплательщика — 4 но можно и 3.

Лучшие спикеры, новый каждый день

Быть бухгалтером хочу, пусть меня научат... или нет. Можно ли стать бухгалтером самому с нуля и что для этого надо знать

Меня на этот пост вдохновил вопрос пользователя в телеграм-канале. Она попросила помощи в заполнении упрощенной отчетности и уточнила — справится ли она сама, если она не бухгалтер? И, правда, а можно ли вести учет и при этом не иметь образования бухгалтера и всему научиться самому.

Иллюстрация: Вера Ревина/Клерк.ру
6
251
Мошенничество

Сотрудник банка отдохнул за границей и обогатился за счет клиентки на 29 млн рублей

Сотрудники управления экономической безопасности и противодействия коррупции МВД по Ростовской области выявили факт многомиллионного мошенничества в особо крупном размере сотрудником банковской организации.

ВЭД

Три главных изменения 2024 года для бухгалтера ВЭД

Продавцы из ЕАЭС начнут платить налоги в российскую казну, бизнес освободят от отчетности по мелким сделкам с зарубежными партнерами, а цифровые активы становятся обычным способом расчета.

Иллюстрация: Вера Ревина/Клерк.ру
1
346
Опытом делятся эксперты-практики, без воды

Обязательную маркировку ювелирных изделий перенесут на 2025 год

Чтобы снизить нагрузку с Пробирной палаты, которая будет ставить клеймо на украшения, Минфин перенесет срок обязательной маркировки на 1 сентября 2025 года.

С 1 мая запустят эксперимент по маркировке моторных масел

Для борьбы с контрафактом на рынке Минпромторгу предложили включить в эксперимент по маркировке не только моторные масла для автомобилей, но и свечи зажигания, детали подвески и рулевого управления.

2
171

Календарь вебинаров для бухгалтера в апреле 2024. Акцент на проверки

Вебинар — простой способ разобраться в любом важном для бухгалтера вопросе. «Клерк» приглашает на вебинары экспертов-практиков, которые понятно и с примерами разберут любую тему. Вы можете задавать спикеру вопросы и он ответит на них в прямом эфире.

Иллюстрация: freepik/freepik
Экспорт

Минпромторг сократит список экспортеров, которые могут получать транспортные субсидии

Изменения затронут только тех, кто занимается экспортом товаров из высокомаржинальных групп.

С 01 апреля 2024 года порог беспошлинного ввоза товаров, возможно, вернется к уровню €200 евро

Но подготовка новых документов не началась.

УК РФ

Опасное производство 2 года работало без лицензии и получило доход 26 млн рублей

В Ставропольском крае перед судом предстанет обвиняемый в незаконном предпринимательстве с извлечением дохода на сумму более 26 млн рублей.

Миникурсы, текстовые и видеоинструкции для бухгалтеров

Обеспечительные меры при ВНП, предварительные обеспечительные меры + защитный лайфхак

Всегда ли налоговики могут наложить обеспечительные меры (арест) на имущество по результатам проверки?

Иллюстрация: Вера Ревина / Клерк.ру
7
137

Кто имеет право работать неполный день

Если у сотрудников есть основания для неполной занятости, работодатель должен установить удобный для работника график и снизить нагрузку.

Календарь вебинаров для бухгалтера в апреле 2024. Платные и бесплатные

Собрали для вас анонсы вебинаров на апрель 2024 года.

Каким числом выставлять счет-фактуру на аванс: бухгалтеры разбираются с формулировками в НК. «Ночной бухгалтер» № 1652

В телеграм-канале «Клерка» бухгалтеры спорили о том, какую дату указать в счет-фактуре на аванс — день получения аванса или любую из последующих пяти дней, которые даны на выставление документа. Истину нашли (вроде).

Иллюстрация: Вера Ревина/Клерк.ру
272
IT-компании

Яндекс запустил линейку нейросетей YandexGPT третьего поколения

Искусственный интеллект нового поколения лучше работает со сложными задачами. Бизнес может самостоятельно дообучить нейростеть.

2
78
Бесплатно с Архив документов

Сколько лет все-таки хранить кадровые документы? Мини-курс

Разбираемся в мини-курсе, какие типы хранения кадровых документов выделяют и какова продолжительность хранения кадровых документов.

Сколько лет все-таки хранить кадровые документы? Мини-курс
НДФЛ

В 2024 году ФНС разошлет уведомления на НДФЛ с процентов по вкладам за 2023 год

В 2024 году вкладчикам впервые необходимо будет уплатить НДФЛ с процентов от банковских вкладов за 2023 год.

Интересные материалы

Перерасчет имущественных налогов будут делать по-новому

Физлица будут направлять в ИФНС заявления на перерасчет налога на имущество, земельного и транспортного, к которому можно приложить документы, а можно и не прикладывать. Налоговики будут рассматривать это заявление 30 дней.