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

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

Хранение в базе данных

Ранее мы рассматривали алгоритм обработчика подписки «ВерсионированиеОбъектов_ПриЗаписиОбъекта», в которой, в зависимости от настроек версионирования, выполняется запись версии объекта в базу данных. Еще раз проведем листинг процедуры обработчика:

Процедура МеханизмВерсионированияОбъектов_ПриЗаписиОбъекта(Источник, Отказ) Экспорт Перем ЧислоВерсийОбъекта; // Переменная хранит число версий объекта // Проверяем настройки объекта — необходимо ли записать его версию // в базу данных Если ОбъектВерсионируется(Источник, ЧислоВерсийОбъекта) Тогда ИмяВременногоФайла = ПолучитьИмяВременногоФайла(); // Серилизуем объект в XML ЗаписьXML = Новый ЗаписьXML; ЗаписьXML.ОткрытьФайл(ИмяВременногоФайла); ЗаписьXML.ЗаписатьОбъявлениеXML(); ЗаписатьXML(ЗаписьXML, Источник, НазначениеТипаXML.Явное); ЗаписьXML.Закрыть(); // Двоичные данные Файла с результатом серилизации преобразуем в значение типа // «Хранилище данных» ДвоичныеДанные = Новый ДвоичныеДанные(ИмяВременногоФайла); ХранилищеДанных = Новый ХранилищеЗначения(ДвоичныеДанные, Новый СжатиеДанных(9)); УдалитьФайлы(ИмяВременногоФайла); // . Записываем версию объекта в базу данных ВерсионированиеОбъектовПривилегированный.ЗаписатьВерсиюОбъекта(Источник.Ссылка, ЧислоВерсийОбъекта, ХранилищеДанных); КонецЕсли; КонецПроцедуры

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

Этот Мужчина Работал в Зоне 51 и Рассказал о Том что Там Происходило

Изображение

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

// Возвращает количество версий объекта переданного по ссылке Функция ПолучитьКоличествоВерсийОбъекта(Ссылка) Экспорт Запрос = Новый Запрос; Запрос.Текст = » | ВЫБРАТЬ ЕСТЬNULL(МАКСИМУМ(НомерВерсии), 0) КАК НомерВерсии | ИЗ РегистрСведений.ВерсииОбъектов | ГДЕ Объект = ; Запрос.УстановитьПараметр(«Ссылка», Ссылка); Выборка = Запрос.Выполнить().Выбрать(); Выборка.Следующий(); НомерВерсии = Выборка.НомерВерсии; Возврат НомерВерсии; КонецФункции

Структура метаданных регистра имеет следующий вид:

Изображение

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

Читайте также:
Программа чтобы сделать аватарку для Стима

Как открыть проект Adobe Premiere Pro в более старой версии программы — Копилка 037

На следующем листинге мы видим процедуру записи версии объекта в регистр сведений «ВерсииОбъектов»:

// Записывает версию объекта в регистр сведений Процедура ЗаписатьВерсиюОбъекта(знач Ссылка, знач ЧислоВерсийОбъекта, знач ХранилищеДанных) Экспорт МенеджерЗаписиВерсииОбъектов = РегистрыСведений.ВерсииОбъектов.СоздатьМенеджерЗаписи(); МенеджерЗаписиВерсииОбъектов.Объект = Ссылка; МенеджерЗаписиВерсииОбъектов.ДатаВерсии = ТекущаяДата(); МенеджерЗаписиВерсииОбъектов.ВерсияОбъекта = ХранилищеДанных; МенеджерЗаписиВерсииОбъектов.НомерВерсии = ЧислоВерсийОбъекта + 1; МенеджерЗаписиВерсииОбъектов.АвторВерсии = ПараметрыСеанса.ТекущийПользователь; МенеджерЗаписиВерсииОбъектов.Записать(); КонецПроцедуры

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

Перейдем к рассмотрению способов работы с сохраненными в базе версиями объектов.

Просмотр и сравнение версий

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

Изображение

Рассмотрим общий принцип работы отчета. Вывод осуществляется в соответствии с макетом:

Изображение

Получив XML-описание сохраненного объекта отдельно получаются коллекция реквизитов и коллекция табличных частей (процедура модуля объекта отчета «РазборПредставленияОбъектаXML») с соответствующими их значениями. На основе этих данных и заполняется отчет.

Полностью рассматривать алгоритм сравнения версий не будем, отмечу лишь основные моменты. Для сравнения выбираются две версии.

Изображение

На скриншоте выше показано сравнение версии №1 и версии №5. Принцип работы алгоритма сравнения достаточно прост:

  1. Получаем значения реквизитов и табличные части сравниваемых версий объектов.
  2. Выполняем сравнения каждого из реквизитов версий (включая реквизиты таб. частей).
  3. Найденные изменения выводим в отчет.

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

Вместо заключения

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

Источник: 1clancer.ru

Программирование 1С 8.х для начинающих

  • Вы здесь:
  • Главная
  • Статьи
  • Конфигурация
  • Типовые конфигурации
  • Просмотр версий удаленного объекта

Поделитесь в соцсетях

Конфигурация

Просмотр версий удаленного объекта

Подробности Создано: 02 апреля 2020 Категория: Типовые конфигурации

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

Читайте также:
Отзывы о программе старт

Для получения всех версий удаленных объектов используется запрос

ВЫБРАТЬ ВерсииОбъектов.Объект КАК ОбъектСсылка, ВерсииОбъектов.Объект.Код КАК ОбъектКод, ВерсииОбъектов.ДатаВерсии КАК ДатаВерсии ИЗ РегистрСведений.ВерсииОбъектов КАК ВерсииОбъектов ГДЕ ВерсииОбъектов.Объект ССЫЛКА Справочник.Номенклатура И ВерсииОбъектов.Объект.Код ЕСТЬ NULL упорядочить по ДатаВерсии

Далее обрабатывая каждую строку можно получить текст в формате XML

Отбор = Новый Структура; Отбор.Вставить(«Объект», ОбъектСсылка); Выборка = РегистрыСведений.ВерсииОбъектов.Выбрать(Отбор); Рез = Новый Массив; Пока Выборка.Следующий() Цикл СтруктураХранилища = Выборка.ВерсияОбъекта.Получить(); Если СтруктураХранилища = Неопределено Тогда Продолжить; КонецЕсли; ДД = СтруктураХранилища.Объект; ЧтениеXML = Новый ЧтениеFastInfoSet; ЧтениеXML.УстановитьДвоичныеДанные(ДД); ЗаписьXML = Новый ЗаписьXML; ЗаписьXML.УстановитьСтроку(); Пока ЧтениеXML.Прочитать() Цикл ЗаписьXML.ЗаписатьТекущий(ЧтениеXML); КонецЦикла; СтрокаXML = ЗаписьXML.Закрыть(); Рез.Добавить(СтрокаXML); КонецЦикла;

В итоге получаем массив «Рез» со списком версий объектов в формате XML

Источник: 1s-portal.ru

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

Анна Викулина

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

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

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

Планшет

Приглашаем на
бесплатный вебинар!
18 июля в 11:00 мск

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

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

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

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

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

Читайте также:
В какой программе делают баннеры больших размеров

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

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

Рис.1 Администрирование

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Источник: wiseadvice-it.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru