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

25.11.21

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

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
ОбновлениеИсторииДанных.epf
.epf 6,54Kb ver:1.0.1.1
25
25 Скачать (1 SM) Купить за 1 850 руб.

В современном мире 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. Снимите флажок Хранить историю изменений

 

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

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

См. также

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

Синтакс-помощник БСП - cправочник по библиотеке стандартных подсистем. В состав справочника входит описание экспортных процедур и функций, размещенных в областях кода ПрограммныйИнтерфейс БСП.

1800 руб.

21.11.2024    1763    3    13    

5

БСП (Библиотека стандартных подсистем) Менеджеры внешних отчетов Программист Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление холдингом Абонемент ($m)

За последние лет 5 несколько раз сталкиваюсь с проблемой на разных проектах (в конфигурациях 1С:ERP, 1С:ERP УХ и многих других, основанных на БСП), когда много пользователей (около 30 тысяч) в информационной базе, время добавления доступа для пользователей занимает значительное время. Открытие списка занимает от 10 до 15 секунд, и каждое изменение списка еще примерно столько же.

1 стартмани

10.12.2024    561    Iaskeliainen    2    

7

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

Некоторые нюансы, если вы захотите создавать свои расширения. Доработка отчета "Связанные документы" для отражения документов расширения. Печатные формы с шаблоном Word.

20.11.2024    2824    milkers    3    

9

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

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

24.10.2024    1361    PROSTO-1C    0    

16

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

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

08.10.2024    1178    PROSTO-1C    4    

14

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

В статье рассмотрим пошаговую инструкцию создания дополнительного отчета с фоновым формированием результата.

04.10.2024    2054    MadRave    11    

24

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

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

10.09.2024    2144    MadRave    4    

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

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

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

Из вашего комментария понял, что есть какой-то другой способ обхода этой проблемы. Подскажите, что вы имеете в виду? В патчноутах к 8.3.15 не нашел ничего подходящего.
11. Danil.Potapov 517 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 118 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 3645 10.11.23 07:55 Сейчас в теме
(17)
Подскажите пожалуйста, можно ли использовать платформенную историю данных для хранения изменений наименования клиента или товара?


Можно

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


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