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