Имя: Пароль:
1C
 
Авторизация на smb сервере из 1с
0 kIR
 
10.05.16
14:39
Добрый день!
По просьбе клиентов для ПТиУ сделали отдельную вкладку для сохранения сканов документов. При добавлении скана он автоматически копируется на smb шару, запароленную естессно.
Жутко не хочется для каждого пользователя подключать сетевой диск и тд.
Есть ли вариант авторизоваться на нем из 1с?
пробовал сделать как то так:

текст=    "net use m: \\192.168.87.2\1cscan\ /user:<логин> <пароль>";
//текст=    "net use \\192.168.87.2\1cscan\ /user:<логин> <пароль>";

    файлБатника= КаталогВременныхФайлов()+"reg.cmd";
    записьТекст=новый ЗаписьТекста(файлБатника);
    записьТекст.Записать(текст);
    записьТекст.Закрыть();
    
    КомандаСистемы(файлБатника);



Но не хочет ни в какую. Ошибка при копировании.
Как еще можно решить проблему?
Спасибо
1 Pistol
 
10.05.16
14:55
Авторизация ОС + обращение к шаре по полному имени, без маппинга диска.
2 kIR
 
10.05.16
14:56
(1) а для пролетариев поподробнее можно?
3 Pistol
 
10.05.16
15:40
- Назначить пользователям 1С авторизацию ОС
- Соответствующим пользователям ОС дать доступ к шаре и права на файловую систему
- Обращаться из кода как:
ДвоичныеДанные.Записать("\\192.168.1.1\Шара\файл.жпг");
4 kIR
 
10.05.16
15:50
(3) но у нас кто то с терминала к 1с коннектится, кто то с локально пк, кто то вообще через удаленку из дома
5 eklmn
 
гуру
10.05.16
15:52
(4) делай на сервере значит, передавай клиенту через хранилище
6 Фрэнки
 
10.05.16
15:55
По тексту получается, что происходит ошибка копирования, а не создания во временном каталоге.
7 Лефмихалыч
 
10.05.16
15:57
(0) попробуй без буквы
net use \192.168.1.1\1cscan /user:YourDomain\UserLogin PaSsWoRd
8 Лефмихалыч
 
10.05.16
15:58
+(7) этот спелл сохранит кредентиалы в кэше и винда будет их использовать, кода пользователь проводником или чем-то еще будет ломиться в шару
9 kIR
 
10.05.16
16:08
(7) пробовал и с буквой и без буквы
10 kIR
 
10.05.16
16:09
А ошибка вылетает такая:

{Форма.Форма.Форма(32)}: Ошибка при вызове метода контекста (КопироватьФайл)
                КопироватьФайл(СтрокаТЧ.ИмяФайлаСкана,Каталог + СтрокаТЧ.ИмяДляСохранения);
по причине:
Ошибка копирования файлов
по причине:
Ошибка копирования файлов из 'C:\Users\Кирилл\Desktop\ПЕчать.jpg' в '\\192.168.87.2\1cscan\test1.jpg' : Ошибка при выполнении файловой операции
11 Лефмихалыч
 
10.05.16
16:21
(10) проводником то же самое можешь сделать? или при помощи cmd.exe
12 Лефмихалыч
 
10.05.16
16:22
точнее - очевидно, что не можешь, но хотелось бы увидеть текст, которым тебя xcopy пошлет или проводник
13 kIR
 
10.05.16
16:23
(11) создал интереса для cmd файл на рабочем столе с текстом

net use \\192.168.87.2\1cscan /user:login password


все норм выполняется и дает зайти на диск потом.
14 Лефмихалыч
 
10.05.16
16:24
(13) а теперь 1сом попробуй.
А 1С, кстати, на сервере это все выполняет или на клиенте?
15 kIR
 
10.05.16
16:28
(14) 1c то потом заработает. но хочется отдельно не запускать у клиентов cmd.
попробовал сейчас

xcopy d:\1.jpg \\192.168.87.2\1cscan\


Получил ошибку "неправильно указан диск"
16 kIR
 
10.05.16
16:33
(14) на клиенте при добавлении юзверем данных в строке
17 Фрэнки
 
10.05.16
16:34
(15) но ведь не работает сейчас, даже после запуска cmd вручную
18 kIR
 
10.05.16
16:34
(17) да. а задача - чтобы при запуске из под 1с работало
19 kIR
 
10.05.16
16:35
(17)блин.не так прочитал) я ж комп ребутал
20 kIR
 
10.05.16
16:35
(17) вообще - после ручного запуска cmd все работает)
21 Лефмихалыч
 
10.05.16
16:36
в общем, после net use без буквы должно работать. Если не работает, значит net use по каким-то причинам не выполнился.
Это работает ровно в таких, как в сабже условиях. Проверено лично.
22 kIR
 
10.05.16
16:41
(21) только сейчас догадался поставить оператор паузы и посмотреть,что вылезает
Но легче не стало
http://hkar.ru/It8o
23 kIR
 
10.05.16
16:45
странно,что там 8.2 фигурирует,ведь польззуемся при работе с этой базой платформой 8.3
24 Лефмихалыч
 
10.05.16
16:46
(22) ну, ты выполняешь не net use, а какую-то господнюю сцань. Перестань так делать
25 kIR
 
10.05.16
16:51
(24) а как сделать то?)
26 Лефмихалыч
 
10.05.16
16:52
(25) командасистемы - например
Scripting.shell::run
27 Лефмихалыч
 
10.05.16
16:53
точнее wscript.shell
28 ДенисЧ
 
10.05.16
16:56
А зачем ты уникод в команду передаёшь?
29 kIR
 
10.05.16
16:58
(26)(27) понял,попробую
(28) нууу...как умел,так и делал)
30 kIR
 
10.05.16
17:08
(27) а как в таком случае будет выглядеть все?
31 kIR
 
10.05.16
17:10
(30) ну не вот так же

WshShell = Новый COMObject("WScript.Shell");

текст=    "net use \\192.168.87.2\1cscan /user:login password";
    
Попытка
    WshShell.Run("""" + текст + """");
Исключение
КонецПопытки;
32 Лефмихалыч
 
10.05.16
20:16
(31) ты жалуешься или хвастаешься?
33 kIR
 
11.05.16
09:02
(32) я спрашиваю,Как сделать) бо предложенная конструкция не работает
34 Лефмихалыч
 
11.05.16
09:04
WshShell.Run("net use \192.168.87.2\1cscan /user:login password");

что буквально значит "не работает"? Как ты узнаешь, что не работает?
35 kIR
 
11.05.16
09:08
(34) файло не копируется,доступа нет
37 Лефмихалыч
 
11.05.16
09:09
(35) WshShell.Run("net use \192.168.87.2\1cscan /user:login password 2>c:\net-use.log");

покажи содержимое c:\net-use.log
38 kIR
 
11.05.16
09:16
(37) а нет там лога,не создается
39 Pistol
 
11.05.16
09:18
(37) не надо в корень С писать
40 kIR
 
11.05.16
09:22
(39)  пробовал - не помогло)
А как бы посмотреть,что там в окне командной строки на секунду вылетает?
41 Лефмихалыч
 
11.05.16
09:24
(39) ну, пистец теперь, проблема не решаемая!
(38) ты демонстрируешь отталкивающую беспомощность
42 kIR
 
11.05.16
09:25
(41) только в силу неграмотности/неопытности/незнания
43 Vladal
 
11.05.16
09:29
(37)(38)(39)(40)... ребят... ну ведь не сложно исправить c:\net-use.log на любой другой путь?
Например, так:

WshShell.Run("net use \192.168.87.2\1cscan /user:login password 2>%temp%\net-use.log");
44 kIR
 
11.05.16
09:30
(43) да исправил давно на C:\Test\net-use.log

и с ">" пробовал,и с ">>"
45 ViSo76
 
11.05.16
09:31
(39) Он только подключает папку.
(0) На сколько я понял это windows? Если так то:
Пропиши cmd под пользователем который будет пользоваться доступом net use B: \\192.168.87.2\1cscan [Тут пропиши пароль] /user:[Тут пропиши логин]

PS: B: Это имя сетевого диска, на который ты и будешь писать файл.
Если выдаст ошибку 5 значит нет прав доступа.

WshShell.Run("net use B: \\192.168.87.2\1cscan [Тут пропиши пароль] /user:[Тут пропиши логин] > %temp%\net-use.log");

Удалить команда net use /D B:
46 kIR
 
11.05.16
09:39
(45)ну клиент то на windows
47 ViSo76
 
11.05.16
09:45
(46) Протокол SMB по идее стандартизован и описан в RFC. Если что есть smbclient под windows. Проверь то что я написал через cmd и тогда понятно будет что за проблема.
48 kIR
 
11.05.16
09:56
(47) я в (13) писал,что напрямую из под CMD все работает без проблем
49 Лефмихалыч
 
11.05.16
09:56
(44) значит не выполняется у тебя команда эта и всё
50 ViSo76
 
11.05.16
10:14
(48) Попробуй так. WshShell.Run("net use B: \\192.168.87.2\1cscan [Тут пропиши пароль] /user:[Тут пропиши логин]"); Всё равно когда будешь писать на диск B: получишь ошибку, которую можно будет интерпретировать как ошибку доступа к сетевой папке.
51 kIR
 
11.05.16
10:28
(50) а вот так добавился диск)
Единственное...сильно неадекватной будет такая схема:
подключили диск - скопировали/удалили файло - отключили диск?
52 Лефмихалыч
 
11.05.16
10:31
(51) без буквы теперь попробуй
53 kIR
 
11.05.16
10:36
(52) а сейчас работает
54 Лефмихалыч
 
11.05.16
10:41
(53) то есть пароль надо было перед логином поставить и всё?
55 kIR
 
11.05.16
10:43
(54) сомневаюсь,я пробовал разные комбинации. сейчас комп ребутну и проверю
56 Pistol
 
11.05.16
10:52
(55) Эхьэхь... Справку посмотреть - это так тяжело


D:\>net use /?
Синтаксис данной команды:

NET USE
[имя_устройства | *] [\\имя_компьютера\имя_ресурса[\том] [пароль | *]]
        [/USER:[имя_домена\]имя_пользователя]
        [/USER:[имя_домена_с_точками\]имя_пользователя]
        [/USER:[имя_пользователя@имя_домена_с_точками]
        [/SMARTCARD]
        [/SAVECRED]
        [[/DELETE] | [/PERSISTENT:{YES | NO}]]

NET USE {имя_устройства | *} [пароль | *] /HOME

NET USE [/PERSISTENT:{YES | NO}]


И какой же порядок параметров?
57 kIR
 
11.05.16
11:18
не пойму. я точно пробовал разные комбинации пароля - и в середине,и так..
а сейчас работает

Спасибо всем за потраченные нервные клетки) очень помогли)
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой