История данных. Кто изменил справочник или документ в базе? 1с версия данных объекта

Версионирование в 1С:Підприємство ➾ История изменений объектов ➾ Как настроить версионирование объектов в 1С:ПІдприємство? ➾ Что такое версионирование? Настройка вариантов, роли, механизм записи версий и др.

Представьте ситуацию: вы - менеджер по продажам. Вы сформировали заказ покупателя, по которому должны сделать отгрузку товара. Сформировали документ реализации и обнаружили, что данные в нем не совпадают с заказом покупателя. Чтобы узнать, кем, когда и какие изменения были внесены в документ, в конфигурациях "1С:ПІдприємство 8" существует механизм версионирования.

Версионирование - это хранение истории изменений объектов. В отличие от журнала регистрации, кроме хранения истории о том, кто, когда и какой объект изменил, механизм версионирования позволяет администратору системы увидеть конкретные изменения, которые внесли пользователи.

Система позволяет просматривать любую версию объекта или сравнивать любые версии объекта между собой. Для работы с историей изменений объектов необходимо выполнить предварительную настройку их версионирования. Настройку и просмотр истории версий выполняет администратор системы.


Как настроить версионирование объектов?

На данный момент механизм версионирования доступен во многих типовых, самых распространенных конфигурациях, например таких как:

Настройку версионирования выполняет Администратор системы с полными правами.

Откройте закладку "Версионирование" и поставьте галочку "Использовать версионирование объектов":

Нажмите на "Настройка версионирования объектов..."

При настройке версионирования для каждого типа документов и справочников можно указать:

  • Не версионировать - значение установлено всем объектам по умолчанию;
  • Версионировать - значение используется для настройки справочников и документов;
  • Версионировать при проведении - значение используется только для документов.

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

Если у документа установлен режим Версионировать при проведении, то первая версия документа будет записана в историю только после первого проведения документа. Впоследствии версии документа будут записываться при каждой записи проведенного документа. Режим позволяет не создавать версии новых и не заполненных окончательно пользователем документов, чтобы не увеличивать размер ИБ. Рекомендуется применять эту настройку для всех документов.

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

Чтобы просмотреть историю изменений объектов, откройте Сервис/История изменений объектов. Команда доступна только администратору системы и только для тех объектов, у которых настроено версионирование. В открывшейся форме выберите объект (в примере это Заказ покупателя), выделите версии данного объекта, которые нужно сравнить, нажмите кнопку "Сравнить версии".

Эта команда сформирует Отчет по изменениям версий объекта (нажмите на изображение, чтобы увеличить):

«Автоматизация бизнеса:История версий » – это комплекс дополнений к типовым конфигурациям на базе “1С:Предприятие 8”, предназначенный для хранения истории изменений справочников и документов, анализа изменений с точностью до значения реквизитов и возможностью для отката данных до выбранной версии объекта.

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

История версий легко может быть интегрирована в любую конфигурацию на базе “1С:Предприятие 8.x”. При объединении не требуется вносить изменения в объекты исходной конфигурации.

Что дает система:

РУКОВОДИТЕЛЮ – ПОВЫШЕНИЕ КОНТРОЛЯ ЗА РАБОТОЙ ПОЛЬЗОВАТЕЛЕЙ:

    простота и удобство мониторинга изменений вносимых в систему;

    возможность просмотра, какие именно изменения были внесены в документы «задним числом»;

    возможность отслеживать объем вносимой информации в систему каждым из пользователей;

ПОЛЬЗОВАТЕЛЯМ – ПОВЫШЕНИЕ УДОБСТВА РАБОТЫ С СИСТЕМОЙ:

    возможность просмотра истории изменений по интересующему объекту;

    возможность работы с предыдущими версиями объектов;

    возможность восстановления («отката») объекта до выбранной версии;

Основные возможности:

    хранение истории значений любого документа или справочника (реквизиты шапки, табличных частей, автор изменений, дата и время изменений);

    наглядный просмотр изменений, каждой версии в графическом виде;

    возможность отката до любой версии объекта;

    возможность удаления ненужных версий объектов (ограничена правами доступа);

    возможность просмотра изменений объектов с отборами: по автору, виду объекта, времени внесения изменений;

    возможность настройки списка объектов требующих регистрации в системе без изменения конфигурации;

    быстрый переход к просмотру истории изменений из любого объекта системы;

    сервисные функции по работе с данными об изменениях: архивирование изменений за выбранный период и очистка изменений за выбранный период по указанным видам объектов;

Технические особенности:

    возможность быстрой интеграции с любой конфигурацией на базе “1С:Предприятие 8.x” (до 8.3.6.x), без внесения изменений в объекты основной конфигурации; (интеграция занимает не более 5-ти минут)

    при использовании «Автоматизация бизнеса:История версий» в базе данных хранится информация только об изменениях реквизитов объектов, что НЕ приводит к значительному росту базы данных и замедлению работы пользователей;

    хранение изменений в системе производится в сжатом виде, что незначительно сказывается на времени формирования отчетов, но существенно сокращает требуемый объем памяти;

    система поддерживает работу с распределенными базами данных;

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

«Автоматизация Бизнеса: История версий» является дополнением к любым типовым конфигурациям 8.x: «Управление торговлей ред. 10.3», «Управление торговлей ред. 11» и «Управление производственным предприятием ред. 1.3», и т.д. Данный продукт не содержит скрытых участков кода.

Системные требования:

Дополнительные сведения:

  • Если программа не работает на вашем релизе типовой конфигарации, то мы ее доработаем для вас бесплатно.
  • Для программы выпускаются регулярные бесплатные обновления.
  • Код программы АБ:История версий открытый
  • Модуль предоставляется под одну заявленную вами конфигурацию (платформу). Цена модуля от количества рабочих мест не зависит.
  • При покупке программы предоставляется бесплатная техподдержка на 12 мес.
  • Успановка программы производится либо самостоятельно пользователем, либо специалистами компании Автоматизация бизнеса за дополнительную плату. При покупке программы необходимо заполнить и отправить регистрационную анкету, которую пришлют с дистрибутивом программы.

В «1С:Бухгалтерии 8» (ред. 3.0), начиная с версии 3.0.35, реализован механизм версионирования объектов, с помощью которого можно отслеживать историю изменений документов и справочников.

Версионированием называется хранение истории изменений объектов. В отличие от журнала регистрации, который может хранить только историю о том, кто, когда и какой объект изменил, механизм версионирования позволяет пользователю с правами администратора:

  • увидеть конкретные изменения, которые внесли те или иные пользователи;
  • просматривать любую версию объекта;
  • сравнивать любые версии объекта между собой;
  • вернуться к какой-либо предыдущей версии объекта, которая была наиболее полной или более правильной в отличие от своего последнего состояния.

Использование версионирования особенно актуально на начальном этапе внедрения программы, когда объемы информации небольшие, а исполнители совершают много ошибок (например, вводят лишнюю информацию или очищают наименование или значение какого-то реквизита внутри объекта).

Сохраненная история изменений объектов позволит привести справочники и документы в порядок, а также поможет пользователям проанализировать последовательность своих действий, чтобы в последующей работе не допускать типичных ошибок.

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

Объекты версионирования

Возможность хранения версий поддерживаются для справочников и документов, относящихся к следующим разделам учетной системы:

  • Банк и касса;
  • Продажи;
  • Покупки;
  • Склад;
  • Производство;
  • ОС и НМА;
  • Зарплата и кадры.

Если для выбранного справочника или документа версионирование включено, в его форме будет доступна команда История изменений (рис. 1).

Рис. 1. Команда История изменений в форме элемента справочника.

По этой команде открывается список версий объекта (рис. 2).

Рис. 2. История изменений объекта.

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

  • Кто изменил объект?
  • Когда произошли изменения?
  • Что было изменено в объекте?

В списке выводится следующая информация:

  • - порядковый номер версии, версии перечисляются по убыванию; номеров, самая первая версия находится внизу списка;
  • Автор изменений - пользователь, который редактировал объект;
  • Дата - дата и время редактирования;
  • Комментарий - в этом поле можно ввести подробную информацию по поводу конкретной версии. Программа автоматически заполняет это поле, например, при переходе на другую версию.

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

Используя соответствующие кнопки, в форме списка доступны следующие действия:

  • Открыть версию - просмотр отчета о состоянии объекта на интересующий момент времени;
  • Сравнить версии - просмотр отчета по изменению состояния двух или более предварительно выделенных версий в списке (отчет покажет, какие именно реквизиты отличаются);
  • Перейти на версию - возврат к одной из предыдущих версий объекта, которую необходимо предварительно выделить (изменения, внесенные после сохранения этой версии, будут отменены).

