Интерфейс для истории данных (платформенное версионирование) в режиме обычных форм



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

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

Итак, основные черты функционала "История данных" by 1с.

1. Версионироваться могут: справочники, документы, бизнес-процессы, задачи и регистры сведений(!).

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

3.Платформа сохраняет информацию о различиях между версиями, а не объект целиком. Это позволяет сильно экономить место.

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

Возможности обработки

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

2. Просмотр списка версий

3. Просмотр данных версии

4. Сравнение 2х версий.

5. Построение объекта на основании данных о версии (его можно потом просто записать, тем самым совершив откат к определенной версии).

В общем, все.

9 Comments

  1. KEV_SZK

    Добрый день.

    Зачем писать обработки если можно открыть форму, которая встроена в платформу, (будет работать весь функционал кроме «Перейти на версию»)?

    Reply
  2. Prometeus2011

    (1), А где она в режиме обычных форм. Не нашел.

    Reply
  3. AlexO

    (1) видимо, суть здесь в том, что форма на УФ, и её нет для ОФ, поэтому в обычном приложении её открыть нельзя.

    Reply
  4. KEV_SZK

    Попробуйте выполнить вот этот код.

    OpenForm(«sysForm:DataHistoryVersions», New Structure(«Data», Ссылка), ЭтаФорма)

    Ссылка — ссылка объекта

    Reply
  5. Rans

    А не подскажете код для получения истории регистра сведений?

    Reply
  6. Prometeus2011

    (5) Вообще, код такой не использовал, но что-то подсказывает, что в первый параметр функции:

    ТабличноеПоле_Версии = ИсторияДанных.ВыбратьВерсии(новый структура(«Данные»,ЭтаФорма.ЭлементыФормы.Данные.ТекущаяСтрока));

    надо передавать структуру с ключом записи регистра.

    Про ключ записи здесь:

    https_://helpf.pro/faq/view/1501.html

    Reply
  7. romankoav

    (6) Ни у кого примера не появилось?

    Reply
  8. nomadon

    (7)

    СтруктураДанных = Новый Структура;
    СтруктураДанных.Вставить(«Документ», Документ);
    
    Ключ = РегистрыСведений.ИмяРегистра.СоздатьКлючЗаписи(СтруктураДанных);
    СтруктураПараметров =  Новый Структура(«Data», Ключ);
    
    ОткрытьФорму(«sysForm:DataHistoryVersions», СтруктураПараметров)
    

    Показать

    Reply
  9. frkbvfnjh

    А что за форма sysForm:DataHistoryVersions, это вообще законно? Что за названия форм такое, в документации где нибудь описано такое, или может есть русскоязычные аналоги?

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *