Изменение версии документа в 1с. v8 история изменения реквизитов. просмотр изменений объектов

Как отследить в программе 1С историю изменения объектов?

Отправить эту статью на мою почту

В статье рассмотрим каким образом в 1С можно отследить историю изменений объектов и какие настройки необходимо сделать чтобы активировать данный механизм. Рассматривать будем на примере 1С:Зарплата и Управление Персоналом. Для чего может понадобиться история изменения? К примеру, если в какой-либо документ вносились изменения один или несколько раз, то можно увидеть, что и кем было изменено. Также есть возможность не только смотреть, но и сравнивать произведенные изменения объекта.

НАСТРОЙКА 1С. ЕСТЬ ЗАДАЧА? БЕСПЛАТНАЯ ОЦЕНКА! Смотреть подробнее →

Первое, что необходимо сделать в программе 1С — это проверить соответствующие настройки. Переходим в раздел “Администрирование” и далее выбираем пункт “Общие настройки”. Раскрываем пункт “История изменений” и здесь должна быть активирована галочка напротив пункта “Хранить историю изменений”. После чего справа появится ссылка “Настройка хранения”.

Переходим по вышеуказанной ссылке и здесь в настройках устанавливается для каких объектов будет настроено версионирования, когда будут сохранятся версии документов. Варианты сохранения версий следующие: при записи, при проведении и никогда. Также следует отметить, что версионировать можно только справочники и документы. Для примера выполним настройку для документа “Кадровый перевод”. Найдем в таб. части документ “Кадровый перевод” и в колонке “Когда сохранять версии” установим значение “При проведении”. В колонке “Срок хранения версий” оставим вариант “Бессрочно”. Если требуется установить одинаковые значения нескольким объектам, то их можно выделить, зажав клавишу “Ctrl” и воспользоваться кнопками в шапке формы.

Теперь у нас появилась возможность просматривать версии кадрового перевода. Создадим новый документ и заполним его данными. Дату перевода в первой версии установим 28 июня 2019 года. После чего проводим документ.

Давайте сейчас попробуем изменить дату перевода. Установим 29 июня 2019 года и также укажем причину перевода на закладке “Дополнительно” и перепроводим документ. Далее для просмотра версий документа нажимаем на кнопку “Еще” и выбираем действие “История изменений”.

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

Для того чтобы открыть конкретную версию необходимо ее выделить и нажать на кнопку “Открыть”.

Для того что сравнить какие-либо две версии между собой необходимо выделить их в таб. части при помощи клавиши “Ctrl” и нажать на кнопку “Сравнить”. Откроется окно с информацией о различиях в выбранных версиях. В нашем примере видим, что изменилась дата перевода и появилось назначение. Автоматически система поменяла и дату запрета.

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

«1С:ЗУП 8» (ред. 3): как отследить историю изменения объектов (+ видео)?

Видеоролик выполнен в программе «1С:Зарплата и управление персоналом 8» версия 3.1.3.

Включить хранение истории изменений объектов (версионирования) следует в меню Администрирование — Общие настройки – История изменений, установив флаг Хранить историю изменений. Далее по ссылке Настройки хранения кнопкой Установить, когда сохранять версии указать, для каких объектов настроить версионирование (например для документа Ведомость в банк), и уточнить, в какое время выполнять сохранение. Время сохранения выбирается из вариантов:

Теперь в документах выбранного вида доступна возможность просмотра версий объекта по кнопке ЕщеИстория изменений.

По кнопке Сравнить предоставляется отчет об изменениях, внесенных в документ. Так, в примере видно, что изначально к выплате сотруднику И.В. Булатову было назначено 65 250 руб., но затем 23 августа начальник расчетного отдела Е.Н. Орлова внесла изменения, и сумма к выплате стала 250 руб.

Программа позволяет перейти на выбранную предыдущую версию документа. И это действие также будет зарегистрировано.

Срок хранения версий ограничивается при Настройке хранения истории изменений кнопкой Установить срок хранения версий.

Заметки из Зазеркалья

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

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

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

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

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

Читайте так же:  Условия банков военной ипотеке ипотека. банки, работающих по программе военная ипотека

Использование этого механизма настраивается в параметрах конфигуратора. Теперь там появилась группа настроек Рефакторинг при изменениях в метаданных и формах:

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

Терминология

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

Например, если в коде используется конструкция Справочники.Номенклатура, то мы со 100%-ой уверенностью можем сказать, что выполняется работа со справочником Номенклатура. Такие случаи называются фактическим использованием. Их платформа умеет обрабатывать автоматически, а в окне результатов поиска они помечаются пиктограммой i.

Наряду с этим есть случаи, когда только по фрагменту текста нельзя понять, с каким именно объектом конфигурации ведётся работа. Например, Параметр1.Номенклатура. Переменная Параметр1 может ссылаться и на справочник с реквизитом Номенклатура, и на данные строки табличной части, в которой есть колонка Номенклатура. Узнать это на 100% можно, только если вы самостоятельно проанализируете алгоритм. Такие случаи называются возможным использованием. Они требуют вашего вмешательства, и в окне результатов поиска они помечаются пиктограммой !.

Поиск ссылок

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

Платформа перечислит все фрагменты кода, которые могут использовать выбранный объект. По двойному клику мыши она откроет соответствующий модуль и подсветит найденную строку:

Случаи возможного использования платформа помечает в общем списке пиктограммой ?:

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

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

Переименование

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

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

Чтобы ускорить ручное изменение фрагментов, вы можете выделить сразу несколько строк, а затем из контекстного меню выполнить команду Заменить.

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

Как отследить изменения справочников и документов

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

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

Для фильтрации нужных записей в журнале можем воспользоваться отбором:

Нас интересуют из всего списка два события:

В случае изменения карточки справочника, событие журнала выглядит примерно так:

А для документа так:

Для корректной работы расширения необходимо снять признак Безопасный режим .

Заметки из Зазеркалья

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

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

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

Новые объекты конфигурации, для которых поддерживается история данных

Теперь история данных поддерживается ещё для трёх классов объектов конфигурации. Это:

  • планы обмена,
  • планы видов расчета,
  • константы.

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

Поддержка изменений реквизита ИмяПредопределенныхДанных

В механизм истории данных мы добавили поддержку изменения стандартного реквизита ИмяПредопределенныхДанных для таких объектов как:

  • планы видов расчета,
  • справочники,
  • планы счетов,
  • планы видов характеристик.

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

Управление переходом на версию

Мы реализовали новое событие ОбработкаФормированияПоВерсии() для таких программных объектов как:

  • СправочникОбъект,
  • ДокументОбъект,
  • ПланСчетовОбъект,
  • БизнесПроцессОбъект,
  • ЗадачаОбъект,
  • РегистрСведенийНаборЗаписей.

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

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

Читайте так же:  Нежилые постройки что к ним относится. как использовать нежилое помещение

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

Заказ 000000001 от 18.08.2016 0:00:00 (Переход на версию 1)

Формы, используемые механизмом истории данных

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

  • Основная форма истории изменений истории данных – это та форма, которая показывает список версий данных, она открывается при вызове команды История изменений;
  • Основная форма данных версии истории данных – это та форма, которая показывает отчёт о данных версии, она открывается из формы истории изменений;
  • Основная форма различий версий истории данных – это та форма, которая показывает отчёт о различиях между версиями, она также открывается из формы истории изменений.

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

Кроме этого вы можете открыть или получить перечисленные формы из встроенного языка. Для них добавлены стандартные имена, которые вы можете использовать в методах ОткрытьФорму() или ПолучитьФорму().

Также во встроенный язык мы добавили ещё два стандартных имени для двух других форм истории данных. Это:

  • ДиалогОтбораВерсийИсторииДанных – это форма, которая позволяет задать параметры отбора версий, она открывается из формы истории изменений;
  • ДиалогВыбораПользователейИсторииДанных – это форма, которая позволяет задать автора версий для отбора версий, она открывается из формы отбора.

Эти формы вы тоже можете, например, открыть из встроенного языка, но переопределить их нельзя.

Помимо назначения собственных форм в Конфигураторе, вы можете «динамически» переопределять формы истории данных. Например, стандартные имена форм механизма истории данных передаются в обработчик ОбработкаПолученияФормы() в параметре ВидФормы. Проанализировав значение этого параметра, вы можете отказаться от открытия стандартной формы, и открыть, например, собственную форму истории данных.

Версионирование объектов в 1С 8.3

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

В программах «1С» реализованы механизмы, позволяющие отслеживать изменения в базах различными способами:

  • С помощью журнала регистрации. Платформенный механизм, позволяющий узнать кто и когда менял объект, без возможности детально отследить изменившиеся значения объектов;
  • Через платформенный механизм ИсторияДанных. Отметим, что данный механизм появился в платформе 8.3.11 и позволяет работать с версионированием через встроенные механизмы платформы, что является несомненным плюсом.
  • Через версионирование объектов (активируется самостоятельно). Данный механизм обеспечивается наличием в конфигурации подсистемы БСП «Версионирование объектов». Соответственно присутствует во всех современных типовых конфигурациях, разработанных на основе БСП (Библиотека стандартных подсистем).

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

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

Рассмотрим настройку подсистемы БСП «Версионирования объектов» в 1С 8.3 Бухгалтерия.

Как включить или отключить версионирование объектов

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

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

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



