Решение проблем с обновлением кастомизированных конфигураций на БСП



В данной статье рассматриваются действия, необходимые для удаления невыполненных дополнительных процедур обработки данных предыдущих обновлений.

При обновлении измененных конфигураций на БСП (УТ11, КА2 и т.д.) может возникать проблема, когда некоторые дополнительные процедуры обработки данных, выполняемые в режиме «1С:Предприятие»  уже после обновления в конфигураторе завершаются с ошибкой, или не завершаются по другим причинам.

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

Вот пример такой ошибки, которая возникла в подобном случае:

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

Эти процедуры в конфигурациях на БСП можно увидеть в разделе «НСИ и Администрирование — Поддержка и обслуживание — Результаты обновления программы».

При этом ручной запуск процедур, которые не были выполнены при обновлении ни к чему не приводит, они так же завершаются с ошибкой, либо остаются в состоянии «Выполняется».

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

Вся информация, представленная на рисунке выше хранится всего лишь в одной константе с типом значения «ХранилищеЗначения», в котором хранится целая структура с различными данными, в том числе и таблица значений со списком и статусами процедур дополнительной обработки данных. В нашем случае самым простым решением будет очистить эту константу, записав в хранилище значения «Неопределено».

Написав маленькую обработку всего с одной формой и командой с одной инструкцией:

&НаСервереБезКонтекста
Процедура ОчиститьКонстантуНаСервере()
Константы.СведенияОбОбновленииИБ.Установить(Неопределено);
КонецПроцедуры

&НаКлиенте
Процедура ОчиститьКонстанту(Команда)
ОчиститьКонстантуНаСервере();
Сообщить("Константа ""Сведения об обновлении ИБ"" очищена!");
КонецПроцедуры

Список дополнительных процедур обработки данных очистился и нам удалось осуществить обновление на следующий релиз вплоть до последнего. Следует обратить внимание, что обработку следует запускать ДО непосредственного обновления, т.е. на старом релизе.

При обновлении на следующий релиз структура данных, хранимых в константе «СведенияОбОбновленииИБ» восстанавливается. Так же туда записывается список всех выполненных дополнительных процедур обработки данных при обновлении на каждый релиз.

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

P.S. Следует отметить, что такое подход сработает, при невыполнении нескольких процедур постобработки из многих и при рабочем состоянии базы до обновления. Если выполнено 3 процедуры из 100, то следует детально анализировать причины. За этот постскриптум спасибо пользователю rjhev korum за его комментарий

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

4 Comments

  1. Alien_job

    «Как сломать что нибудь и не понять что»

    Reply
  2. biz-intel

    В списке дополнительных процедур обработки данных до его очистки содержится список процедур, которые были выполнены при обновлении, в том числе и те, которые не были выполнены и не будут, при очистке этого списка.

    При обновлении на следующий релиз структура данных, хранимых в константе «СведенияОбОбновленииИБ» восстанавливается. Так же туда записывается список всех выполненных дополнительных процедур обработки данных при обновлении на каждый релиз.

    Reply
  3. корум

    «с виду работает, на ругалки забьём».

    А при сдаче квартальной отчётности вылезет привет из прошлого, и концы искать будешь долго.

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

    PS при обновлении ЗУП 3.1 в одном обновлении встречается и 150 процедур пост-обработки.

    с ошибкой выпала 9-я в списке…

    Reply
  4. biz-intel

    Не могу с вами не согласиться. Конечно же стоит в любом случае проанализировать что именно не удалось выполнить на этапе постобработки, особенно, если выполнилось 8 процедур из 150. Но ведь база то не будет в рабочем состоянии в этом случае, имею ввиду в пользовательском режиме.

    Спасибо за ваше замечание, добавил его в постскриптум в описание статьи.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *