![]() |
![]() |
![]() |
|
Создаем ВК "без программирования",получаем задержку в N-сек без 100% загр. | ☑ | ||
---|---|---|---|---|
0
Ковычки
18.10.05
✎
00:21
|
Создаем файл ComSleep.wsc со следующим содержимым
... <?xml version="1.0" encoding="windows-1251"?> <component> <registration description="ComSleep" progid="ComSleep.WSC" version="1.00" classid="{424ac2bc-5732-4dea-be17-0211af99cd79}" > <script language="VBScript"> <![CDATA[ Dim WshShell Function Register() Set WshShell = CreateObject("WScript.Shell") WshShell.Popup "Компонент зарегистрирован в системе",3,"Компонент для получения функции ожидания Sleep",vbInformation End Function Function UnRegister() Set WshShell = CreateObject("WScript.Shell") WshShell.Popup "Компонент удален из системы",3,"Компонент для получения функции ожидания Sleep",vbInformation End Function ]]> </script> </registration> <public> <method name="Sleep"> </method> </public> <script language="VBScript"> <![CDATA[ Function Sleep(T) set Locator=CreateObject("WbemScripting.SWbemLocator") set Service=Locator.ConnectServer() Set UTCTime = Service.ExecNotificationQuery("Select * from __instancemodificationevent where TargetInstance isa 'Win32_UTCTime'") sec=0 secold=0 sec2=int(T) Do While sec2>sec Set objLatestEvent = UTCTime.NextEvent if secold<>objLatestEvent.TargetInstance.Second Then secold=objLatestEvent.TargetInstance.Second sec=sec+1 End If Loop End Function ]]> </script> </component> ... регестрируем regsvr32 /s /i:ComSleep.wsc scrobj.dll, это можно делать и из 1С, удалить сом из системы regsvr32 /s /u /i:ComSleep.wsc scrobj.dll ... После регистрации в 1С пишем следующий код... TimerCom=СоздатьОбъект("ComSleep.wsc"); /// Код 1С, и далее когда нужна задержка ЗадержкаСек=10; TimerCom.Sleep(ЗадержкаСек); |
|||
1
Скобки
18.10.05
✎
01:00
|
(0) Зачем такие сложности?
Темп=КаталогВременныхФайлов()+"sleep.vbs"; Текст=СоздатьОбъект("Текст"); Текст.ДобавитьСтроку("wscript.sleep 1000"); Текст.Записать(Темп); cmdLine="wscript.exe "+Темп; WshShell=СоздатьОбъект("WScript.Shell"); Для сч=-10 По -1 Цикл Состояние("Осталось спать "+(-сч)+" секунд"); WshShell.Run(cmdLine, 0, -1); КонецЦикла; Сообщить("Обработка завершена.","!"); ФС.УдалитьФайл(Темп); |
|||
2
Ковычки
18.10.05
✎
01:02
|
+(1) Конечно точьность невелика, но например для задержки при проведении подойдет
Да кстати, вот код без сом объекта, прямо в 1С (но (0) приведен как можно создать ВК "без программирования")... ... ЗадержкаСек=10; Locator=CreateObject("WbemScripting.SWbemLocator"); Service=Locator.ConnectServer(); UTCTime = Service.ExecNotificationQuery("Select * from __instancemodificationevent where TargetInstance isa 'Win32_UTCTime'"); sec=0; secold=0; Пока ЗадержкаСек>=sec Цикл objLatestEvent = UTCTime.NextEvent(); Если secold<>objLatestEvent.TargetInstance.Second Тогда secold=objLatestEvent.TargetInstance.Second; sec=sec+1; КонецЕсли; КонецЦикла; |
|||
3
Ковычки
18.10.05
✎
01:05
|
(1) Это можешь и не приводить...(давно пора отойти от "внешних" скриптов)
в (0) как уже сказал, можно делать и не только задержку, много чего можно еще... |
|||
4
Скобки
18.10.05
✎
01:06
|
А зачем они, такие "ВК без программирования"? Всё, что можно в них сделать, легко делается и без регистрации COM-серверов - просто текстовый файл vbs и вперёд.
|
|||
5
Ковычки
18.10.05
✎
01:08
|
(4) Извини, но видимо ты плохо представляешь что можно сделать скриптами...
Насчет без регистрации см (2) |
|||
6
Скобки
18.10.05
✎
01:10
|
(5) Да ну? А ты хорошо представляешь? :)
А что значит "давно пора отойти от "внешних" скриптов"? Что ты называешь "внешними скриптами" и чем они плохи? |
|||
7
Ковычки
18.10.05
✎
01:11
|
(6) Поищи по форуму по автору темы Ковычки, это маленькая толика...
|
|||
8
Скобки
18.10.05
✎
01:13
|
(7) Что поискать-то? А здесь поговорить почему не хочешь?
|
|||
9
Ковычки
18.10.05
✎
01:16
|
О чем говорить. Что есть скрипты. Ну вот небольшой пример Узнаем много интересного об файле запуска 1С, даже незная его файловое имя.
|
|||
10
Скобки
18.10.05
✎
01:21
|
Да ладно, кончай пеариться :)
Давай философское обоснование, почему "давно пора отойти от "внешних" скриптов"? :) |
|||
11
Скобки
18.10.05
✎
01:26
|
Кстати, о птичках: имхо, wsc-компоненты нужны только для удобства повторного использования кода в тех же административных скриптах, не более. В 1С их применять неудобно, ибо замумукаешся регистрировать эти COM-сервера (прав у рядового пользователя может оказаться мало). А никаких принципиальных возможностей wsc-сервера не дадут...
|
|||
12
Ковычки
18.10.05
✎
01:27
|
(10) Нету правда счас настроения, курить охота, сигареты скончались.
Во "внешние" скрипты надо передать параметры (это просто конечно) потом эти параметры переделать в какие надо типы и прочее, да и обратно получить результат проблематично (наверно это основное), опять же только через файл. А как в (0) можно файл и в тексте держать, "вывалив" его конечно получаем тоже ""внешний скрипт"", но несовсем результат в 1С возвращается легко... |
|||
13
Ковычки
18.10.05
✎
01:28
|
(11) Прав может неоказаться и на выполнение "внешних" скриптов и скриптинга вцелом
|
|||
14
Ковычки
18.10.05
✎
01:29
|
+(13) и неиспользуй эту дрянь "имхо", так говорят пацанята (в основном)
|
|||
15
Скобки
18.10.05
✎
01:32
|
Сигареты надо заранее покупать, ёлы-палы :)
Такие вещи видел? ScrCtrl=СоздатьОбъект("MSScriptControl.ScriptControl"); ScrCtrl.Language="VBScript"; ScrCtrl.AddCode(" |Function Func() | Set SubDict = CreateObject(""Scripting.Dictionary"") | SubDict.Add 1, ""one"" | SubDict.Add 2, ""two"" | SubDict.Add 3, ""three"" | Dict.Add 1, SubDict |End Function |"); Dict=СоздатьОбъект("Scripting.Dictionary"); ScrCtrl.AddObject("Dict",Dict); ScrCtrl.Run("Func"); Для ы=1 по Dict.Count Цикл SubDict=Dict.Item(ы); Для ъ=1 по SubDict.Count Цикл Сообщить(SubDict.Item(ъ)); КонецЦикла; КонецЦикла; Так что передача параметров и работа с заковыристыми типами данных - не проблема. |
|||
16
Скобки
18.10.05
✎
01:34
|
Что у тебя за комплекс на это "имхо"? Так весь рунет говорит, с чего ты взял, что пацанята?
|
|||
17
Скобки
18.10.05
✎
01:38
|
А вот и с параметрами и с возвратом:
ScrCtrl=СоздатьОбъект("MSScriptControl.ScriptControl"); ScrCtrl.Language="VBScript"; ScrCtrl.AddCode(" |Sub Exec1() | MsgBox ""Сообщение 1"" |End Sub |Function Exec2(Txt) | MsgBox Txt | Exec2 = Txt |End Function |"); Module=ScrCtrl.Modules("Global"); CodeObject=Module.CodeObject; Возвр=CodeObject.Exec2("Oops!"); Сообщить(Возвр); |
|||
18
smaharbA
18.10.05
✎
01:38
|
Кстати на счет регистрации, достаточно один wsc зарегить, а при необходимости туда можно "находу" добавить/исправить метод/параметр
(15) А теперь попробуй с Item поработать не в словаре ;) , да кстати, ненадо мне приводить чужой код, (15) это балавство... |
|||
19
Ковычки
18.10.05
✎
01:40
|
(17) и еще, у MSScripting медленное выполнение и ограничение на время выполнения, дальше он выдаст Превышено время... "Переключиться""Продолжить"
|
|||
20
Скобки
18.10.05
✎
01:47
|
(15) - это не "балавство", а пример подключения объекта к MSScriptControl. Ёксель, к примеру, при работе из 1цэ не всегда булев тип данных кушает (-1 за true не признаёт, вываливается на исключение). И с Ёкселем можно работать в этих случаях именно так...
Про Item: и с коллекциями разных объектов, которые не перевариваются 1С (если ты об этом), можно работать тоже через MSScriptControl... |
|||
21
Скобки
18.10.05
✎
01:50
|
Насчёт "ограничения на время выполнения" у MSScriptControl, если ты не знал:
ScrCtrl=СоздатьОбъект("MSScriptControl.ScriptControl"); ScrCtrl.Language="VBScript"; ScrCtrl.AddCode(" |Sub Exec() | While 0=0 | Wend |End Sub |"); ScrCtrl.Timeout=5000; Попытка ScrCtrl.Run("Exec"); Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; Если поставишь Timeout=-1, эта музыка будет вечной :) |
|||
22
Ковычки
18.10.05
✎
01:51
|
(20) Эти примеры из убогой алс выкинь, а ехель кушает всегда, несчитая некоторых моментов (PageSetup к примеру), но и это обходится без MSScripting, попробуй кстати через msscripting подключиться к весомому доку ехель...
|
|||
23
Ковычки
18.10.05
✎
01:52
|
(21) Небудет вечной, поверь...
|
|||
24
Ковычки
18.10.05
✎
01:53
|
+(23) Причина не во времени выполнения скрипта TimeOut дает только ограничение на выполнение, чтоб небыло бесконечно...
|
|||
25
Ковычки
18.10.05
✎
01:56
|
И еще, мсдн прочитан уже лет сколькото назад... Неприводи тут прописные истины...
Лучче привиди код нахождения ProcessID 1С (опять пиарю ;)), это так - тест... ;) |
|||
26
Скобки
18.10.05
✎
01:57
|
"Эти примеры из убогой алс выкинь" - это конечно веский аргумент :) Про PageSetup именно и речь, кстати... А причём здесь "весомый док"? MSScriptControl удобен для работы с типами данных, которые в 1С глючат + для работы с WMI, вот и всё... И никакие WSC не нужны...
Колись насчёт (16). |
|||
27
smaharbA
18.10.05
✎
02:00
|
Насчет (16) просто по прошествии нескольких лет (правда вот уже месяцев 10 я в интернете) увидев интернет ужаснулся, слова какието непонятные (сейчас конечно уже знаю что к чему), непонравились они мне почемуто...
|
|||
28
Скобки
18.10.05
✎
02:04
|
(27) Темнишь :) Кто-то задел тебя с этим "имхо", вот теперь и комплексуешь...
Твой "ехель" думаешь, намного лучше? Кстати, насчёт "мсдн прочитан уже лет сколькото назад": думаешь, wsc - это не баян? :) Ещё какой :) |
|||
29
smaharbA
18.10.05
✎
02:04
|
(26) Да, для работы с вми совем необязателен MSScripting и/или "внешние" скрипты (хотя конечно невсегда так, к примеру "полностью" ассинхронный доступ, вот тут то без "внешних" скриптов необойтись, тут и msscripting и com непомощники :( )
|
|||
30
smaharbA
18.10.05
✎
02:06
|
(28) Нетемню, в инете я был еще с ремартов, тогда было немного подругому, а обидки - "на обиженных воду возят" (такая есть приговорка в определенных местах)
|
|||
31
smaharbA
18.10.05
✎
02:08
|
Давай уж открывай "личину"...
|
|||
32
Скобки
18.10.05
✎
02:12
|
"для работы с вми совем необязателен MSScripting" - думаю, это ты про VBA :) Там свои геморрои... Например, CreateObject("Excel.Application") слишком умный, падло, подключается к существующему процессу, если таковой есть, а это не всегда хорошо. И вообще, Office может не стоять на машине... Так что MSScriptControl - пользительная весчь.
|
|||
33
smaharbA
18.10.05
✎
02:14
|
(32) Нет не о VBA, ты (2) то глядел?
А что насчет ProcessID Всеже? |
|||
34
Скобки
18.10.05
✎
02:14
|
А смысл личину открывать? Думаешь, твоя личина зарегистрированная о чём-то говорит? Один чёрт, в инете все анонисты по определению :)
|
|||
35
smaharbA
18.10.05
✎
02:17
|
(34) Нет почемуж, майл у меня верный, да вообщето оказывается кроме почты я ничего неуказал ;)
|
|||
36
Скобки
18.10.05
✎
02:19
|
Насчет ProcessID не знаю, не озадачивался никогда. Считай тест я не прошёл :) Тока меня это почему-то не расстраивает :)
Про (2) понял - с помощью CreateObject("WbemScripting.SWbemLocator") можно обойтись во многих случаях без GetObject(), которой в семёрке нет. Плавали, знаем :) Хороший ты собеседник, smaharbA, но спать пора... |
|||
37
Скобки
18.10.05
✎
02:21
|
Ладно, бывай... Ещё поговорим как-нибудь...
|
|||
38
Ковычки
18.10.05
✎
02:23
|
Ладно, пока... спокойного сна Скобки...
|
|||
39
Ковычки
18.10.05
✎
12:18
|
Ну что, хоть покритикуйте еще кто, а... (ненавижу критику, хоть неконструктивную, хоть конструктивную)
|
|||
40
Волшебник
модератор
18.10.05
✎
12:20
|
Я не понял, зачем нужна "задержка при проведении" (2-й пост).
|
|||
41
КонецЦикла
18.10.05
✎
12:28
|
Ковычки, Скобки - жжоте, молодцы... респект!
|
|||
42
romix
модератор
18.10.05
✎
12:28
|
||||
43
Ковычки
18.10.05
✎
12:28
|
(40) При групповом, чтоб народу дать поработать
|
|||
44
Ковычки
18.10.05
✎
12:29
|
(40) чтоб транзакция дольше висела: 10, 20, 30 сек
|
|||
45
Волшебник
модератор
18.10.05
✎
12:31
|
Тогда нужно называть не "задержки при проведении", а "задержки между проведениями документов". А то я подумал, что специально замедляется проведение документа для каких-то целей...
|
|||
46
smaharbA
18.10.05
✎
12:31
|
Все небудет больше Ковычек (похоронил) 4(44)
|
|||
47
Simod
18.10.05
✎
12:38
|
По поводу задержек. И никакой нагрузки на процессор.
http://avb1c.narod.ru/?=a20 |
|||
48
smaharbA
18.10.05
✎
12:44
|
(47) Вы это попробуйте сначало, тыкали уже таким в нос, а (0) я привел как пример создания, кстати очень замечательно, можно находу дописывать переписывать если конечно СоздатьОбъект не ПриНачалеработы, а создается там где нужен...
посмотри на простоту использования/написания методов. |
|||
49
smaharbA
18.10.05
✎
12:44
|
(47) а насчет загрузки, позырь, а потом говори
|
|||
50
Simod
18.10.05
✎
12:46
|
(48)
"(47) Вы это попробуйте сначало, тыкали уже таким в нос, а (0) я привел как пример создания, ..." Дак ты или Ковычки ? :-)) Я это не только пробовал, у меня это работает... |
|||
51
smaharbA
18.10.05
✎
12:51
|
(50) Привел то Ковычки, но теперь я его(Ковычки) похоронил...
А насчет пробовать, всеж сделай вновь (47) и позырь на загрузку процесса 1С... и сделай как (0) хотя можно и просче и тож взгляни |
|||
52
romix
модератор
18.10.05
✎
13:14
|
(47) Посмотрел. Ничего не понял. Имитация закрытия со статусом возврата 0 в цикле без пауз. Задержка обновления реализована через _getPerformanceCounter().
|
|||
53
romix
18.10.05
✎
13:16
|
(+52) Имхо тут нет никаких пауз в принципе - система дрючится со 100% загрузкой.
|
|||
54
Simod
18.10.05
✎
13:16
|
(51) Загрузка процесса 1С нулевая. Вообще-то я ничего против (0) не имею, просто считаю, что "Чем проще, тем лучше".
|
|||
55
smaharbA
18.10.05
✎
13:18
|
(54) Дак это и есть просче весь код в 1С прведенные в окончании (0) 3 строчки
|
|||
56
Simod
18.10.05
✎
13:21
|
(55) Да, но перед этим нужно сделать все действия до этих трех строк. Лично я все это (0) на память не запомню, а принцип заложенный в (47) очень прост и легко воспроизводим.
|
|||
57
smaharbA
18.10.05
✎
13:21
|
(53) Нет там в (47) небудет 100% загрузки, но всеже загрузит сколькото ну процентов на 10-20
|
|||
58
Simod
18.10.05
✎
13:33
|
(57) В (47) загрузка появляется из-за вывода времени и изменения цвета.
|
|||
59
smaharbA
18.10.05
✎
13:39
|
(58) Думаю что нет дейтвия вроде состояние и подобные могут даже снизить загрузку, вернее приостановить цикл
|
|||
60
Simod
18.10.05
✎
13:53
|
(59) Возможно, это не проверял. У меня эта идея (47) реализована в совершенно простом виде. При выполнении загрузка ЦП 0-2%, да и то вероятно из-за отображения некоторой информации на диалоговой форме.
|
|||
61
raykom
18.10.05
✎
14:03
|
Харе блатовать. Объясните мне, непонятливому, зачем в мирской жизни этот тюнинг на 1С ?? Я пока кроме понтов тута никакой практической пользы не вижу... . Поправьте, если что ... . Абрахамсу привет.
|
|||
62
smaharbA
18.10.05
✎
14:17
|
(61) Привет. А так, чтобы было. Просто частенько пишут ВК на всяческих дельфи/васике/си и прочем, а теже методы можно создать тем что есть в системе.
На очереди (открою тайну покрытую мраком), нахождение Hwnd окна без ВК и прочего, ну и одна из больных проблем архивация/выгрузка конфы(базы) с выгоном усеров, мягким, а затем жестким без участия 1С-админа... А всеже жалко мне Ковычки, какой был парень... |
|||
63
goodfella
18.10.05
✎
14:32
|
(61) Для удобства пользователей.
|
|||
64
raykom
18.10.05
✎
16:51
|
(62)Проспал все. Да Ковычки он не дурак вовсе, а что с ним ??? Спасибо за ликбез, понял, что нада, а зачем такинепонял. Ну да лана, глана, чоб людям нравилося :)).
|
|||
65
raykom
18.10.05
✎
16:52
|
(62) Как на счет времени ?? В смысле пивасика ?
|
|||
66
smaharbA
18.10.05
✎
16:58
|
(65) Давай, хоть счас
|
|||
67
raykom
18.10.05
✎
16:59
|
Счас, определюся в течении 20 мин. Вероятность 90% :) А чо с Ковычками то ??
|
|||
68
raykom
18.10.05
✎
17:01
|
Счас, определюся в течении 20 мин. Вероятность 90% :) А чо с Ковычками то ??
|
|||
69
smaharbA
18.10.05
✎
17:06
|
Да я убил его, логи нзарегистрировал и все... Хотя мне он нравился ;)
|
|||
70
smaharbA
18.10.05
✎
17:07
|
Ну что, пиво то пьем? Тока лучче на нейтральной территории, гденибудь в районе УПИ
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |