Кто изменил справочник или документ в базе? V8: История изменения реквизитов Включение системы версионирования

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

Прежде всего необходимо включить в программе данную опцию и сделать нужные настройки:

В открывшемся списке устанавливаем признак использования опции и заходим в настройки хранения :

В открывшемся списке необходимо выбрать список объектов, которые мы хотим версионировать (т.е. записывать все варианты этих объектов при их изменении). Для примера установим версионирование справочника Номенклатура и документа Поступление товаров и услуг .


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


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


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


Помимо номенклатуры, выберем версионирование документов поступления:

Теперь откроем любой элемент справочника Номенклатура и произвольно изменим реквизиты, к примеру Артикул, ставку НДС и комментарий:

в результате появились изменения:


Теперь открываем кнопку просмотра версий в верхней командной панели:


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

Зажав клавищу Ctrl , выделим две версии справочника и нажмем Сравнить версии :


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


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

Теперь проведем аналогичные манипуляции с документом поступления.

Для примера изменим сумму в табличной части и заполним номер и дату первичного документа


Нажав на кнопку просмотра версий, откроется соответствующее окно:


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


В других типовых конфигурациях 1С:Предприятие 8.3 настройка версионирования происходит аналогично.

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

Настройка версионирования объектов в 1С Бухгалтерия 8 ред. 3.0

Для включения механизма версионирования объектов в 1С Бухгалтерия 8 ред. 3.0 переходим на закладку «Администрирование», выбираем раздел «Поддержка и обслуживание» и в разделе «Версионирование объектов» устанавливаем флажок.

Можно установить следующие варианты:

Не версионировать - история версий объекта не ведется;

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

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

Версионировать при старте - этот вариант можно использовать только для бизнес-процессов. Первая версия бизнес-процесса будет записана только после его старта.

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

Для каждого элемента справочника и вида документа можно установить свой вариант версионирования и срок хранения.

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

Просмотр изменений объектов в 1С Бухгалтерия 8 ред. 3.0

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

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

В верхней части доступны следующие кнопки:

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

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

Так можно настраивать версионирование объектов в 1С Бухгалтерия 8 ред. 3.0. А вы уже используете эту функцию? Поделитесь, пожалуйста, в комментариях.

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

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

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

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

Есть перечень типовых конфигураций платформы 1С:Предприятие, в которых реализована опция версионирования:

  • 1С:Предприятие 8. Управление производственным предприятием
  • 1С:Предприятие 8. Управление торговлей 10.3

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

1. Для настройки необходимо открыть программу, на панели навигации перейти к пункту Операции/Константы:

2. В закладках нужно выбрать «Версионирование», установить галочку перед надписью «Использовать версионирование объектов»:

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

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

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

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

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

4. Для просмотра истории версий необходимо в панели навигации перейти к пункту Сервис/История. Эта опция доступна исключительно для использования из-под учетной записи Администратора. Просматривать можно лишь те объекты, к которым была применена настройка версионирования. После того, как форма откроется, следует выбрать объект, изменения которого необходимо отследить, затем нужно выделить несколько версий для сравнения и нажать «Сравнить версии».

Если Вас заинтересовало версионирование (история изменений) объектов в 1С:Предприятие 8, напишите нам на почту: [email protected]


Ключевые слова: Регистрация, история, изменение.

Эта статья является описанием озвученного в третьего алгоритма.

Речь о том, чтобы хранить в базе историю изменения реквизитов объектов.

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

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

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

Начнем по-порядку.

Для начала, делаем периодический регистр сведений "История реквизитов" без привязки к регистратору.

Затем, очень хочется иметь в этом регистре сведений измерение "Объект" типа "Любая ссылка", но этого делать нельзя.
Причина та, что тогда мы теряем возможность удалять помеченные на удаление объекты, поскольку на них будут ссылки в регистре.
Если же это измерение делать ведущим, то при удалении мы потеряем всю историю по этому объекту, которая удалится вместе с самим объектом.
А с другой стороны и без этого реквизита совсем уж никуда, ни отчета сформировать, ни просто даже объект найти.
Поэтому, в каждый объект, для которого требуется регистрация изменений реквизитов, добавляем реквизит "GUID" типа "Строка (32)".
Кроме того, в регистр сведений "История реквизитов" добавляем измерение "GUID объекта" типа "Строка (32)".

Так я хотел написать сначала.

А потом хорошо подумал.

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

Во-вторых, журнал регистрации фирмой 1С реализован таким образом, что в нем в реквизите "Данные" хранится именно ссылка на объект, а никакой не GUID.
Просто при удалении объектов журнал регистрации не участвует в проверке ссылочной целостности и после удаления объекта в нем в реквизите "Данные" показывается знакомая многим надпись "<Объект не найден> ...".

В-третьих, GUID вместо ссылок придется тогда вставлять и в остальных полях, то есть в пользователе, старом значении и новом значении.

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

Правда, в рамках данной статьи описывать альтернативный алгоритм удаления помеченных объектов я не буду, ограничусь лишь тем, что скажу, что этот алгоритм должен при удалении помеченных объектов в регистре сведений "История реквизитов" все ссылки на удаляемые объекты заменять пустыми ссылками.
Почему пустыми?
Да все просто, чтобы ссылочная целостность базы не нарушалась.

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

Продолжаем.

Помимо объекта нужно иметь информацию о реквизите, который меняется.
Поэтому добавляем измерение "Реквизит" типа "Строка (25)" или "Справочник.РеквизитыОбъектов", кому как больше нравится.
Я для примера сделал строкой.

Затем добавляем информацию о пользователе, сделавшем изменения.
Для этого добавляем ресурс "Пользователь" типа "Справочник.Пользователи".
Кроме того, добавляем ресурс "Имя компьютера" типа "Строка (25)".
Кому 25 символов мало, может изменить на нужное количество.

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

И, наконец, добаляем два ресурса, "СтароеЗначение" и "НовоеЗначение" составного типа.
В составе типов "Число", "Строка", "Булево", "Дата" и "Любая ссылка".
Размерность типов "Число" и "Строка" проставляется максимальная из возможных, чтобы в нее уместилось содержимое любого реквизита.
Здесь есть досадный момент, в состав типов нельзя включить строку неограниченной длины.
Поэтому механизм нельзя будет применять для строк неограниченной длины, содержимое которых длиннее максимального размера строки в составе нашего типа.

Теперь по поводу настроек в объектах.
Во всех объектах, для которых будет регистрироваться история, требуется прописать следующий код.
Переменная "НаборЗаписейИсторияОбъектов" вынесена в переменные модуля по той причине, что для нового объекта проверку реквизитов нужно делать в процедуре "ПередЗаписью", а заполнять реквизит "Объект" значением "Ссылка" в процедуре "ПриЗаписи", поскольку в процедуре "ПередЗаписью" еще нет ссылки для нового объекта.
Перем НаборЗаписейИсторияОбъектов; Процедура ПередЗаписью(Отказ) НаборЗаписейИсторияОбъектов = РегистрыСведений.ИсторияОбъектов.СоздатьНаборЗаписей(); ОбработатьИзменениеРеквизита(НаборЗаписейИсторияОбъектов, "Код "); ОбработатьИзменениеРеквизита(НаборЗаписейИсторияОбъектов, "Наименование "); ОбработатьИзменениеРеквизита(НаборЗаписейИсторияОбъектов, "Родитель "); ОбработатьИзменениеРеквизита(НаборЗаписейИсторияОбъектов, "Владелец "); Для А = 0 По ЭтотОбъект.Метаданные().Реквизиты.Количество() - 1 Цикл ОбработатьИзменениеРеквизита(НаборЗаписейИсторияОбъектов, ЭтотОбъект.Метаданные().Реквизиты[А].Имя); КонецЦикла; КонецПроцедуры Процедура ПриЗаписи(Отказ) Если НаборЗаписейИсторияОбъектов.Количество() <> 0 Тогда Для Каждого Запись Из НаборЗаписейИсторияОбъектов Цикл Запись.Объект = Ссылка; КонецЦикла; НаборЗаписейИсторияОбъектов.Записать(Ложь); КонецЕсли; КонецПроцедуры Процедура ОбработатьИзменениеРеквизита(НаборЗаписейИсторияОбъектов, ИмяРеквизита) Если ЭтотОбъект[ИмяРеквизита] <> Ссылка[ИмяРеквизита] Тогда НоваяЗапись = НаборЗаписейИсторияОбъектов.Добавить(); НоваяЗапись.Период = ТекущаяДата(); НоваяЗапись.Реквизит = ИмяРеквизита; НоваяЗапись.ИмяКомпьютера = ИмяКомпьютера(); НоваяЗапись.Пользователь = ПараметрыСеанса.ТекущийПользователь; НоваяЗапись.РаспределеннаяБаза = ПараметрыСеанса.ТекущаяРаспределеннаяБаза; НоваяЗапись.СтароеЗначение = Ссылка[ИмяРеквизита]; НоваяЗапись.НовоеЗначение = ЭтотОбъект[ИмяРеквизита]; КонецЕсли; КонецПроцедуры

Пример приведен для иерархического подчиненного справочника.
Если брать другой объект, например, документ, то состав служебных реквизитов будет другой, не "Код", "Наименование", "Родитель" и "Владелец", а "Дата" и "Номер".

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

Замаялся.

От Гения 1С : Смотрите

В статье рассмотрен механизм версионирования объектов, реализованный в прикладном решении «Управление торговлей, ред.11» для сохранения истории всех изменений документов и справочников. Данный механизм позволяет восстановить измененные данные в случае ошибочных действий пользователей.

Применимость

Статья написана для редакции УТ 11.1 . Если вы используете эту редакцию, отлично - прочтите статью и внедряйте рассмотренный функционал.

Если Вы работаете со старшими версиями УТ 11, то данный функционал является актуальным . В актуальных версиях для доступа к рассмотренному функционалу используйте команду Настройки хранения в разделе Поддержка и обслуживание (история хранения) подсистемы Администрирование .

Наиболее заметным отличием УТ 11.3/11.4 от редакции 11.1 является интерфейс Такси. Поэтому, чтобы освоить материал статьи - воспроизведите представленный пример на своей базе УТ 11. Таким образом Вы закрепите материал практикой:)

– Кто испортил документ?! – крикнул Василий.

– Сегодня должен был получить премию за продажу товара. Прихожу к фин. менеджеру, а он мне говорит: «Какая премия? Вы не выполнили план продаж». Но как так? Помню, что провел реализацию на одну сумму, а сегодня сумма уже совсем другая. Что делать? Кто виноват?

Сердитый Василий берет телефон и набирает телефон тех. поддержки, которая обслуживает программу в компании и просит помощи: «Найдите виновных, надеялся премию получить!»

Трубку поднял оператор тех. поддержки и начал успокаивать Василия: «Не волнуйтесь, сейчас все выясним».

Как же повезло Василию, что в их компании использовалось УТ 11 и был включен функционал «Версионирование объектов». Оператор тех. поддержки без особого труда узнал кто, когда и что именно изменил в документах Василия.

Виновные были найдены и Василий в итоге получил премию.

Что же это за функционал такой, который помогает «разруливать» спорные моменты связаны с тем, кто именно из пользователей неверно заполнил и провел документ, установил не ту цену, склад, клиента, организацию и т.д?

В программе «Управление торговлей 11» присутствует отличная возможность для просмотра истории изменений (редактирования) справочников и документов под названием «Версионирование объектов». Давайте же рассмотрим как она работает.

Для включения использования этого функционала перейдем на закладку программы «Администрирование» пункт «Общие настройки» и установим галочку «Версионирование объектов».

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


(Нажмите, чтобы увеличить картинку)

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

  • Не версионировать – версии объекта не сохраняются.
  • Версионировать при записи – версии объекта сохраняются при любом изменении.
  • Версионировать при проведении – версии сохраняются только при проведении; настройка применяется только для документов, для которых разрешено проведение.

  • (Нажмите, чтобы увеличить картинку)

    Установим для примера различные настройки для различных объектов базы: для справочника «Соглашения с клиентами» – версионировать при записи, для документа «Заказ клиента» – версионировать при проведении и т.д. Окно «Версионирование объектов» будет иметь следующий вид:


    (Нажмите, чтобы увеличить картинку)

    Для документа «Заказ клиента» установлено вид версионирования «Версионировать при проведении». Давайте перейдем в список заказов клиентов (закладка «Продажи» пункт «Заказы клиентов») и попробуем создать один документ «Заказ клиента» и перепровести его под разными пользователями.

    В окне нашего документа «Заказ клиента» на панели навигации формы нажмем на пункт «История изменений».


    (Нажмите, чтобы увеличить картинку)

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


    (Нажмите, чтобы увеличить картинку)

    Выделим все позиции и нажмем кнопку «Сравнить версии». Откроется отчет по изменениям версий объекта.


    (Нажмите, чтобы увеличить картинку)

    Здесь мы можем увидеть, что пользователь «Бахшиев» провел документ, а затем пользователь «Афанасьев» перепровел документ: изменил организацию с «Торговый дом “Комплексный”» на «ПБОЮЛ “Предприниматель”», изменил цену на товар «Телевизор “JVC”» с 20 000 на 28 000.

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


    (Нажмите, чтобы увеличить картинку)

    Функционал УТ 11 позволяет при необходимости даже перейти на нужную (прошлую) версию объекта. То есть в нашем случае документ провел пользователь «Бахшиев», а затем документ был изменен пользователем «Афанасьев». В окне заказа «История изменений» выделим мышкой версию «Бахшиев Павел Иннокентьевич» и нажмем кнопку «Перейти на версию».


    (Нажмите, чтобы увеличить картинку)

    В окне «История изменений» появится третья строчка с комментарием «Выполнен переход к версии №1 от 08.07.2013 15:49:42», а также сообщение об успешном восстановления объекта.

    Теперь наш «Заказ клиента» возобновлено до версии пользователя «Бахшиев» – соответственно и организация, и цена снова стали такими, какими их установил пользователь «Бахшиев».

    Как видим, функционал не сложный в использовании и очень полезный. С программой «Управление торговлей 11» Вы всегда будете в курсе кто и как именно провел документ или сохранил справочник.

    Эта запись была размещена в Бесплатное , Статьи , Статьи по 1С:Управление Торговлей 11 . Добавить в закладки