|
Не работает второй процесс 1с 7.7 | ☑ | ||
---|---|---|---|---|
0
Shaman100M
21.12.11
✎
17:32
|
Добрый вечер!
Бьемся с системным администратором над проблемой где-то неделю. Может, кто-то ранее уже сталкивался... ОС Windows Server2008R2 + Remote Desktops 1С 7.70.0.27 SQL В глобальнике Процедура ПриНачалеРаботыСистемы() Если ИмяПользователя() = "test1" Тогда ОткрытьФорму("Отчет.Test1vn"); ЗавершитьРаботуСистемы(); ИначеЕсли ИмяПользователя() = "test2" Тогда ОткрытьФорму("Отчет.Test2vn"); ЗавершитьРаботуСистемы(); КонецЕсли; КонецПроцедуры В модуле отчета: Процедура ПриОткрытии() // служебный код СтатусВозврата(0); КонецПроцедуры В планировщике создаем задачу, которая выполняется под администратором домена+Выполнить с наивысшими правами. Задача запускает скрипт, который запускает 1С сначала с авторизацией test1, затем второй, - с test2. Задача под test1 работает, задача под test2 запускается и через несколько секунд завершается. Глобальный модуль во втором сеансе не отрабатывает вообще. Есть предположение, что что-то связано с расположением временных файлов. Заранее спасибо. |
|||
1
miki
21.12.11
✎
17:34
|
поменять местами, сначала для test2, а после для test1 пробовали?
|
|||
2
Shaman100M
21.12.11
✎
17:35
|
ага
|
|||
3
GLazNik
21.12.11
✎
17:35
|
пропишите разные рабочие каталоги для пользователя test1 и test2
Интерактивно запускать под пользователем test1 и test2 пробывали? |
|||
4
andrewks
21.12.11
✎
17:36
|
ОткрытьФормуМодально() ?
|
|||
5
Shaman100M
21.12.11
✎
17:38
|
(3) каталоги разные - делали.
Интерактивно все работает. А в "нулевой" сессии (созданы планировщиком) - второй процесс полноценно не идет. |
|||
6
Shaman100M
21.12.11
✎
17:38
|
(4) тоже не помогло.
|
|||
7
miki
21.12.11
✎
17:41
|
(6)>>Интерактивно все работает.
может задача требует нажатия какой-нить кнопочки? :) |
|||
8
andrewks
21.12.11
✎
17:41
|
(6) я надеюсь, ты в обоих строчках поменял? ;-)
|
|||
9
Tatitutu
21.12.11
✎
17:44
|
Если ИмяПользователя() = "test1" Тогда
ОткрытьФорму("Отчет.Test1vn"); ЗавершитьРаботуСистемы(); ИначеЕсли ИмяПользователя() = "test2" Тогда ОткрытьФорму("Отчет.Test2vn"); ЗавершитьРаботуСистемы(); КонецЕсли; у тебя во второй строчке ИмяПользователя() неправильно написано :-) |
|||
10
Shaman100M
21.12.11
✎
17:44
|
(7) код 1с ничего не требует. Интерактивно если запускать, все отрабатывает и закрывается без вмешательства человека. )
(8) ну да, естественно. |
|||
11
andrewks
21.12.11
✎
17:45
|
что в ПриОткрытии() в Отчет.Test2vn?
|
|||
12
andrewks
21.12.11
✎
17:46
|
и как определил, что не отрабатывает ГМ? что в логах 1с? пробовал ли в ГМ в ПриНачалеРаботыСистемы() писать в свой лог текст?
|
|||
13
miki
21.12.11
✎
17:47
|
(10)>>Интерактивно если запускать, все отрабатывает и закрывается без вмешательства человека
Уточню, на всякий случай: оба одновремено запускал? |
|||
14
Shaman100M
21.12.11
✎
17:48
|
(9) )))
?("синий"="красный",1,0) = 0 |
|||
15
andrewks
21.12.11
✎
17:49
|
+(12) и есть ли что-то в логах выня
|
|||
16
Ленинград
21.12.11
✎
17:50
|
Может у тебя там в момент закрытия с первого юзе.....
А нет, бл""ть SQL же |
|||
17
Shaman100M
21.12.11
✎
17:51
|
(11) спецом сделали одинаковые тестовые отчеты с "зацикливанием". Пока 1=1...
(12) в ЖР писал первой строкой из ПриНачалеРаботыСистемы(). Записей не было. |
|||
18
Deathless
21.12.11
✎
17:52
|
А не монопольно ли 1с запускаете ?
|
|||
19
Кириллка
21.12.11
✎
17:53
|
(10)интерактивно одновременно под разными учетками работает?
|
|||
20
Shaman100M
21.12.11
✎
17:54
|
(13) Последовательно, после загрузки первого грузил второй. А в скрипте второй процесс запускается не сразу, спустя какое-то время. минуты, часы.
|
|||
21
Shaman100M
21.12.11
✎
17:55
|
(18) первым делом ключик М проверил...
|
|||
22
andrewks
21.12.11
✎
17:55
|
ну, кагбэ чудес-то не бывает...
|
|||
23
Shaman100M
21.12.11
✎
17:56
|
(15) ничего. Второй процесс отработал и завершился в норм. режиме.
|
|||
24
Shaman100M
21.12.11
✎
17:57
|
(19) да, и под одним тоже.
|
|||
25
Shaman100M
21.12.11
✎
17:57
|
(22) вот и я про то же...
|
|||
26
FN
21.12.11
✎
17:57
|
сделайте робота, который все время висит в базе в отключенной рдп сессии, а там через обработку ожидания + справочник заданий запускайте все что надо.
|
|||
27
andrewks
21.12.11
✎
17:58
|
на другом хосте проверь
|
|||
28
Кириллка
21.12.11
✎
17:58
|
(24)а может быть нет?
|
|||
29
rs_trade
21.12.11
✎
17:58
|
запускай тест2 в конце тест1
|
|||
30
Shaman100M
21.12.11
✎
18:01
|
(29) разные задания, д.б. разнесены по времени.
Кстати, ВАЖНОЕ ЗАМЕЧАНИЕ. Без оператора ОткрытьФорму() в первом сеансе, второй отрабатывает норм. |
|||
31
Shaman100M
21.12.11
✎
18:06
|
(27) проверяли и на другом виртуальном сервере
|
|||
32
Franchiser
гуру
21.12.11
✎
18:12
|
(31) попробуй ЗавершитьРаботуСистемы(0)
|
|||
33
Shaman100M
21.12.11
✎
18:13
|
Выход, конечно, есть: грузить глобальный модуль из текстового файла, его содержимое менять для первого, второго процесса (они ночные) и для интерактивных процессов пользователей.
Интересно разобраться, в чем проблема... |
|||
34
Shaman100M
21.12.11
✎
18:14
|
(32) Второй загружается - первый еще не завершен.
|
|||
35
Franchiser
гуру
21.12.11
✎
18:17
|
(34) у меня используется ОткрытьФормуМодально() в связке с Завершитьработусистемы(0)- все работает,
Надо бы знать что еще стоит в этих формах: в твоем случае может попасть вприоткрытии в приповторномоткрытии() |
|||
36
Shaman100M
21.12.11
✎
18:20
|
+ (33) т.е. обойтись вообще без открытия форм и в то же время не дублировать код.
(35) в тестовых - одна кнопка "Закрыть", в ПриОткрытии() - бесконечный цикл. ЗавершитьРаботуСистемы(0) к моменту второго входа отработать не успевает. |
|||
37
Shaman100M
21.12.11
✎
18:21
|
Исчезну на час..
|
|||
38
Torquader
21.12.11
✎
18:24
|
Во-первых, через ключи запуска указать всё, что только можно:
/u - директорию пользователя (разные) /t - директории временных файлов (тоже разные) В глобальном модуле проверить, что ExcluziveMode() не равно 1 (мало ли как оно там запускается). Проверить, что предыдущая 1С не "слопала" все ресурсы - если вход не интерактивный, то создаётся Desktop, у которого буферы и ресурсы сильно ограничены - может оказаться, что на вторую 1С просто не хватает ресурсов GDI (которых там не должно быть, так как экрана-то нет). |
|||
39
Franchiser
гуру
21.12.11
✎
18:25
|
(37) "задача под test2 запускается и через несколько секунд завершается" относится к планировщику? то есть, в журнале регистрации нет записи о том что произошел запуск/завершение 1с предприятия? Попробуй войти под тестом 2 интерактивно когда работает тест1. Может там окошко какое.
|
|||
40
Franchiser
гуру
21.12.11
✎
18:48
|
я думаю что либо 1с либо скуль не пускает теста2 в момент работа теста 1. Тест 2 проходит только до ввода пароля, после чего д.б сообщение и гм не отрабатывает.
|
|||
41
Torquader
21.12.11
✎
19:03
|
(40) Ну, например, никто не может войти, если открыта транзакция - ожидает какое-то время и выходит - вполне похоже, но, думаю, автор этот вопрос уже проверял - по его словам интерактивно всё работает.
P.S. можно сменить планировщик на что-то самописное, чтобы можно было и окна посмотреть (есть мнение, что первое же окно сообщения от программы срубает процесс, так как система не может его вывести). |
|||
42
mvk
21.12.11
✎
19:26
|
Текст скрипта, который запускает 1С сначала с авторизацией test1, затем второй, - с test2, можно увидеть?
|
|||
43
Sk0rp
21.12.11
✎
19:38
|
Сильно меня смущают строки:
ОткрытьФорму("Отчет.Test1vn"); ЗавершитьРаботуСистемы(); т.к. при немодальном открытии 1С не будет ждать пока отработает форма и сразу выполнит ЗавершитьРаботуСистемы(). И я не уверен, что затем произойдет раньше, будет передано управление в ПриОткрытии формы Test1vn или после окончания работы функции из которой вызваны эти команды сразу пойдет завершение работы системы. |
|||
44
Torquader
21.12.11
✎
21:03
|
(43) Так там формы - муляжи - в ПриОткрытии код будет выполняться до возврата из вызова ОткрытьФорму, а в конце кода ПриОткрытии наверняка стоит СтатусВозврата(0) - так что форма и не откроется, а вот если при исполнении происходит какая-то ошибка, то да - прерывание процесса открытия формы и завершение работы программы - но ошибку легко в журнале регистрации увидеть (конечно, если её через Try Except не перехватили).
|
|||
45
PZh
21.12.11
✎
21:46
|
(0) У нас та же песня. Просто смирились, что в скрытом режиме 2 1С-ки работать не могут нормально и все.
Теперь всегда отключенный RDP сеанс висит и в нем пашет куча роботов. |
|||
46
Franchiser
гуру
21.12.11
✎
22:50
|
(45) у нас нормально работает под 2–3 роботами и пишется лог работы в 1 файл средствами vbs
|
|||
47
Franchiser
гуру
21.12.11
✎
22:57
|
кстати, почему нельзя зайти в сессию этого пользователя под которым происходит запуск планировщика
|
|||
48
PZh
21.12.11
✎
23:22
|
(46) Я глубоко не вникал, просто нужды в скрытом сеансе нет.
А у вас VBS-ка планировщик запускает или минуя оный? Возможно это особенности взаимодействия планировщика с 1С? Если не влом поставьте опыт: Создайте задание и запускайте его через VBS-ку. |
|||
49
rider
21.12.11
✎
23:28
|
ЗавершитьРаботуСистемы();
заменить на статусВозврат(0); возврат |
|||
50
Shaman100M
22.12.11
✎
09:54
|
(39) окошка там нет, каких либо диалоговых конструкций - тоже, т.к. это тестовая конфа, запускаемые отчеты - почти пустые, "клоны", с программной паузой (цикл). Записи в ЖР по второму процессу только: "подключение - отключение", а программных записей в ЖР из предопр. процедур - нет. Авторизация test2 проходит (если это первый процесс). Интерактивно второй процесс отрабатывает полностью, с открытием формы отчета.
(38) монопольный режим не дал бы второй раз войти вообще. Ключи /u и /t сегодня попробовали - результата нет. (43) не должно смущать, т.к. 1с все же подождет, пока отработают команды в модуле отчета и предопределенные процедуры. В немодальном режиме 1с не ждет закрытия формы, однако само "открытие" отрабатывает полностью. Команда ЗавершениеРаботыСистемы() ( и +(49) ) тоже не должна смущать, т.к. первый процесс -еще не завершен, там эта команда еще не выполняется, а второй процесс - вообще вылетает намного раньше, даже в гм не входит. |
|||
51
Shaman100M
22.12.11
✎
09:59
|
(44) отчеты тестовые, просто с "паузой". ошибки быть не должно.
(47) ее как таковой нет. |
|||
52
Shaman100M
22.12.11
✎
10:01
|
(45) Ну, наверно, тогда нужно помнить об этом сеансе, чтобы его случайно не вырубить.
|
|||
53
Shaman100M
22.12.11
✎
10:07
|
(48) В сессии пользователя VBS-ка отрабатывает оба подключения.
+(45) серваков много, висящих сеансов тоже будет много, сисадмины сидят распределенно, - много организационных действий. |
|||
54
Shaman100M
22.12.11
✎
10:22
|
Пока единственный вариант, который работает: не открывать форму отчета, процедуры из отчета перенести в ГМ (не оч. хорошо, конечно...), в случае работы "роботов" эти процедуры вызываются из ПриНачалеРаботыСистемы()
(46) а сервак 2003 ? |
|||
55
Shaman100M
22.12.11
✎
10:46
|
на 2003-ем работает. Это особенность 2008.
|
|||
56
Ковычки
22.12.11
✎
10:53
|
создать другого пользователя ос ?
|
|||
57
Ковычки
22.12.11
✎
10:54
|
а ремотестол указан для информации в сабже или ?
|
|||
58
Shaman100M
22.12.11
✎
10:58
|
(57) ну то что с-ка запускается в терминальной сессии, а не по сетке.
|
|||
59
Ковычки
22.12.11
✎
11:00
|
(58) еще раз и помедленнее
"В планировщике создаем задачу" и "с-ка запускается в терминальной сессии" ? |
|||
60
Shaman100M
22.12.11
✎
11:13
|
(59) Session ID = 0
|
|||
61
Ковычки
22.12.11
✎
11:24
|
(60) т.е. терминал тут просто к слову ?
|
|||
62
Ковычки
22.12.11
✎
11:25
|
запускаете в одном задании или в двух ?
|
|||
63
Shaman100M
22.12.11
✎
11:41
|
(62) одно задание в планировщике, которое запускает один скрипт, который запускает 1с с разными параметрами. Задание стартует 2 раза в разное время
|
|||
64
Shaman100M
22.12.11
✎
16:14
|
Есть еще идеи?
|
|||
65
Ёпрст
22.12.11
✎
16:19
|
(64) скрипт покажи, что ли.
|
|||
66
Shaman100M
22.12.11
✎
17:31
|
(65)
VBS команда запуска в первый раз Rez = WshShell.Run ("""C:\Program Files\1cv77s\BIN\1CV7s.exe"" enterprise /DD:\DB\Test\ /Ntest1", ,True) второе срабатывание планировщика (первое задание еще не завершено) Rez = WshShell.Run ("""C:\Program Files\1cv77s\BIN\1CV7s.exe"" enterprise /DD:\DB\Test\ /Ntest2", ,True) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |