В процессе ежедневного ведения учета в любой торговой или производственной компании часто возникает необходимость выяснить, кто из сотрудников скорректировал проведенный документ. Ситуации бывают разными: изменилась итоговая сумма в Расходной накладной, пропала важная позиция номенклатуры из табличной части или сменился контрагент-получатель. В таких случаях перед администратором или ответственным пользователем встают классические вопросы: «Кто изменил?», «Когда это произошло?» и, самое главное, «Что именно было скорректировано?».
В рамках данной статьи мы подробно разберем два основных инструмента платформы 1С, которые позволяют распутать цепочку изменений: стандартный Журнал регистрации и мощный механизм Версионирование объектов. Мы по шагам рассмотрим особенности их настройки и использования в таких популярных конфигурациях, как 1С:УНФ (Управление нашей фирмой) и 1С:УПП (Управление производственным предприятием), а также проанализируем технические риски, связанные с хранением истории изменений.
Когда возникает необходимость расследовать инцидент с изменением документа, первым делом пользователи и начинающие администраторы обращаются к стандартному инструменту платформы — Журналу регистрации. Однако здесь их часто ждет разочарование.
Давайте проанализируем, какую именно информацию предоставляет нам Журнал регистрации при редактировании документа:
Данные.Изменение или Данные.Проведение.Расходную накладную.Главное ограничение Журнала регистрации: он абсолютно «слеп» к внутреннему содержимому объекта на момент записи. Программа честно сообщит вам, что пользователь Иванов перезаписал накладную в 14:32. Но вы никогда не узнаете из журнала, уменьшил ли он цену товара, удалил ли ключевые строки спецификации или просто перевыбрал договор. Вся внутренняя структура документа и история изменения реквизитов остаются за рамками этого инструмента. Именно поэтому для полноценного аудита нам необходим другой инструмент — Версионирование объектов.
Механизм Версионирование объектов специально разработан для детального, построчного и пореквизитного сравнения версий документов и справочников в системе «1С:Предприятие». С его помощью можно наглядно увидеть эволюцию любого документа с момента его создания.
Рассмотрим техническую суть работы данного механизма:
Версии объектов или История изменений), привязываясь к уникальному идентификатору версии, автору изменения и времени сохранения.Давайте выясним, как настроить этот функционал в различных конфигурациях 1С.
В современных решениях на базе управляемых форм и Библиотеки стандартных подсистем (БСП), таких как 1С:УНФ, механизм версионирования встроен по умолчанию. Администратору базы данных не требуется вносить изменения в конфигурацию через конфигуратор — все настройки выполняются непосредственно в пользовательском режиме.
Разберем процесс настройки по шагам:
Компания, далее выберем пункт Еще больше возможностей. В открывшемся окне найдем подраздел Администрирование (или Общие настройки в зависимости от релиза вашей конфигурации) и установим флажок напротив опции Хранить историю изменений (или Версионирование объектов).Настройки. Нажмем на нее, чтобы перейти к списку объектов метаданных, для которых мы можем индивидуально настроить правила фиксации изменений.Расходная накладная.Не версионировать — история изменений документа записываться не будет (режим по умолчанию).Версионировать при записи — новая версия создается при каждом нажатии кнопки «Записать». Это позволяет отслеживать даже промежуточные черновики, но сильно увеличивает объем базы данных.Версионировать при проведении — рекомендуемый режим для документов. В этом случае первая версия запишется только тогда, когда документ будет успешно проведен. Если в дальнейшем пользователь решит изменить уже проведенный документ, программа зафиксирует новую версию при повторном проведении или отмене проведения.Версионировать по умолчанию — использование стандартных настроек системы.Расходная накладная режим Версионировать при проведении и закроем форму настроек.После выполнения этих действий система начнет усердно протоколировать каждое изменение. Чтобы посмотреть историю непосредственно из формы самой Расходной накладной, пользователю достаточно нажать на кнопку Еще в командной панели документа и выбрать пункт История изменений. В открывшемся окне можно будет выбрать две любые версии, нажать кнопку Сравнить и детально проанализировать, кто и что скорректировал. Более того, при необходимости можно нажать кнопку Перейти на версию, и система автоматически перезаполнит документ данными из выбранного архивного состояния.
Конфигурация 1С:УПП 1.3 построена на обычных формах, и хотя в ней также присутствует встроенный механизм версионирования, он имеет ряд существенных архитектурных отличий от современных аналогов.
Рассмотрим, как настроить версионирование в 1С:УПП:
Сервис -> Настройка учета -> Версионирование объектов.Расходная накладная (в УПП данный документ также может называться Реализация товаров и услуг) и установим для него флажок активности, задав режим создания версий (например, При проведении).Важное ограничение архитектуры УПП 1.3, о котором необходимо знать: стандартный механизм версионирования в этой конфигурации предназначен только для просмотра изменений. В отличие от современных конфигураций на управляемых формах, в УПП 1.3 отсутствует штатная кнопка автоматического отката (восстановления) документа к старой версии из XML-архива. Вы сможете открыть отчет, увидеть разницу в табличных частях и реквизитах шапки, но восстанавливать эти данные в документе вам придется вручную. Для автоматизации этой задачи системные администраторы часто прибегают к использованию сторонних внешних обработок, умеющих парсить XML-версии объектов и программно перезаписывать текущие документы.
Включение версионирования для таких массовых документов, как Расходная накладная, сопряжено с серьезными техническими рисками, о которых программисты и администраторы обязаны помнить еще на этапе проектирования системы.
Проанализируем ключевые факторы риска:
Версии объектов очень быстро станет самой тяжелой таблицей в вашей базе данных. Это приведет к быстрому исчерпанию дискового пространства на сервере СУБД.Как минимизировать эти риски и оптимизировать работу системы? Разберем лучшие практики администрирования:
Бессрочно для массовых документов. В настройках версионирования обязательно укажите разумный срок хранения версий — например, За последний месяц или За последние полгода. Как показывает практика, расследование инцидентов с корректировкой накладных происходит «по горячим следам» в течение первых нескольких недель, и хранить детальную историю за прошлые годы не имеет практического смысла.Очистка устаревших версий объектов. Программа будет в фоновом режиме (например, ночью, когда нагрузка на базу минимальна) находить в регистре записи, превышающие установленный вами лимит хранения, и безвозвратно удалять их, освобождая дисковое пространство и поддерживая базу данных в оптимальном состоянии.Таким образом, правильное сочетание Журнала регистрации (для быстрого поиска виновного лица и фиксации самого факта изменений) и детально настроенного Версионирования объектов (для скрупулезного анализа конкретных изменений реквизитов) позволяет построить надежную и производительную систему аудита в программах 1С.