|
Получение серверного (UNC) пути к папке в 1С | ☑ | ||
---|---|---|---|---|
0
Demetres
31.03.17
✎
15:04
|
Добрый день!
Подскажите есть ли в 1С метод для получения серверного (UNC) пути к папке? |
|||
1
YFedor
31.03.17
✎
15:06
|
К какой папке?
|
|||
2
Demetres
31.03.17
✎
15:10
|
(1) Которую пользователь выбрал через диалог выбора файла
ДиалогВыбораФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.ВыборКаталога); но нужно не Y:\.... а \\server_name\share_name[\path] |
|||
3
Heckfy
31.03.17
✎
15:19
|
Тут вроде решили: https://forum.sys-adm.in/index.php?topic=1345.0
Только я скрипта не вижу.... |
|||
4
Heckfy
31.03.17
✎
15:21
|
||||
5
Demetres
31.03.17
✎
15:25
|
(4) очень жаль я так надеялся
|
|||
6
drcrasher
31.03.17
✎
15:27
|
(5) что мешает через скрипт сделать?
|
|||
7
Demetres
31.03.17
✎
15:30
|
(6) Если честно пока не знаю как это сделать через скрипт
|
|||
8
Demetres
31.03.17
✎
15:35
|
Судя по всему что-то такое
Попытка Script = Новый COMОбъект("MSScriptControl.ScriptControl"); Script.Language = "javascript"; Script.Timeout = -1; Время = Script.Eval("var d = new Date(); d.getTime()"); Исключение Время = ТекущаяДата(); КонецПопытки; Возврат Время; |
|||
9
Demetres
31.03.17
✎
15:37
|
Только пока не понятно что тут нужно написать
|
|||
10
eklmn
гуру
31.03.17
✎
15:43
|
var sb = new StringBuilder(512);
var size = sb.Capacity; var error = Mpr.WNetGetConnection("Z:", sb, ref size); if (error != 0) throw new Win32Exception(error, "WNetGetConnection failed"); var networkpath = sb.ToString(); |
|||
11
eklmn
гуру
31.03.17
✎
15:44
|
что-то типа такого наверно надо, просто так не получить
|
|||
12
Demetres
31.03.17
✎
15:46
|
(11) Текст скрипта ребята подсказали выше, пока не знаю как это в 1С приладить
Sub Driveinfo() Dim drvpath drvpath = "z:" Dim fs, d, s Set fs = CreateObject("Scripting.FileSystemObject") Set d = fs.GetDrive(fs.GetDriveName(drvpath)) s = "Drive " & UCase(drvpath) & " - " s = s & d.VolumeName & vbCrLf s = s & d.sharename & vbCrLf s = s & "Free Space: " & FormatNumber(d.FreeSpace / 1024, 0) s = s & " Kbytes" MsgBox s End Sub |
|||
13
sitex
naïve
31.03.17
✎
15:48
|
(3) Там зарезаться надо, и скрипт видно будет.
|
|||
14
sitex
naïve
31.03.17
✎
15:48
|
(13) +зарегатся.
|
|||
15
Heckfy
31.03.17
✎
15:51
|
(13) :) Я знаю. :)
Я ТС подсказал, пусть он и режется. :) |
|||
16
eklmn
гуру
31.03.17
✎
15:51
|
(12) ох е-мое, это ж обчный cmd "NET USE Z:"
да и выдает как надо |
|||
17
Demetres
31.03.17
✎
15:58
|
Скрипт в (12) не заработал, или я что-то не так делаю, подскажите если кто в курсе
Скрипт = Новый COMОбъект("MSScriptControl.ScriptControl"); Скрипт.language="VBscript"; Текст = "Sub Driveinfo() |Dim drvpath |drvpath = ""Y:"" |Dim fs, d, s |Set fs = CreateObject(""Scripting.FileSystemObject"") |Set d = fs.GetDrive(fs.GetDriveName(drvpath)) |s = ""Drive "" & UCase(drvpath) & "" - "" |s = s & d.VolumeName & vbCrLf |s = s & d.sharename & vbCrLf |s = s & ""Free Space: "" & FormatNumber(d.FreeSpace / 1024, 0) |s = s & "" Kbytes"" |MsgBox s |End Sub"; Скрипт.AddCode(Текст); Текст = Скрипт.Run("Mess"); |
|||
18
Demetres
31.03.17
✎
16:20
|
(3) Вот такой скрипт работает, а как из него получить значения в 1С можете подсказать?
Скрипт = Новый COMОбъект("MSScriptControl.ScriptControl"); Скрипт.language="VBscript"; Текст = "Sub Driveinfo() |Dim drvpath |drvpath = ""Y:"" |Dim fs, d, s |Set fs = CreateObject(""Scripting.FileSystemObject"") |Set d = fs.GetDrive(fs.GetDriveName(drvpath)) |s = ""Drive "" & UCase(drvpath) & "" - "" |s = s & d.VolumeName & vbCrLf |s = s & d.sharename & vbCrLf |s = s & ""Free Space: "" & FormatNumber(d.FreeSpace / 1024, 0) |s = s & "" Kbytes"" |MsgBox s |End Sub"; Скрипт.AddCode(Текст); Текст = Скрипт.Run("Driveinfo"); |
|||
19
eklmn
гуру
31.03.17
✎
16:29
|
все как всегда просто до нельзя...
пора на отдых ф = новый COMОбъект("Wscript.Network"); ц = ф.EnumNetworkDrives(); для т = 0 по ц.count() -1 цикл сообщить(ц.item(т)); КонецЦикла; |
|||
20
Torquader
31.03.17
✎
16:34
|
Можно задать вопрос - а чего мы вообще хотим ?
Если мы хотим расшарить папку, то нужно вызывать одну функцию. Если мы хотим подключиться к машине с сетевой папкой - другую. А если мы хотим узнать, кто подключен, третью. И что мы хотим ? |
|||
21
Demetres
31.03.17
✎
16:45
|
У меня вот так получилось, всем спасибо!
Функция СетевоеИмяДиска(ИмяДиска) СетевоеИмяДиска = ""; Скрипт = Новый COMОбъект("MSScriptControl.ScriptControl"); Скрипт.language="VBscript"; Текст = СтрШаблон( "Function Driveinfo() |Dim drvpath |drvpath = ""%1"" |Dim fs, d |Set fs = CreateObject(""Scripting.FileSystemObject"") |Set d = fs.GetDrive(fs.GetDriveName(drvpath)) |Driveinfo = Driveinfo & d.sharename |End Function", ИмяДиска); Скрипт.AddCode(Текст); Попытка СетевоеИмяДиска = Скрипт.Run("Driveinfo"); Исключение КонецПопытки; Если ТипЗнч(СетевоеИмяДиска) = Тип("Строка") И Не ПустаяСтрока(СетевоеИмяДиска) Тогда Возврат СетевоеИмяДиска; Иначе Возврат ИмяДиска; КонецЕсли; КонецФункции |
|||
22
Heckfy
31.03.17
✎
16:48
|
За это:
Исключение КонецПопытки; Поубивал бы!!!!! Ну обработайте вы исключение хоть сообщением каким, хоть записью в ЖР!!!! |
|||
23
Demetres
31.03.17
✎
17:14
|
(22) Я это и так обработал, в самом начале функции СетевоеИмяДиска = ""; если что-то не сработает пользователь увидит просто свои привычные "Y:\..." а выводить для него сообщение об ошибке тип "скрипт не отработал ошибка Х:015941" не нужно, поберегу его нервы.
|
|||
24
Heckfy
31.03.17
✎
17:16
|
Ну, удачи при отладке, при таких обработках исключений
|
|||
25
Demetres
31.03.17
✎
17:18
|
(24) Спасибо, но тут отлаживать нечего.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |