|   |   | 
| 
 | Зависание 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) Почти ничем не отличается от закрытия главного окна приложения крестиком (ну и что, что модальные диалоги принудительно закрываются?)     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |