Имя: Пароль:
1C
1С v8
ЗУП ошибка фонового задания при переходе с 3.1.9 на 3.1.10
0 lg2marvel
 
12.12.19
09:47
Добрый день. Сабж.
Такая вот ошибка. При выполнении фонового задания

Процедура "Документы.ВозвратИзОтпускаПоУходуЗаРебенком.ЗаполнитьДвиженияЗанятостьПозицийШтатногоРасписания" обработки данных завершилась с ошибкой:

Превышено допустимое количество запусков процедуры обновления.
Выполнение прервано для предотвращения зацикливания механизма обработки данных.
{ОбщийМодуль.ОбновлениеИнформационнойБазыСлужебный.Модуль(6487)}:            ВызватьИсключение ТекстОшибки;
{ОбщийМодуль.ОбновлениеИнформационнойБазыСлужебный.Модуль(6170)}:    ПередЗапускомПроцедурыОбработкиДанных(КонтекстОбработчика,
{ОбщийМодуль.ОбновлениеИнформационнойБазыСлужебный.Модуль(2828)}:    ОбработчикОбновления = НайтиОбработчикОбновления(КонтекстОбработчика, СведенияОбОбновлении);
{ОбщийМодуль.ОбновлениеИнформационнойБазыСлужебный.Модуль(2601)}:                Поток = ДобавитьПотокОбработчикаОтложенногоОбновления(ОписаниеПотоков, СведенияОбОбновлении);

Можно накатить следующее обновление - там тоже эта же ошибка, а если еще следующее то дальше ошибок нет. Но ведь это не правильно. Сталкивался кто-то? Как можно решить?
1 lg2marvel
 
12.12.19
09:58
Вот так выглядит процедура в модуле менеджера документа

Процедура ЗаполнитьДвиженияЗанятостьПозицийШтатногоРасписания(ПараметрыОбновления = Неопределено) Экспорт
    
    Запрос = Новый Запрос;
    Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
    
    Запрос.Текст =
        "ВЫБРАТЬ РАЗЛИЧНЫЕ ПЕРВЫЕ 1000
        |    ТаблицаДокумента.Ссылка КАК Регистратор
        |ПОМЕСТИТЬ ВТРегистраторыКОбновлению
        |ИЗ
        |    Документ.ВозвратИзОтпускаПоУходуЗаРебенком КАК ТаблицаДокумента
        |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КадроваяИсторияСотрудников КАК КадроваяИсторияСотрудников
        |        ПО ТаблицаДокумента.ОсновнойСотрудник = КадроваяИсторияСотрудников.Сотрудник
        |            И (КОНЕЦПЕРИОДА(ТаблицаДокумента.ДатаВозврата, ДЕНЬ) >= КадроваяИсторияСотрудников.Период)
        |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗанятостьПозицийШтатногоРасписания КАК ЗанятостьПозицийШтатногоРасписания
        |        ПО ТаблицаДокумента.Ссылка = ЗанятостьПозицийШтатногоРасписания.Регистратор
        |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ВозвратИзОтпускаПоУходуЗаРебенком КАК ТаблицаДокументаИсправления
        |            ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗанятостьПозицийШтатногоРасписанияИспр КАК ЗанятостьПозицийШтатногоРасписанияИспр
        |            ПО ТаблицаДокументаИсправления.Ссылка = ЗанятостьПозицийШтатногоРасписанияИспр.РегистраторИзмерение
        |        ПО ТаблицаДокумента.Ссылка = ТаблицаДокументаИсправления.ИсправленныйДокумент
        |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ОтпускПоУходуЗаРебенком КАК ОтпускПоУходуЗаРебенком
        |        ПО ТаблицаДокумента.ДокументОснование = ОтпускПоУходуЗаРебенком.Ссылка
        |ГДЕ
        |    ТаблицаДокумента.Проведен
        |    И ОтпускПоУходуЗаРебенком.ОсвобождатьСтавку
        |    И ЗанятостьПозицийШтатногоРасписания.Регистратор ЕСТЬ NULL
        |    И ЗанятостьПозицийШтатногоРасписанияИспр.РегистраторИзмерение ЕСТЬ NULL
        |    И НЕ КадроваяИсторияСотрудников.Сотрудник ЕСТЬ NULL
        |;
        |
        |////////////////////////////////////////////////////////////////////////////////
        |ВЫБРАТЬ ПЕРВЫЕ 1
        |    РегистраторыКОбновлению.Регистратор КАК Регистратор
        |ИЗ
        |    ВТРегистраторыКОбновлению КАК РегистраторыКОбновлению";
    
    Если ПараметрыОбновления = Неопределено Тогда
        Запрос.Текст = СтрЗаменить(Запрос.Текст, "ПЕРВЫЕ 1000", "");
    КонецЕсли;
2 unenu
 
12.12.19
09:59
не помню толи ошибка релиза платформы, толи ЗУПа, где-то в дебагах писалось.
обновились и забыли
3 unenu
 
12.12.19
10:01
"Можно накатить следующее обновление - там тоже эта же ошибка, а если еще следующее то дальше ошибок нет. Но ведь это не правильно."

романтик штоле? ещё бы написали... это не справедливо, как жить после этого)
4 Фрэнки
 
