Зависание 1С. Запуск BAT-ником внешней обработки с последующем закрытием

1. x2z7yy 25.11.15 07:27 Сейчас в теме
Есть BAT-ник запускающий 1с и обработку автоматически, после выполнения 1с закрывается.

Если батник запустить вручную все срабатывает и закрывается нормально.

Если сделать из планировщика задания, процедура отрабатывает, но остается зависший сеанс 1с. В планировщике выполняю под тем же пользователем, с наивысшими правами, вне зависимости от регистрации пользователя.

Появляется эта история раз в пару-тройку месяцев. Из-за чего может быть?
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. hornet_X 1 25.11.15 08:40 Сейчас в теме
(1) x2z7yy,
Техст в студию)))
3. x2z7yy 25.11.15 08:55 Сейчас в теме
БАТНИК:
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с, и сразу закрываю.
4. Antoska 17 25.11.15 14:07 Сейчас в теме
Попробуйте прописать в планировщике не запуск вашего батника, а запуск самой обработки:
"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
У меня регулярный автообмен происходит таким образом.
5. x2z7yy 25.11.15 14:17 Сейчас в теме
(4), теперь висит вместе с планировщиком)) в строке с заданием стоит работает и всё...
6. A.Sytchev 25.11.15 14:29 Сейчас в теме
(5) x2z7yy,
А если ПрекратитьРаботуСистемы(Ложь); - он пожощще)
8. Antoska 17 25.11.15 14:41 Сейчас в теме
(6) A.Sytchev, :) почти одновременно. Она позволяет завершить выполнение программы даже при наличии модальных окон и форм.
A.Sytchev; +1 Ответить
7. Antoska 17 25.11.15 14:30 Сейчас в теме
(5) x2z7yy, попробуйте ПрекратитьРаботуСистемы()
9. x2z7yy 26.11.15 06:59 Сейчас в теме
хммм, и правда работает, рубится 1с. Ниче не пойму, что из-за чего может быть, что там висеть может???

Сижу под пользователем Пользователь1, в планировщике задание под этого-же пользователя. Но при запуске задания, оно выполняется где-то непонятно где, окон никаких нет, в диспетчере задач КодСеанса = 0 (не такой какой у тек.пользователя). Как можно подглядеть?
10. Antoska 17 26.11.15 08:33 Сейчас в теме
(9) x2z7yy, очень не советую использовать для запуска по расписанию пользователя 1С, который активен в этот момент. Как раз из-за этого может выводить модальное окно, которое и будет мешать выполнению процедуры ЗавершитьРаботуСистемы. В этом окне , похоже, выводится предупреждение о том что данный пользователь уже находится в системе. Именно это предупреждение и блокирует завершение программы. При этом окно этой программы в системе не отображается. Это происходит потому, что на него не передаётся фокус операционной системы. Слышали выражение "дескрипторы окна"? Те кто сталкивался с переключениями между окнами программы 1С и других программ, сворачиванием/разворачиванием окон 1С, в которые вывелось предупреждение, наверняка сталкивались с проблемами отображения окна в котором выдалось это предупреждение. Иногда даже приходится выполнять переключение на такое окно в диспетчере задач.
11. x2z7yy 26.11.15 08:42 Сейчас в теме
(10) Подцепился отладчиком к этому процессу который зависает, так вот он строку ЗавершитьРаботуСистемы(Ложь) просто проходит, ничего не происходит. Через ПолучитьОкна() (с фокусом окон в своё время имел дело), посмотрел список - ничего не увидел. Пользователь не активен под которым происходит запуск.
12. Boneman 300 26.11.15 09:11 Сейчас в теме
(11) x2z7yy, а что обработка делает то ?
Если зависания не имеют закономерностей и происходят изредка. То причиной может быть вызов каких то процедур, завернутых попытка в попытке..а если еще и на сервере происходит, то вообще отладить и отловить крайне проблематично, т.к. оно явно проявляется на правильных строках кода, или объектах - пройдя косячные.
Появляется эта история раз в пару-тройку месяцев

С такой частотой, вообще забей, сеанс зависший сам отвалится через какое то время.
13. x2z7yy 26.11.15 09:22 Сейчас в теме
(12)
С такой частотой, вообще забей, сеанс зависший сам отвалится через какое то время.


Так я все зависшие сеансы сам грохнул, а всё равно последующие не закрываются нормально... как будто не в 1С дело, а что-то в винде.
14. Antoska 17 26.11.15 13:00 Сейчас в теме
(13) x2z7yy, вероятнее всё-таки в 1С. У вас же работает ПрекратитьРаботуСистемы() правильно, как я понял? Так к чему эти изыскания?
15. x2z7yy 26.11.15 13:58 Сейчас в теме
(14)
Так к чему эти изыскания?


К тому что из-за каких-то неясностей не верно отрабатывает программа. Прекратить работу - я так понимаю, это тоже самое что диспетчером грохнуть сеанс, по вашему грохать рабочие сеансы 1с хорошая затея? Давно на ошибки типа "ошибка компоненты dbeng8" не смотрели?
16. Antoska 17 26.11.15 16:39 Сейчас в теме
(15) x2z7yy, где вы прочитали про "грохание" сеанса в диспетчере? С чего вы это взяли?
Глобальный контекст (Global context)
ПрекратитьРаботуСистемы (Terminate)

Синтаксис:
ПрекратитьРаботуСистемы(<ПерезапуститьПриЗавершении>, <ДополнительныеПараметрыКоманднойСтроки>)

Параметры:

<ПерезапуститьПриЗавершении> (необязательный)
Тип: Булево.
Указывает необходимость выполнения запуска нового сеанса с текущими установками после прекращения работы системы.
Значение по умолчанию: Ложь.

<ДополнительныеПараметрыКоманднойСтроки> (необязательный)
Тип: Строка.
Содержит дополнительные параметры, которые будут переданы новому сеансу. Если такие параметры уже есть среди текущих установок, переданные заменят текущие.
Параметр указывается, если значение параметра <ПерезапуститьПриЗавершении>=Истина.

Описание:
Завершает работу системы независимо от наличия модальных диалогов, открытых редактируемых форм документов и справочников и т.д. При этом не вызываются процедуры-обработчики событий завершения работы системы.

Доступность:
Тонкий клиент, веб-клиент, толстый клиент.

Примечание:
Если параметр <ПерезапуститьПриЗавершении>=Истина, то после завершения работы системы будет открыт новый сеанс 1С:Предприятия.
С помощью параметров можно запустить новый сеанс 1С:Предприятия путем задания соответствующих параметров.
Показать
17. x2z7yy 27.11.15 07:38 Сейчас в теме
(16) как думаете, если в момент записи транзакции, в файловую базу, рубить сеанс, это безопасно для структуры БД и данных в ней?

П.С. и что за привычка такая у всех копипастить СП?:) Я знаю где он находится.
18. Antoska 17 27.11.15 08:13 Сейчас в теме
(17) x2z7yy, есть подозрение, что вы его не правильно понимаете, вот я и предлагаю его внимательно прочитать. Что касается выполнения транзакций, то у меня вопрос: какие транзакции будут выполняться в сеансе, если вы запускаете его для выполнения своей обработки. Завершение сеанса происходит после выполнения всех необходимых действий для которых и предназначена эта обработка? Откуда возьмутся другие транзакции? И потом вы как-то пропустили моё замечание по поводу запуска обработки от имени пользователя, который уже используется в активном сеансе. Но это уже ваше дело. Я не настаиваю на том чтобы вы использовали ту или иную процедуру в вашем коде. Как и в каких обстоятельствах вам пользоваться тем или иным механизмом 1С решать вам.
19. x2z7yy 27.11.15 09:00 Сейчас в теме
(18), на счет транзакции, наверное, вы правы. Закрытие 1С происходит после выполнения всех функций, никаких транзакций по идее не должно быть.
На счет др.пользователя, я пробовал под другим пользователем - та же история. Если стоит "делать вне зависимиости от регистрации пользователя" - процесс запускается под ИД сеанс - 0 (я так понимаю это системный сеанс) и не закрывается, если стоит "делать при регистрации пользователя" - все нормально отрабатывается, но ИД сеанса уже именно то который присвоен пользователю, когда тот вошел в систему.
20. Antoska 17 27.11.15 11:19 Сейчас в теме
(19) x2z7yy, вы создали нового пользователя только для запуска этой обработки? У меня, например, есть такой пользователь как "Автообмен". Он используется только для запуска соответствующей обработки по расписанию в планировщике задач.
21. x2z7yy 27.11.15 11:34 Сейчас в теме
(20) да, в винде создал. Не помогло. Единственно, не попробовал в 1С другого пользователя создать. Теперь не получится пробовать, пришлось перезагрузить сервер, всё стало работать нормально, ктоб сомневался. :( Придется ждать еще полгода, чтобы продолжить тесты.:)
22. Dionis 24 10.08.21 17:28 Сейчас в теме
Столкнулся с такой же проблемой на 1С:УНФ. Поиском нашел эту старую тему, вставлю свои 5 копеек.

Мне помогла замена в батника запускаемого файла с 1cv8s.exe на 1cv8c.exe.

Все стало прекрасно закрываться.
23. Antoska 17 12.08.21 11:42 Сейчас в теме
(22) неплохое решение. Только нужно учитывать, что запускается тонкий клиент. Со всеми особенностями.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот