Привет, Хабр!

Выполнял я недавно обновление 1С:Документооборот. Много доработок, расширения. Но самое плохое – конфигурации поставщика нет в списках 1С, и не хочет с этой версии ни на что обновляться.

Возился долго. На копии удалось всё победить, проверили – работает. При старте только ругается:

Если б не послушались - возможно, и не было бы этой статьи.
Если б не послушались - возможно, и не было бы этой статьи.

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

А тут как раз Бухгалтерию параллельно обновляли, и она тот же вопрос ставит, но в резких формах: совсем работать отказывается. Тормознули моё обновление на ночь и обновили платформу с 24 на 27.

На следующий день расширения загрузил новые – и на обновление базы поставил. Проходит полтора часа, и вылезает вот такая ошибка (сообщение - backend - src\backend\src\DBStruImpl.cpp (4257)):

"Злая" ошибка
"Злая" ошибка

Повторил ещё раз - то же самое.

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

Днём полез в интернеты. Нашёл обсуждение в форуме. Текст тот же, а номер ошибки другой (не как в моём сообщении). В комментариях нашёл зарегистрированную ошибку № 70062326. Обращаю внимание: в версии 24 ошибка исправлена, а про 27 – ни слова.

Нет здесь платформы 27
Нет здесь платформы 27

Вроде логично: 27 платформа появилась после исправления ошибки в 24 – значит, в 27 быть ошибки не должно. Но она есть. По описанию – связана с расширениями. Но расширения я просто убрать не могу: там данные есть. Значит, пытаюсь как-то иначе обойтись:

  • Поправил системный файл, про который в комментариях пишут – неудача, та же ошибка.

  • Чистка всех кэшей – неудача.

  • Попробовал сравнением конфигураций – неудача.

  • Выгрузка/загрузка dt – неудача.

  • Выполнил ТиИ – неудача.

  • Спросил у коллег – идей почти нет.

Может, у вас идеи есть? У меня не было, но старался, думал как мог, и появлялись новые варианты:

  • Загрузил через файлы – неудача.

  • Установил 24 платформу, сделал копию рабочей, попробовал обновить – неудача.

  • Расширения на копии удалил, обновляю – неудача.

И каждая попытка – не менее 2 часов. Было ещё несколько разных идей. И везде вылезала неугомонная ошибка.

Потом подумал: а вдруг конфигурация поставщика битая? Надо проверить. Сделал копию, в ней рабочую конфигурацию сравнил с конфигурацией базы

Это меню пришлось ��спользовать много раз...
Это меню пришлось использовать много раз...

Все флажки оставил, обновил на базу. Конфигурация поставщика осталась теперь новая, а рабочая подгрузилась из базы – старая.

Обновляю на базу - установилось. Значит, конфигурация поставщика ни при чём.

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

Теперь на базу конфигурация обновилась. Победа!!! Базу отдал заждавшимся пользователям.

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

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

И причина нашлась! В новой типовой конфигурации - той, на которую я обнвлялся, стоял режим совместимости: платформа 24.

На платформе 24, естественно, нет режима совместимости с собой же. Целевая финальная конфигурация была сделана мной на 24 платформе, и у неё записался такой режим. Как он записывается физически, я слабо представляю, но по всей видимости помнит где-то, что это не просто путой режим совместимости. А вот загружался cf в рабочую конфигурацию уже на платформе 27. И вот такая редкая совместимость непоправимо портилось при переносе конфигурации, становясь жёсткой несовместимостью.

Только когда я это выяснил, вспомнил, что в комментариях к статье на инфостарте упоминался сброс совместимости как возможное решение. Но так как я проверял другие варианты, очередь так и не дошла до него. А жаль. В какой-то момент правильно было не придумывать свои варианты, а проверить предложенный.

Выводы:

  1. Все ошибки такого вида, независимо от номера, могут быть связаны с режимом совместимости.

  2. Решение – перевыбор режима совместимости. Причём устанавливать надо только тот, который был ранее: 24 – для платформы 27, а для 24 платформы – без совместимости.

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

  4. Надо быть последовательным и перебрать все найденные и предложенные варианты решений до конца.