Форум на Kuban.ru (http://forums.kuban.ru/)
-   Территория 1С (http://forums.kuban.ru/f1040/)
-   -   права доступа к папке из под 1С (http://forums.kuban.ru/f1040/prava_dostupa_k_papke_iz_pod_1s-3115637.html)

ktvofffka 28.09.2012 14:39

права доступа к папке из под 1С
 
есть регламентное задание которое должно писать лог в некую сетевую папку... Есть ли возможность при настройке регламента проверить доступность этой папки?

я так понимаю регламент запускается под пользователем 1CUserv82 ну или как там его... в общем тот под которым крутится сервер 1с...проблема в том что вроде все парва стоят.. но

Кат = Константы.папкаЛогов.Получить();
Кат = Кат+?(Прав(Кат,1)="\","","\");
КаталогНаДиске = Новый Файл(Кат);
Если НЕ КаталогНаДиске.Существует() Тогда

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

под пользователем под которым я вхожу в систему доступ также есть...
в регламентном задании доступа нет

roma n 28.09.2012 16:59

Вот тут не понял: [em]в другом месте все работает.. те под сервером проверка наличия папки отрабатываестя коректно[/em]
В каком "другом месте" всё работает? Что означает "под сервером ... отрабатываестя коректно" и из чего этот вывод следует?

Чучундер 28.09.2012 23:10

например на 7.7 ФС работала просто - при попытке скопировать в недоступную для юзверя папку все проходило тихо. только в папке-назначении файла не появлялось.. ;-)
.

VZ 29.09.2012 21:17

0-ktvofffka > ЗначиЦЦа так: объект ФС предназначен для работы не в файловой системе, а в директории базы данных. Потому не имеет никаких средств обнаружения проблем с правами. Более того, 1С не перехватывает (не обрабатывает) сообщения системы, и таким образом не удастся даже воспользоваться конструкцией Попытка-Исключение-Конец Попытки.
Вывод: для сетевых ресурсов, дисковых ресурсов "вообще" надо цепляться через VSH (объект "Scripting.FileSystemObject", и, возможно, "WScript.Network").
Пример:
[em] ScriptControl = createobject("MSScriptControl.ScriptControl");
ScriptControl.language="vbscript";
стр="function CopyVK()
|On Error Resume Next
|Set FSO = CreateObject(""Scripting.FileSystemObject"")
|FSO.CopyFile """+ПолноеИмя+""","""+КаталогПрограммы()+ИмяФайла+""", 1
|if Err.Number = 0 then
| CopyVK = """"
|Else
| CopyVK = err.Description
|end if
|end function"; // err.Description возвращает наименование ошибки
ScriptControl.AddCode(стр);
Если НашлиВБИН = 1 Тогда
Если ДатаВремяБИН < ВремяСоздания Тогда
рез=ScriptControl.run("CopyVK");
//Если рез<>0 Тогда
Если ПустаяСтрока(рез)=0 Тогда
сообщить("Не удалось обновить ВК "+ИмяФайла+". Ошибка "+рез);
Продолжить;
Иначе
Возврат КаталогПрограммы()+ИмяФайла;
КонецЕсли;
Иначе
Возврат КаталогПрограммы()+ИмяФайла;
КонецЕсли;
Иначе //пытаемся поместить в каталог программы
рез=ScriptControl.run("CopyVK");
//Если рез<>0 Тогда
Если ПустаяСтрока(рез)=0 Тогда
сообщить("Не удалось записать в каталог программы обновить ВК "+ИмяФайла+". Ошибка "+рез);
Продолжить;
Иначе
Возврат КаталогПрограммы()+ИмяФайла;
КонецЕсли;
КонецЕсли; //НашлиВБИН = 1[/em]


Текущее время: 12:05. Часовой пояс GMT +3.