Очистить удаляет всю историю текущего пользователя. Защита требует отдельной базы, одного именованного учебного пользователя, монопольного режима и подтверждения.
Где и как запускать
Полный серверный общий модуль УчебнаяИстория отдельной собственной учебной конфигурации.
Подготовка
Работайте только в отдельной собственной конфигурации УчебнаяКонфигурацияСинтаксиса, не в УТ, КА, УНФ или БП. Создайте справочник УчебныеТовары с кодом типа Строка длиной 32, вручную сохраните товар Книга с кодом guide-book.
Создайте серверный общий модуль УчебнаяИстория с флагом Сервер. Вставьте полный код выбранного урока. Из серверного обработчика команды своей обработки вызовите УчебнаяИстория.ВыполнитьПример().
Для истории требуется право СохранениеДанныхПользователя. Права задайте вручную только в своей учебной базе; код не включает привилегированный режим и не меняет роли.
Уроки удаления необратимо удаляют историю. Для них заранее создайте в этой отдельной базе единственного пользователя УчебныйПользовательСинтаксиса, войдите под ним монопольно, не открывайте другие сеансы. Для первого запуска оставьте подтверждение пустым.
Код не удаляет товары и не проводит документы. Добавление и очистка истории — настоящая запись пользовательских данных, а не изменение локального массива. Эти BSL-образцы в 1С автоматически не выполнялись.
Процедура ВыполнитьПример(Подтверждение = "") Экспорт
Пользователи = ПользователиИнформационнойБазы.ПолучитьПользователей();
Текущий = ПользователиИнформационнойБазы.ТекущийПользователь();
Если Пользователи.Количество() <> 1 ИЛИ Текущий = Неопределено Тогда
ВызватьИсключение "Для удаления истории нужна отдельная база с одним учебным пользователем";
КонецЕсли;
Если Текущий.Имя <> "УчебныйПользовательСинтаксиса" Тогда
ВызватьИсключение "Войдите только под собственным учебным пользователем";
КонецЕсли;
Если НЕ МонопольныйРежим() Тогда
ВызватьИсключение "Сначала вручную откройте свою учебную базу монопольно";
КонецЕсли;
Если Подтверждение <> "УДАЛЯЮ МОЮ УЧЕБНУЮ ИСТОРИЮ" Тогда
Сообщить("Подтверждение отсутствует; история не удалена");
Возврат;
КонецЕсли;
ДоУдаления = ИсторияРаботыПользователя.Получить();
Сообщить("Необратимо удаляется записей: " + Строка(ДоУдаления.Количество()));
ИсторияРаботыПользователя.Очистить();
ПослеУдаления = ИсторияРаботыПользователя.Получить();
Сообщить(ПослеУдаления.Количество() = 0);
Сообщить("Удалена история текущего учебного пользователя; товары не удалялись");
КонецПроцедурыРазбор по шагам
Первый запуск без аргумента должен остановиться на подтверждении и не удалить историю.
Для положительного опыта в своей отдельной базе выполнить предыдущий урок добавления. Затем вызвать ВыполнитьПример("УДАЛЯЮ МОЮ УЧЕБНУЮ ИСТОРИЮ").
Проверить единственность пользователя, его имя и уже установленный монопольный режим. Код сам никого не отключает и не устанавливает монополию.
После удаления сразу перечитать историю, до открытия следующего объекта. Нельзя восстановить прежние даты простой вставкой ссылок.
Как проверить результат
Без точной фразы выводится сообщение об отсутствии подтверждения; Очистить не вызывается.
При выполнении всех предпосылок сразу после удаления проверка количества 0 ожидается Истина. Открытие объектов позже может снова заполнить историю.
Ожидаемый результат
Необратимая операция показана только в отдельной собственной одно-пользовательской учебной базе.
На что обратить внимание
Удаляется вся история текущего пользователя, не только Книга из предыдущего урока.
Массив ДоУдаления остаётся снимком в памяти, но не является резервной копией с возможностью восстановления дат.
Защита по имени конфигурации не является универсальной защитой рабочей базы: никогда не переименовывайте рабочую конфигурацию ради запуска.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.