СохранитьИзмененияИОсвободитьФайл (БСП)

Автор: 1С
ОбщийМодуль.РаботаСФайламиСлужебныйВызовСервера
БСП

Сохранить изменения освободить файл. Обновляет или создает версию файла и снимает блокировку.

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

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

Рекомендации

Похожие публикации

СохранитьИзмененияИОсвободитьФайлПоСсылке (БСП)

СохранитьИзмененияФайлаСРасширениемПослеОтветаНаВопросОсвободитьФайл (БСП)

СохранитьИзмененияФайла (БСП)

ОсвободитьФайлы (БСП)

ПолучитьДанныеФайлаИСохранитьИзмененияФайла (БСП)

СохранитьИзмененияФайлаБезРасширенияПослеЗагрузкиФайла (БСП)

СохранитьИзмененияФайлаБезРасширенияПослеШифрованияФайла (БСП)

СохранитьИзмененияФайлаСОповещением (БСП)

1С Менеджер конфигураций