Имя: Пароль:
1C
 
Запуск внешней обработки под опр. пользователем
0 VVVV
 
30.10.06
16:05
Без изменения кода конфигурации - как??? Возможно такое?
1 КонецЦикла
 
30.10.06
16:07
Параметром передавай туда что хочешь
2 zxcvb
 
30.10.06
16:08
Пользователем чего: 1С; Венды...?
3 Shaman100M
 
30.10.06
16:08
т.е. запустить 1с под пользователем, и автоматом выполнить обработку?
4 GrayT
 
30.10.06
16:09
телепаты?
5 Omega
 
30.10.06
16:14
(0) да.
6 VVVV
 
30.10.06
16:18
Ну, началось. Маловато инфы дал, конечно. Ну, к примеру, я из батника запускаю 1С под логином+паролем 1С-ным, а ПриНачалеРАботыСистемы() пишу
Если глПользователь = "ВасяПупкин" Тогда
......
КонецЕсли;
А из батника можно указать и обработку, которую запустить этим юзером?
7 smaharbA
 
30.10.06
16:22
(6) для ХР/2003 можно
8 VVVV
 
30.10.06
16:23
(7) дык народ вон как накинулся, видать  - куча способов есть.
9 smaharbA
 
30.10.06
16:25
+(7) а впринципе для любой системы... и все штатно...
10 VVVV
 
30.10.06
16:26
(9) ну? не томи :)
11 smaharbA
 
30.10.06
16:27
md %temp%\Обработка.ert&&1cv7.exe /t%temp%\Обработка.ert
///
КаталогВременныхФайлов()
...
Ну если путь до внешних обработок известен...
12 VVVV
 
30.10.06
16:28
(11) Ни фига в написанном не понял, ты уж, плз, с инструкцией для особо одаренных 1С-ников :(
13 smaharbA
 
30.10.06
16:30
md %temp%\Обработка.ert
ТутаПутьк1СПрог\1cv7.exe /t%temp%\Обработка.ert
...
в глобальнике смотрим КаталогВременныхФайлов() и сконца до последнего слеша определяем имя обработки...
14 VVVV
 
30.10.06
16:31
Не пойдет! Не меняя код ГМ!!! - условие!!!
15 zenik
 
30.10.06
16:34
Мало ли, что там в ГМ уже есть. Может там реализован процесс запуска обработок ;)
16 smaharbA
 
30.10.06
16:40
еще так
set ert=c:\extforms\обработка1.ert;c:\extforms\обработка2.ert
1cv7.exe
.
в 1С
КомандаСистемы("echo %ert% > "+КаталогВременныхФайлов()+"какие_обработки.txt")
Текст.Открыть(КаталогВременныхФайлов()+"какие_обработки.txt")
17 smaharbA
 
30.10.06
16:41
(14) Тоже можна, но нужно табло для этого усера разрешить
18 VVVV
 
30.10.06
16:48
(17) ОК, тогда конкретный пример: http://www.infostart.ru/projects/?id=560&ref=1791
как эту обработку запускать без изменения кода и чтоб задания выполняла?
19 Gepard
 
30.10.06
16:49
20 VVVV
 
30.10.06
16:57
(19) Ты бы выложил на инфостарт, к примеру, рассказал - для чего это нужно и где ты сам его применяешь. Тогда народ и потянется...
21 VVVV
 
30.10.06
17:06
???
22 Gepard
 
30.10.06
17:09
v7: Автоматический оператор (Групповая обработка отчетов конфигуратором) - здесь все есть

Может нажимать клавиши
Запускать программы

Можно автоматизировать все, что имеет горячие клавиши
23 smaharbA
 
30.10.06
17:21
(18) 1cv7.cfg + реестр
24 VVVV
 
30.10.06
17:37
(23) ты читал, что она пишет? в ефд чего-то написать и все. Ни фига не понимаю.
25 Ёпрст
 
гуру
30.10.06
17:39
(24) Чего там непонятного то в (18) ? Обычный скрипт для запуска ....
26 VVVV
 
30.10.06
17:44
значит, я - тупой. Как запустить 1С - знаю. Как 1С запустит эту обработку, если я ее нигде не указал для запуска - не знаю. По запаху, что ли, догадается? Ну, положу я ее в ExtForms? Обработка сама оттуда запустится???
27 smaharbA
 
30.10.06
17:47
(24) Я вообще не знаю, что такое в ссылке (18), глянул, а запускать лениво...
28 VVVV
 
30.10.06
17:47
а ты просто прикинь...
29 Ёпрст
 
гуру
30.10.06
17:47
(26) Дык посмотреть скрип запуска самой "золушки" из обработки в (18) религия не позволяет?
30 smaharbA
 
30.10.06
17:49
(26) Короче, тупой вариант. Открываешь под этим "ВасяПупкин" интерактивно, открываешь табло, в нем пишешь ОткрытьФорму("Отчет",,"c:\ert\обработка.ert")
выполнится обработка, если ее нет, то ошибку даст, и фих на нее. Закрываешь 1С, ложишь эту c:\ert\обработка.ert и запускаешь этой запускалкой или батником, Все...
31 VVVV
 
30.10.06
17:51
(29)чтобы там ни было написано (я смотрел, кстати) - как запустить обработку силой мысли???
32 smaharbA
 
30.10.06
17:52
(31) см (30) там какраз "силой мысли"
33 VVVV
 
30.10.06
17:53
Но это - немного не то, что авторша пишет. Не пойму, как она ее запускает :( А с таблом - понятно, пока не сотрешь - будет крутится.
34 VVVV
 
30.10.06
17:54
ладно, я домой - чуть позже подниму ветку.
35 smaharbA
 
30.10.06
18:12
Так пакетник -
set progpath=\\1CSERVER\1Cv77.ADM\BIN.21\1cv7s2.exe
set base=\\1CSERVER\1c-conf\Karat_Mebel
set user=Гинзбург1
set pass=пароль
copy 1cv7start.cfg %base%\users\Гинзбург1\1cv7.cfg
regedit /s табло.reg
"%progpath%" enterprise /d"%base%" /n%user% /p%pass%
...
1cv7start.cfg
...
{
{"App",
{"UseFormulCalc"},
{"NumDelimsOff"},
{"TimePresentDec"},
{"CCYBefore"},
{"DateFormat"},
{"ObjDeleteMode"},
{"ObjOpenMode"},
{"MidNightMode"},
{"LogRefreshTime"},
{"LogMoveToEnd"},
{"LogAskFilter"},
{"LogTwoLines"},
{"LogOneWindow"},
{"LogTimeSel"},
{"LogDays"},
{"LogDateFrom"},
{"LogDateTo"},
{"UsrMonRefreshTime"}},
{"DataBase",
{"RefreshTime","20"},
{"LockWaitTime","1"}},
{"Modules",
{"ModuleCompile"}},
{"ASSISTANT",
{"AssistLang"}},
{"Basic",
{"Journals",
{"RangeVarBeg"},
{"RangeVarEnd"},
{"RangeBeg"},
{"RangeEnd"},
{"AvtoScanSelectValue"},
{"OneChildsDocsJournal"},
{"ScanValueAskCount"},
{"DocSelHist","{}"},
{"OpenJournalFromBottom"},
{"SetPosToNewDoc"}},
{"Documents",
{"NewNotAskTime"},
{"NewAfterAP"},
{"NewCloseInStream"},
{"NewSetCurTime"}},
{"Watch",
{"Content","?ЄъЁ?Є№?юЁьє(""?ЄўхЄ"",,""\\1CSERVER\1c-conf\Karat_Mebel\ExtForms\?ряш°хь?хёёш?.ert"")
"}},
{"Subconto",
{"SubcListsParameters"},
{"ScanValueAskCountSubc"},
{"AvtoScanSelectValueSubc"},
{"SbCntSelHist","{}"},
{"InParentSelectValueSubc"}},
{"Account",
{"AccListsParameters"},
{"DefAccCodeMask"},
{"AccCodeMasks"},
{"UsePlanMask"},
{"AccAskTime"},
{"BrSearchByOrder"},
{"CorrectEntry"}},
{"UserProfile",
{"UserValuesProfile"}}},
{"Salary",
{"CJ",
{"CJMode"},
{"CJDepth"},
{"CJPeriods"},
{"AvtoScanSelectValue"},
{"ScanValueAskCount"},
{"CJListParams"}},
{"Date",
{"CCYBefore"}}},
{"Account",
{"Account",
{"RangeBeg"},
{"RangeEnd"},
{"Plan"},
{"RangeType"},
{"CheckBYear"},
{"CheckBQuart"},
{"CheckBMonth"},
{"QuartYear"},
{"Quart"},
{"MonthYear"},
{"Month"},
{"IntrvBeg"},
{"IntrvEnd"},
{"IntrvSingle"},
{"CheckProv"},
{"AccountWatch"},
{"CalcKindOperSum"},
{"CurrencySum"},
{"GetFromMD"},
{"AutoFormatProvList"},
{"AutoNewEntry"},
{"OperCopyDate"},
{"OperCopySum"},
{"OperCopyHead"},
{"OperCopyEntrys"},
{"CalcProvSumByPrice"},
{"CalcProvSumByRate"},
{"OpenDocByOper"},
{"AutoNewCopyEntry"},
{"OperSelHist","{}"},
{"ProvSelHist","{}"},
{"HidePrompt"}}}}
...
табло.reg
...
REGEDIT4

[-HKEY_CURRENT_USER\Software\1C\1Cv7\7.7\_ Карат-Е: Мебель (Производство)\V7\Гинзбург1\ToolbarSystem\ToolbarPlace-Bar4]

[HKEY_CURRENT_USER\Software\1C\1Cv7\7.7\_ Карат-Е: Мебель (Производство)\V7\Гинзбург1\ToolbarSystem\ToolbarPlace-Bar4]
"BarID"=dword:000000c3
"XPos"=dword:00000357
"YPos"=dword:00000005
"Docking"=dword:00000001
"MRUDockID"=dword:00000000
"MRUDockLeftPos"=dword:00000357
"MRUDockTopPos"=dword:00000005
"MRUDockRightPos"=dword:00000401
"MRUDockBottomPos"=dword:0000009b
"MRUFloatStyle"=dword:00000004
"MRUFloatXPos"=dword:80000000
"MRUFloatYPos"=dword:000002e0
"Style"=dword:00008f94
"ExStyle"=dword:00000f31
"PrevFloating"=dword:00000000
"MDIChild"=dword:00000000
"PctWidth"="166994"
"MRUFloatCX"=dword:0000012c
"MRUFloatCY"=dword:000000b4
"MRUHorzDockCX"=dword:000000aa
"MRUHorzDockCY"=dword:00000096
"MRUVertDockCX"=dword:0000012c
"MRUVertDockCY"=dword:000000b4
"MRUDockingState"=dword:00000000
"DockingStyle"=dword:0000f000
"TypeID"=dword:00000000

///
Так пойдет ?
Универсальность можно самому доделать...(счас лениво)
36 VVVV
 
31.10.06
10:17
ужас... но в той разработке - уверен - не эта метода использовалась.
37 Ёпрст2
 
31.10.06
10:36
(36) Тебе код обработки самому чтоли влом посмотреть?....
38 Эрнст
 
31.10.06
11:20
имя обработки передаем скрипту как параметр командной строки

set wshShell = wScript.createObject("wScript.shell")
wshShell.run """C:\V7\bin\1cv7s.exe"" enterprise /d""C:\MyBase\"" /nПупкин /p123"
wScript.sleep 120000 'подождем пока загрузится (2 минуты)
wshShell.appActivate "1С:Предприятие"
wshShell.sendKeys "^(o)"
wshShell.sendKeys wScript.arguments.unnamed.item(0)
wshShell.sendKeys "~"
39 VVVV
 
31.10.06
11:43
(38)как его передать?
(37) не лень, смотрел не раз, вот он:
Процедура ПриОткрытии(ФлагВосстановленияНастройки)
   
   автозапуск = 0;
   
   Если ПустоеЗначение(ФлагВосстановленияНастройки) = 1 Тогда    
       Сообщить("Рекомендуем задать Автоматическое сохранение настройки!  Действие> Сохранить Настройку> Сохранять автоматически и Использовать пир открытии");
       Время ="00:01";
       КогдаВыполнить =1;  
       Отменить = 1;
   КонецЕсли;
   
   КонтрольВремени();  
   
   UserName1 = ИмяПользователя();
   Если ПустоеЗначение(UserPassword) = 1 Тогда  
       сообщить("Введите пароль пользователя """+UserName1+"""","!");
   КонецЕсли;  
   
   Если ФС.СуществуетФайл("c:\recommend") = 0 Тогда  
       ФС.СоздатьКаталог("c:\recommend");          
   КонецЕсли;
   
   Если ФС.СуществуетФайл("c:\recommend\Rec_zolushka.bat")= 0 Тогда
       флКоманды=0;    
   КонецЕсли;
   
   Если ПустоеЗначение(filezip) = 1 Тогда  
       filezip = "c:\recommend\1c.zip";
   КонецЕсли;  
   
   заполнить();      
   
   // exe **********************************************
   ФС.УстТекКаталог(КаталогПрограммы());      
   exe = ФС.НайтиПервыйФайл("1CV*.exe");
   
   ТМП = ВосстановитьЗначение("ФрмОтчет") ;
   Если ПустоеЗначение(ТМП)=0 Тогда  
       форма.ФрмОтчет.заголовок(форма.ФрмОтчет.заголовок()+ РазделительСтрок+ТМП);
   КонецЕсли;
   
   Если ВРег(Форма.Параметр) = "ВЫПОЛНИТЬ"    Тогда        // автозапуск
       автозапуск = 1;  
       форма.ФрмОтчет.заголовок("");
       Выполнить();    
       Если (ПустоеЗначение(форма.ФрмОтчет.заголовок()) = 0) и (ПустоеЗначение(email) = 0) Тогда  
           Отправить();
       иначе
           ЗаписьЖурналаРегистрации("Золушка  письмо не отправлять ")   ;
       КонецЕсли;
       
       Форма.закрыть();
   КонецЕсли;
   
КонецПроцедуры
40 VVVV
 
31.10.06
11:44
Порядок работы:
----------------------

1. Включите режим  Автоматическое сохранение настройки!  Действие> Сохранить Настройку> Сохранять автоматически и Использовать пир открытии
2. Введите пароль
3. Укажите галочками задания на выполнение.
4. Выберите режим выполнения заданий: Немедленно, Сегодня ночью или Каждую ночь
5. Надмите Выполнить или OK


Для продвинутых пользователей есть возможность подключения дополнительных внешних обработок.
Для подключения дополнительных заданий выполненых в виде внешних обработок необходимо в .efd файл этой обработки добавить строку:
Объект= Zolushka

В саму обработку, в процедуру
ПриОткрытии()  
добавить код:

Если  (ВРег(Форма.Параметр)="ВЫПОЛНИТЬ")      Тогда  
   Сформировать();    // основная процедура выполнения обработки
   Форма.закрыть();
КонецЕсли;
41 smaharbA
 
31.10.06
11:45
(38) Этоже дурдом !
(0) просче запускай по ОЛЕ и делай executebatch
42 VVVV
 
31.10.06
11:48
(41) в (38) меньше кода, чем у тебя.
Еще повторю вопрос: как исходя из инструкции в (40) еженочно запускать эту обработку? НЕ ПРАВЯ КОД В ГМ, как это задумала авторша?
43 Эрнст
 
31.10.06
11:48
(39) wscript myequipt.ert
44 Ёпрст2
 
31.10.06
11:53
(42) Ну дык и смотри Rec_zolushka.vbs ... а как он сделан, смотри сдесь :
ЗаписатьVBS() ...
45 smaharbA
 
31.10.06
11:53
Ладно, жмакайте дальше кнопки...
2 железных варианта дал, для запуска внешней обработки, нет - "не кошерно"
46 VVVV
 
31.10.06
12:00
(45) я хочу понять задумку автора, не обижайся
(44) а как начнет выполнять код обработки вообще? в свете (40)??? Вот чего не понимаю - как сама обработка запустится???
Процедура ЗаписатьVBS()
   
   Текст = СоздатьОбъект("Текст");  

   Если ФС.СуществуетФайл("c:\recommend\Rec_zolushka.vbs")= 1 Тогда
       ФС.УдалитьФайл("c:\recommend\Rec_zolushka.vbs");    
   КонецЕсли;
   
   //ПапкаИБ = КаталогИБ();
   
   Текст.ДобавитьСтроку("Set v7 = CreateObject(""V1CEnterprise.Application"")");
   Текст.ДобавитьСтроку("On Error Resume Next");
   Текст.ДобавитьСтроку("If v7.Initialize(v7.RMTrade, ""/d"""""+КаталогИБ()+""""" /n"+UserName1+" /p"+UserPassword+""", ""NO_SPLASH_SHOW"") Then");
   Текст.ДобавитьСтроку("v7.OpenForm ""Отчет"", ""ВЫПОЛНИТЬ"","""+ КаталогИБ()+"ExtForms\Rec_zolushka.ert""");
   
   Текст.ДобавитьСтроку("Else");  
   Текст.ДобавитьСтроку("Set v7 = Nothing");                    
   Текст.ДобавитьСтроку("set WshShell = CreateObject(""WScript.Shell"")");
   Текст.ДобавитьСтроку("wshShell.run ""cmd /c del """""+КаталогИБ()+"*.cdx /Q""""""");

   Текст.ДобавитьСтроку("Set v7 = CreateObject(""V1CEnterprise.Application"")");
   Текст.ДобавитьСтроку(" If v7.Initialize(v7.RMTrade, ""/m /d"""""+КаталогИБ()+""""" /n"+UserName1+" /p"+UserPassword+""", ""NO_SPLASH_SHOW"") Then");
   Текст.ДобавитьСтроку(" v7.OpenForm ""Отчет"", ""ВЫПОЛНИТЬ"","""+ КаталогИБ()+"ExtForms\Rec_zolushka.ert""");
   Текст.ДобавитьСтроку(" Else");
   Текст.ДобавитьСтроку( "MsgBox ""Надо было индексировать базу"" ,4096+16, ""Золушка""");
   
   Текст.ДобавитьСтроку(" End If");
   
   //Текст.ДобавитьСтроку("res = v7.EvalExpr(""ОткрытьФорму(""""Отчет#"""",""""ВЫПОЛНИТЬ"""",КаталогИБ()+""""ExtForms\Rec_zolushka.ert"""")"")");
   Текст.ДобавитьСтроку("End If");
   Текст.ДобавитьСтроку("Set v7 = Nothing");          
   
   Текст.ДобавитьСтроку("set wshShell = wScript.createObject(""wScript.shell"")");          
   Текст.ДобавитьСтроку("wshShell.run """""""+КаталогПрограммы() + exe +""""" config /d"""""+КаталогИБ()+""""" /n"+UserName1+" /p"+UserPassword+" /@c:\recommend\Rec_zolushka1""");

   Если флКоманды = 1 Тогда
   Текст.ДобавитьСтроку("wshShell.run ""c:\recommend\Rec_zolushka.bat""");
   КонецЕсли;
   Текст.Записать("c:\recommend\Rec_zolushka.vbs");
   
КонецПроцедуры

что она тут пишет? я вбс не знаю ни фига
47 Ёпрст2
 
31.10.06
12:09
(46) Ну чего тут непонятного то? запущается 1с-ка и открывается форма обработки под конкретным юзверем и паролем, и в открываемую форму ей передается команда "ВЫПОЛНИТЬ" ... в ПриОткрытии() у обработки прописаны действия, если передана сей радостная команда ....
48 VVVV
 
31.10.06
12:12
(47) ну тупой я, тупой - <<и открывается форма обработки под конкретным юзверем и паролем>> где она открывается? Точнее - где команда на ее открытие? В Вбс?
49 VVVV
 
31.10.06
12:17
ага, вот теперь понятно, ПриЗакрытии() создается скрипт, который запускается на выполнение, он наверное, в шедуллер записывает задание?
50 Ёпрст2
 
31.10.06
12:18
Создай файлик, дай ему расширение vbs, внутрь положи это

Set v7 = CreateObject("V1CEnterprise.Application")
On Error Resume Next
If v7.Initialize(v7.RMTrade, "/d""ПутьДоКаталогаСБазой"" /nПользователь /pПароль", "NO_SPLASH_SHOW") Then
  v7.OpenForm "Отчет", "ВЫПОЛНИТЬ","ПолныйПутьДоОбработки"
End If

Где,ПутьДоКаталогаСБазой - Например, D:\Base\TestBase\
Пользователь,Пароль ...сам понимаешь что
ПолныйПутьДоОбработки - Например, D:\Base\TestBase\ExtForms\test.ert

В ПриОткрытии() у test.ert напиши
 
 Предупреждение("Урраа!!!   "+Форма.Параметр);
.....

Запущай, радуйся.
51 VVVV
 
31.10.06
12:20
(50) Спасибо, понятно теперь - охота была разобраться с тем, что автор напридумывал - может революционная идея? :)

Процедура ПриЗакрытии()
   
   Если автозапуск = 0 Тогда
       
       Если (Отменить = 1) И (КогдаВыполнить <> 1) Тогда  
           ОтменитьЗадания1();
       КонецЕсли;
       
       Пауза(1000);
       
       Если КогдаВыполнить = 2    Тогда  
           ЗаписатьVBS();    
           ЗапуститьПриложение("AT "+время+" ""c:\recommend\Rec_zolushka.vbs""");  
       ИначеЕсли КогдаВыполнить = 3 Тогда      
           ЗаписатьVBS();
           ЗапуститьПриложение("AT "+время+" /interactive /every:Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday ""c:/recommend/Rec_zolushka.vbs""");
       КонецЕсли;
   КонецЕсли;
   
КонецПроцедуры