История данных и БСП

25.11.21

Разработка - БСП (Библиотека стандартных подсистем)

История данных от платформы и Версионирование объектов от БСП. Как мигрировать историю из подсистемы БСП и начать использовать функции платформы уже сейчас.

Скачать файлы

Наименование Файл Версия Размер
ОбновлениеИсторииДанных.epf
.epf 6,54Kb
20
.epf 1.0.1.1 6,54Kb 20 Скачать

В современном мире 1С есть два способа версионировать объекты при записи, просматривать их историю, восстанавливать прошлые состояния объектов.

  1. Версионирование объектов в БСП появилось давно и используется повсеменстно.
  2. История данных в платформе появилась не так давно и пока не получила масштабного распространения.

 

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

 

Условно можно все действия по переходу определить следующими шагами:

  1. Настроить версионирование платформы.
  2. Выполнить миграцию истории объектов из БСП в платформу.
  3. Настроить регламентное задание обновления истории (читайте 26.2. Устройство механизма, документации разработчика к платформе).
  4. Удалить историю версий БСП.
  5. Отключить версионирование объектов БСП.

 

Шаг 1 и 2: Настройка версионирования платформы и выполнение миграции

Ничего особенного в этом плане придумывать не нужно. На ИТС есть статья: Настройка и перенос истории данных, к которой приложена обработка по лицензии CC BY 4.0 и которая доступна без авторизации.

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

  1. Запускаем НастройкаИПереносИсторииДанных.epf.

 

Скриншот обработки НастройкаИПереносИсторииДанных.epf,
выполнен на БСП 3.1.2

 

  1. Выбираем объекты для версионирования.
  2. Нажимаем Записать версии.

Версии объектов успешно перенесены!

 

Скриншот результата переноса,
слева версионирование БСП, справа версионирование платформы,
выполнен на БСП 3.1.2

 

Шаг 3. Настройка регламентного задания обновления истории

Необходимо выполнять перенос данных из очереди версий в таблицы базы данных. Т.е. периодически выполнять ИсторияДанных.ОбновитьИсторию().

Есть два варианта решения:

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

 

Обработка приложена к этой статье. Ее реализация открыта и понятна.

#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда

#Область ПрограммныйИнтерфейс

#Область ДляВызоваИзДругихПодсистем

// СтандартныеПодсистемы.ДополнительныеОтчетыИОбработки

// Возвращает сведения о внешней обработке.
//
// Возвращаемое значение:
//   Структура - Подробнее см. ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке().
//
Функция СведенияОВнешнейОбработке() Экспорт
	ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.2.2.1");
	ПараметрыРегистрации.Информация = НСтр("ru = 'Обработка сервисных функций истории данных.'");
	ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительнаяОбработка();
	ПараметрыРегистрации.Версия = "1.0.1.1";
	
	Команда = ПараметрыРегистрации.Команды.Добавить();
	Команда.Представление = НСтр("ru = 'Обновить историю данных'");
	Команда.Идентификатор = "ОбновитьИсторию";
	Команда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();
	Команда.ПоказыватьОповещение = Истина;
	
	Описание = НСтр("ru = 'Для выполнения обновления истории данных требуется установка привилегированного режима.'");
	Разрешение = РаботаВБезопасномРежиме.РазрешениеНаИспользованиеПривилегированногоРежима(Описание);
	ПараметрыРегистрации.Разрешения.Добавить(Разрешение);
	
	Возврат ПараметрыРегистрации;
КонецФункции

// Обработчик серверных команд.
//
// Параметры:
//   ИмяКоманды           - Строка    - Имя команды, определенное в функции СведенияОВнешнейОбработке().
//   ПараметрыВыполнения  - Структура - Контекст выполнения команды.
//       * ДополнительнаяОбработкаСсылка - СправочникСсылка.ДополнительныеОтчетыИОбработки - Ссылка обработки.
//           Может использоваться для чтения параметров обработки.
//           Пример см. в комментарии к функции ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыОткрытиеФормы().
//
Процедура ВыполнитьКоманду(Знач ИмяКоманды, Знач ПараметрыВыполнения) Экспорт
	
	// Общие действия перед началом выполнения команд.
	УстановитьПривилегированныйРежим(Истина);
	
	// Диспетчеризация обработчиков команд.
	Если ИмяКоманды = "ОбновитьИсторию" Тогда
		ИсторияДанных.ОбновитьИсторию();
	Иначе
		ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
			НСтр("ru = 'Команда ""%1"" не поддерживается обработкой ""%2""'"), ИмяКоманды, Метаданные().Представление());
	КонецЕсли;
	
КонецПроцедуры

// Конец СтандартныеПодсистемы.ДополнительныеОтчетыИОбработки

#КонецОбласти

#КонецОбласти

#КонецЕсли

Код модуля объекта внешней обработки

 