Обращаем ваше внимание, что при удалении объекта его история также удаляется, поэтому в этой ситуации версионирование не поможет.

Настройки хранения версий

Для ведения истории изменений объектов необходимо выбрать команду Поддержка и обслуживание из раздела Администрирование и удостовериться в том, что флаг Версионирование объектов включен (рис. 3).

Рис. 3. Механизм версионирования объектов в составе раздела Администрирование .

Рис. 4. Настройки версионирования объектов.

В форме Версионирование объектов выводится список из следующих реквизитов:

  • Объект - список объектов программы в виде дерева с группировкой по типам объектов;
  • Вариант версионирования - выбранный вариант версионирования;
  • Срок хранения версий - выбранный срок хранения версий.

Для выбора варианта версионирования необходимо выбрать один или несколько объектов, затем нажать на кнопку Установить вариант версионирования. Из выпадающего списка выбирается нужный вариант версионирования для каждого типа документов и справочников:

  • Не версионировать - история версий объекта не ведется;
  • Версионировать при записи - новая запись заносится в историю версий каждый раз при изменении (или создании нового) справочника или документа;
  • - вариант применим только для документов, для которых разрешено проведение. Первая версия документа будет записана в историю только после первого проведения документа, впоследствии версии документа будут записываться при каждой записи проведенного документа. Эта настройка не позволяет создавать версии новых не заполненных окончательно документов, которые приводят к увеличению объема хранимой в программе информации;
  • Версионировать при старте - этот вариант применим только для бизнес-процессов. Первая версия бизнес-процесса будет записана только после его старта. Режим позволяет не создавать лишние версии бизнес-процессов в то время, пока их подготавливают к запуску;
  • По умолчанию - установить рекомендуемые настройки (для справочников - Не версионировать , для документов - Версионировать при проведении ).

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

Еще раз обращаем ваше внимание, что версионирование большого количества объектов приводит к увеличению объема хранимой в программе информации, что может существенно замедлить работу программы, поэтому рекомендуется использовать эту возможность избирательно.

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

  • За последнюю неделю;
  • За последний месяц;
  • За последние три месяца;
  • За последние шесть месяцев;
  • За последний год;
  • Бессрочно.

Команды Установить вариант версионирования и Установить срок хранения версий также можно найти в меню Еще или в контекстном меню, вызываемом правой кнопкой мыши.

В поле Всего устаревших версий выдается информация о количестве и объеме устаревших версий в программе. Чтобы удалить устаревшие версии, необходимо нажать кнопку Очистить.

Для того, чтобы устаревшие версии удалялись автоматически, необходимо включить соответствующий флаг и перейти по гиперссылке Настроить расписание (рис. 5). Настроенное расписание будет выводиться в нижней части окна.

Рис. 5. Настройка регламентного задания по удалению устаревших версий.

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

Версионирование представляет собой опцию, с помощью которой пользователь может легко установить, кто и когда изменил находящийся в базе документ, а также какие именно изменения имели место. Платформа 1С:Предприятие 8 имеет сходную опцию – журнал регистрации, однако эта опция не позволяет выяснить характер изменений, журнал регистраций позволяет только узнать, когда был изменен документ и какой пользователь внес изменения.
Механизм версионирования позволяет хранить не только даты и автора изменений, но и историю изменений документа, опция позволяет просматривать различные версии состояния одного и того же документа. Чтобы использовать данную опцию, необходимо предварительно провести настройку версионирования объектов. Как настройку, так и просмотр всех состояний документа может проводить администратор системы.
В программе "Управление торговлей 11" присутствует отличная возможность для просмотра истории изменений справочников и документов под названием "Версионирование объектов". Давайте же рассмотрим как она работает.
Для включения использования этого функционала перейдем на закладку программы "Администрирование" пункт "Поддержка и обслуживание" и установим галочку "Версионирование объектов".


