|
какой командой установить время ожидания | ☑ | ||
---|---|---|---|---|
0
Adgjj
14.11.11
✎
11:49
|
Скажите, пжл, какой командой установить время ожидания?
|
|||
1
andrewks
14.11.11
✎
11:49
|
время ожидания чего?
|
|||
2
Adgjj
14.11.11
✎
11:52
|
ЗапуститьПриложение(ПутьКСкрипту); //скрипт открывает предпр (подождите)
надо подождать ЗавершитьРаботуСистемы(Ложь); в скрипте ЗавершитьРаботуСистемы не срабатывает, т.к. ЗапуститьПриложение(ПутьКСкрипту); запускается долго Процедура ОбновитьКонфигурацию() Экспорт МассивСоединений=ПолучитьСоединенияИнформационнойБазы(); Если МассивСоединений.Количество()>1 Тогда Возврат; // ждем дальше... КонецЕсли; СтрокаСоединения=СтрокаСоединенияИнформационнойБазы(); ПутьКСкрипту=КаталогВременныхФайлов()+"obmen.vbs"; Скрипт=Новый ЗаписьТекста(ПутьКСкрипту,КодировкаТекста.ANSI); Скрипт.ЗаписатьСтроку("WScript.Sleep 5000"); // на всякий случай Скрипт.ЗаписатьСтроку("Set WshShell=CreateObject(""WScript.Shell"")"); Команда=""""""+КаталогПрограммы()+"1CV8.EXE"""" CONFIG"+?(НСтр(СтрокаСоединения,"File")<>""," /F "+НСтр(СтрокаСоединения,"File")," /S "+НСтр(СтрокаСоединения,"Srvr")+"\"+НСтр(СтрокаСоединения,"Ref"))+" /N Obmen /P Obmen /UpdateDBCfg"; Скрипт.ЗаписатьСтроку("ReturnCode=WshShell.Run("""+Команда+""",1,1)"); Скрипт.ЗаписатьСтроку("If ReturnCode=0 Then"); // если обновились удачно, то пытаемся дочитать сообщение Команда=""""""+КаталогПрограммы()+"1CV8.EXE"""" ENTERPRISE"+?(НСтр(СтрокаСоединения,"File")<>""," /F "+НСтр(СтрокаСоединения,"File")," /S "+НСтр(СтрокаСоединения,"Srvr")+"\"+НСтр(СтрокаСоединения,"Ref"))+" /N Obmen /P Obmen"; Скрипт.ЗаписатьСтроку("WshShell.Run """+Команда+""",1,0"); Скрипт.ЗаписатьСтроку("End If"); Скрипт.ЗаписатьСтроку("Set FSO=CreateObject(""Scripting.FileSystemObject"")"); Скрипт.ЗаписатьСтроку("Set File=FSO.GetFile(WScript.ScriptFullName)"); Скрипт.ЗаписатьСтроку("File.Delete"); Скрипт.Закрыть(); ЗапуститьПриложение(ПутьКСкрипту); //скрипт открывает предпр (подождите) //ПРЕДУПРЕЖДЕНИЕ("скрипт: перед ЗавершитьРаботуСистемы - а 1СПредприятие еще не запустилось - ЖДИТЕ!!!"); для н=1 по 100000 цикл конеццикла; ЗавершитьРаботуСистемы(Ложь); //не срабатывает - еще не открыто - нечего завершать ПРЕДУПРЕЖДЕНИЕ("скрипт: ВЫШЛИ"); //не появляется КонецПроцедуры |
|||
3
Wobland
14.11.11
✎
11:52
|
телепатирую:
Set WshShell=WScript.CreateObject("WScript.Shell") WScript.Sleep(3000) //переделай под 1С |
|||
4
Wobland
14.11.11
✎
11:53
|
Примечание:
После загрузки Windows-приложения управление возвращается в 1С:Предприятие и исполнение модуля продолжается. //это про КомандаСистемы() |
|||
5
andrewks
14.11.11
✎
11:54
|
для н=1 по 100000 цикл
конеццикла; ахренеть... |
|||
6
andrewks
14.11.11
✎
11:54
|
(3) у него уже есть слип
|
|||
7
Wobland
14.11.11
✎
11:54
|
(6) неё.
(0) кстати, да! где? |
|||
8
Живой Ископаемый
14.11.11
✎
11:55
|
яркий пример как выбор неправильной стрегии требует в дальтнейшем дополнительных кривеньких костылей...
|
|||
9
aleks-id
14.11.11
✎
11:56
|
вот зачем всё через опу делать? есть же команда запуска приложения с ожиданием его завершения
|
|||
10
andrewks
14.11.11
✎
11:59
|
(9) в данной ситуации не покатит
|
|||
11
Serg_1960
14.11.11
✎
12:13
|
Сорри, может быть я не въехал "в тему", но в типовых версиях есть "всё необходимое": автоматический обмен данными...
|
|||
12
Живой Ископаемый
14.11.11
✎
12:15
|
2(11) этой теме уже пару недель.. девушке было рассказано что в типовых все есть. но она оправдываясь что так они ж под 8.2, а у нее УАТ под 8.1 и с типовым кодом будет долго разбираться, стянула обработку с инфостарта и пытается натянуть на УАТ в надежде что это будет сделать легче.
|
|||
13
Serg_1960
14.11.11
✎
12:36
|
(12) (возглас разочарования) Ыыыы... :(
(возглас разочеравания) |
|||
14
andrewks
14.11.11
✎
13:16
|
а чё такое УАТ? чё-то про автотранспорт?
|
|||
15
Adgjj
14.11.11
✎
13:19
|
(12) 1. не пару недель))
2. я говорила, что в типовой UAT(управление автотранспортом) нет автообмена, пробовала взять из бухгалтерии, но так еще дольше! |
|||
16
Adgjj
14.11.11
✎
13:19
|
с инфостарта я стянула только скрипт))
|
|||
17
Reset
14.11.11
✎
13:21
|
ПРЕДУПРЕЖДЕНИЕ("скрипт: перед ЗавершитьРаботуСистемы - а 1СПредприятие еще не запустилось - ЖДИТЕ!!!" ,5 ); // 5 секунд
|
|||
18
Reset
14.11.11
✎
13:21
|
купите СП
|
|||
19
Reset
14.11.11
✎
13:22
|
З.Ы. остальной код не смотрел, утверждавшим, что он ошибочный - верю.
|
|||
20
Adgjj
14.11.11
✎
13:22
|
(17) эта комнда не выполняется, скрипт заканчивает выполняться на ЗапуститьПриложение(ПутьКСкрипту);
|
|||
21
Reset
14.11.11
✎
13:23
|
(20) На вопрос я ответил? ответил.
|
|||
22
Adgjj
14.11.11
✎
13:24
|
у меня сейчас обмен выполняется так:
1)запускаю батник, 2)вручную закрываю режим предприятия, 3)еще раз запускаю батник - готово. |
|||
23
andrewks
14.11.11
✎
13:24
|
+(18) кстати, очень хорошие СП продаются у ДенисЧ
|
|||
24
Adgjj
14.11.11
✎
13:24
|
зачем столько нервозности7
|
|||
25
andrewks
14.11.11
✎
13:25
|
вообще, какая изначально задача стоит?
|
|||
26
Adgjj
14.11.11
✎
13:26
|
(25) сделать автообмен между двумя базами UAT (базы в разных городах)
|
|||
27
andrewks
14.11.11
✎
13:28
|
а для чего обновление конфигурации БД?
|
|||
28
Adgjj
14.11.11
✎
13:37
|
Попытка
Состояние("Считываем файл центральной базы"); ЧтениеXML = Новый ЧтениеXML(); ИмяФайлаСообщения = КаталогВременныхФайлов() + "Message_KOR_KOT.xml"; //НАДО НА СЕРВЕРЕ ЧтениеXML.ОткрытьФайл(ИмяФайлаСообщения); ЧтениеСообщения = ПланыОбмена.СоздатьЧтениеСообщения(); ЧтениеСообщения.НачатьЧтение(ЧтениеXML,); ПланыОбмена.ПрочитатьИзменения(ЧтениеСообщения); предупреждение("Ура: ДАННЫЕ из центральной базы загрузились."); ЧтениеСообщения.ЗакончитьЧтение(); ЧтениеXML.Закрыть(); Сообщить("2) ОБМЕН: ДАННЫЕ ОБМЕНА в периферийную базу приняты"); //ЗавершитьРаботуСистемы(Ложь); Исключение СтрОписания="Обновление может быть выполнено в режиме Конфигуратор."; Если Прав(ОписаниеОшибки(),СтрДлина(СтрОписания))=СтрОписания Тогда //предупреждение("Перед скриптом"); ОбновитьКонфигурацию(); // процедура обновления конфигурации предупреждение("вышли из скрипта"); //не попадает сюда Иначе Сообщить("ОБМЕН: Ошибка при получении данных обмена: " + ОписаниеОшибки(),СтатусСообщения.ОченьВажное); КонецЕсли; КонецПопытки; Это код для загрузки в периф. базу xml-файла, выгруженного из центральной базы. Метод прочитать изменения ПрочитатьИзменения первоначально выдает сообщение "Обновление может быть выполнено в режиме Конфигуратор.", поэтому попадаем в Исключение, где ОбновлениеКонфигурации() открывает конфигуратор и из него открывает 1сПердприятие - произошло обновление конфигурации. Но отрывае Предприятие скриптом почему-то не закрывается, и его приходится закрывать вручную перед 2-м вызовом батника. |
|||
29
Живой Ископаемый
14.11.11
✎
13:45
|
этоже очевидно, потому что
нет команды ЗавершитьРаботуСистемы(Ложь); |
|||
30
Adgjj
14.11.11
✎
13:50
|
(29) спасибо бошльшое, тогда наверно так
ЗапуститьПриложение(ПутьКСкрипту,,Истина); попробую |
|||
31
Adgjj
14.11.11
✎
13:58
|
теперь сам закрывает, но ДАННЫЕ не переносит (после второго запуска батника)
|
|||
32
Wobland
14.11.11
✎
14:00
|
ИмяФайлаСообщения = КаталогВременныхФайлов()...
поправьте, если не прав. на сервере бывает временный каталог? |
|||
33
Adgjj
14.11.11
✎
14:01
|
я пока локально тренируюсь
|
|||
34
Живой Ископаемый
14.11.11
✎
14:06
|
2(32) э... она все равно завязалась на WshShell, так что...
|
|||
35
Wobland
14.11.11
✎
14:07
|
(34) я для себя больше спросил
|
|||
36
Adgjj
14.11.11
✎
14:12
|
(34) использовать WshShell нельзя, если нужно будет работать на сервере?
|
|||
37
Живой Ископаемый
14.11.11
✎
14:15
|
2(36) если сервер на Линуксе то ответ очевиден... Впрочем для Линукса пока вообще конфигуратора нет... Так что весь код предполагает что он будет выполняться в Винде... и даже если это будет сервер все равно платформа должна быть установлена
2(35) СП говорит что на сервере метод определен |
|||
38
Живой Ископаемый
14.11.11
✎
14:18
|
2(36) просто если сервер - то опять же у USR1CV82 должны быть права на WshShell, он должен быть установлен и все дела...
|
|||
39
Adgjj
14.11.11
✎
14:28
|
спасибо большое, Живой Ископаемый
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |