Имя: Пароль:
1C
 
Доступ к файлу не может быть получен [redos]
0 alf2006x
 
14.08.26
13:33
Всем доброго дня.

Наступил на грабель, но не пойму откуда она прилетает... ))

Дело было на сервере [redos] (в модуле объекта внешней обработки):


Функция ЗагрузитьКаталог(АдресКФайлу, ИмяФайла, Расширение="") Экспорт

    ДвоичныеДанные = ПолучитьИзВременногоХранилища(АдресКФайлу);
    ИмяВременногоФайла = ПолучитьИмяВременногоФайла(Расширение);
    ДвоичныеДанные.Записать(ИмяВременногоФайла);
    ТабДок.Прочитать(ИмяВременногоФайла, СпособЧтенияЗначенийТабличногоДокумента.Значение);


Последняя строка упорно выдаёт:
Ошибка при выполнении файловой операции  '/tmp/v8_7Q7xCZ_1af0d.xls'. Доступ к файлу не может быть получен.

На сервере файл появляется. Сразу после выполнения предыдущей строки.
Права вроде подходящие:
[alf2006x@redos tmp]$ ls -l /tmp/v8_7Q7xCZ_1af0d.xls
-rw-r-----. 1 usr1cv8 grp1cv8 78787 авг 14 13:20 /tmp/v8_7Q7xCZ_1af0d.xls


Ну где же я опять так карму-то поцарапал ?!...
1 alf2006x
 
14.08.26
13:39
Но самое странное, что у других пользователей такая же конструкция (прада в других местах) - замечательно работает.
2 alf2006x
 
14.08.26
13:39
И работает она в регламентном задании тоже без проблем.
3 Garykom
 
гуру
14.08.26
13:40
Проверь регистр расширения ))
4 alf2006x
 
14.08.26
13:41
Расширение    ".xls"    Строка
5 Garykom
 
гуру
14.08.26
13:44
И проверь существование файла между записью и чтением
ДвоичныеДанные.Записать(ИмяВременногоФайла);
ФайлНаДиске = Новый Файл(ИмяВременногоФайла);
Если ФайлНаДиске.Существует()
    ТабДок.Прочитать(ИмяВременногоФайла, СпособЧтенияЗначенийТабличногоДокумента.Значение);
Иначе
    // Ошибка?
КонецЕсли;
6 Garykom
 
гуру
14.08.26
13:43
(4) регистр! совпадение! расширения!
который в ИмяВременногоФайла
и который реально на диске...
7 alf2006x
 
14.08.26
13:45
(5) Да, файл существует. Я отладчиком попадаю внутрь условия.
8 Garykom
 
гуру
14.08.26
13:45
В Линуксе (в отличие от Винды) имена файлов рЕгИсТрОзАвИсИмЫе!
9 Garykom
 
гуру
14.08.26
13:46
(7) Теперь попробуй его скопировать там после записи
И прочитать скопированный
10 alf2006x
 
14.08.26
13:46
(6) вот тут я не понял
11 alf2006x
 
14.08.26
13:46
(9) пробую
12 Garykom
 
гуру
14.08.26
13:48
(10) Была ошибка тут на форуме спрашивали
Разница между ПолучитьИмяВременногоФайла("xls") vs ПолучитьИмяВременногоФайла("XLS")
Под виндой пофиг, на линуксе бывает прикольно
Особенно если потом читать "имяфайла.XLS" или "имяфайла.xls"
13 alf2006x
 
14.08.26
13:49
КопироватьФайл(ИмяВременногоФайла, "/tmp/MyFile.xls");

- скопировался!
14 alf2006x
 
14.08.26
13:50
(12) Понял
15 alf2006x
 
14.08.26
13:50
(13) есть новые идеи? ))
16 Garykom
 
гуру
14.08.26
13:51
(15) LibreOffice он открывается?
Под каким пользователем сервер 1С пашет на линуксе?
17 alf2006x
 
14.08.26
13:52
ТабДок.Прочитать("/tmp/MyFile.xls", СпособЧтенияЗначенийТабличногоДокумента.Значение);

- Ошибка при выполнении файловой операции  '/tmp/MyFile.xls'. Доступ к файлу не может быть получен.

Дайте скорее какую-нибудь эмодзю ...
18 arsik
 
гуру
14.08.26
13:54
(15) Делай через ДвоичныеДанные.НачатьЗапись()
Сорян. У тебя серверный контекст оказывается.
19 alf2006x
 
14.08.26
13:53
(16) "LibreOffice он открывается?" - а как это проверить?
20 Garykom
 
гуру
14.08.26
13:55
(17) а ТабДок.Прочитать там на сервере под линукс с заведомо хорошим файликом экселя, с правами для всех и чтения и записи точно читает?
Можно нечто недоустановлено для платформы 1С
21 Garykom
 
гуру
14.08.26
13:55
(19) Поставь либре на линукс и открой им ))
22 alf2006x
 
14.08.26
13:56
(16) "Под каким пользователем сервер 1С пашет на линуксе?"
Наверное под usr1cv8
Не знаю как убедиться.
23 alf2006x
 
14.08.26
13:57
(20) Регламент работает на ура. Читает только в путь...
У других пользователей эта конструкция работает без проблем...
Вот я и не понимаю чем я то провинился, блин...
24 arsik
 
гуру
14.08.26
13:57
(22) Проверь файл mxl. Его нормально должно прочитать. У тебя именно екселевский файл не может прочитать
25 Garykom
 
гуру
14.08.26
13:57
Вариант синтаксиса: Из потока
Синтаксис:
Прочитать(<Поток>, <СпособЧтенияЗначений>, <ТипФайлаТаблицы>)
26 alf2006x
 
14.08.26
13:58
(21) Это ж прод. Чё-то не хочется ставить туда "лишнее"
27 alf2006x
 
14.08.26
13:58
(24) это как?
28 arsik
 
гуру
14.08.26
13:59
(25)
При чтении из потока допускается использование только следующих форматов: MXL, MXL7, ODS.
29 Garykom
 
гуру
14.08.26
14:07
(28) Ага и это намекает что офисные файлы оно читает через встроенные либы libre (или нечто вроде)
30 alf2006x
 
14.08.26
13:59
Ааа,.. это наверное ёксель кривой. Ща попробую пересоздам его.
31 arsik
 
гуру
14.08.26
14:00
(27) Ну передай в функцию mxl, сохрани как mxl и прочитай как mxl
32 alf2006x
 
14.08.26
14:01
пробую
33 alf2006x
 
14.08.26
14:05
Действительный формат открываемого файла (1128.xls) отличается от указываемого его расширением имени файла. Перед открытием данного файла убедитесь, что он не поврежден и получен из надежного источника. Открыть этот файл сейчас?

Кажется дело раскрыто )
34 arsik
 
гуру
14.08.26
14:06
Попробуй использовать XLSX. XLS слишком непредсказуем
35 alf2006x
 
14.08.26
14:11
(34) в яблочко!

Всем спасибо!
Закон Брукера: Даже маленькая практика стоит большой теории.