В данном окне мы можем установить различные настройки версионирования объектов нашей базы - "Установить вариант версионирования". Их есть три вида:
1) Не версионировать - версии объекта не сохраняются.
2) Версионировать при записи - версии объекта сохраняются при любом изменении.
3) Версионировать при проведении - версии сохраняются только при проведении; настройка применяется только для документов, для которых разрешено проведение.
В этом же окне также можно установить срок хранения версий - "Установить срок хранения версий". Здесь стоит отметить, что если установить флажок "Автоматически удалять устаревшие версии" (расположен внизу списка), то будет выполняться удаление старых версий по расписанию на основании установленных сроков хранения.

Для документа "Списание недостач товаров" установлено вид версионирования "Версионировать при проведении". Давайте перейдем в список списания недостач товаров. В окне нашего документа "Списание недостач товаров" на панели навигации формы нажмем на пункт "История изменений". Перед нами появится окно со списком пользователей, которые редактировали данный документ, а также дата редактирования с точностью до секунды.
Чтобы просмотреть различия в версиях нужно выделить несколько позиций и нажать кнопку "Сравнить версии". Откроется отчет по изменениям версий объекта. В этом отчете можно посмотреть различия выбранных версий объекта.
Функционал УТ 11 позволяет при необходимости даже перейти на нужную (прошлую) версию объекта. Для этого нужно выделить необходимую версию объекта и нажать кнопку "Перейти на версию".

После перехода на новую версию в окне "История изменений" появится третья строчка с комментарием "Выполнен переход к версии №<Номер> <ДатаВремя>», а также сообщение об успешном восстановления объекта.
Функционал по версионированию является очень полезной особенностью УТ 11. Таким образом, используя данный механизм, мы всегда можем быть в курсе того, какие изменения происходили с объектом, а случае необходимо отменить их, откатившись на необходимую версию.

Данная статья является анонсом новой функциональности.
Не рекомендуется использовать содержание данной статьи для освоения новой функциональности.
Полное описание новой функциональности будет приведено в документации к соответствующей версии.
Полный список изменений в новой версии приводится в файле v8Update.htm.

Реализовано в версии 8.3.11.2867.

Мы реализовали новый механизм, история данных , который компактно хранит историю изменения прикладных данных пользователями. С помощью готовых интерфейсных решений или с помощью встроенного языка вы можете теперь гибко анализировать изменения данных, сравнивать разные версии и восстанавливать данные в то состояние, которое они имели в выбранной версии.

В каких сценариях нужна работа с историей данных

Чаще всего обращение к истории данных требуется для того, чтобы определить пользователя, который выполнил некоторое изменение. Например, товар продали контрагенту со слишком большой скидкой, и теперь хочется понять, кто установил такую скидку. Или другая ситуация, когда цена товара выглядит правильной, но в прошлом была продажа этого товара по более низкой цене. Нужно выяснить, кто изменил цену, а затем вернул её в прежнее значение.

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

Для дальнейшего анализа ситуации может понадобиться узнать все изменения, которые выполнял определённый пользователь, который один раз сделал что-то неправильно. Потому что в других случаях он мог допустить аналогичную ошибку.

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

При этом во всех перечисленных сценариях хочется, чтобы эти возможности достигались с минимальными потерями производительности и места на диске.

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

Понятно, что совсем убрать потери производительности невозможно, потому что вместо одного действия, необходимо выполнять два: сохранение объекта и ещё сохранение его истории. Но при этом хочется, чтобы эти потери были незаметны.

Есть и ещё одна особенность, которая связана не с функциональностью, и не с техническими требованиями, а со спецификой рынка 1С:Предприятия. Можно придумать очень хороший механизм, который и работать будет быстро, и функциональность будет иметь большую. Но если для его настройки, включения и обслуживания понадобятся значительные технические знания, это может свести на нет все его преимущества.

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

Какие возможности для анализа истории уже существуют в платформе

Главный инструмент, который вы можете использовать для анализа того, «что происходит в системе», это журнал регистрации . В числе прочего он регистрирует факты изменения данных. То есть можно узнать, кто и когда изменил данные некоторого объекта. Но его возможности в обсуждаемой области на этом и заканчиваются, потому что по журналу регистрации нельзя понять, какой именно реквизит был изменён, какое было его предыдущее состояние. И уж тем более нельзя с помощью журнала регистрации восстановить предыдущее состояние реквизита или всего объекта.

Другой инструмент, который существует довольно давно и есть во всех тиражных решениях, это БСП – библиотека стандартных подсистем. В её составе есть подсистема версионирования объектов . Эта подсистема содержит все перечисленные функции, однако она имеет некоторые практические ограничения.

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

Во-вторых, задача ведения истории данных сама по себе является низкоуровневой задачей, и её эффективнее решать в технологическом слое платформы.

Преимущества решения, встроенного в платформу

Когда мы проанализировали имеющуюся ситуацию, имеющийся опыт использования БСП, взвесили все «за» и «против», мы пришли к выводу, что наиболее эффективным решением будет реализовать историю данных в составе самой технологической платформы. Это позволит достичь следующих преимуществ:

  • Чтобы воспользоваться этим механизмом администратору или пользователю не придётся изменять конфигурацию, всё необходимое уже есть в платформе. Нужно только включить.
  • Этот механизм будет работать быстрее, чем аналоги, реализованные в составе конфигурации, т.к. он будет использовать возможности, недоступные из встроенного языка.
  • Сама история данных будет занимать меньше места, так как будет храниться не копия данных, а только их разница с предыдущей версией. Кроме этого само версионирование можно применять не ко всем реквизитам, а только к тем, которые интересуют. Это также даст дополнительную экономию.
  • Можно будет поддержать версионирование не только тех объектов, которые обладают уникальной ссылкой (справочники, документы и т.п.), но и необъектных сущностей, таких как записи регистров сведений, например.

Основные сведения о механизме

Механизм истории данных полностью реализован внутри платформы, не требует какой-либо установки дополнительных программных средств, в любой момент готов к работе, но, по умолчанию, не включён.

Включить его можно как в конфигураторе, так и в режиме 1С:Предприятие. В конфигураторе это может сделать разработчик, в режиме 1С:Предприятие пользователь, с помощью обработки, написанной на встроенном языке.

«Включение» механизма заключается в том, чтобы указать, для каких именно объектов конфигурации будет вестись история изменений. Причём ведение истории можно включать не только для всего объекта целиком, но и для его отдельных составных частей: реквизитов, измерений, ресурсов. В том числе для реквизитов табличных частей. Таким образом, вы можете выбирать: хранить полную информацию, или экономить место.

Хранение истории мы реализовали для справочников, документов, задач, бизнес-процессов и регистров сведений. Возможно в будущем мы будем расширять этот список.

Данные истории мы храним в отдельных таблицах информационной базы. Для повышения эффективности мы храним только разницу между версиями данных. Если у вас есть «тяжёлый» документ с большим количеством строк в табличной части, а вы меняете только один реквизит в самом документе, то в истории данных сохранится только одно это изменение. То есть у вас не будет храниться множество копий этого объекта, и занимать место на диске.

Кроме изменений данных мы храним ещё и метаданные объекта на момент записи версии. Это нужно для того, чтобы корректно строить отчёты по объектам, которые были записаны в другом состоянии конфигурации. Например, когда одни реквизиты назывались по-другому, других реквизитов не было, а третьи присутствовали, но впоследствии были удалены.

Обработка изменения данных

Процесс создания версии данных состоит из двух этапов. Сначала, когда вы записываете объект (например, документ), формируется специальное сообщение, которое помещается в очередь. Этот этап выполняет платформа, разработчик в нём не участвует.

А вот второй этап инициируется разработчиком. Второй этап заключается в том, что при обработке очереди эти данные извлекаются, помещаются в хранилище версий, и становятся доступными для работы с ними.

Для того чтобы таким образом обработать очередь, у менеджера истории данных (МенеджерИсторииДанных ) есть метод ОбновитьИсторию() . Мы предполагаем, что вы будете использовать его так же, как похожий метод, предназначенный для обновления индекса полнотекстового поиска. То есть обновлять историю вы будете в некотором регламентном задании, которое выполняется с определённой периодичностью.

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

Пользовательский интерфейс

В пользовательском интерфейсе 1С:Предприятия новый механизм называется История изменений . Он включает в себя несколько форм, которые позволяют выполнять те действия, которые были перечислены в начале этой статьи.

Список версий по конкретному объекту

Если для объекта включена запись истории, то среди стандартных команд объекта появляется новая команда История изменений .

Она позволяет увидеть список всех изменений (версий) объекта.

В колонке Источник изменений может быть указан также узел плана обмена, если изменение было выполнено в узле, и «приехало» в эту базу в результате обмена данными.

В этом списке, в колонке