Имя: Пароль:
1C
1С v8
какой командой установить время ожидания
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
спасибо большое, Живой Ископаемый