Имя: Пароль:
1C
1C 7.7
v7: Определить как запущена 1с
,
0 AntiBuh
 
11.11.15
10:39
Напомните пожалуйста
можно ли определить как запущена 1с
в обычном режиме - с окном
без окна, например с командной строки
как ком объект из другой 1с

если можно, как это можно сделать?
1 vde69
 
11.11.15
10:46
как ком объект из другой 1с - да можно

остальное - нет
2 AntiBuh
 
11.11.15
10:55
(1) подскажи хотябы это, если не трудно
3 НЕА123
 
11.11.15
11:12
ТекущийРежимЗапуска()
не?
4 НЕА123
 
11.11.15
11:14
(3)
сторно, это для 8.
5 ДенисЧ
 
11.11.15
11:25
У 77 всегда есть окно. Просто оно не всегда видно.
6 AntiBuh
 
11.11.15
12:38
так для клюшек все-таки как определить?
хотябы оле/не оле
7 ЧеловекДуши
 
11.11.15
12:51
(6) Чего?
8 ЧеловекДуши
 
11.11.15
12:52
(6) Что тебе даст, оле или нет?
9 HawkEye
 
11.11.15
12:52
(6) зачем? у тебя безконтрольные подключения по ОЛЕ? )))
10 ЧеловекДуши
 
11.11.15
12:53
+(8) У 1С 7.7... Что оле, что не оле. Все что выполняется на стороне клиента "ОЛЕ", все выполняется как обычно, только ты не видешь окна :)
11 vde69
 
11.11.15
13:01
кстати для 7.7 можно получить полную строку запуска вместе со всеми параметрами (включая логин и пароль если они есть)

для проверки откройте диспечер задач и посмотрите колонку "командная строка"(если ее нет - добавте)

сравните чего там лежит при обычном или при комах / пакетниках и вперед....
12 НЕА123
 
11.11.15
13:11
событие ПриНачалеРаботыСистемы() только при интерактивной работе срабатывает...
но может я ошибаюсь.
13 HawkEye
 
11.11.15
13:42
(12) относительно ошибаешься... ))
14 AntiBuh
 
11.11.15
13:57
(8) (9) скажем так
есть служебный ползатель
может запускаться из другой конфы и, например, по регламенту, ну и ручками само собой
вот хотелось бы различить когда как запускает
15 HawkEye
 
11.11.15
13:57
(14) не надо служебного пользователя запускать ручками...
16 AntiBuh
 
11.11.15
14:00
(15) ну ручками это так, для отладок
17 HawkEye
 
11.11.15
15:23
(16) ну вот и все... в ПриНачалеРаботыСистемы - смотришь под каким пользователем зашли, под служебным = значит ОЛЕ, делаешь что надо и закрываешь программу...

для отладки - закоментируешь эту проверку, или положи куда-нибудь файл-флаг... увидел что служебный пользователь - смотришь файл, есть - значит отладка, нет, значит не отладка ))
18 ЧеловекДуши
 
11.11.15
15:36
(16) Определи глобальную переменную "Я_ОЛЕ_Пользователь".
Если там записано 1, значит оле.
Если 0, то зашел пользователь.

Далее везде, где запускается ОЛЕ соединение, дописываешь эту "Переменную" :)
19 eshtrey
 
11.11.15
16:38
ПриНачалеРаботыСистемы() вставь такой код

locator = СоздатьОбъект("wbemscripting.swbemlocator");
    service = locator.connectserver();
    WSHShell = createobject("WScript.Shell");
    oExec = WSHShell.Exec("rundll32 kernel32,SleepEx");
    ProcessId = service.Get("Win32_Process.Handle="+oExec.ProcessId).ParentProcessId;
    oExec.Terminate();
    CommandLine = service.Get("Win32_Process.Handle="+ProcessId).CommandLine;
    ТипЗапуска = "";
    Если Найти(CommandLine,"-Embedding")>0 Тогда
        ТипЗапуска = "OLE";
Иначе типЗапуска = "не OLE"

    КонецЕсли;
20 AntiBuh
 
11.11.15
18:15
пипец
проще еще одну учетку добавить
спасибо всем за ответы
21 Злопчинский
 
12.11.15
12:33
(19) спасибо, сграбил
22 Злопчинский
 
12.11.15
12:34
(20) для служебного пользователя надо все очень аккуратно писать. он интерактивно мыслию дейстовать не умеет, свалится по ошибке какой-нить - и будет у тебя процесс висеть внутрях, ждать когда ты меню-файл-выход сделаешь
23 varelchik
 
12.11.15
17:07
(11)А прикольно на счет командной строки.
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан