К вопросу о зависающих фоновых заданиях в 8.1

03.09.09

Разработка - Инструментарий разработчика

Фоновые задания в клиент-серверном варианте иногда зависают так, что снять их можно только путем перезапуска службы. Насколько я понял, никто не знает, что с этим делать. И я не знаю. Но могу поделиться опытом, как научиться с этим жить :)

Входные условия :

Есть в клиент-серверной базе предопределенное регламентное задание с методом МойОбщийМодуль.МояПроцедура1, которое раз в N минут должно что-то делать в базе. Периодически по непонятным причинам фоновое задание, порождаемое регламентным, зависает. Как уже сказано выше, снять его проблематично. Но что еще хуже, новое фоновое задание стартовать не хочет. А зачем? Одно ведь уже выполняется!

Таким образом, очень важные процедуры просто прекращают выполняться.

Как я с этим боролся:

1) Регламентное задание убираем из конфигурации

2) Вводим пользователя специально для выполнения этой процедуры.

3) В Процедуре ПриНачалеРаботыСистемы пишем примерно так:

	 Если ИмяПользователя()="ЭтоСамоеИмя" Тогда
    МойОбщийМодуль.МояПроцедура2();
    ПрекратитьРаботуСистемы();
КонецЕсли;

4) В общем модуле МойОбщийМодуль

	 Процедура МояПроцедура2() Экспорт
    МоеФЗ=ФоновыеЗадания.Выполнить("МойОбщийМодуль.МояПроцедура1",,Строка(ТекущаяДата()));
КонецПроцедуры

5) В Планировщике Windows делаем задание на запуск базы с этим пользователем с нужным расписанием.

Что мы этим достигаем? Того же, что и в первом случае, за исключением того, что каждое фоновое задание запускается с уникальным ключом (см. третий параметр в методе выполнить). Поэтому зависшее фоновое задание не мешает стартовать следующим.

И контрольный выстрел : чтобы почистить зависшие фоновые задания раз в сутки ночью выполняем с помощью планировщика задание на

	 net stop...  net start...

Решение громоздкое, некрасивое и не нравится мне. Прошу сильно не пинать. Это больше приглашение к дискуссии. Буду рад, если кто-то предложит лучше.


См. также

Инструментарий разработчика Роли и права Запросы СКД Программист Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

10000 руб.

02.09.2020    148436    819    393    

828

Пакетная печать Печатные формы Инструментарий разработчика Программист Платформа 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:Конвертация данных 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

Инструмент, позволяющий абсолютно по-новому взглянуть на процесс разработки печатных форм. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и "прозрачность" разработки, а также навести порядок в многообразии корпоративных печатных форм.

18000 руб.

06.10.2023    13458    34    7    

67

Инструментарий разработчика Программист Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Инструмент для написания и отладки кода в режиме «1С:Предприятие». Представляет собой консоль кода с возможностью пошаговой отладки, просмотра значений переменных любых типов, использования процедур и функций, просмотра стека вызовов, вычисления произвольных выражений на встроенном языке в контексте точки останова, синтаксического контроля и остановки по ошибке. В консоли используется удобный редактор кода с подсветкой, контекстной подсказкой, возможностью вызова конструкторов запроса и форматной строки.

9360 руб.

17.05.2024    19128    55    42    

102

Инструментарий разработчика Программист Платформа 1С v8.3 Платные (руб)

OneRPA - платформа роботизации рутинных операций, в основе которой лежит платформа 1С:Предприятие. Данная платформа позволяет использовать современные технологии роботизации, не теряя при этом наработки, которые были созданы в ходе автоматизации. При этом платформа роботизации сохраняет все преимущества платформы 1С: гибкость, кроссплатформенность, мобильный и Web доступ, простоту расширения. Ну и конечно же роботы создаются и сопровождаются простыми специалистами 1С, при этом не обязательно программистами. Self hosted версия

300000 руб.

03.03.2021    13967    12    27    

36

Инструменты администратора БД Инструментарий разработчика Роли и права Программист Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.

10000 руб.

10.11.2023    8620    29    10    

53

Инструментарий разработчика Чистка данных Свертка базы DevOps и автоматизация разработки Платформа 1С v8.3 Россия Платные (руб)

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях. Поддерживаются управляемые и обычные формы. Может выполнять свертку сразу нескольких баз данных и выполнять их автоматически без непосредственного участия пользователя.

6900 руб.

20.08.2024    2505    12    4    

22

SALE! %

Инструментарий разработчика Инструменты администратора БД Системный администратор Программист Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Платные (руб)

Универсальный инструмент программиста для администрирования конфигураций. Сборник наиболее часто используемых обработок под единым интерфейсом.

4800 3840 руб.

14.01.2013    184306    1119    0    

892

Инструментарий разработчика Программист 8.3.14 1С:Конвертация данных Россия Платные (руб)

Расширение для конфигурации “Конвертация данных 3”. Добавляет подсветку синтаксиса, детальную контекстную подсказку, глобальный поиск по коду.

15000 руб.

07.10.2021    16484    5    26    

41
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Душелов 4018 03.09.09 21:53 Сейчас в теме
Пакетный запуск 1С использовался еще в 7-ке, до появления регламентных заданий.

А с зависшими регламентными заданиями надо разбираться...
2. пользователь 03.09.09 22:22
Сообщение было скрыто модератором.
...
3. bulpi 216 03.09.09 22:41 Сейчас в теме
2 Maniac(2)

Это я пробовал. В том то и дело, что они не рубятся. Впрочем, это как раз такая тема, которая понимается, когда лично тебя петух клюнет. Если вас еще ни разу не клюнул - просто радуйтесь жизни.
Кстати, Вас, Dushelov (1) это тоже касается :)
4. Душелов 4018 03.09.09 22:51 Сейчас в теме
(3) Зависали сессии. Было. Проблема в коде (блокировки транзакций) была. Пишите безопасный код, тогда сведете зависания к минимуму.
tango; theshadowco; +2 Ответить
5. bulpi 216 04.09.09 12:25 Сейчас в теме
(4)
Во! Это уже конструктифф ! Что Вы имеете в виду под безопасным кодом ?
Немного подробнее о том, что делается в зависающей процедуре. Вызывается через Интернет (web-интерфейс) другая база, туда-сюда гоняются xml-строки, создаются и проводятся документы.
6. a-novoselov 1156 17.02.10 15:21 Сейчас в теме
(0) Через консоль кластера задание не убивается??? Что-то с трудом в это верится...
Кстати, с пустыми именами пользователя в консоли могут висеть не только фоновые задания, но и, например, пользователи, которые оставили окошко с вводом пароля аутентификации... соединение есть, а пользователя нет (еще не вошел). Тоже нормально гасятся через консоль кластера 1С.
7. Душелов 4018 17.02.10 15:57 Сейчас в теме
(6) Не убиваются. Замечено не однократно.
И соединения не гасятся, блокировка регламентных и соединений в консоли тоже не помогает.
8. a-novoselov 1156 17.02.10 16:47 Сейчас в теме
(7) А что пишет? Блокировка-то понятно, что не помогает... А вот когда заходим в консоль серверов 1С предприятия, выбираем в дереве наш кластер\сервер\нашу ИБ\соединения... нажимаем на нужное правой кнопкой, пункт "Удалить", и не убирается? или снова появляется? или ошибку выдает?
9. Душелов 4018 17.02.10 16:50 Сейчас в теме
(8) Соединение удаляется и появляется снова.
10. a-novoselov 1156 17.02.10 17:11 Сейчас в теме
(9) Дак надо код тогда смотреть, нахрена она в цикле в базу долбится. Против пользователей, которые на автоподключение 1С-ку ставят блокировка помогает, а вот с заданиями похоже надо с каждым конкретным случаем разбираться. Хотя тут конечно спорный вопрос. Конечно программа должна работать так, как хочет программист, но если код платформы закрыт, то может что-то и в ней глюкать. Но это очень маловероятно, т.к. платформа 8.1 вылизана до мелочей...
11. Душелов 4018 17.02.10 17:13 Сейчас в теме
(10) При чем тут вообще цикл?
12. venger 2124 17.02.10 17:25 Сейчас в теме
(10)
...т.к. платформа 8.1 вылизана до мелочей...


:D
13. tango 544 17.02.10 17:31 Сейчас в теме
(10) "платформа 8.1 вылизана до"

удивляйся
http://www.infostart.ru/public/65146/
17. markers 277 06.08.10 06:49 Сейчас в теме
(8) У меня даже не повисшие фоновые не рубятся ни через что..... как писал (9) соединение появляется вновь. А вообще как и говорилось, надо отлаживать код... У нас были моменты когда фоновое зацикливалось и вообще блокировало доступ в базу, подставив в нужном месте ЗафиксироватьТранзакцию(); проблема снялась. И т.д. и т.п.
14. Душелов 4018 17.02.10 17:41 Сейчас в теме
Блаженны верующие... :D
15. a-novoselov 1156 17.02.10 17:42 Сейчас в теме
Ладно, про вылизанную платформу погорячился чуток)) Хотя в типовых решениях данные всетаки обработками в режиме энтерпрайз к нормальному виду приводятся... Но вот такой жесткий косяк, если код за собой тапки пытается убрать (ЗавершитьРаботуСистемы) а платформа этот код все равно весит... Просто слов нет, как это называется.
16. tango 544 17.02.10 18:07 Сейчас в теме
18. PaNick 148 02.10.10 19:19 Сейчас в теме
Автор прав, глюк есть. Он проявляется при доступе в инет. Например обмен с фтп. Сессия подвисает и не убивается. Его вариант удобен, если есть возможность сделать перерывы в работе. А если база должна работать 24 часа, приходится извращаться другими способами. Я вышел тоже кривым способом: создал клиентскую обработку, которая подстраховывает на случай зависания задания. И при зависании пользователям сыпятся сообщения, что нужно ее запустить в отдельной программе. Благо виснут они не очень часто - раз-два в месяц. Но всеж было бы замечательно без этого )
19. xantimans 17.11.10 13:03 Сейчас в теме
А в этом фоновом задании случаем OLE не используете? Если да, то скорее всего он и виноват, ненадежный зараза :cry:
20. bulpi 216 17.11.10 13:30 Сейчас в теме
(19)
Нет, дело в том, что в процессе выполнения задания идет обращение в интернет. Зависает ТАМ. Я раскопал в документации объяснение, что снять задание невозможно, т.к. в серверных процедурах останов действует, только когда управление передается на следующий оператор за тем, во время которого произошла попытка останова. А управление не передается никогда, т.к. зависло. Можно переписать с серверных процедур на клиентские, раз я все равно запускаю сеанс. Но тогда кто-то должен вручную снять задание, т.е. кто-то должен следить за этим. А чтобы не следить, вот я и предложил такое.
21. Alav 13 26.01.11 11:51 Сейчас в теме
Есть такое и на 8.2. причем там хуже. В режиме УФ часто используются фоновые, поэтому там чаще он себя проявляет.

Например накидал отчет на СКД, который тупо выводить содержимое регистра. На толстом клиенте в обычном режиме - все ОК, за секунду выводит. в режиме УФ виснит зараза (пораждает фоновый процесс, а результата нет). Помогло только рестарт сервера предприятия. Тогда сразу все взлетело.

P.S. А кто нибудь рестарт рабочих процессов настраивал, для борьбы с этим?
22. WellMaster 104 24.02.11 16:21 Сейчас в теме
Сам когда-то пытался бороться с проблемой завершения и удаления фоновых заданий (причем не только зависших, но и просто отработанных). Пришел к выводу, что это невозможно.
Также ищу решение по задаче рестарта работчих процессов.
23. tango 544 24.02.11 19:03 Сейчас в теме
фоновое задание, убивающее фоновые задания
Это я так, сказал просто
24. sml 41 27.03.12 17:25 Сейчас в теме
у меня те же грабли. То задания выполняются, а то вдруг в какой-то момент виснут, причем иногда все сразу.
25. voshkaniridze 24.02.13 20:23 Сейчас в теме
У меня такая проблема, переходить на предложенную схему неохота. А как узнать где именно зависает? Может блокировки, может транспорт? Как узнать?
26. ROM_1C 692 05.03.18 15:38 Сейчас в теме
Так и не понял, есть ли еще решения для данной проблемы?
27. bulpi 216 05.03.18 21:50 Сейчас в теме
(26)
Нет. Уже 8.3, но все так и осталось. Для баз, у которых есть необходимость периодически лазить в инет, и при этом критично, чтобы эти задания ОБЯЗАТЕЛЬНО выполнялись, я использую планировщик заданий Windows с запуском клиентских сеансов, вместо механизма регламентных заданий.
Оставьте свое сообщение