|
Сервер не читает dbf | ☑ | ||
---|---|---|---|---|
0
Mary01
14.06.15
✎
11:01
|
В чем может быть проблема:
Есть процедура, читающая файл формата dbf. Выполняется &НаСервере. В локальной базе работает нормально, а в SQL выпадает ошибка "Перед выполнением операции нужно открыть базу". Файл лежит в общем каталоге, в который есть доступ с сервера, на файл установлены полные права. Даже пробовала выложить этот файл на рабочий стол сервера, и базу запускать прямо на сервере, но все равно не читает, не открывает. 1С 8.3, на сервере ОС Windows Server 2012. |
|||
1
shuhard_серый
14.06.15
✎
11:03
|
(0) в 100500 раз
права должны быть у учетной записи, о которой запущен rphost, байки про полные права трави бухам |
|||
2
Mary01
14.06.15
✎
11:08
|
(1) А если полные права на файл установлены для группы "Все"? Учетная запись, у которой запущен rphost, разве в эту группу не входит?
|
|||
3
ДенисЧ
14.06.15
✎
11:11
|
rphost часто стартует от системной учётки, у которой нет доступа в сеть.
|
|||
4
Mary01
14.06.15
✎
11:21
|
Что делать, если нет сейчас возможности проверить права этой учетки, можно ли как-то обойти это ограничение и прочитать файл?
|
|||
5
ДенисЧ
14.06.15
✎
11:25
|
(4) Если у тебя нет прав водить машину, но тебе нужно срочно поехать - ты сядешь за руль?
|
|||
6
Mary01
14.06.15
✎
11:32
|
(5) хорошая метафора )
|
|||
7
ДенисЧ
14.06.15
✎
11:37
|
Читай на клиенте и передавай на сервер
|
|||
8
Рус Иван
14.06.15
✎
11:38
|
(7)+1
|
|||
9
Рус Иван
14.06.15
✎
11:42
|
Года полтора назад столкнулся с подобной задачей - решил ее запуском базы под отдельным пользователем, все заработало
|
|||
10
Mary01
14.06.15
✎
11:47
|
(7) Сделала, пишет: ошибка отображения типов. Отсутствует отображение для типа XBase
|
|||
11
Mary01
14.06.15
✎
11:48
|
(9) пользователь - имеется в виду пользователь в базе 1С или пользователь - учетка на сервере?
|
|||
12
ДенисЧ
14.06.15
✎
11:50
|
(10) И правильно. Читать и передавать-то правильно надо.
Хотя бы через временное хранилище, а не напрямую |
|||
13
hhhh
14.06.15
✎
11:56
|
(11) на сервере. По умолчанию, если админ ничего не менял - это пользователь USR1CV8 Проверьте есть у этого конкретного пользователя права на этот файл?
|
|||
14
ДенисЧ
14.06.15
✎
11:57
|
(13) читай (4)...
|
|||
15
Mary01
14.06.15
✎
12:18
|
(12) сделала, но теперь имя временного файла превышает 8 символов и не читает.
|
|||
16
shuhard_серый
14.06.15
✎
12:18
|
(15) душещипательная история
|
|||
17
Mary01
14.06.15
✎
12:22
|
(16) да уж
|
|||
18
Mary01
14.06.15
✎
12:33
|
Ура! Все получилось! Сделала так:
|
|||
19
Mary01
14.06.15
✎
12:34
|
&НаКлиенте
Процедура Загрузить(Команда) ДвоичныеДанные = Новый ДвоичныеДанные(Объект.ФайлЗагрузки + "\EdIzm.DBF"); АдресВременногоХранения = ПоместитьВоВременноеХранилище(ДвоичныеДанные); ЗагрузитьединицыИзмерения(АдресВременногоХранения); КонецПроцедуры |
|||
20
Mary01
14.06.15
✎
12:35
|
&НаСервере
Процедура ЗагрузитьЕдиницыИзмерения(АдресВременногоХранения) ДвоичныеДанные = ПолучитьИзВременногоХранилища(АдресВременногоХранения); ДвоичныеДанные.Записать("C:\Users\USR1CV8\AppData\Local\Temp" + "\EdIzm.DBF"); БД = Новый XBase; БД.ОткрытьФайл("C:\Users\USR1CV8\AppData\Local\Temp" + "\EdIzm.DBF"); ... КонецПроцедуры |
|||
21
Рус Иван
14.06.15
✎
12:36
|
(11) Пользователь в базе 1с
(9) + база была в режиме "Обычное приложение" |
|||
22
Mary01
14.06.15
✎
12:43
|
(21) можно попробовать, только придется переписывать форму
|
|||
23
ДенисЧ
14.06.15
✎
12:55
|
За это
" ДвоичныеДанные.Записать("C:\Users\USR1CV8\AppData\Local\Temp"" Два года без права переписки. |
|||
24
Mary01
14.06.15
✎
13:04
|
(23) а как надо?
|
|||
25
ДенисЧ
14.06.15
✎
13:06
|
(24) Минимум - КаталогВременныхФайлов()
А если завтра придёт админ и перезапустит сервер под другим польователем? |
|||
26
Mary01
14.06.15
✎
13:17
|
(23) но C:\Users\USR1CV8\AppData\Local\Temp"" - это и есть катлог временных файлов.
А, ты имеешь в виду, что он перезапустит, и тогда вместо USR1CV8 может быть другой пользователь? |
|||
27
ДенисЧ
14.06.15
✎
13:21
|
(26) Я ещё бы понял, если бы %TEMP%...
Но хардкодить такие пути... Я за такое 3х человек уволил в своё время... |
|||
28
Mary01
14.06.15
✎
13:23
|
(27) а так можно?
ДвоичныеДанные.Записать(КаталогВременныхФайлов() + "\EdIzm.DBF"); |
|||
29
ДенисЧ
14.06.15
✎
13:25
|
(28) Так уже намного лучше.
|
|||
30
Mary01
14.06.15
✎
13:28
|
(29) а как еще лучше, чтобы совсем правильно?
Я не поняла, как использовать %TEMP%... |
|||
31
ДенисЧ
14.06.15
✎
13:38
|
(30) Забудь.
|
|||
32
Fragster
гуру
14.06.15
✎
13:54
|
ПолучитьИмяВременногоФайла(".dbf");
|
|||
33
Fragster
гуру
14.06.15
✎
13:54
|
только без точки
|
|||
34
Mary01
14.06.15
✎
14:03
|
(32) я уже так делала, но имя было очень длинным, и когда я пыталась этот файл прочитать, то это не получалось сделать - возникала ошибка, что имя файла превышает 8 символов. Поэтому я задаю короткое имя принудительно.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |