Добрый день уважаемые коллеги, помогите пожалуйста разобраться с проблемой. Летом в компании был осуществлен переход на ДО КОРП ред.2.1 (2.1.5.6 релиз ) с предыдущей версии, недавно я заметила, что в системе с 2014 года по ряду задач (согласование, ознакомление, исполнение) зависли процессы, выглядит это так как на картинке под цифрой 1, когда заходишь в саму задачу там появляется оповещение (цифра 2)" Задача находится в очереди для выполнения. Выполнение задачи произойдет автоматически в ближайшее время." - нет возможности даже от Администратора нажать на кнопку "исполнить" т.к. ее там просто нет.
Когда такая проблема возникает с актуальными документами 2017 года, например ноябрьские смотрели, то просто выкидываем пользователей, которые мешают друг другу работе с документом и вроде все налаживается, но предыдущие так и висят.
Пробовала выполнять "Фоновое задание" вручную - не помогло.
Попыталась через Эскалацию задач решить вопрос, указав необходимые условия, тоже не помогло.
Я только зарегистрировалась на форуме, буду рада если смогу помочь коллегам решать свои вопросы
Добрый день уважаемые коллеги, помогите пожалуйста разобраться с проблемой. Летом в компании был осуществлен переход на ДО КОРП ред.2.1 (2.1.5.6 релиз ) с предыдущей версии, недавно я заметила, что в системе с 2014 года по ряду задач (согласование, ознакомление, исполнение) зависли процессы, выглядит это так как на картинке под цифрой 1, когда заходишь в саму задачу там появляется оповещение (цифра 2)" Задача находится в очереди для выполнения. Выполнение задачи произойдет автоматически в ближайшее время." - нет возможности даже от Администратора нажать на кнопку "исполнить" т.к. ее там просто нет.
Когда такая проблема возникает с актуальными документами 2017 года, например ноябрьские смотрели, то просто выкидываем пользователей, которые мешают друг другу работе с документом и вроде все налаживается, но предыдущие так и висят.
Пробовала выполнять "Фоновое задание" вручную - не помогло.
Попыталась через Эскалацию задач решить вопрос, указав необходимые условия, тоже не помогло.
Проверьте по журналу регистраций с отбором "РегламентыеЗадания - Фоновое выполнение задач" на ошибки и предупреждения. Скорее всего задача не может выполниться из-за ошибки прав.
Очередь хранится в регистре сведений ЗадачиДляВыполнения. Можно попробовать удалить зависшие задачи. Только учтите, удаляется не задача, а только очередь. У меня после удаления очереди задачи стартовали сами.
(5) Данный вариант помог избавиться от тех заявок которые либо на паузе были, либо желтый значок был.
А причиной отмены выполнения является
Во время выполнения этой задачи произошла ошибка:
{ОбщийМодуль.ВыполнениеЗадачСервер.Модуль(313)}: Ошибка при вызове метода контекста (ВыполнитьЗадачу)
ЗадачаОбъект.ВыполнитьЗадачу();
по причине:
Ошибка при выполнении обработчика - 'ПриЗаписи'
по причине:
{ОбщийМодуль.РаботаСВизамиСогласования.Модуль(425)}: Ошибка при вызове метода контекста (Записать)
ОбъектВизы.Записать();
по причине:
Ошибка при выполнении обработчика - 'ПередЗаписью'
по причине:
{ОбщийМодуль.РаботаСРабочимиГруппами.Модуль(
Задачи которые с той стрелочкой так и не появились тут (
Имел щастье после обновления с интернешнл версии. Почему-то некоторые задачи, сформированные в ней, оказались принадлежащими другому узлу обмена, а стандартный исполнитель задач его проверяет ! Ниже решение проблемы - модифицированный исполнитель, не проверяющий узла.
Проталкивает сразу все повисшие задачи.
&НаСервере
// Обработчик рег. задания ВыполнениеЗадач
//
Процедура ВыполнениеЗадач() Экспорт
УстановитьПривилегированныйРежим(Истина);
ЭтотУзелОбмена = РаботаСБизнесПроцессами.ЭтотУзелОбменаДляОбработкиПроцессов();
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЗадачиДляВыполнения.Задача,
| ЗадачиДляВыполнения.Параметры,
| ЗадачаИсполнителя.Исполнитель,
| ЗадачаИсполнителя.Выполнена,
| ЗадачиДляВыполнения.КоличествоПопытокОбработки,
| ДанныеБизнесПроцессов.УзелОбмена КАК УзелОбмена
|ИЗ
| РегистрСведений.ЗадачиДляВыполнения КАК ЗадачиДляВыполнения
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Задача.ЗадачаИсполнителя КАК ЗадачаИсполнителя
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ДанныеБизнесПроцессов КАК ДанныеБизнесПроцессов
| ПО ЗадачаИсполнителя.БизнесПроцесс = ДанныеБизнесПроцессов.БизнесПроцесс
| ПО ЗадачиДляВыполнения.Задача = ЗадачаИсполнителя.Ссылка
|ГДЕ
// | ДанныеБизнесПроцессов.УзелОбмена = &ЭтотУзелОбмена И
| ЗадачиДляВыполнения.СостояниеВыполнения = ЗНАЧЕНИЕ(Перечисление.СостоянияЗадачДляВыполнения.ГотоваКВыполнению)
| И ЗадачиДляВыполнения.КоличествоПопытокОбработки <= 3
| И ДанныеБизнесПроцессов.Состояние = ЗНАЧЕНИЕ(Перечисление.СостоянияБизнесПроцессов.Активен)
| И ЗадачаИсполнителя.ПометкаУдаления = ЛОЖЬ
|
|УПОРЯДОЧИТЬ ПО
| ЗадачиДляВыполнения.МоментВремени";
// Запрос.УстановитьПараметр("ЭтотУзелОбмена", ЭтотУзелОбмена);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить("РегистрСведений.ЗадачиДляВыполнения");
ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
ЭлементБлокировки.УстановитьЗначение("Задача", Выборка.Задача);
НачатьТранзакцию();
// Пытаемся заблокировать задачу и запись в регистре ЗадачиДляВыполнения.
// Если не удается, то пропускаем задачу и пробуем выполнить при след. обработке.
Попытка
ЗаблокироватьДанныеДляРедактирования(Выборка.Задача);
Блокировка.Заблокировать();
Исключение
ОтменитьТранзакцию();
Продолжить;
КонецПопытки;
Попытка
РегистрыСведений.ЗадачиДляВыполнения.УдалитьЗадачуИзОчереди(Выборка.Задача);
Если Не Выборка.Выполнена Тогда
ЗадачаОбъект = Выборка.Задача.ПолучитьОбъект();
лПараметры = Выборка.Параметры.Получить();
Если ТипЗнч(лПараметры) <> Тип("Структура") Тогда
лПараметры = Новый Структура;
КонецЕсли;
КлючеваяОперация = ИмяКлючевойОперацииДляЗадачи(ЗадачаОбъект, лПараметры);
ПроцессОбъект = ЗадачаОбъект.БизнесПроцесс.ПолучитьОбъект();
ПроцессОбъект.ОбменДанными.Загрузка = Истина;
лУзелОбменаБП = ПроцессОбъект.УзелОбмена;
ПроцессОбъект.УзелОбмена = ЭтотУзелОбмена;
ПроцессОбъект.Записать();
ВыполнениеЗадачСервер.ВыполнитьЗадачуСПараметрами(ЗадачаОбъект, лПараметры);
// Проверяем права участников на предметы процесса, чтобы
// уведомить автора, о том, что в процессе есть недоступные предметы участникам
// и они не смогут выполнить свои задачи.
ПроцессОбъект = ЗадачаОбъект.БизнесПроцесс.ПолучитьОбъект();
ПроцессОбъект.ОбменДанными.Загрузка = Истина;
ПроцессОбъект.УзелОбмена = лУзелОбменаБП;
ПроцессОбъект.Записать();
ПроцессОбъект.ОбменДанными.Загрузка = Ложь;
АвторПроцесса = РаботаСБизнесПроцессами.АвторПроцессаЗадачи(ПроцессОбъект);
МультипредметностьКОРП.ПроверитьПраваУчастниковПроцессаИОтправитьУведомления(ПроцессОбъект, АвторПроцесса);
КонецЕсли;
РазблокироватьДанныеДляРедактирования(Выборка.Задача);
ЗафиксироватьТранзакцию();
Исключение
ИнформацияОбОшибке = ИнформацияОбОшибке();
Сообщить(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке));
ОтменитьТранзакцию();
КонецПопытки;
КонецЦикла;
КонецПроцедуры
Решение для меня было следующим: я зашел в регистр сведений: Задачи для выполнения и удалил "зависшую задачу", после этого в бизнес-процессе по данной задаче стали доступны кнопки, в том числе "Согласовать", вручную я двинул процесс дальше.
у нас тоже были похожие проблемы (при переходе с 1.2.8.1 на 2.0.18.1 - прошли 2 промежуточных обновления).
в итоге - решили отключить в настройках программы "Использовать фоновый старт процессов", "Использовать фоновое выполнение задач" (у разработчиков была ошибка в коде...в общем быстрее сами поправили видимость этой галочки, т.к. у нас есть синхронизация). Сейчас возможно в новых версиях можно спокойно отключить фоновое выполнение.
По поводу узлов - у нас раньше был настроен РИБ, но уже лет 5 не использовался. и вот при обновлении из-за него пошли разные узлы для процессов (в РС.БизнесПроцессы). нам разработчики прислали обработку по изменению номера узла.
(10)Тоже самое было. У нового узла был идентификатор 0000-0000..., а старый перестал играть роль, так как у него ЭтотУзел = Ложь. Решил удаление нового узла (0000-0000...) и присвоением старому узлу ЭтотУзел = Истина.
Вот примерно как тут, в самом низу
https://forum.infostart.ru/forum81/topic153154/
Ещё проблема возникла, что за день пока разбирался, насоздавались процессы с новым идентификатором Узла Обмена. Не сразу допёр как провести объект бизнес процесса по регистрам. Записывал через ОбменДанных.Загрузка, хотя не стоило - в этом случае регистры оставались с нулевым идентификатором.
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ДанныеБизнесПроцессов.БизнесПроцесс КАК БизнесПроцесс,
| ДанныеБизнесПроцессов.Завершен КАК Завершен,
| ДанныеБизнесПроцессов.Номер КАК Номер,
| ДанныеБизнесПроцессов.Важность КАК Важность,
| ДанныеБизнесПроцессов.ВедущаяЗадача КАК ВедущаяЗадача,
| ДанныеБизнесПроцессов.ГлавнаяЗадача КАК ГлавнаяЗадача,
| ДанныеБизнесПроцессов.Дата КАК Дата,
| ДанныеБизнесПроцессов.УдалитьЗавершен КАК УдалитьЗавершен,
| ДанныеБизнесПроцессов.ДатаНачала КАК ДатаНачала,
| ДанныеБизнесПроцессов.Стартован КАК Стартован,
| ДанныеБизнесПроцессов.Автор КАК Автор,
| ДанныеБизнесПроцессов.НомерИтерации КАК НомерИтерации,
| ДанныеБизнесПроцессов.ОбъектДоступа КАК ОбъектДоступа,
| ДанныеБизнесПроцессов.ОсновнойПредмет КАК ОсновнойПредмет,
| ДанныеБизнесПроцессов.ДатаЗавершения КАК ДатаЗавершения,
| ДанныеБизнесПроцессов.Проект КАК Проект,
| ДанныеБизнесПроцессов.ПроектнаяЗадача КАК ПроектнаяЗадача,
| ДанныеБизнесПроцессов.Состояние КАК Состояние,
| ДанныеБизнесПроцессов.СрокИсполнения КАК СрокИсполнения,
| ДанныеБизнесПроцессов.Наименование КАК Наименование,
| ДанныеБизнесПроцессов.ТрудозатратыПлан КАК ТрудозатратыПлан,
| ДанныеБизнесПроцессов.ПометкаУдаления КАК ПометкаУдаления,
| ДанныеБизнесПроцессов.УзелОбмена КАК УзелОбмена
|ИЗ
| РегистрСведений.ДанныеБизнесПроцессов КАК ДанныеБизнесПроцессов
|ГДЕ
| НЕ ДанныеБизнесПроцессов.УзелОбмена = &УзелОбмена";
ЭтотУзелОбмена = РаботаСБизнесПроцессами.ЭтотУзелОбменаДляОбработкиПроцессов();
Запрос.УстановитьПараметр("УзелОбмена", ЭтотУзелОбмена);
РезультатЗапроса = Запрос.Выполнить();
ТЗ = РезультатЗапроса.Выгрузить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
БП = ВыборкаДетальныеЗаписи.БизнесПроцесс.ПолучитьОбъект();
//БП.ОбменДанными.Загрузка = Истина;
БП.Узелобмена = ЭтотУзелОбмена;
БП.Записать();
КонецЦикла;