Удалить историю единственного учебного пользователя с явным подтверждением

Учебные задачи

Очистить удаляет всю историю текущего пользователя. Защита требует отдельной базы, одного именованного учебного пользователя, монопольного режима и подтверждения.

Где и как запускать

Полный серверный общий модуль УчебнаяИстория отдельной собственной учебной конфигурации.

Подготовка

  1. Работайте только в отдельной собственной конфигурации УчебнаяКонфигурацияСинтаксиса, не в УТ, КА, УНФ или БП. Создайте справочник УчебныеТовары с кодом типа Строка длиной 32, вручную сохраните товар Книга с кодом guide-book.

  2. Создайте серверный общий модуль УчебнаяИстория с флагом Сервер. Вставьте полный код выбранного урока. Из серверного обработчика команды своей обработки вызовите УчебнаяИстория.ВыполнитьПример().

  3. Для истории требуется право СохранениеДанныхПользователя. Права задайте вручную только в своей учебной базе; код не включает привилегированный режим и не меняет роли.

  4. Уроки удаления необратимо удаляют историю. Для них заранее создайте в этой отдельной базе единственного пользователя УчебныйПользовательСинтаксиса, войдите под ним монопольно, не открывайте другие сеансы. Для первого запуска оставьте подтверждение пустым.

  5. Код не удаляет товары и не проводит документы. Добавление и очистка истории — настоящая запись пользовательских данных, а не изменение локального массива. Эти BSL-образцы в 1С автоматически не выполнялись.

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

Разбор по шагам

  1. Первый запуск без аргумента должен остановиться на подтверждении и не удалить историю.

  2. Для положительного опыта в своей отдельной базе выполнить предыдущий урок добавления. Затем вызвать ВыполнитьПример("УДАЛЯЮ МОЮ УЧЕБНУЮ ИСТОРИЮ").

  3. Проверить единственность пользователя, его имя и уже установленный монопольный режим. Код сам никого не отключает и не устанавливает монополию.

  4. После удаления сразу перечитать историю, до открытия следующего объекта. Нельзя восстановить прежние даты простой вставкой ссылок.

Как проверить результат

  1. Без точной фразы выводится сообщение об отсутствии подтверждения; Очистить не вызывается.

  2. При выполнении всех предпосылок сразу после удаления проверка количества 0 ожидается Истина. Открытие объектов позже может снова заполнить историю.

Ожидаемый результат

Необратимая операция показана только в отдельной собственной одно-пользовательской учебной базе.

На что обратить внимание

  1. Удаляется вся история текущего пользователя, не только Книга из предыдущего урока.

  2. Массив ДоУдаления остаётся снимком в памяти, но не является резервной копией с возможностью восстановления дат.

  3. Защита по имени конфигурации не является универсальной защитой рабочей базы: никогда не переименовывайте рабочую конфигурацию ради запуска.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.