В практике администрирования и сопровождения систем на платформе 1С:Предприятие 8 нередко случаются досадные человеческие ошибки. Одна из классических ситуаций — случайная установка или обновление конфигурации на версию КОРП (Корпоративная) вместо стандартной версии ПРОФ. Обычно это обнаруживается на этапе очередной попытки планового обновления: система наотрез отказывается видеть штатные файлы обновлений (.cfu) для версии ПРОФ, выдавая ошибки несоответствия версий или просто сообщая, что доступных обновлений не найдено.
В этой статье мы подробно разберем, почему возникает эта проблема, проанализируем последствия неверных действий при ее решении и рассмотрим пошаговые инструкции по безопасному понижению версии (даунгрейду) конфигурации обратно на ПРОФ.
Выясним причину такого поведения платформы. Каждая конфигурация в экосистеме 1С имеет свой уникальный идентификатор и имя поставщика. Конфигурации БухгалтерияПредприятия (ПРОФ) и БухгалтерияПредприятияКОРП (КОРП) с точки зрения платформы являются разными программными продуктами, несмотря на то, что КОРП построена на базе кода и метаданных ПРОФ-версии.
Когда вы по ошибке накатываете дистрибутив КОРП на базу ПРОФ, платформа меняет внутренний идентификатор конфигурации поставщика. С этого момента система считает себя полноценной КОРП-версией и при попытке обновиться ищет файлы обновлений именно для КОРП. Файлы обновлений ПРОФ-версии ею полностью игнорируются.
Фирма «1С» официально поддерживает только процесс апгрейда — то есть перехода «снизу вверх» (Базовая → ПРОФ → КОРП). Официального, штатного механизма обратного перехода (даунгрейда) не существует. Тем не менее, решить эту задачу технически возможно.
Это наиболее быстрый и рабочий способ, который использовал автор темы для успешного решения проблемы. Он отлично подходит в случаях, когда база данных «чистая», либо в ней ведется минимальный учет без использования специфического функционала версии КОРП.
Суть метода заключается в полной замене структуры метаданных КОРП на структуру ПРОФ. Поскольку КОРП базируется на ПРОФ, уникальные идентификаторы (UUID) большинства общих объектов (справочников, документов, реквизитов) у них совпадают. Это позволяет оперативно вернуть базу на поддержку ПРОФ без потери основных данных.
Разберем этот метод по шагам:
.dt) или скопируйте файл 1Cv8.1CD (для файлового варианта)..cf) точно такого же релиза, какой сейчас установлен в вашей ошибочной КОРП-базе. Например, если у вас ошибочно оказалась база КОРП версии 3.0.67.63, вам нужно развернуть пустую базу ПРОФ версии 3.0.67.63 и выгрузить из нее файл конфигурации через меню Конфигурация -> Сохранить конфигурацию в файл.....cf от ПРОФ-версии. Нажмите «Да» во всех всплывающих окнах предупреждений платформы о замене конфигурации.F7 (или кнопку «Обновить конфигурацию базы данных»). Платформа выведет окно со списком изменений структуры данных. Внимательно изучите этот список: там будут отображены удаляемые объекты, специфичные для версии КОРП. Нажмите кнопку Принять.После этого база успешно вернется на поддержку ПРОФ-версии, и вы снова сможете выполнять штатные обновления.
Рассмотрим подробнее физические процессы, происходящие в базе данных при загрузке ПРОФ-конфигурации поверх КОРП. Вы должны отдавать себе отчет в том, какие данные будут безвозвратно утеряны при реорганизации СУБД:
ПодразделенияОрганизаций содержит расширенную аналитику (отдельные балансы, ИНН/КПП, адреса филиалов). В ПРОФ-версии этих реквизитов нет. При загрузке ПРОФ-конфигурации все эти данные будут физически удалены из таблиц базы данных.<Объект не найден>. В худшем случае реорганизация базы данных в Конфигураторе может аварийно завершиться из-за несоответствия типов данных или нарушения уникальности индексов в СУБД.Перед выполнением даунгрейда крайне рекомендуется запустить запрос в базе данных, чтобы проверить, были ли использованы КОРП-специфичные функции. Проанализируем пример простого запроса для проверки наличия обособленных подразделений в базе:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ПодразделенияОрганизаций.Ссылка КАК Ссылка,
| ПодразделенияОрганизаций.Наименование КАК Наименование
|ИЗ
| Справочник.ПодразделенияОрганизаций КАК ПодразделенияОрганизаций
|ГДЕ
| ПодразделенияОрганизаций.ОбособленноеПодразделение = ИСТИНА";
РезультатЗапроса = Запрос.Выполнить();
Если Не РезультатЗапроса.Пустой() Тогда
ВызватьИсключение "В базе присутствуют обособленные подразделения! Прямой даунгрейд опасен утерей данных.";
КонецЕсли;
Разберем популярную ошибку начинающих администраторов, которые пытаются решить проблему через меню Конфигурация -> Сравнить, объединить с конфигурацией из файла.... Этот способ приводит к плачевным последствиям:
Если в вашей ошибочно обновленной базе КОРП уже велся активный учет и в ней содержатся важные данные, метод простой загрузки .cf использовать нельзя. В таких ситуациях рассмотрим два альтернативных, безопасных подхода:
Этот способ является наиболее чистым и безопасным с точки зрения целостности структуры новой базы данных. Посмотрим, как это сделать:
ВыгрузкаЗагрузкаДанныхXML.epf (ее можно найти на ИТС или в каталоге шаблонов конфигурации).Если вы все же решили использовать метод загрузки .cf на работающей базе, обязательно проведите предварительную подготовку данных:
Подводя итог, можно сказать, что случайный переход на КОРП — это неприятная, но вполне решаемая проблема. Главное — всегда делать резервные копии перед экспериментами и выбирать метод исправления исходя из того, успели ли пользователи внести реальные данные в ошибочно установленную конфигурацию.