12.12.19
10:03
Я бы перепроверил для начала, с взяты соответствующие друг другу релизы.

Далее, если база на сервере сидит, то перед тем, как обновляться в режиме сервера сразу на тесте в файловой. Это даст как бы исключительно монопольный режим.

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

Ага, вспомнил. Релиз платформы может тоже дать свои фокусы.

И еще вспомнил, что да, в каком-то релизе 3.1.10 меняли/исправляли ошибку как раз с этими документами.

И еще :-) А каким релизом все-таки обновляешь? Можно же полным актуальным дистрибутивом накатить и он сразу все по идее сможет прокрутить. на ИТС потому и выкладывают полные дистрибы по ЗУП, что глюки на обновлениях с CFU все-таки случаются.
5 Фрэнки
 
12.12.19
10:06
Т.е. по логике разработчиков, когда берется полный CF дистриб, то множество промежуточных действий в базе сделаются и последовательно гонять обновление на обновление нет особого смысла.
6 dnab
 
12.12.19
10:07
(0) на мисте это обсуждалось, поищи
7 lg2marvel
 
12.12.19
10:13
(4) с 3.1.9.229 на 3.1.10.78. В файловую перевести это будет ооооочень плохо, там база около 20 гиг. База - копия оригинала, тестовая в ней никто не работает
8 d4rkmesa
 
12.12.19
10:23
(0) "Но ведь это не правильно. " - Смысла нет это мусолить. Можно попробовать обновить сначала на младший релиз(3.1.10.50). Бывают релизы с косяками обновления.
9 lg2marvel
 
12.12.19
10:35
(8) с 50 та же ситуация
10 d4rkmesa
 
12.12.19
10:36
11 Фрэнки
 
12.12.19
10:37
(7) т.е. разрешения регламентных проверил? и релиз платформы?
12 lg2marvel
 
12.12.19
10:43
(11) Да регламентные разрешены, платформа 8.3.15.1656
13 lg2marvel
 
12.12.19
10:44
(10) Спасибо за тему, попробую найти документ
14 lg2marvel
 
12.12.19
10:47
Линия поддержки ответила:

Для начала попробуйте в исходной базе (до обновления) полностью удалить все помеченные на удаление объекты, затем её протестировать и исправить.

Перед этим обязательно сделайте резервную копию базы данных.
15 Фрэнки
 
12.12.19
11:00
мда...

В общем, я только что залез в конфигуратор и посмотрел на содержимое обработчиков обновления
Процедура ЗарегистрироватьОбработчикиОбновления
Я бы на твоем месте попробовал самым последним CF обновиться и не дергать все промежуточные. Сразу на тестовой.
Ну или как вариант, собственно все эти обработчики документов их просто пытаются перепроводить.

Кстати, а дата Запрета редактирования не прошлые периоды точно не установлена?
16 lg2marvel
 
12.12.19
11:13
(15) Стояла для раздела учета Зарплата, НДФЛ, убрал, посмотрим чем завершится.

Разве можно обновляться минуя промежуточные? В промежуточных заполнение регистров, будет ли оно выполняться при пропуске пары тройки обновлений?

Для 3.1.9.229 доступный самый последний релиз для обновления как раз 78.

Но все равно спасибо, если не получится - попробую cf-ником...
17 Фрэнки
 
12.12.19
12:36
(16) минуя промежуточные точно нельзя, когда для обновления берешь CFU

А если готовый CF есть, тогда можно.
Это как раз из-за того, что все обработчики обновления собраны в последовательный список в одной общей процедуре.
Т.е. когда просматриваешь готовую эту процедуру в 3.1.10.78 и в самой последней 3.1.10 - последний продолжает первый.
18 mmmarat
 
12.12.19
15:15
(0) Такая ситуация может возникнуть, если у вас есть соответствующие документы, где дата возврата позже, чем дата увольнения. Алгоритм обновления не может обработать эти документы и впадает в "бесконечный цикл", который и отлавливается обработчиками обновления.
19 lg2marvel
 
13.12.19
10:11
(18) спасибо, есть такие документы, увольнение в день возврата, соответственно возврат считается после увольнения. Проверяю. Жаль что долго крутится
20 lg2marvel
 
13.12.19
10:20
(18) отработало. Спасибо
Закон Брукера: Даже маленькая практика стоит большой теории.