1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 |
// Параметры // Хранилище – ХранилищеЗначения, которое содержит объект типа // ДвоичныеДанные с файлом для записи на диск. // ИмяФайла – Строка, содержащая полное имя файла. // ТолькоЧтение – Булево, признак установки записываемому файлу атрибута ТолькоЧтение. // СпособПерезаписи – Строка. Параметр определеляет способ перезаписи существующих // файлов на диске. В зависимости от пришедшего параметра выдается или // не выдается запрос на перезапись файлов. Может устанавливаться в теле // функции, если это необходимо. Принимаемые значения: // "" (пустая строка) - это означает, что диалог еще ни разу не задавался // и при наличии существующего файла будет выдан диалог запроса перезаписи. // ДА - предыдущий файл был перезаписан, но перезапись текущего надо // запросить снова // НЕТ - предыдущий файл не был перезаписан, но перезапись текущего надо // запросить снова // ДАДЛЯВСЕХ - предыдущий файл был перезаписан, и все последующие тоже // надо перезаписывать. // НЕТДЛЯВСЕХ - предыдущий файл не был перезаписан, и все последующие тоже // не надо перезаписывать. // // Возвращаемое значение: // Булево – Истина, если каталог выбран, Ложь, если нет. // Функция СохранитьФайлНаДиске(Хранилище, ИмяФайла, ТолькоЧтение, СпособПерезаписи, ВопросОПерезаписи = Истина, ИмяСправочника = "удХранилище") Экспорт Попытка ФайлНаДиске = Новый Файл(ИмяФайла); КаталогНаДиске = Новый Файл(ФайлНаДиске.Путь); Если Не КаталогНаДиске.Существует() Тогда СоздатьКаталог(ФайлНаДиске.Путь); КонецЕсли; Если ФайлНаДиске.Существует() И ВопросОПерезаписи = Истина Тогда Если СпособПерезаписи = "" ИЛИ Врег(СпособПерезаписи) = "ДА" ИЛИ Врег(СпособПерезаписи) = "НЕТ" Тогда ФормаЗапросаПерезаписиФайлов = Справочники[ИмяСправочника].ПолучитьФорму("ФормаЗапросаПерезаписиФайлов"); ФормаЗапросаПерезаписиФайлов.ТекстПредупреждения = "На локальном диске уже существует файл: |" + ИмяФайла + " |Перезаписать имеющийся файл?"; СпособПерезаписи = ФормаЗапросаПерезаписиФайлов.ОткрытьМодально(); Если СпособПерезаписи = Неопределено ИЛИ Врег(СпособПерезаписи) = "НЕТ" ИЛИ Врег(СпособПерезаписи) = "НЕТДЛЯВСЕХ" Тогда Возврат Ложь; КонецЕсли; ИначеЕсли Врег(СпособПерезаписи) = "НЕТДЛЯВСЕХ" Тогда Возврат Ложь; КонецЕсли; // Если существующему файлу установлено ТолькоЧтение, отменим эту установку. Если ФайлНаДиске.ПолучитьТолькоЧтение() Тогда ФайлНаДиске.УстановитьТолькоЧтение(Ложь); КонецЕсли; КонецЕсли; // Остались случаи когда: // - пользователь ответил Да или ДаДляВсех в текущем диалоге // - способ перезаписи уже пришел со значением ДаДляВсех Если ТипЗнч(Хранилище) <> Тип("ДвоичныеДанные") Тогда ДвоичныеДанные = Хранилище.Получить(); Иначе ДвоичныеДанные = Хранилище; КонецЕсли; ДвоичныеДанные.Записать(ИмяФайла); ФайлНаДиске.УстановитьТолькоЧтение(ТолькоЧтение); Исключение Предупреждение(ОписаниеОшибки()); Возврат Ложь; КонецПопытки; Возврат Истина; КонецФункции |