|
Добавление файла и проверка. ДО 3.0 | ☑ | ||
---|---|---|---|---|
0
Nezna
naïve
23.08.24
✎
13:15
|
В конфигурации я обрабатываю файл, преобразовываю его в PDF и добавляю в карточку документа. Получаю двоичные данные файла и сведения о нем. Все работает, но требуется, чтобы файл не создавался каждый раз заново, а обновлялась его версия. Код работает, но при попытке добавить "существующийPDF" возникает ошибка, в любом случае если файл найден или нет.
// Получаем файл для визуализации ПолучаемФайлСЭП = РаботаСФайламиВызовСервера.ПолучитьФайлВизуализации(ТекущиеДанные.Ссылка, УникальныйИдентификатор, Истина, Истина); // Создаем временный PDF-файл FilePDFDest = ПолучитьИмяВременногоФайла("pdf"); // Получаем двоичные данные исходного PDF-файла ДвоичныеДанныеPDF = РаботаСФайламиВызовСервера.ПолучитьДвоичныеДанныеФайла(ПолучаемФайлСЭП); // Записываем данные во временный файл ДвоичныеДанныеPDF.Записать(FilePDFDest); // Создаем двоичные данные текста ДвоичныеДанныеТекста = Новый ДвоичныеДанные(FilePDFDest); // Получаем сведения о файле СведенияОФайле = РаботаСФайламиКлиентСервер.СведенияОФайле("ФайлСВерсией", Новый Файл(FilePDFDest)); СведенияОФайле.АдресВременногоХранилищаФайла = ПоместитьВоВременноеХранилище(ДвоичныеДанныеPDF); СведенияОФайле.АдресВременногоХранилищаТекста = ПоместитьВоВременноеХранилище(ДвоичныеДанныеТекста); // Формируем данные для поиска существующего файла ДанныеФайловДляПоиска = Новый Массив; СтруктураДанных = Новый Структура; СтруктураДанных.Вставить("ПолноеНаименование", СведенияОФайле.ИмяБезРасширения); СтруктураДанных.Вставить("ТекущаяВерсияРасширение", СведенияОФайле.РасширениеБезТочки); ДанныеФайловДляПоиска.Добавить(СтруктураДанных); // Ищем существующий PDF СуществующийPDF = РаботаСФайламиВызовСервера.НайтиФайлыПоПолнымИменамСРасширением(ДанныеФайловДляПоиска, ВладелецФайла); Если СуществующийPDF <> Неопределено Тогда // Обновляем версию существующего файла Иначе // Создаем новый файл НовыйФайлPDF = РаботаСФайламиВызовСервера.СоздатьФайлСВерсией(ВладелецФайла, СведенияОФайле); КонецЕсли; Подскажите варианты. |
|||
1
Волшебник
23.08.24
✎
13:37
|
>> при попытке добавить "существующийPDF" возникает ошибка
Исправьте ошибку |
|||
2
Nezna
naïve
23.08.24
✎
13:41
|
Я это и описал, можно поточнее?
|
|||
3
Волшебник
23.08.24
✎
13:42
|
(2) Если сообщите текст ошибки, то можно и поточнее.
|
|||
4
Nezna
naïve
23.08.24
✎
13:50
|
(3) Ошибка
1 вариант Не удалось добавить файл ни в один из томов! Список ошибок: Ошибка при добавлении файла "План работ по подразделению 08908999.pdf" в том "Том1" (/home/usr1cv8/DOC/): "Неверный тип данных для добавления на том {ОбщийМодуль.ФайловыеФункции.Модуль(1289)}:ВызватьИсключение(СтрокаИсключения); {ОбщийМодуль.ФайловыеФункции.Модуль(1392)}:КодВозврата = ДобавитьНаДискСУказаниемДлиныИмени( {ОбщийМодуль.РаботаСФайламиВызовСервера.Модуль(1128)}:ФайловыеФункции.ДобавитьНаДиск(ДвоичныеДанные, ПутьКФайлу, СсылкаНаТом, {ОбщийМодуль.РаботаСФайламиВызовСервера.Модуль(3822)}:Версия = СоздатьВерсию(ФайлСсылка, СведенияОФайле); [ОшибкаВоВремяВыполненияВстроенногоЯзыка, ИсключениеВызванноеИзВстроенногоЯзыка]". {ОбщийМодуль.ФайловыеФункции.Модуль(1462)}:ВызватьИсключение(СтрокаИсключения); {ОбщийМодуль.РаботаСФайламиВызовСервера.Модуль(1128)}:ФайловыеФункции.ДобавитьНаДиск(ДвоичныеДанные, ПутьКФайлу, СсылкаНаТом, {ОбщийМодуль.РаботаСФайламиВызовСервера.Модуль(3822)}:Версия = СоздатьВерсию(ФайлСсылка, СведенияОФайле); {ОДК Справочник.ДокументыПредприятия.Форма.ФормаЭлемента.Форма(397)}:НовыйФайлPDF = РаботаСФайламиВызовСервера.СоздатьФайлСВерсией(ВладелецФайла, СведенияОФайле); [ОшибкаВоВремяВыполненияВстроенногоЯзыка, ИсключениеВызванноеИзВстроенногоЯзыка] 2 вариант Значение не является значением объектного типа (Размер) {ОбщийМодуль.РаботаСФайламиВызовСервера.Модуль(1106)}:Версия.Размер = ДвоичныеДанные.Размер(); {ОбщийМодуль.РаботаСФайламиВызовСервера.Модуль(3822)}:Версия = СоздатьВерсию(ФайлСсылка, СведенияОФайле); {ОбщийМодуль.РаботаСФайлами.Модуль(1562)}:Возврат РаботаСФайламиВызовСервера.СоздатьФайлСВерсией(ВладелецФайлов, СведенияОФайле); {ОДК Справочник.ДокументыПредприятия.Форма.ФормаЭлемента.Форма(493)}:ДобавитьФайлNEW= РаботаСФайлами.ДобавитьФайл(ПараметрыФайла,ВременногоХранилища,АдресВременногоХранилищаТекста,описание,НоваяСсылкаНаФайл); {ОДК Справочник.ДокументыПредприятия.Форма.ФормаЭлемента.Форма(401)}:ДобавляемФайлВкарточку(ВладелецФайла,СведенияОФайле,ДвоичныеДанныеPDF); [ОшибкаВоВремяВыполненияВстроенногоЯзыка, ОшибкаИспользованияВстроенногоЯзыка] |
|||
5
Nezna
naïve
23.08.24
✎
13:59
|
Странно, что без проверки на “существующийPDF” файлы создаются без проблем. Метод СуществующийPDF возвращает соответствие, и записи либо есть, либо их нет. Как это может мешать созданию нового файла?
|
|||
6
spiller26
23.08.24
✎
14:00
|
(4) Смотри права
|
|||
7
maxab72
23.08.24
✎
14:00
|
(5) А что говорит отладчик?
|
|||
8
Nezna
naïve
23.08.24
✎
14:07
|
По отладчику, при создании файла («новый файлPDF»),
В функции ДобавитьФайл , ДвоичныеДанные = неопределенно, а если без условия на существующийpdf данные появляются . ДвоичныеДанные = ПолучитьИзВременногоХранилища(АдресФайлаВоВременномХранилище); // ДвоичныеДанные |
|||
9
maxab72
23.08.24
✎
14:15
|
(8) Можно предположить, что для поиска существующего файла чего-то не хватает. Или тип данных задается не тот, или прав нет.
|
|||
10
spiller26
23.08.24
✎
14:21
|
(8) Вот тут вы получаете что?
// Записываем данные во временный файл ДвоичныеДанныеPDF.Записать(FilePDFDest); |
|||
11
Nezna
naïve
23.08.24
✎
14:27
|
(10) после выполнения этой строки, в файловой системе появляется временный файл, содержащий PDF-документ. Я его могу уже просмотреть.
|
|||
12
Nezna
naïve
23.08.24
✎
14:46
|
(9) При поиске существующего файла , файл находится, если есть ,наверное, все хватает.
Права тоже есть. |
|||
13
maxab72
23.08.24
✎
15:28
|
(12) а откуда тогда ДвоичныеДанные = неопределенно?
|
|||
14
Nezna
naïve
23.08.24
✎
16:43
|
(13) непонятно, только после добавления строки СуществующийPDF = РаботаСФайламиВызовСервера.НайтиФайлыПоПолнымИменамСРасширением(ДанныеФайловДляПоиска, ВладелецФайла); становится неопределенно. Без нее все отлично.
|
|||
15
lubitelxml
23.08.24
✎
17:27
|
(14) НайтиФайлыПоПолнымИменамСРасширением - смотрите что там в процедуре, я делал обмен файлами между БД - писал сам поиск - изменился файл или нет - по дате изменения и по размеру, и перезаписывал его, если нужно
|
|||
16
Nezna
naïve
26.08.24
✎
13:20
|
Может кому пригодится.
Создал свою функцию по поиску файла, не помогло. Добавил новую процедуру на сервере, после “СведенияОФайле” где вставил поиск файла и затем обновление или создание файла по условию. Все работает. |
|||
17
Волшебник
26.08.24
✎
13:21
|
(16) Ну, с почином!
|
|||
18
Nezna
naïve
26.08.24
✎
13:23
|
Спасибо!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |