Имя: Пароль:
1C
 
Зависание 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) Почти ничем не отличается от закрытия главного окна приложения крестиком (ну и что, что модальные диалоги принудительно закрываются?)
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn