Как обновить Бухгалтерию предприятия 3.0, если версия конфигурации поставщика стала новее основной конфигурации

Программист 1С v8.3 (Управляемые формы) 1C:Бухгалтерия IT и автоматизация бизнеса
← На главную

В процессе сопровождения измененных конфигураций 1С:Предприятие 8.3 специалисты иногда сталкиваются с парадоксальной ситуацией: в окне настройки поддержки отображается, что конфигурация поставщика уже имеет актуальную (новую) версию, в то время как основная конфигурация всё еще остается на старой версии. Это происходит, если при обновлении через файл .cfu (файл обновления) в окне сравнения и объединения были сняты почти все флажки (например, обновлялись только конкретные отчеты), но процесс был доведен до конца. Система зафиксировала обновление поставщика, но программный код и метаданные основной конфигурации остались прежними. Разберем подробно, как выйти из этой ситуации и корректно завершить обновление.

Почему возникает эта проблема и чем она опасна

Рассмотрим механизм работы файла обновления .cfu. В отличие от полного файла конфигурации (.cf), файл обновления содержит только разницу (дифференциал) между конкретными версиями. Когда мы запускаем процесс, 1С сначала обновляет внутреннюю конфигурацию поставщика, а затем предлагает применить эти изменения к основной рабочей конфигурации. Если мы соглашаемся с обновлением конфигурации поставщика, но отказываемся от изменения объектов в основной конфигурации, возникает «разрыв».

Проанализируем последствия такого «лоскутного» обновления:

  1. Невозможность повторного использования .cfu: При следующей попытке запустить тот же файл обновления система выдаст ошибку, так как конфигурация поставщика уже соответствует целевой версии.
  2. Ошибки времени выполнения (Runtime errors): Новые формы отчетов или документов могут обращаться к общим модулям, процедурам или новым реквизитам справочников, которые не были перенесены в основную конфигурацию. Это приведет к аварийному завершению работы программы.
  3. Пропуск обработчиков обновления: В режиме «Предприятие» не запустятся важные процедуры реструктуризации данных, так как номер версии в свойствах конфигурации может не соответствовать ожиданиям системы.

Способ 1: Использование полного файла конфигурации (.cf)

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

Разберем этот метод по шагам:

  1. Скачаем полный дистрибутив нужной версии (в нашем примере это 3.0.60.34) с портала техподдержки 1С. Нам нужен именно дистрибутив для установки новой базы, из которого мы извлечем файл 1cv8.cf.
  2. Откроем конфигуратор и перейдем в меню Конфигурация — Поддержка — Обновить конфигурацию.
  3. В выборе источника укажем Выбор файла обновления и выберем наш полный .cf файл.
  4. Несмотря на то что версии могут совпадать, система позволит зайти в окно сравнения и объединения.
  5. Важный момент: Так как конфигурация измененная, нам нужно очень внимательно расставить флажки. Чтобы не затереть свои доработки, воспользуемся фильтром. Нажмем кнопку Фильтр и установим режим «Показывать только дважды измененные свойства». Это позволит увидеть конфликты между вашими правками и новым типовым кодом.
  6. Проставим недостающие флажки на всех типовых объектах, которые не были обновлены в прошлый раз.
  7. Выполним объединение и сохраним конфигурацию (F7).

Способ 2: Сравнение и объединение с конфигурацией поставщика

Если у вас нет под рукой полного файла .cf, но конфигурация поставщика внутри базы уже имеет нужную версию (3.0.60.34), мы можем попытаться «доподтянуть» основную конфигурацию из внутренних данных. Выясним, как это сделать правильно.

Проанализируем последовательность действий:

  1. Перейдем в меню Конфигурация — Сравнить, объединить с конфигурацией поставщика.
  2. Система сравнит вашу рабочую (старую) конфигурацию с той версией поставщика, которая уже «сидит» в базе.
  3. В открывшемся окне мы увидим все различия. Нам необходимо отметить все объекты, кроме тех, в которые внесены ваши уникальные изменения (или объединить их вручную, если это необходимо).
  4. После завершения объединения основная конфигурация по коду и структуре станет соответствовать версии 3.0.60.34.

Внимание! После выполнения этого способа номер версии в свойствах основной конфигурации может остаться старым. Рассмотрим, как это исправить. Нажмите правой кнопкой мыши на корне конфигурации (самая верхняя строка дерева метаданных), выберите Свойства и найдите поле Версия. Если там указано 3.0.59.45, вручную исправьте на 3.0.60.34. Это необходимо для корректного запуска обработчиков в режиме «Предприятие».

Способ 3: Подготовка файла из корректной копии

Если у вас есть копия базы, где обновление прошло успешно и версии совпадают, мы можем использовать ее как «эталон». Это поможет избежать ошибок ручного выбора объектов.

Рассмотрим алгоритм действий:

  1. В «здоровой» копии базы выгрузим конфигурацию в файл (Конфигурация — Выгрузить конфигурацию в файл...), получим standard.cf.
  2. В рабочей базе, где возникла проблема, воспользуемся функцией Конфигурация — Сравнить, объединить с конфигурацией из файла....
  3. Выберем наш standard.cf. Этот метод хорош тем, что в окне сравнения вы увидите именно те изменения, которые реально должны быть в системе для данной версии.
  4. Если конфигурация сильно доработана, убедитесь, что вы не затираете критически важные модули.

Запуск процедур обновления данных

После того как мы синхронизировали метаданные в Конфигураторе, работа не закончена. При запуске в режиме «Предприятие» должны выполниться обработчики обновления (заполнение новых регистров, конвертация данных). Если после входа в программу ничего не происходит, нужно подтолкнуть систему.

Разберем, какие инструменты для этого существуют:

  1. Параметр запуска: Можно запустить 1С с параметром /C ЗапуститьОбновлениеИнформационнойБазы.
  2. Программный вызов: Если обновление всё равно не стартует, можно воспользоваться внешней обработкой, в которой выполнить следующий код:
    
    Справочники.ИдентификаторыОбъектовМетаданных.ОбновитьДанныеСправочника();
    Константы.ПараметрыДополнительнойОбработкиОбновления.Установить(Новый ХранилищеЗначения(Новый Структура));
    
    После этого при следующем запуске система должна инициировать стандартные процедуры БСП (Библиотеки стандартных подсистем).

Дополнительные рекомендации по очистке кэша

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

Посмотрим на пути, по которым 1С хранит временные файлы:

Рекомендуется: Удалить все папки с длинными буквенно-цифровыми именами (GUID) из этих директорий. Также можно просто удалить базу из списка в стартере 1С и добавить её заново — это создаст новый кэш для этого подключения.

Резюмируем: Ситуация, когда конфигурация поставщика опережает основную, не является критической, если у вас есть доступ к полным дистрибутивам. Главное — обеспечить полное соответствие кода и структуры метаданных основной конфигурации заявленной версии поставщика, не забывая при этом сохранять собственные доработки через механизм сравнения и объединения.

← На главную