|
Зависание 1С. Запуск BAT-ником внешней обработки с последующем закрытием 1С v.2 | ☑ | ||
---|---|---|---|---|
0
Nikoss
25.11.15
✎
07:27
|
Зависание 1С. Запуск BAT-ником внешней обработки с последующем закрытием 1С
Зависание 1С. Запуск BAT-ником внешней обработки с последующем закрытием 1С Создавал уже тему, но побороть не смог. На сколько помню, перезагрузка сервера помогла. Вкратце. Есть BAT-ник запускающий 1с и обработку автоматически, после выполнения 1с закрывается. Если батник запустить вручную все срабатывает и закрывается нормально. Если сделать из планировщика задания, процедура отрабатывает, но остается зависший сеанс 1с. В планировщике выполняю под тем же пользователем, с наивысшими правами, вне зависимости от регистрации пользователя. Появляется эта история раз в пару-тройку месяцев. Из-за чего может быть? |
|||
1
cw014
25.11.15
✎
07:33
|
Поставь в конце батника exit
|
|||
2
Cyberhawk
25.11.15
✎
07:34
|
"но остается зависший сеанс 1с" // конкретнее
|
|||
3
Nikoss
25.11.15
✎
07:51
|
(2) остается запущенный процесс 1с. Причем интересный момент: допустим после выполнения процесс занимает в диспетчере задач 100Мб памяти, со временем в течении (не знаю точно, гдето час может быть) память уменьшается до 10Мб.
|
|||
4
Nikoss
25.11.15
✎
07:53
|
(1), так работало же без exit, на протяжении нескольких месяцев
|
|||
5
Cyberhawk
25.11.15
✎
07:55
|
(3) такое бывает, когда 1С использует какую-нибудь dll, работа с которой не завершается корректно (или dll кривая). У меня так было, например, из-за драйвера сканера штрихкодов, проброшенного в терминал и используемого приложением 1С в терминале
|
|||
6
Cyberhawk
25.11.15
✎
07:56
|
Если платформа выше 8.3.3, то сделай регл. задание и просто запускай сеанс 1С - регл. задание отрабротает в файловой само
|
|||
7
vde69
25.11.15
✎
08:23
|
еще такое бывает когда 1с при завершении спрашивает "сохранить документ хххх", "вы действительно хотите выйти из 1с" и т.д.
а еще учитывая асинхронность вызовов 1с может какой обработчик подвязанный к вызову не дает очистить память. короче вариантов масса, но они ВСЕ сводятся к одному 1с не смогла закрыть все дискртипторы (окон, памяти и т.д.) |
|||
8
Nikoss
25.11.15
✎
08:32
|
(7) еслиб так то и простой запуск батника (не через планировщик) не отрабатывал бы, не так ли?
|
|||
9
Nikoss
25.11.15
✎
08:39
|
Подскажите, где вообще запускается задание планировщика?
Сижу под пользователем Пользователь1, в планировщике задание под этого-же пользователя. Но при запуске задания, оно выполняется где-то непонятно где, окон никаких нет, в диспетчере задач КодСеанса = 0 (не такой какой у тек.пользователя). |
|||
10
Nikoss
25.11.15
✎
08:57
|
+ (9) Изменил задание в планировщике, поставил "только при входе в систему" все отработало, закрылось. Ставлю обратно "вне зависимости от регистрации" фих...
|
|||
11
hhhh
25.11.15
✎
09:27
|
(10) а как закрываете 1с? Ведь общеизвестно, что ЗавершитьРаботуСистемы() во внешнем соединении не работает. Только на клиенте работает.
|
|||
12
Мыш
25.11.15
✎
09:28
|
(10) Возможно без входа в систему нет доступа к профилю на диске. Вот и ждет, пытается записать.
|
|||
13
Nikoss
25.11.15
✎
09:32
|
БАТНИК:
------------------------- chcp 1251 "C:\Program Files (x86)\1cv8\8.3.6.1977\bin\1cv8s.exe" ENTERPRISE /F "D:\new" /N "Администратор" /P "123" /Execute "C:\Users\uuserr\Desktop\ntest1112.epf" /DisableStartupMessages chcp 866 ------------------------- ntest1112.epf: Фодуль формы: ------------------------- &НаКлиенте Процедура ПриОткрытии(Отказ) ЗавершитьРаботуСистемы(Ложь); КонецПроцедуры ------------------------- Убрал вообще всё, тупо открываю 1с, и сразу закрываю. |
|||
14
Мыш
25.11.15
✎
09:36
|
(13) Фодуль - смешная ачипятка )
Процесс всё равно пытается записать данные в профиль, даже если обработка ничего не делает. |
|||
15
Cyberhawk
25.11.15
✎
09:38
|
Покажи первую вкладку свойств задания планировщика, попробуй галку там поставить "Запускать с наивысшими правами"
|
|||
16
Cyberhawk
25.11.15
✎
09:39
|
"Процесс всё равно пытается записать данные в профиль, даже если обработка ничего не делает" // Ясен перец, 1С сохраняет данные пользователя в недрах каталога AppData
|
|||
17
Cyberhawk
25.11.15
✎
09:39
|
Имею в виду настройки пользователя при закрытии приложения
|
|||
18
Nikoss
25.11.15
✎
09:41
|
(12), так работало же всё... после перезагрузки сервера все заработает снова, уверен на 95% :)
(15), стоит эта галка |
|||
19
Мыш
25.11.15
✎
09:41
|
(16) Смотри (10). У него все получилось после этого.
|
|||
20
Cyberhawk
25.11.15
✎
09:42
|
(19) Шта?
|
|||
21
vde69
25.11.15
✎
09:44
|
нет прав на файл C:\Users\uuserr\Desktop\ntest1112.epf
перенеси его в D:\new |
|||
22
Мыш
25.11.15
✎
09:51
|
(20) Цитирую: поставил "только при входе в систему" все отработало, закрылось
|
|||
23
Cyberhawk
25.11.15
✎
09:58
|
(22) Это Я понял. Я не понял, каким боком это к (16) относится (ну т.е. зачем ты написал в (19), чтобы Я посмотрел на (10))?
|
|||
24
Мыш
25.11.15
✎
10:00
|
(23) Потому шта Я не понял, зачем Ты написал (16) )))
|
|||
25
Cyberhawk
25.11.15
✎
10:03
|
(24) Там ответ на процитированную фразу
|
|||
26
Nikoss
25.11.15
✎
10:04
|
(21) есть
добавил в модуль формы: &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) Попытка а = Новый ТекстовыйДокумент; а.Записать("C:\Users\MYamashkin\Desktop\123123123123.txt"); Исключение КонецПопытки; КонецПроцедуры файл записывает, 1с не закрывается |
|||
27
vde69
25.11.15
✎
10:44
|
(26) У тебя служба 1с под админом работает???
|
|||
28
Nikoss
25.11.15
✎
11:09
|
(27) о какой службе речь? База файл.
Запуск происходит под административными правами в винде, и в 1с также - полные права. |
|||
29
hhhh
25.11.15
✎
11:23
|
(28) запускаешь ведь 1cv8s.exe - это вроде серверный вариант. Не файловый.
|
|||
30
Cyberhawk
25.11.15
✎
11:28
|
(29) Ошибаешься. Это стартер 1С.
|
|||
31
hhhh
25.11.15
✎
11:40
|
(28) зачем стартер запускаешь? Для прикола?
|
|||
32
Nikoss
25.11.15
✎
11:48
|
(31), да чтож такое... для какого прикола? Какое это значение имеет в данном случае?
Говорю же всё работает уже на протяжение более года, с этими же батниками, только раз в 2-3 месяца вот такая беда случается зависшими 1с. |
|||
33
Nikoss
25.11.15
✎
11:49
|
(31) + (32) на всякий случай поставил "c", без изменений.
|
|||
34
vde69
25.11.15
✎
11:52
|
смотри логи... может там какой вопрос типа "не найдена лицензия" или "база устарела, обновить?"
|
|||
35
Nikoss
25.11.15
✎
12:07
|
(34) в каком разделе?
|
|||
36
Cyberhawk
25.11.15
✎
12:12
|
"раз в 2-3 месяца вот такая беда случается" // В какой-то момент это начинает проявляться на всех последующих запусках батника или выборочно?
|
|||
37
Nikoss
25.11.15
✎
12:18
|
(36) на любом батнике. Буквально сегодня создал новый, по сути пустой, просто закрытие базы идет. Указал даже базу другую, безрезультатно.
|
|||
38
Nikoss
25.11.15
✎
12:35
|
Попробовал на другой базе, файловой, но не упр.прил. Отработало, правда на 8.2 запускал.
Смена платформы на той базе, где проблема, тоже не помогло. |
|||
39
Cyberhawk
25.11.15
✎
13:50
|
(37) Я не понял, как это согласуется с (8)?
Я на текущий момент понял ситуацию так: наступает такой момент (назовем его "порча"), что перестает завершаться приложение 1С, если оно было запущено через планировщик Винды. Если после наступления порчи запустить бат-файл вручную, то что происходит - тоже остается висеть приложение 1С или все завершается успешно? |
|||
40
Nikoss
25.11.15
✎
13:56
|
(39) вручную запуск батника отрабатывает нормально, даже после "порчи")
|
|||
41
Nikoss
25.11.15
✎
13:59
|
+(39) и в случае ручного запуска и в случае запуска планировщиком, процедуры из батников отрабатывают исправно. Кроме, собственно, закрытия 1с.
|
|||
42
Cyberhawk
25.11.15
✎
14:05
|
(41) в случае ручного запуска после порчи процесс 1С завершается (не остается висеть)?
|
|||
43
Cyberhawk
25.11.15
✎
14:07
|
И, кстати, после того, как задание планировщика отработало, а процесс 1С остался висет, статус у этого задания остается Running?
|
|||
44
Nikoss
25.11.15
✎
14:27
|
(42) завершается. Но опять же запуск происходит под другим сеансом (к примеру 3), а запуск через планировщик с признаком "выполнять вне зависимости от регистрации пользователя" выполняется всегда под сеансом №0.
(43) нет, статус сразу после запуска становится "Выполнен". Это всегда так было, я так понимаю батник просто отрабатывает не дожидаясь 1с. Кстати попробовал прописать строку запуска прям в действия к задаче, а не запуск батника - вот в этом случае задача висит постоянно в статусе "Running", поведение 1с осталось тоже. В журнале ничего адекватного, просто говорится что было запущено и т.д. |
|||
45
Cyberhawk
25.11.15
✎
14:29
|
Тогда бери Process Explorer и в дереве процессов смотри, кто подчинен планировщику.
Будет дерево типа такого: taskeng.exe cmd.exe 1сv8c.exe или такого: svchost.exe cmd.exe 1cv8c.exe |
|||
46
Nikoss
25.11.15
✎
14:42
|
wininit.exe
services.exe 1cv8c.exe |
|||
47
Nikoss
25.11.15
✎
14:43
|
wininit.exe
services.exe 1cv8c.exe |
|||
48
Cyberhawk
25.11.15
✎
14:44
|
1. Ты уверен, что это именно твой процесс 1cv8c.exe?
2. В подчинении у него ничего нет, да? А почему тебя беспокоит, что остается висеть процесс - это чему-то мешает? |
|||
49
Nikoss
25.11.15
✎
14:53
|
(48)
1. мой, по ID смотрел 2. ничего Потому что их через сутки будет под тысячу сеансов. И вроде даже как они даже лицензии откушивают каждый процесс 1с. Не уверен, но придя вчера с утра, не оказалось свободных лицензий, а их придостаточно с запасом. |
|||
50
Cyberhawk
25.11.15
✎
14:59
|
Ну тогда предложить могу три варианта:
1. В батничек добавить taskkill 2. В свойства назначенного задания указать "Убивать если выполнение длится дольше чем N минут", правда это не всегда работает 3. Перейти с планировщика Винды на nncron |
|||
51
Cyberhawk
25.11.15
✎
14:59
|
А, четвертый вариант: написать внешнюю обработку и запускать ее как регл. задание в файловой базе - сеанс будет всегда висеть, а нужный код выполнятся по расписанию
|
|||
52
arsik
гуру
25.11.15
✎
15:07
|
(0) Может батник заменить на powershell скрипт?
|
|||
53
Пикчер
25.11.15
✎
15:10
|
(0) делай через wscript
|
|||
54
Nikoss
26.11.15
✎
09:01
|
Поменял ЗавершитьРаботуСистемы(Ложь);
На ПрекратитьРаботуСистему(Ложь); Стало закрываться нормально... Ничего не пойму... Поймал сеанс в отладчике, строка с ЗавершитьРаботуСистемы просто проходится и ничего не происходит. Посмотрел окна через ПолучитьОкна() - 2 окна: раб.стол и сама форма 1с. Чтож ей не нравится та... |
|||
55
Cyberhawk
26.11.15
✎
10:03
|
"Если вызов осуществляется из модуля формы, открытой в модальном режиме, завершение работы системы не выполняется."
Это касательно ЗавершитьРаботуСистемы |
|||
56
Cyberhawk
26.11.15
✎
10:07
|
А вот ПрекратитьРаботуСистему как раз независимо от наличия модальных диалогов прекратит работу системы :) И раз у тебя первое не работало, а второе - сработало, то, вероятно, дело как раз было в каком-нибудь диалоге, возникающем после порчи
|
|||
57
Nikoss
26.11.15
✎
11:07
|
Ещеб понять, что это может быть за диалог. Тут уже конечно больше "спортивный" интерес, т.к. переделать все процедуры на "Прекратить.." дело 5 минут.
|
|||
58
Nikoss
26.11.15
✎
14:01
|
Хотя на сколько вообще хороша идея выключать сеансы через "ПрекратитьРаботу...", это же тоже самое, что рубить сеансы taskkill-ом? Базу похерить не получится?
|
|||
59
Cyberhawk
26.11.15
✎
17:14
|
(58) Почти ничем не отличается от закрытия главного окна приложения крестиком (ну и что, что модальные диалоги принудительно закрываются?)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |