Перейти на версию сервер.
Функция ПерейтиНаВерсиюСервер(Ссылка, НомерВерсии, ТекстСообщенияОбОшибке, ОтменаПроведения = Ложь) Экспорт
Если Не Пользователи.ЭтоПолноправныйПользователь() Тогда
ВызватьИсключение НСтр("ru = 'Недостаточно прав для выполнения операции.'");
КонецЕсли;
ПользовательскоеПредставлениеНомера = НомерВерсииВИерархии(Ссылка, НомерВерсии);
Информация = СведенияОВерсииОбъекта(Ссылка, НомерВерсии);
ДополнительныеРеквизиты = Неопределено;
Если ТипЗнч(Информация.ВерсияОбъекта) = Тип("Структура") Тогда
Если Информация.ВерсияОбъекта.Свойство("ДополнительныеРеквизиты", ДополнительныеРеквизиты) Тогда
НайденныеРеквизиты = ДополнительныеРеквизиты.НайтиСтроки(Новый Структура("Идентификатор", Неопределено));
Для Каждого Реквизит Из НайденныеРеквизиты Цикл
ДополнительныеРеквизиты.Удалить(Реквизит);
КонецЦикла;
КонецЕсли;
КонецЕсли;
ТекстСообщенияОбОшибке = "";
Объект = ВосстановитьОбъектПоXML(Информация.ВерсияОбъекта, ТекстСообщенияОбОшибке);
Если Не ПустаяСтрока(ТекстСообщенияОбОшибке) Тогда
Возврат "ОшибкаВосстановления";
КонецЕсли;
Объект.ДополнительныеСвойства.Вставить("ВерсионированиеОбъектовКомментарийКВерсии",
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Выполнен переход к версии №%1 от %2'"),
ПользовательскоеПредставлениеНомера,
Формат(Информация.ДатаВерсии, "ДЛФ=DT")));
РежимЗаписи = Неопределено;
ИдентификаторОшибки = "ОшибкаВосстановления";
Если ОбщегоНазначения.ЭтоДокумент(Объект.Метаданные()) И Объект.Метаданные().Проведение = Метаданные.СвойстваОбъектов.Проведение.Разрешить Тогда
Если Объект.Проведен И Не ОтменаПроведения Тогда
РежимЗаписи = РежимЗаписиДокумента.Проведение;
Иначе
РежимЗаписи = РежимЗаписиДокумента.ОтменаПроведения;
КонецЕсли;
ИдентификаторОшибки = "ОшибкаПроведения";
КонецЕсли;
НачатьТранзакцию();
Попытка
ЗаписатьДанныеТекущейВерсии(Ссылка);
ВыполняетсяЗаписьОбъекта(Истина);
Если ЗначениеЗаполнено(РежимЗаписи) Тогда
Объект.Записать(РежимЗаписи);
Иначе
Объект.Записать();
КонецЕсли;
Если ЗначениеЗаполнено(ДополнительныеРеквизиты) Тогда
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Свойства") Тогда
МодульУправлениеСвойствамиСлужебный = ОбщегоНазначения.ОбщийМодуль("УправлениеСвойствамиСлужебный");
МодульУправлениеСвойствамиСлужебный.ПриВосстановленииВерсииОбъекта(Объект, ДополнительныеРеквизиты);
КонецЕсли;
ВерсионированиеОбъектовПереопределяемый.ПриВосстановленииВерсииОбъекта(Объект, ДополнительныеРеквизиты);
КонецЕсли;
ВыполняетсяЗаписьОбъекта(Ложь);
ЗаписатьВерсиюОбъекта(Объект);
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
ВыполняетсяЗаписьОбъекта(Ложь);
ТекстСообщенияОбОшибке = КраткоеПредставлениеОшибки(ИнформацияОбОшибке());
Возврат ИдентификаторОшибки;
КонецПопытки;
Возврат "ВосстановлениеВыполнено";
КонецФункции
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
ДоступныеВерсииАдресныхСведений (БСП)
ПерейтиКДокументацииПоВводуУчетнойЗаписиЭлектроннойПочты (БСП)