helpf.pro
Регистрация
 -1 
Распечатать

1С 8.x : Сохранить файл на диске полученный из реквизита типа хранилище значения

Код 1C v 8.х
 // Параметры
// Хранилище – ХранилищеЗначения, которое содержит объект типа
// ДвоичныеДанные с файлом для записи на диск.
// ИмяФайла – Строка, содержащая полное имя файла.
// ТолькоЧтение – Булево, признак установки записываемому файлу атрибута ТолькоЧтение.
// СпособПерезаписи – Строка. Параметр определеляет способ перезаписи существующих
// файлов на диске. В зависимости от пришедшего параметра выдается или
// не выдается запрос на перезапись файлов. Может устанавливаться в теле
// функции, если это необходимо. Принимаемые значения:
// "" (пустая строка) - это означает, что диалог еще ни разу не задавался
// и при наличии существующего файла будет выдан диалог запроса перезаписи.
// ДА - предыдущий файл был перезаписан, но перезапись текущего надо
// запросить снова
// НЕТ - предыдущий файл не был перезаписан, но перезапись текущего надо
// запросить снова
// ДАДЛЯВСЕХ - предыдущий файл был перезаписан, и все последующие тоже
// надо перезаписывать.
// НЕТДЛЯВСЕХ - предыдущий файл не был перезаписан, и все последующие тоже
// не надо перезаписывать.
//
// Возвращаемое значение:
// Булево – Истина, если каталог выбран, Ложь, если нет.
//
Функция СохранитьФайлНаДиске(Хранилище, ИмяФайла, ТолькоЧтение, СпособПерезаписи, ВопросОПерезаписи = Истина, ИмяСправочника = "удХранилище") Экспорт

Попытка

ФайлНаДиске = Новый Файл(ИмяФайла);
КаталогНаДиске = Новый Файл(ФайлНаДиске.Путь);

Если Не КаталогНаДиске.Существует() Тогда
СоздатьКаталог(ФайлНаДиске.Путь);
КонецЕсли;

Если ФайлНаДиске.Существует() И ВопросОПерезаписи = Истина Тогда

Если СпособПерезаписи = ""
ИЛИ Врег(СпособПерезаписи) = "ДА"
ИЛИ Врег(СпособПерезаписи) = "НЕТ" Тогда

ФормаЗапросаПерезаписиФайлов = Справочники[ИмяСправочника].ПолучитьФорму("ФормаЗапросаПерезаписиФайлов");
ФормаЗапросаПерезаписиФайлов.ТекстПредупреждения =
"На локальном диске уже существует файл:
|" + ИмяФайла + "
|Перезаписать имеющийся файл?";
СпособПерезаписи = ФормаЗапросаПерезаписиФайлов.ОткрытьМодально();

Если СпособПерезаписи = Неопределено
ИЛИ Врег(СпособПерезаписи) = "НЕТ"
ИЛИ Врег(СпособПерезаписи) = "НЕТДЛЯВСЕХ" Тогда
Возврат Ложь;
КонецЕсли;

ИначеЕсли Врег(СпособПерезаписи) = "НЕТДЛЯВСЕХ" Тогда

Возврат Ложь;

КонецЕсли;

// Если существующему файлу установлено ТолькоЧтение, отменим эту установку.
Если ФайлНаДиске.ПолучитьТолькоЧтение() Тогда
ФайлНаДиске.УстановитьТолькоЧтение(Ложь);
КонецЕсли;

КонецЕсли;

// Остались случаи когда:
// - пользователь ответил Да или ДаДляВсех в текущем диалоге
// - способ перезаписи уже пришел со значением ДаДляВсех
Если ТипЗнч(Хранилище) <> Тип("ДвоичныеДанные") Тогда
ДвоичныеДанные = Хранилище.Получить();
Иначе
ДвоичныеДанные = Хранилище;
КонецЕсли;
ДвоичныеДанные.Записать(ИмяФайла);
ФайлНаДиске.УстановитьТолькоЧтение(ТолькоЧтение);

Исключение

Предупреждение(ОписаниеОшибки());
Возврат Ложь;

КонецПопытки;

Возврат Истина;

КонецФункции
Разместил:   Версии: | 8.x |  Дата:   Прочитано: 41773
 -1 
Распечатать
Возможно, вас также заинтересует
17 правил для составления оптимального ЗАПРОСа к данным базы 1С 52
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ
Excel файл как Внешний источник данных 17
Подключимся и загрузим из файла Excel данные в таблицу значений 1С. Сделать теперь это очень просто. 1. В конфигурации добавляет новый объект метаданных типа " Внешние источники данных" и назовем его просто " Excel" . https://helpf.pro/uploads/img
Авто добавление обработки в справочник Внешних обработок 0
Чтобы не изменять типовую конфигурацию приходится использовать типовой механизм внешних печатных форм и обработок. Данный код проверяет - добавлена ли открываемая обработка в конфигурацию, если нет - задает вопрос и при положительном ответе - автома
Автоматическое резервное копирование 1С:Предприятия в облако с помощью ПО Effector Saver 4
Всем известно, для большей гарантии восстановления важных данных, необходимо копировать архивы в несколько мест хранения. Отдельный диск может помочь в случае порчи основного, но в случае если устройство будет потеряно или украдено, он будет так же
Автоматическое резервное копирование 1С:Предприятия в облако с помощью ПО Effector Saver 0
Всем известно, для большей гарантии восстановления важных данных, необходимо копировать архивы в несколько мест хранения. Отдельный диск может помочь в случае порчи основного, но в случае если устройство будет потеряно или украдено, он будет так же
Посмотреть все результаты поиска похожих
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.