Рис.2 Общие настройки

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

[1]

С помощью кнопки «Установить когда сохранять версии» мы можем установить когда сохранять версию – «Никогда», «При записи», «При проведении» или «По умолчанию». Настройка «По умолчанию» предполагает рекомендуемые настройки: для справочников – «Никогда» не создавать версии, для документов – «Создавать версии при проведении», для бизнес-процессов – «Создавать версии при старте». Настройка выполняется для всех объектов, но целесообразнее выполнить настройку отдельно для каждого объекта в списке.


Рис.3 Выбор варианта хранения версии


Рис.4 Окно настройки сохранения версии

Следующий параметр – «Установить срок хранения версий».


Рис.5 Меню настройки срока хранения версий

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

Видео удалено.
Читайте так же:  Правила написания корней кос кас. публикации
Видео (кликните для воспроизведения).


Рис.6 Настройки хранения истории изменений


Рис.7 Возможность просмотра истории изменений в журнале документов

Эти же пункты будут доступны и из самого документа.


Рис.8 Возможность просмотра истории изменений из документа

История изменений выглядит следующим образом: в открывшейся форме выводится список всех изменений объекта. Версию можно открыть или сравнить с любой из списка. Выбрать несколько строк можно с помощью кнопок «Shift» и «Ctrl».


Рис.9 История изменений документа «Счет»


Рис.10 Просмотр версии объекта


Рис.11 Формирование сравнительного отчета изменений между версиями


Рис.12 Сравнение версий объекта

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


Рис.13 Переход на другую версию объекта

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

Заметки из Зазеркалья

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Отбор версий

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

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

Отчёт о данных версии

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

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

Отчёт о разнице между версиями

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

[3]

Результат сравнения версий будет также показан с помощью отчёта. Этот отчёт напоминает тот, который используется в БСП. Добавленные, изменённые и удалённые значения подсвечиваются.

Программный интерфейс

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

Прежде всего, из встроенного языка вы можете включить/настроить ведение истории. Например, вы можете включить ведение истории для двух реквизитов документа Заказ: реквизита Комментарий самого документа, и реквизита Цена его табличной части, которая называется Товары:

Настройки = Новый НастройкиИсторииДанных; Настройки.Использование = Истина; Настройки.ИспользованиеПолей.Вставить(«Комментарий», Истина); Настройки.ИспользованиеПолей.Вставить(«Товары.Цена», Истина); ИсторияДанных.УстановитьНастройки(Метаданные.Документы.Заказ, Настройки);
Читайте так же:  Если договор закончился. срок действия договора истек, а операции не завершены. что делать если срок

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

Например, вас интересуют все версии документа Заказ с номером 0000001, в которых менялось значение реквизита Количество табличной части, которая называется ПозицииЗаказа. Получить их можно следующим образом:

Отбор = Новый Структура(«Данные, ИзменениеЗначенийПолей»); Отбор.Данные = Документы.Заказ.НайтиПоНомеру(«0000001»); Отбор.ИзменениеЗначенийПолей = Новый Массив; Отбор.ИзменениеЗначенийПолей.Вставить(«ПозицииЗаказа.Количество»); Версии = ИсторияДанных.ВыбратьВерсии(Отбор, «НомерВерсии, Дата, ТипИзменения, ИмяПользователя, Комментарий»);

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

Кто изменил справочник или документ в базе?

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

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

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

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

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

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

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

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

[2]

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

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

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

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

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

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

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

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

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

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

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

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

Видео удалено.
Видео (кликните для воспроизведения).

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

Источники


  1. Данилов, Е.П. Жилищные споры: Комментарий законодательства. Адвокатская и судебная практика. Образцы исковых заявлений и жалоб. Справочные материалы / Е.П. Данилов. — М.: Право и Закон, 2018. — 352 c.

  2. Изварина, А. Ф. Судебная система России. Концептуальные основы организации, развития и совершенствования / А.Ф. Изварина. — М.: Проспект, 2014. — 304 c.

  3. Грудцына, Л. Жилищное право России. Учебник; М.: Эксмо, 2011. — 656 c.
  4. Медведев, М. Ю. Аукционы. Проведение, участие, судебные споры. Справочник инвестора / М.Ю. Медведев, А.М. Насонов. — М.: Юстицинформ, 2013. — 224 c.
  5. Михайловская, Н.Г. Искусство судебного оратора / Н.Г. Михайловская, В.В. Одинцов. — М.: Юридическая литература, 2016. — 176 c.
Изменение версии документа в 1с. v8 история изменения реквизитов. просмотр изменений объектов
Оценка 5 проголосовавших: 1

ОСТАВЬТЕ ОТВЕТ

Please enter your comment!
Please enter your name here