Имя: Пароль:
1C
1С v8
Проблемка с НайтиФайлы()
0 rikodroo
 
31.05.13
09:40
Привет, подскажите в чем может быть проблема?
Отлаживаю регламентное задание, в котором выполняется след.код:

ФайлыАрхива = НайтиФайлы(КаталогДляРаспаковки, "*.xls*");    // 1 строка          
Для Каждого ФайлИзАрхива Из ФайлыАрхива Цикл                // 2 строка
   //что-то делаю                
КонецЦикла;        


При этом, КаталогДляРаспаковки - не пустой, вправа на файлы и каталог полные. Платформа 8.2.16.368 .
Собственно проблема в том, что массив ФайлыАрхива иногда почемуто пустой (т.останова ставлю на 2 строке). Причем, в табло ф-я НайтиФайлы(КаталогДляРаспаковки, "*.xls*") - возвращает правильный и заполненный массив. Какбы тип переменной справа присвается переменной слева, а значение не передаётся...
Наибольшая странность у меня возникла, когда я поставил т.останова и на первую и на вторую строки. В этом случае, массив ФайлыАрхива заполнился правильно, т.е. значением НайтиФайлы(КаталогДляРаспаковки, "*.xls*"). Таким образом ф-я НайтиФайлы() мне кажется некорректно работающий, либо я что-то делаю не так? Может кто сталкивался с подобным.
1 ДенисЧ
 
31.05.13
09:41
Клиент-сервер?
Права на доступ к каталогу?
2 rikodroo
 
31.05.13
09:42
права полные
3 vicof
 
31.05.13
09:42
кэш?
4 rikodroo
 
31.05.13
09:42
отлаживаю через подключение к фоновому заданию
5 1Сергей
 
31.05.13
09:43
(4) "отлаживаю" от слова лажа?
6 rikodroo
 
31.05.13
09:43
(3) а причем тут кэш? Значение справа не присваивается значению слева..
7 rikodroo
 
31.05.13
09:44
(5) похоже на то ))
8 vicof
 
31.05.13
09:45
(6) Иногда помогает
9 rikodroo
 
31.05.13
09:45
(1) да, клиент сервер
10 Повелитель
 
31.05.13
09:46
С правами проблема.
Ты проверяешь на клиенте, а исполняется на сервер, у пользователя сервера прав нет видимо
11 rikodroo
 
31.05.13
09:47
(10) прав на что, на присвоение значения переменно? Функция НайтиФайлы(КаталогДляРаспаковки, "*.xls*") - работает ведь верно.
12 Mitriy
 
31.05.13
09:47
(10)+ и путь ищет относительно сервера, а там, может быть, и нет ничего...
13 ДенисЧ
 
31.05.13
09:47
Права пользователя ОС, под которым работает сервер приложения
14 rikodroo
 
31.05.13
09:47
(12) см 11
15 rikodroo
 
31.05.13
09:48
(13) полные админские
16 rikodroo
 
31.05.13
09:49
Интересно, что ФайлыАрхива  инициируется правильным типом.
17 Повелитель
 
31.05.13
09:50
Самый простой вариант, зайди под пользователем под которым запущен 1с-сервер и попробуй с файлами поработать
18 rikodroo
 
31.05.13
09:51
(17) под сеансовым входом (не фоновое задание) все работает правильно.
19 Повелитель
 
31.05.13
09:53
(18) что значит под сеансовым входом?
20 rikodroo
 
31.05.13
09:54
(19) это значит я под пользователем зашел в предприятие
21 Повелитель
 
31.05.13
09:56
(20) Ну так это разные вещи, твой код выполняется под правами пользователя твоей машины.
А фоновое задание выполняется под пользователем, под которым запущен 1с-сервер, на сервере, и у него скорее всего прав нет.

Лезь на сервер и там проверяй
22 rikodroo
 
31.05.13
09:57
Вопрос, сейчас узнал, что папочка КаталогДляРаспаковки лежит на машине с линём. Может ли подобное возникать из-за этого (там может ченить на системном уровне еще как-то влияет)?
23 Повелитель
 
31.05.13
09:57
(22) Сетевые протоколы вроде одни
24 rikodroo
 
31.05.13
09:59
(21) нет. Я запускаю на сервере под правами под которыми запущен сервер предприятия. Кроме того, ф-я Функция НайтиФайлы(КаталогДляРаспаковки, "*.xls*")  не возвращала бы ничего, если бы прав небыло разве нет?
25 bborisko
 
31.05.13
10:22
Путь к каталогу как выглядит? Должен так наверно для сетевого пути \\server\каталог
26 rikodroo
 
31.05.13
10:49
27 rikodroo
 
31.05.13
10:51
(25) нормально путь выглядит
28 Ковычки
 
31.05.13
10:53
запустите интерактивно от пользователя сервера
29 rikodroo
 
31.05.13
10:55
(28) отрабатывает как нужно (без ошибок)
30 rikodroo
 
31.05.13
11:21
ну что, нет ни у кого идей?
31 ИС-2
 
naïve
31.05.13
12:21
(30) в КаталогДляРаспаковки указан сетевой путь? Т.е //Server1C/, а не C:\?

Попробуйте пойти по пути максимального упрощения т.е задайте путь ручками и т.д

выполните просто найтифайлы(), чтобы понять есть ли они там

варант в (28) проверяли?
32 Ковычки
 
31.05.13
12:22
(29) от пользователя под которым запущен сервер
33 rikodroo
 
31.05.13
12:58
(31) конечно указан.
(28),(32) попробовал. Нормально работает, ошибка появляется только в регламентном задании.
34 hhhh
 
31.05.13
13:48
(30) всё-таки проверь этого пользователя UsrvSrvHusrv, под которым сервер 1с запускается. Ведь наверняка не все парпки ему доступны.
35 hhhh
 
31.05.13
13:52
(33) ВСё понял, у тебя ошибка не здесь, а выше. Ты наверно копируешь файлы xls в эту папку, а потом не дожидаясь, пока скопируется, быстро фигачишь НАйтиФайлы. А файлов то пока нет. Пятница. Сервер над тобой ухохатывается.
36 rikodroo
 
31.05.13
14:05
(35) Очень может быть, что файла еще и нет.
Перед кодом из (0) написал:

ТекВремя = ТекущаяДата() + 3;
Пока ТекущаяДата() < ТекВремя Цикл
КонецЦикла;

Типа паузы. Вроде работает. Вопрос тогда такой - а как дождаться 100% выполнения процедуры разархивации более элегантно(без паузы)?
Ошибка? Это не ошибка, это системная функция.