В 1С:Предприятии 8.0 конфигурация хранится непосредственно в информационной базе как в файловом, так и в клиент-серверном варианте. При этом отдельно хранится редактируемая конфигурация (основная конфигурация) и конфигурация, с которой работают пользователи (конфигурация базы данных). Чтобы пользователи могли работать с измененной конфигурацией, необходимо вызвать команду «Обновить конфигурацию базы данных». В этом разделе приводится информация о том, как система выполняет эту операцию, и какие у данного процесса имеются особенности.
Обновление конфигурации базы данных выполняется в монопольном режиме работы с базой данных. Это необходимо для обеспечения целостности конфигурации и таблиц базы данных.
При выполнении обновления конфигурации базы данных выполняется сравнение измененной конфигурации и конфигурации базы данных. При этом определяются сделанные в конфигурации изменения требующие изменения структуры или содержимого таблиц базы данных. Если в ходе анализа определено, что изменение или добавление некоторого объекта метаданных требует изменения структуры таблиц, состава индексов или содержимого таблиц, то система создает новые таблицы, соответствующие этому объекту метаданных. Структура новых таблиц соответствует свойствам объектов метаданных измененной конфигурации. Далее выполняется перенос данных из существующих таблиц в новые таблицы. В ходе переноса выполняется преобразование данных, если это требуется, а также логический контроль данных на соответствие измененной конфигурации. Таким образом, формируется «новое поколение» таблиц данных требующих изменения. Если в измененной конфигурации удалены объекты метаданных, определяющие наличие таблиц в базе данных, то по таким объектам метаданных отмечаются таблицы, которые необходимо удалить.
По окончании этого процесса, если хотя бы одна таблица базы данных нового поколения была создана или какие-либо таблицы базы данных были отмечены для удаления, то выдается окно «Реорганизация информации», содержащее список выполненных действий. Если в появившемся окне нажать кнопку «Отмена», то процесс обновления конфигурации базы данных будет прерван, и будут удалены таблицы нового поколения. Если нажать кнопку «Принять», то будет выполнено замещение таблиц базы данных таблицами нового поколения, удаление отмеченных для удаления таблиц и замещение конфигурации базы данных измененной основной конфигурацией. На этом процесс обновления конфигурации базы данных будет завершен.
Описанный порядок позволяет обеспечивать наличие консистентных (целостных) данных, соответствующих конфигурации в каждый момент времени. Если какой-либо программный или аппаратный сбой происходит до начала принятия изменений, то целостная информация находится в основных таблицах базы данных и в конфигурации базы данных. В этом случае таблицы нового поколения теряют смысл, и процесс можно начать с начала. Если сбой происходит после начала принятия изменений, то целостная информация находится в таблицах нового поколения и в измененной конфигурации. В этом случае при запуске конфигуратора будет выполняться повторное принятие изменений. Следует заметить, что такая организация процесса обновления конфигурации базы данных не требует для поддержания целостности использования механизма транзакций, так как могут обрабатываться очень большие объемы информации.
Таким образом, непосредственного изменения таблиц базы данных никогда не производится. Все изменения метаданных требующие изменения структур данных или содержимого таблиц базы данных выполняются путем переноса данных в таблицы нового поколения. Поэтому даже введение нового реквизита в структуре объекта будет требовать полной перезаписи всей информации. Если в структуре метаданных удаляются некоторые объекты, ссылки на которые могут присутствовать в других данных, то выполняется перенос тех данных, в которых может содержаться ссылка, в новое поколение таблиц с очисткой значений ссылающихся на удаленные объекты. Например, будет выполняться обработка данных включающих поле составного типа, если удаление некоторого объекта метаданных привело к уменьшению реального состава типов этого поля. Также при удалении значения перечисления будут обрабатываться таблицы, поля которых могли хранить это значение.
В ходе обновления конфигурации могут формироваться ошибки и предупреждения, если состав данных конкретной информационной базы противоречит сделанным в конфигурации изменениям. Некоторые противоречия считаются критичными. При обнаружении критичного противоречия в окне «Реорганизация информации» выводится сообщение об ошибке, и принятие изменений становится недоступным. Другие противоречия считаются не критичными. В этом случае в списке изменений выводятся предупреждения, а при попытке принять изменения выдается дополнительный запрос, чтобы обратить внимание пользователя на наличие предупреждений.
|