Инструмент «Целостность данных 3KL»

Полина Андреева
24.10.2025
Инструмент «Целостность данных СЭО 3КL» (tool_dbcheckup3kl) позволяет определить, есть ли нарушения в целостности данных различных компонентов системы: модулей курса, оценок, файлов и связей между модулями курса и секциями.. . . . . .
Функционал, описанный в данной статье, в полном объеме доступен в СЭО 3КL, начиная с версий 4.1.20b и 4.5.6b.
Если вы используете более раннюю версию системы — обратитесь с заявкой на проведение обновления в службу технической поддержки ООО «Открытые технологии».
Действия в данной инструкции с пометкой требуются права администратора могут быть выполнены только при наличии доступа «Полный Администратор». Начиная с 2022 года для вновь заключаемых договоров такой набор прав предоставляется роли «Диспетчер-администратор» по умолчанию. Если ваш договор был заключен раньше, вы можете обратиться в техподдержку с соответствующей заявкой на расширение набора прав диспетчера-администратора.
Важно! Неосторожные действия полного администратора могут повредить систему и контент таким образом, что исправление последствий вмешательства выйдет за рамки гарантийной технической поддержки. В случае внесения правок в глобальные настройки рекомендуем вам убедиться в том, что вы полностью понимаете, за что отвечают данные настройки. Если у вас возникают сомнения в назначении глобальных настроек, обратитесь за помощью в техническую поддержку.
Подробная информация в статье «Полный административный доступ».
Информация, приведенная в статье, является ознакомительной. При неосторожном использовании функционала плагина он может повредить ваши данные. Рекомендуем перед использованием инструмента убедиться, что у вас есть свежая резервная копия системы, и проконсультироваться с технической поддержкой.

1. Общая информация

В общем смысле целостность данных – это состояние, при котором данные, содержащиеся в системе, остаются в правильном и ожидаемом состоянии, сохраняют логические связи между собой и являются непротиворечивыми и согласованными.
Целостность данных в контексте Moodle означает, что записи в таблицах базы данных системы соответствуют реальному состоянию объектов в системе. При этом нарушение целостности будет заключаться в том, что в таблице базы данных запись о хранящемся в системе файле есть, а сам файл физически уже отсутствует на сервере, либо связь между объектами системы некорректная.
Инструмент «Целостность данных 3KL» предназначен для анализа целостности данных в СЭО 3KL. Компоненты плагина позволяют:

  • обнаружить поврежденные файлы на сервере, которые нарушают целостность СЭО 3KL;
  • проверить нарушения целостности в базе данных с записями о модулях курса, которые могли появиться при удалении экземпляра модуля из СЭО 3KL;
  • выявить несогласованность в таблицах базы данных с оценками и восстановить целостность;
  • найти расхождения, когда запись о файле есть в базе данных, но файл физически отсутствует на сервере;
  • выявить несогласованность между записями о модулях курса и секциями и восстановить целостность.

-Вернуться к содержанию-

2. Возможности

2.1. Ситуации, в которых полезно применение плагина

Инструмент «Целостность данных 3KL» может быть полезен либо в случае, когда по какой-либо причине существуют сомнения в целостности данных компонентов системы, либо в случае, если в системе возникают ошибки, связанные с целостностью данных, и их необходимо устранить.

Таким образом можно выделить два типа ситуаций, когда полезен плагин:

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

2. Если система демонстрирует одну или несколько из следующих ошибок:

  • Не удалось прочитать файл «Название файла». Файл либо не существует, либо есть проблема с разрешениями на доступ к нему.
  • Ошибка синтаксиса.
    Пример ошибки:
    SyntaxError
    Unexpected token 'Н', "Нет экземп"... is not valid JSON
    Файл:
    Строка:
    Трассировки стека:
    SyntaxError: Unexpected token 'Н', "Нет экземп"... is not valid JSON
    at parse ()
    at https://example.com/lib/javascript.php/1757950054/lib/jquery/jquery-3.6.1.min.js:2:79614
    at l (https://example.com/lib/javascript.php/1757950054/lib/jquery/jquery-3.6.1.min.js:2:79731)
    at XMLHttpRequest. (https://example.com/lib/javascript.php/1757950054/lib/jquery/jquery-3.6.1.min.js:2:82499)
  • Недопустимый ID модуля курса.
    Пример ошибки:
    invalidcoursemoduleid
    Недопустимый ID модуля курса: 218712
    Файл: /lib/modinfolib.php
    Строка: 242
    Трассировки стека:
    Error code: invalidcoursemoduleid
    * line 242 of /lib/modinfolib.php: moodle_exception thrown
    * line 2264 of /lib/modinfolib.php: call to course_modinfo->get_cm()
    * line 1049 of /lib/completionlib.php: call to cm_info::create()
    * line 636 of /lib/completionlib.php: call to completion_info->get_data()
    * line 1553 of /lib/completionlib.php: call to completion_info->update_state()
    * line 1201 of /lib/grade/grade_grade.php: call to completion_info->inform_grade_changed()
    * line 369 of /lib/grade/grade_object.php: call to grade_grade->notify_changed()
    * line 662 of /lib/grade/grade_category.php: call to grade_object->insert()
    * line 576 of /lib/grade/grade_category.php: call to grade_category->aggregate_grades()
    * line 812 of /lib/grade/grade_item.php: call to grade_category->generate_grades()
    * line 1278 of /lib/gradelib.php: call to grade_item->regrade_final_grades()
    * line 2115 of /lib/grade/grade_item.php: call to grade_regrade_final_grades()
    * line 291 of /lib/gradelib.php: call to grade_item->update_raw_grade()
    * line 836 of /mod/quiz/lib.php: call to grade_update()
    * line 728 of /mod/quiz/lib.php: call to quiz_grade_item_update()
    * line 1403 of /lib/gradelib.php: call to quiz_update_grades()
    * line 1373 of /lib/gradelib.php: call to grade_update_mod_grades()
    * line 1127 of /lib/gradelib.php: call to grade_grab_course_grades()
    * line 2157 of /lib/enrollib.php: call to grade_recover_history_grades()
    * line 213 of /enrol/cohort/locallib.php: call to enrol_plugin->enrol_user()
    * line 130 of /enrol/cohort/lib.php: call to enrol_cohort_sync()
    * line 194 of /local/otcontrolpanel/classes/entity/course/actions/enrol_cohorts.php: call to enrol_cohort_plugin->add_instance()
    * line 347 of /local/otcontrolpanel/classes/actionform.php: call to local_otcontrolpanel\entity\course\actions\enrol_cohorts->execute()
    * line 85 of /local/otcontrolpanel/classes/entity/course/actions/enrol_cohorts.php: call to local_otcontrolpanel\actionform->execute_action()
    * line 297 of /local/otcontrolpanel/classes/actionform.php: call to local_otcontrolpanel\entity\course\actions\enrol_cohorts->process_form_data()
    * line 60 of /local/otcontrolpanel/lib.php: call to local_otcontrolpanel\actionform->process_form_data()
    * line 8064 of /lib/moodlelib.php: call to local_otcontrolpanel_output_fragment_actionform()
    * line 423 of /lib/external/externallib.php: call to component_callback()
    * line 262 of /lib/externallib.php: call to core_external::get_fragment()
    * line 81 of /lib/ajax/service.php: call to external_api::call_external_function()
  • Не удается найти данную запись в таблице course базы данных.
    Пример ошибки:
    Информация об отладке: SELECT id,category FROM {course} WHERE id = ?
    [array (
    0 => '231',
    )]

    Error code: invalidrecord
    Трассировки стека:
    • line 1654 of /lib/dml/moodle_database.php: dml_missing_record_exception thrown
    • line 1630 of /lib/dml/moodle_database.php: call to moodle_database->get_record_select()
    • line 7142 of /lib/accesslib.php: call to moodle_database->get_record()
    • line 70 of /lib/classes/event/grade_deleted.php: call to context_course::instance()
    • line 1126 of /lib/grade/grade_grade.php: call to core\event\grade_deleted::create_from_grade()
    • line 1541 of /lib/gradelib.php: call to grade_grade->delete()
    • line 4150 of /lib/moodlelib.php: call to grade_user_delete()
    • line 110 of /admin/user.php: call to delete_user()

     

-Вернуться к содержанию-

2.2. Проверка и восстановление целостности оценок и связи между модулями курса и секциями

Администратору СЭО 3KL нужно проверить, есть ли несоответствия в таблицах базы данных с оценками и расхождения связи между секциями и модулями курса. Для этого администратор переходит на страницу «Проверка целостности данных СЭО 3KL», расположенную по следующему пути: Администрирование -> Плагины -> Инструменты администрирования -> Целостность данных 3KL -> Проверка целостности данных СЭО 3KL (Рис. 2.1.1). На этой странице администратор запускает процесс проверки показателей, последовательно нажав на кнопки «Обновить данные» в строках с показателями «Целостность оценок» и «Целостность связи между модулями курса и секциями» (поз. 1, 2 Рис. 2.2.1).

Рис. 2.2.1. Страница «Проверка целостности данных СЭО 3KL».

После того, как процесс обновления показателей будет завершен, на странице «Проверка целостности данных СЭО 3KL» отобразятся обновленные статусы показателей и полученные результаты проверки (Рис. 2.2.2). В примере на Рис. 2.2.2. администратор может увидеть, что при проверке показателя «Целостность оценок» не было выявлено несоответствий, а при проверке показателя «Целостность связи между модулями курса и секциями» было выявлено 1 расхождение. Далее администратор должен устранить это расхождение.

Рис. 2.2.2. Страница «Проверка целостности данных СЭО 3KL» с одним из показателей в статусе «Предупреждение».

Нажав на кнопку «Восстановить целостность» (см. поз. 1 Рис. 2.2.2) для показателя «Целостность связи между модулями курса и секциями», администратор запускает процесс восстановления корректной связи между секциями и элементами курса. После завершения этого процесса расхождения между секциями и модулями курса будут устранены и статус показателя изменится на «ОК» (поз. 1 Рис. 2.2.3).

Рис. 2.2.3. Страница «Проверка целостности данных СЭО 3KL», на которой все показатели находятся в статусе «ОК».

-Вернуться к содержанию-

2.3. Проверка и восстановление целостности модулей курса и утерянных файлов

Администратору СЭО 3KL нужно проверить, наблюдаются ли расхождения в показателях «Целостность модулей курса» и «Утерянные файлы». Т. к. проверка этих показателей выполняется в рамках отдельной задачи Cron, администратору необходимо перейти по пути: Администрирование -> Сервер -> Задачи -> Запланированные задачи. На открывшейся странице следует запустить задачу «Выполнить расчет данных показателей», нажав на кнопку «Запустить сейчас» (поз. 1 Рис. 2.3.1).

Рис. 2.3.1. Запланированная задача «Выполнить расчет данных для показателей».

После этого будут пересчитаны показатели «Целостность модулей курса» и «Утерянные файлы», результаты проверки будут отражены на странице по пути: Администрирование -> Плагины -> Инструменты администрирования -> Целостность данных 3KL -> Проверка целостности данных СЭО 3KL (поз. 1, 2 Рис. 2.3.2). В рассмотренном примере проверка не обнаружила несоответствий в проверенных показателях.

Рис. 2.3.2. Страница «Проверка целостности данных СЭО 3KL» с проверенными показателями «Целостность модулей курса» и «Утерянные файлы».
Если в ходе проверки показателей «Целостность модулей курса» и «Утерянные файлы» будут обнаружены нарушения целостности, которые не получится устранить вручную, вы можете обратиться в нашу техническую поддержку. Сотрудники техподдержки удалят из таблиц базы данных записи об отсутствующих модулях курса и файлах и целостность данных будет восстановлена.

-Вернуться к содержанию-

2.4. Обнаружение и устранение поврежденных файлов

Администратору СЭО 3KL нужно проверить, присутствуют ли в СЭО 3KL поврежденные файлы. Для этого администратор переходит на страницу «Проверка целостности данных СЭО 3KL», расположенную по следующему пути: Администрирование -> Плагины -> Инструменты администрирования -> Целостность данных 3KL -> Проверка целостности данных СЭО 3KL (Рис. 2.4.1). На этой странице администратор запускает процесс проверки показателя «Обнаружение поврежденных файлов», нажав на кнопку «Обновить данные» в строке с показателем «Обнаружение поврежденных файлов» (поз. 1 Рис. 2.4.1).

Рис. 2.4.1. Страница «Проверка целостности данных СЭО 3KL».

При этом автоматически будет запланирована разовая задача, которая выполнится при следующем запуске Cron. Для того, чтобы выполнить эту задачу сразу, администратор нажимает на текстовую ссылку «разовая задача» (поз. 1 Рис. 2.4.2). 

Рис. 2.4.2. Страница «Проверка целостности данных СЭО 3KL» с поставленной в очередь задачей обнаружения поврежденных файлов.

На открывшейся странице администратор нажимает на текстовую ссылку «Запустить сейчас» (поз. 1 Рис. 2.4.3) и запускает тем самым выполнение задачи.

Рис. 2.4.3. Запуск задачи по пересчету показателя «Обнаружение поврежденных файлов».

Далее администратор может вернуться на страницу «Проверка целостности данных СЭО 3KL» и увидеть результаты проверки показателя «Обнаружение поврежденных файлов». В примере на Рис. 2.4.4. нарушений целостности в показателе не было обнаружено (поз. 1 Рис. 2.4.4).

Рис. 2.4.4. Результат проверки показателя «Обнаружение поврежденных файлов».
Если в ходе проверки показателя «Обнаружение поврежденных файлов» будут обнаружены нарушения целостности, которые не получится устранить вручную, вы можете обратиться в нашу техническую поддержку. Сотрудники техподдержки удалят с сервера поврежденные файлы и целостность данных будет восстановлена.

-Вернуться к содержанию-

3. Страница «Проверка целостности данных СЭО 3KL»

Страница «Проверка целостности данных СЭО 3KL» (Рис. 3.1) содержит таблицу с описанием показателей проверки целостности данных и с подробностями о дате и результатах проверки.

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

Рис. 3.1. Страница «Проверка целостности данных СЭО 3KL» с активированными показателями.

Кнопка «Описание статусов показателей» (см. поз. 1 Рис. 3.1) раскрывает спойлер с описанием статусов, которые используются в таблице. Доступны следующие статусы: Табл. 3.1.

Табл. 3.1. Доступные статусы показателей

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

В столбцах таблицы с показателями (Рис. 3.1) доступны опции, которые отличаются для каждого показателя. Далее приведено описание всех текстовых ссылок, с которыми вы можете столкнуться в таблице (для текстовых ссылок с одинаковым названием для разных показателей функционал не отличается):

  • Разовая задача (см. поз. 2 Рис. 3.1). Текстовая ссылка перенаправляет на страницу, с которой можно запустить разовую задачу по обновлению показателя «Обнаружение поврежденных файлов» (см. поз. 1 Рис. 3.2). Если задачу не запустить вручную, она будет выполнена при очередном запуске Cron.
  • Подробнее (см. поз. 3 Рис. 3.1). Текстовая ссылка перенаправляет на страницу «‎Подробная информация по показателю» (Рис. 3.3), на которой можно посмотреть краткую сводку о результатах последней проверки, а также список найденных расхождений. На странице можно восстановить целостность в показателе (поз. 1 Рис. 3.2) или вернуться обратно к сводке по всем показателям (поз. 2 Рис. 3.3).
  • К задаче (см. поз. 4 Рис. 3.1.). Текстовая ссылка перенаправляет на страницу изменения расписания задачи «Выполнить расчет данных для показателей» (Рис. 3.4). На странице можно определить периодичность выполнения задачи по расчету показателей (поз. 1 Рис. 3.4). Для этого нужно ввести значения даты и времени в соответствующие поля. По умолчанию задача выполняется раз в день. Если отметить опцию «Отключено» (поз. 2 Рис. 3.4), задача будет отключена и перестанет выполняться. Если отметить опцию «Установить расписание по умолчанию» (поз. 3 Рис. 3.4) все значения из полей указания даты и времени будут сброшены до значений по умолчанию. Обновление показателей в рамках описанной задачи доступно только для показателей «Целостность модулей курса» и «Утерянные файлы», обновление двух других показателей необходимо запускать вручную.
  • Обновить данные (см. поз. 5 Рис. 3.1). Нажатие на текстовую ссылку запускает процесс пересчета показателя.
  • Восстановить целостность (см. поз. 6 Рис. 3.1). Нажатие на текстовую ссылку запустить скрипт, восстанавливающий несоответствия в показателе.

Если в ходе проверки показателя «Утерянные файлы» были обнаружены нарушения целостности, то в столбце с результатом проверки появится текстовая ссылка «Файл с результатами». При нажатии на текстовую ссылку на компьютер пользователя будет скачан файл формата csv с подробностями об отсутствующих на сервере файлах. Отсутствующие файлы идентифицируются по следующим значениям: хеш файла, компонент, файловая зона, полный путь к файлу, название файла, идентификатор пользователя, название курса, идентификатор контекста. 

Обратите внимание, для несоответствий в показателях целостности оценок и целостности связи между модулями курса и секциями доступна опция восстановления целостности данных с помощью функционала СЭО 3KL (кнопка «Восстановить целостность», которая описана выше). Тогда как несоответствия в показателях целостности модулей курса и целостности файлов возможно устранить только вручную. 
Если в ходе проверки «Целостность модулей курса», «Обнаружение поврежденных файлов» и «Утерянные файлы» будут обнаружены нарушения целостности, которые не получится устранить вручную, вы можете обратиться в нашу техническую поддержку. Сотрудники техподдержки удалят из таблиц базы данных записи об отсутствующих модулях курса и файлах, или удалят с сервера поврежденные файлы, и целостность данных будет восстановлена. 

Рис. 3.2. Страница, на которой можно запустить разовую задачу по обновлению показателя «Обнаружение поврежденных файлов».

Рис. 3.3. Страница «Подробная информация по показателю «Целостность связи между модулями курса и секциями».

Рис. 3.4. Страница изменения расписания для задачи «Выполнить расчет данных для показателей».

-Вернуться к содержанию-

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

Включить или отключить вычисление каждого из показателей целостности можно на странице, расположенной по пути: Администрирование -> Плагины -> Инструменты администрирования  -> Целостность данных 3KL  -> Настройки показателей (Рис. 3.1). Для того, чтобы включить вычисление, достаточно отметить нужный показатель галочкой, и он будет пересчитываться с периодичностью, определенной по умолчанию: для показателей «Целостность оценок» и «Целостность связи между модулями курса и секциями» пересчет можно выполнить только вручную, для показателей пересчет будет выполняться в рамках задачи Cron, периодичность которую можно переопределить (подробнее о настройках данной задачи читайте в пункте 3. «Страница «Проверка целостности данных СЭО 3KL»). 

Рис. 4.1. Страница «Настройки показателей» со всеми показателями в активированном состоянии.

-Вернуться к содержанию-

Теги: данные, отчет, система
Рейтинг ответа: 0 (0 оценок)

Комментарии запрещены