Для того, чтобы ее добавить в конфигурацию необходимо

  1. Открыть Администрирование / Печатные формы отчеты и обработки
  2. Включить флажок Дополнительные отчеты и обработки, если он отключен
  3. Нажать на гиперссылку Дополнительные отчеты и обработки
  4. Нажать на кнопку Добавить из файла... и выбрать обработку ОбновлениеИсторииДанных.epf
  5. Установить расписание запуска (рекомендуется каждые 2-5 минут, по аналогии с регламентным заданием обновления полнотекстового поиска)

 

Скриншот демонстрации установки расписания для доп. обработки обновления истории данных,
выполнен на БСП 3.1.2

 

Шаг 4. Удалить версии истории из БСП.

  1. Перейдите в Администрирование / Общие настройки / История изменений
  2. Нажмите на гиперссылку Настроить
  3. Установите срок хранения версий За последнюю неделю
  4. Нажмите Очистить

 

Скриншот демонстрации удаления устаревших версий,

выполнен на БСП 3.1.2

 

Шаг 5. Отключить подсистему БСП.

  1. Перейдите в Администрирование / Общие настройки / История изменений
  2. Снимите флажок Хранить историю изменений

 

На этом все, спасибо за внимание.

История данных Версионирование объектов БСП Доп отчеты и обработки

См. также

Создать на основании - своя кнопка (БСП). Проблема двух подменю Создать на основании

БСП (Библиотека стандартных подсистем) Адаптация типовых решений Платформа 1С v8.3 1С:ERP Управление предприятием 2 Бесплатно (free)

Понадобилось в подменю "Создать на основании" добавить свою команду, которая открывает обработку. В процессе доработок появилась проблема двух подменю "Создать на основании". В статье о том, как решились проблемы.

01.03.2024    1282    dimanich70    6    

13

Заполнение поля адреса в своей обработке [БСП]

Механизмы платформы 1С БСП (Библиотека стандартных подсистем) Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Небольшая шпаргалка по функциям БСП касательно адреса. Так скажем, еще один способ помимо https://infostart.ru/1c/articles/1060970/

12.02.2024    687    FilippovRI    0    

15

Расширяем возможности дополнительных обработок и настраиваем их отладку

БСП (Библиотека стандартных подсистем) Механизмы типовых конфигураций Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

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

07.02.2024    2348    YA_418728146    11    

40

1С:БСП Дополнительные реквизиты и сведения

БСП (Библиотека стандартных подсистем) Платформа 1С v8.3 Бесплатно (free)

В этой статье расскажем об архитектуре, использовании и особенностях реализации подсистемы «Свойства» из инструментария разработчика «1С:Библиотека стандартных подсистем» (1С: БСП).

19.01.2024    5159    PROSTO-1C    5    

45

Бесплатный митап 9 февраля «Библиотеки и фреймворки на 1С и всё, что с этим связано»

БСП (Библиотека стандартных подсистем) Мероприятия Бесплатно (free)

Митап посвящен вопросам создания, использования и поддержке переиспользуемого кода при разработке решений на платформе 1С:Предприятие 8.

15.01.2024    3798    0    Infostart    0    

20

Шаблоны новых объектов 1С для 1С:Бухгалтерии предприятия

Инструментарий разработчика БСП (Библиотека стандартных подсистем) Механизмы типовых конфигураций Платформа 1С v8.3 1С:Бухгалтерия 3.0 Бесплатно (free)

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

28.12.2023    4828    mrXoxot    11    

99
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Evg-Lylyk 4559 09.06.20 14:23 Сейчас в теме
(0) Решаю подобный вопрос
Все не так просто 13 млн. версий
Невозможно записать версию если механизм отключен. Вопрос синхронизации очень осложняется
2. lunjio 66 10.06.20 06:07 Сейчас в теме
Вкратце может стоило осветить плюсы перехода с версионирования на БСП, на платформенный механизм, либо ссылки обозначить где уже проведены различные тесты/исследования и умозаключения.
Brawler; EliasShy; +2 Ответить
3. Danil.Potapov 514 10.06.20 11:13 Сейчас в теме
(2)
занимает меньше места в базе
более гибкая настройка версионирования, можно не весь объект отслеживать, а только конкретные реквизиты
пользователям в отчете подсвечиваются изменения при просмотре конкретной версии
механизм отбора по версиям
5. lunjio 66 10.06.20 15:50 Сейчас в теме
(3) Теперь понятно, спасибо.
9. Andry.Boris 59 19.06.20 22:52 Сейчас в теме
(3) занимает меньше места в базе
Сомнительно, я провел все операции согласно вашей инструкции в результате размер увеличился на 500м в базе...
16. json 3297 04.10.20 12:50 Сейчас в теме
(2) Также у версионирования БСП есть недостаток: она не умеет сохранять реквизиты объектов с типом ХранилищеЗначений.
Такие реквизиты в версии не сохраняются, а при восстановлении версии - затираются.
Не удалось найти, где бы упоминалась эта неожиданная особенность, может конечно плохо искал...

Платформенная ИсторияДанных лишена этого недостатка
19. madway 119 21.12.23 14:18 Сейчас в теме
(16) Проверил на стандартных подсистемах 3.1.7.526. С реквизитами типа хранилище значений нет проблем. Все восстанавливает корректно.
4. Danil.Potapov 514 10.06.20 11:50 Сейчас в теме
Основной минус конвертации из БСП в историю изменений это перенос только текущей структуры объекта. Это исправили с 8.3.15, но обработка ИТС это не учитывает.
bytecoded; +1 Ответить
6. lunjio 66 10.06.20 15:57 Сейчас в теме
(4) мое менние, в идеале должна быть или уже где-то реализовано решение, которые бы историю хранило локально небольшую часть и по регламенту выгружало во внешнюю базу типа clickhouse или elasticsearch , а хранить локально это не всегда перспективно придется со временем либо сворачивать на определенную дату или разрешать и дальше пухнуть базе, при этом как решаются такие проблема как реструктуризация базы допустим когда платформа хранит ? Это совершенно отдельная таблица которая не участвует при выгрузке в dt и реструктуризации полной принудительной ? Даже если так, все равно эта таблица будет подвержена ручным настроенным на скуле процедурам обслуживания баз- реиндексация и обновление статистики, так что я идеальную подсистему версионирования вижу так.
7. Danil.Potapov 514 10.06.20 16:59 Сейчас в теме
(6) все остается как и раньше, можно рег заданием получать версию объекта из истории и выгружать ее куда запланировано. реструктуризация таблицы вряд-ли есть в нашем понимании (как и других системный таблиц), в dt выгружается.
8. Cmapnep 18 11.06.20 09:45 Сейчас в теме
Оказывается есть обработка на ИТС! А я свою писал))
(4) столкнулся с такой проблемой - решил подсмотрев способ получения данных, используемый в отчетах версионирования БСП
Т.е. Если ПрочитатьXML(ЧтениеFastInfoSet) вызывает ошибку, то можно получить разобранное представление ВерсионированиеОбъектов.РазборПредставленияОбъектаXML(ДвоичныеДанные, ВыборкаОбъект.Объект) и заполнить объект для истории данных из него
10. bytecoded 26 26.06.20 12:04 Сейчас в теме
(4) Мы некоторое время назад переносили версионирование БСП в историю данных и тоже столкнулись с этой проблемой — множество версий объектов, хранимых версионированием БСП, было невозможно поместить в историю данных из-за изменившихся метаданных: где-то поле добавили, где-то удалили или переименовали. Проблема в том, что для того, чтобы записать версию в историю данных, нужно обязательно получить объект — а сделать это можно только в рамках актуальных метаданных.

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

Из вашего комментария понял, что есть какой-то другой способ обхода этой проблемы. Подскажите, что вы имеете в виду? В патчноутах к 8.3.15 не нашел ничего подходящего.
11. Danil.Potapov 514 27.06.20 11:19 Сейчас в теме
(10) с 8.3.15 появился объект ПараметрыЗаписиИсторииДанных, у него есть свойство ДополнительныеДанные.
bytecoded; +1 Ответить
12. bytecoded 26 29.06.20 10:56 Сейчас в теме
13. mRconik 03.07.20 17:01 Сейчас в теме
ИсторияДанных.ОбновитьИсторию()

В новых версиях 1С запуск данной процедуры не требуется.
У меня на 8.3.15.1700 (без режима совместимости) работает.
14. zeegin 114 03.07.20 17:08 Сейчас в теме
(13) Говорить о том, что не требуется не правильно исходя из того, что работает.
При открытии на новых версиях обновление происходит принудительно одного объекта. Если не обновлять регзаданием просто будет большая очередь не помещенных оптимально в базу версий.
Это равносильно тому чтобы сказать, что обновление полнотекста регзаданием не требуется, я при открытии формы поиска запускаю обновление.
work.sable; +1 Ответить
15. mRconik 06.07.20 18:19 Сейчас в теме
(14) Спасибо) Включил обратно у себя регламентные по обновлению истории данных.
17. user1464234 04.10.20 13:28 Сейчас в теме
Подскажите пожалуйста, можно ли использовать платформенную историю данных для хранения изменений наименования клиента или товара и будет ли в отчетах по товарам и долгам выводиться старая версия наименования на дату отчета?
18. dsdred 3251 10.11.23 07:55 Сейчас в теме
(17)
Подскажите пожалуйста, можно ли использовать платформенную историю данных для хранения изменений наименования клиента или товара?


Можно

будет ли в отчетах по товарам и долгам выводиться старая версия наименования на дату отчета?


Нет
20. savant 57 19.02.24 07:50 Сейчас в теме
(18)Если наименование получать из истории данных то почему нет?
21. dsdred 3251 19.02.24 08:28 Сейчас в теме
(20) пото му, что надо делать доработку отчётов чтобы получать данные на определённую дату.
Оставьте свое сообщение