Как удалить группы действий в таблице записей у пользователей


Содержание материала:

DELETE. Удаление записей в таблице базы данных MySQL

Команда DELETE

Если вам необходимо удалить одну, несколько или все записи в таблице базы данных, то с этим вам поможет команда DELETE .

Синтаксис запроса на удаление записи.

Будьте предельно внимательны при выполнении запросов на удаление записей! Если вы не укажите команду WHERE и последующее условие, то будут удалены все записи в таблице.

Удаление нескольких записей таблицы

Для примера удалим несколько записей из таблицы books, которая хранится в базе данных Bookstore.

Оповестим сервер MySQL о базе данных, для которой будут выполнятся запросы.

Далее выведем записи таблицы books с идентификаторами с 1 по 5.

mysql> SELECT >FROM books WHERE >BETWEEN 1 AND 5;
+—-+————————+——————————+———+———-+
| id | title | author | price | discount |
+—-+————————+——————————+———+———-+
| 1 | Капитанская дочка | А.С.Пушкин | 151.20 | 0 |
| 2 | Мертвые души | Н.В.Гоголь | 141.00 | 0 |
| 3 | Анна Каренина | Л.Н.Толстой | 135.00 | 20 |
| 4 | Бесы | Ф.М.Достоевский | 122.00 | 0 |
| 5 | Нос | Н.В.Гоголь | 105.00 | 0 |
+—-+————————+——————————+———+———-+
5 rows in set (0.00 sec)

Допустим необходимо удалить все записи с книгами за авторством Н.В.Гоголя. Запрос на удаление и его результат будет выглядеть следующим образом.

mysql> DELETE FROM books WHERE author= ‘Н.В.Гоголь’ ;
Query OK, 2 rows affected (0.00 sec)

Удаление всех записей таблицы

Если вам нужно очистить всю таблицу от имеющихся в ней данных, то просто выполните команду DELETE без каких либо условий.

Следующая команда удалит все записи в таблице books.

Как удалить группы действий в таблице записей у пользователей?

Сегодня поговорим на тему «Запрос на удаление Access». Запрос на удаление Access может быть использован для удаления данных в полях базовых таблиц. Запрос на удаление (Delete Query) позволяет удалить записи из одной таблицы или из нескольких взаимосвязанных таблиц, для связи с которыми установлен параметр обеспечения целостности данных каскадное удаление связанных записей (Cascade Delete Related Records). В схему данных запроса включается таблица, из которой должны удаляться записи, и связанные с ней таблицы, для полей которых требуется задать условия отбора удаляемых записей.

Задача. Пусть необходимо из справочника удалить запись о покупателе с кодом П003. В схеме данных базы Поставка товаров для всех связей установлен параметр обеспечения целостности каскадное удаление связанных записей (Cascade Delete Related Records), поэтому удаление записи из таблицы ПОКУПАТЕЛЬ повлечет за собой удаление из базы всех подчиненных ему записей на всех уровнях иерархии. Автоматически будут удалены все договоры этого покупателя, а также все накладные, выписанные по этим договорам, т. е. будут удалены связанные записи из таблиц ДОГОВОР, ПОСТАВКА_ПЛАН, НАКЛАДНАЯ и ОТГРУЗКА.

  1. Создайте запрос на выборку. Добавьте в схему данных запроса таблицу ПОКУПАТЕЛЬ, из которой удаляются записи.
  2. Преобразуйте запрос на выборку в запрос на удаление, выбрав на вкладке ленты Конструктор (Design) тип запроса Удаление (Delete) или выполнив команду контекстного меню запроса Тип запроса | Удаление (Query Type | Delete).
  3. После преобразования запроса в запрос на удаление Access в его бланке появляется строка Удаление (Delete) (рис. 4.49).
  4. Далее приступайте к формированию бланка запроса. Переместите символ звездочки (*) из списка полей таблицы ПОКУПАТЕЛЬ в бланк запроса. В строке Удаление (Delete) в столбце этого поля появляется значение Из (From).
  5. Для того чтобы задать условия отбора удаляемых записей, переместите с помощью мыши в бланк запроса поле КОД_ПОК из таблицы ПОКУПАТЕЛЬ. В строке Удаление (Delete) под именем этого поля появится значение Условие (Where). Запишите в строку Условие отбора (Criteria) для этого поля значение П003.
  6. Следует иметь в виду, что удаленные записи нельзя восстановить. Поэтому перед удалением записей выполните предварительный просмотр удаляемых записей, нажав кнопку Режим (View) на вкладке ленты.
  7. Для удаления записей на вкладке ленты нажмите кнопку Выполнить (Run). При выполнении запроса будет сообщено об удалении одной записи. Откройте таблицу ПОКУПАТЕЛЬ и подчиненные ей таблицы на всех уровнях и убедитесь, что в них также удалены записи, связанные с этим покупателем.
    Результаты работы запроса на удаление зависят от отношений между таблицами и установленных в схеме базы данных параметров обеспечения целостности для их связей.

Если параметры обеспечения целостности для связей таблицы не установлены вообще, то записи удаляются только в указанной в бланке запроса таблице и вне зависимости от ее логических связей.
Если в запросе объединяются две или более таблиц, находящихся в отношении 1 : М, то удалить можно только записи одной из таблиц на стороне «многие».
Если между таблицами, находящимися в отношении 1 : М, установлена связь с поддержанием целостности, но не задан параметр каскадное удаление связанных записей (Cascade Delete Related Records), сначала необходимо удалить записи подчиненной таблицы и только после этого можно выполнить удаление записей в главной таблице. То есть удаление записи главной таблицы возможно только, если в подчиненной таблице нет связанных записей. Если параметр каскадное удаление связанных записей (Cascade Delete Related Records) задан, то для удаления записей главной таблицы и связанных с ними подчиненных записей достаточно указать в запросе удаление записей главной таблицы.
Откройте запрос на удаление Access, представленный на рис. 4.49, в режиме конструктора и перейдите в режим SQL. Эквивалентная этому запросу инструкция DELETE будет записана следующим образом:
DELETE ПОКУПАТЕЛЬ.*, ПОКУПАТЕЛЬ.КОД_ПОК
FROM ПОКУПАТЕЛЬ
WHERE (((ПОКУПАТЕЛЬ.КОД_ПОК)=»П003″));
Инструкция DELETE удаляет из таблицы записи, удовлетворяющие условию отбора, заданному в предложении WHERE. Если в предложении FROM объединяется две или более таблиц, то удалить можно только записи одной из таблиц. Для того чтобы указать, из какой именно таблицы должны быть удалены записи, в список полей включается конструкция имя_таблицы.* (например, ПОСТАВКА_ПЛАН.*). Для однотабличного запроса эта конструкция может быть опущена.
Для закрепления темы «Запрос на удаление Access» смотрим видеоурок:

Управление учетными записями пользователей

Для управления группами и учетными записями пользователей в дереве пользователей на каждой группе есть соответствующие кнопки:

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

Создание учетной записи пользователя

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

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

Параметры для создания учетной записи пользователя
Пользователь Укажите имя пользователя, для которого создается учетная запись, например, Иванов Иван.
Логин Укажите логин, который будет применяться пользователем для прохождения процедуры авторизации в различных службах Ideco UTM. Логин необходимо вводить латинскими символами с соблюдением регистра, например: i.ivanov
Пароль Укажите пароль. Пароль необходимо вводить латинскими символами с соблюдением регистра. Можно автоматически сгенерировать пароль.
Повторите пароль Повторно укажите пароль для проверки. При автоматической генерации пароля он будет повторен без необходимости дополнительных действий.

Форма создания учетной записи пользователя показана ниже.

Логин и пароль используются для авторизации и для подключения к web-интерфейсу Ideco UTM, если пользователь является администратором. Для учетных записей, импортированных из MS Active Directory (AD), проверка пароля осуществляется средствами AD.

Посмотреть или восстановить пароль учетной записи пользователя нельзя, допускается только его изменение. Также рекомендуется напоминать пользователям о том, чтобы они обязательно сразу сменили пароль через web-интерфейс.

Теперь, когда вы определили все параметры, нажмите кнопку «Добавить». Произойдет добавление учетной записи, у которой автоматически будут установлены значения следующих параметров:

  1. IP-адрес – автоматически устанавливается из пула, выбирается первый свободный IP-адрес.
  2. Остальные параметры, наследуемые от группы.

Возможно массовое создание пользователей для их авторизации по IP. Подробнее об этом можно прочитать в статье посвященной этому типу авторизации.

Создание группы

Выберите ту группу, в которой вы предполагаете создать новую (вы можете создать как группу в корне дерева, так и дочернюю). Вы увидите в заголовке группы несколько элементов управления, среди которых необходимо нажать на кнопку добавления группы. Появится окно, в котором вам нужно будет указать название новой группы. Окно добавления группы показано на следующем фрагменте экрана.

Массовое создание пользователей с авторизацией по IP

При необходимости возможно массовое создание пользователей для их авторизации по IP. Например для сети Wi-Fi.

Либо можно воспользоваться поиском устройств для их автоматического создания при попытке выхода в сеть Интернет.

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

Для удаления учетной записи пользователя необходимо выбрать ее в дереве пользователей и нажать на кнопку удаления. Появится окно с требованием подтверждения удаления, нажмите кнопку «ОК».

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

Восстановление учетной записи пользователя или группы

Чтобы восстановить учетную запись пользователя из корзины, выберите вкладку «Корзина» в корневой папке «Все». В ней выделите нужную для восстановления учетную запись и нажмите соответствующую кнопку «Восстановить», расположенную справа от имени учетной записи.

Перемещение учетной записи пользователя или группы

Чтобы переместить учетную запись пользователя в другую группу, выделите этого пользователя в веб-интерфейсе, на вкладке «Общие» найдите поле «В группе» и из выпадающего списка выбирите группу куда надо переместить пользователя.

Как удалить группы действий в таблице записей у пользователей?

Обычная win7, без домена, без наворотов. Есть 2 учетки: администора и обычная. Пользователь обычной учетки накинул себе через лайв сд какой то администорские права. И сейчас я не могу его удалить из группы администраторов, т.к. система считает что его там нет, но и добавить не могу т.к. она считает что он там есть и права у него, кстати, тоже полные. Как это лечится без сноса пользователя?

В качестве примера приведу лог:


C:\Users\Администратор>net localgroup Администраторы
Имя псевдонима Администраторы
Комментарий Администраторы имеют полные, ничем не ограниченные права дост
упа к компьютеру или домену


C:\Users\Администратор>net localgroup Администраторы вагизяр /delete
Системная ошибка 1377.

Указанная учетная запись не входит в эту группу.

C:\Users\Администратор>net localgroup Администраторы вагизяр /add
Системная ошибка 1378.

Указанная учетная запись уже входит в эту группу.

Как удалить пользователей WordPress: массовое удаление пользователей

Вступление

Удалить пользователей WordPress можно двумя способами:

  • без плагинов из административной панели и/или из базы данных;
  • с помощью специальных плагинов.

Но для начала поймем, откуда берутся спам пользователи и кому нужно регистрироваться на сайте?

Кто такие спам пользователи

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

Меня всегда было любопытно, откуда появляются спам пользователи и зачем это нужно. Я не говорю о спаме в комментариях, вопрос, зачем нужна спам регистрация. Ответ может быть прост. Сайт попадает в базу, по которой проходит автоматическая регистрация пользователей и дальнейшее рассылка спам комментариев. И здесь неважно, открыто комментирование или нет, боты этого не видят.

Кстати, на «слепоте» ботов рассчитан и метод защиты от user spam (спам регистрации), который я описал тут. Эта статья о другом. Напомню, в этой статье мы массово удаляем пользователей сайта WordPress.

Приведу пример, который и возьмем для демонстрации. На одном из сайтов у меня за некоторое время набралось более 1000 пользователей. Очевидно, что большинство из них фейки, и совершенно не нужны, но «бросить их жалко». Вдобавок, когда я экспортировал пользователей в лист MailChimp, робот почтовика определил, что около 40% импортируемых адресов не отвечают.

План статьи

  • Как удалить пользователей из административной панели сайта;
  • Как удалить пользователей из базы данных;
  • Плагины для удаления пользователей и групп пользователей.

Как удалить пользователей WordPress из административной панели сайта

В административной панели все пользователи, которые зарегистрировались на сайте «лежат» на вкладке «Пользователи». Список пользователей разбивается, по умолчанию, на листы по 20 строк (Количество пользователей на странице можно увеличить: вверху ползунок «Настройка»).

Для пользователей предусмотрен показ следующих данных:

  • Email (столбец перестраивается);
  • Имя пользователя (столбец перестраивается);
  • Роль;
  • Количество публикаций.

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

Массовое удаление пользователей из административной панели сайта проводим по следующему алгоритму:

  • Перестраиваем список пользователей по нужному параметру или фильтруем список пользователей по почтовой службе;
  • Выделяем галочкой приговоренных к удалению пользователей. Можно выделить всех пользователей на этой странице;
  • Кнопка «Удалить» удалит выбранных пользователей.

Вкладка пользователи Фильтр пользователей Массовые действия с пользователями в административной панели WordPress

В мусорной корзине пользователи будут «лежать» по умолчанию 30 дней, если вы не перестраивали время очистки корзины, о чем можно почитать в статье: http://www.wordpress-abc.ru/administrirovanie/musornaya-korzina-wordpress.html.

Это метод прост и не требует ни плагинов, ни лишних «авторских» колов. Если нужно удалить пользователей без публикаций, фильтруете по количеству постов и удаляете у кого 0 публикаций. Если нужно удалить пользователей с почтовым ящиком в Яндекс (например), в фильтр вставляете @yandex.ru и удаляете выбранных. Кстати, самое большое количество спама от пользователей с ящиком у @yahoo.org.

Но этот способ удалить пользователей WordPress не удобен и может не сработать, если нужно удалить тысячи пользователей. Для более массовых удалений пользователей смотрим прямое удаление user из базы данных.

Как удалить пользователей WordPress из базы данных

  • Идем в phpMyAdmin базы данных сайта;
  • В базе данных сайта ищем и открываем таблицу [wp-user];
  • Перестраиваем таблицу по нужному ключу, например по дате регистрации;
  • Выделяем, что нужно удалить и удаляем.

Примечание: Чтобы перестроить таблицу по нужному ключу, достаточно нажать на заголовок нужного столбца.

Сортировка пользователей в базе данных

Важно! Не удалить администратора (себя). В этом случае будут проблемы с доступом и придется добавлять себя phpMyAdmin.

SQL запросы

Конечно, более профессиональным будет работа с таблицей [wp-user] по SQL запросам. Для безопасности не забываем сделать резервную копию Базы Данных.

Например, можно сделать такой SQL запрос на удаление (wp префикс, менять на свой). Это приведет к удалению всех пользователей, кроме администратора с > SQL запрос на удаление

Или выберем пользователей по дате регистрации (формат даты и префикс должны быть ваши).


Или сразу удалить по дате регисстрации

Плагины для удаления пользователей

Назову два плагина WordPress, у которых есть удаление пользователей по их роли:

  • BulkDelete (удобная метелка для всего сайта, а не только пользователей);
  • WangGuard (комплексная защита от спама, удаляет до 5000 спам регистраций в день бесплатно).

Выводы

Для сайта, взятого для примера, я поступил следующим образом:

  • Удалил всех пользователей, зарегистрированных не в текущем (2020) году;
  • Оставшимся, отправил письма с просьбой отписаться от рассылки, если она не нужна. Сделал это через MailChimp. Заодно проверил адреса;
  • Для дальнейшей работы установил плагин «Антиспам защита от CleanTalk (без CAPTCHA)».

Работа с предпочтениями групповой политики: взаимодействие с локальными учетными записями

Определения локальных учетных записей

В любом случае, неотъемлемой частью компании всегда являются сотрудники, которых в ИТ-инфраструктуре принято называть пользователями, и на компьютере каждого пользователя еще до того, как он впервые выполнит вход под доменной учетной записью, являющейся членом каких-то доменных групп, пользователь обязательно выполнит вход под своей локальной пользовательской учетной записью, относящейся к определенной локальной группе с соответствующими правами. В принципе, таких пользовательских учетных записей две, а именно:

  • Учетная запись «Администратор», которая предоставляет полный доступ на управление клиентским компьютером или же сервером и позволяет при необходимости назначать права пользователей и разрешения на управление доступом. Эта запись, в любом случае, должна использоваться только для задач, выполнение которых требует учетных данных администратора и сам административный маркер доступа. Для этой учетной записи настоятельно рекомендуется использовать надежный пароль.
  • Учетная запись «Гость» используется теми, кто не имеет реальной учетной записи на целевом компьютере. Если учетная запись пользователя отключена, но не удалена, он также может воспользоваться учетной записью «Гость». Учетная запись «Гость» не требует пароля. По умолчанию она отключена, но ее всегда в случае необходимости можно включить. Учетной записи «Гость», как и любой другой учетной записи, можно предоставлять права и разрешения на доступ к объектам. По умолчанию она входит в группу «Гости», используемую по умолчанию, и позволяет пользователю войти локально на целевой компьютер. Дополнительные права, как любые разрешения, могут быть присвоены группе «Гости» членом группы «Администраторы». По умолчанию данная учетная запись отключена, и зачастую рекомендуется оставить ее в этом положении.

С локальными группами же, в свою очередь, все намного разнообразнее и интереснее. Их ни много ни мало 29 штук. Локальные группы, используемые по умолчанию, создаются автоматически при установке клиентской операционной системы, а также любого изолированного или рядового сервера. Принадлежность к локальной группе предоставляет пользователю права и возможности для выполнения различных задач на локальном компьютере. Нет смысла описывать каждую группу, так как о назначении большей части групп вы прекрасно знаете, да и их описание вы с легкостью можете найти, затратив на это считанные секунды.
А вот сейчас, я считаю, самое время переходить к очередному элементу предпочтения, то есть к расширению клиентской стороны «Локальные пользователи и группы».

Использование элемента предпочтения групповой политики «Локальные пользователи и группы»

Создавая элементы предпочтения с этим расширением клиентской стороны, вы можете создавать, переименовывать, удалять учетные записи локальных пользователей, а также изменять и сбрасывать пароли, отключать учетные записи пользователей и выполнять прочие действия. Помимо этого, если смотреть на вторую возможность этого CSE, вы еще можете создавать, переименовывать, удалять, а также изменять членство в локальных группах.
В следующих примерах будут выполнены сценарии, благодаря которым будет создана новая локальная учетная запись, изменен пароль для учетной записи локального администратора, а также в группу «Администраторы» будет добавлено несколько учетных записей пользователей.
Так как для каждого из этих сценариев мы с вами будем использовать один и тот же узел редактора управления групповыми политиками, еще до выполнения пошаговых процедур нужно будет выполнить предварительные действия. Для этого в оснастке «Управление групповой политикой» будет создан новый объект групповой политики, который будет называться, скажем, «Group Policy Preferences — 17», и, несмотря на то, что все элементы предпочтения будут создаваться в узле конфигурации компьютера, исключительно для простоты, этот объект групповой политики связывается со всем доменом. Теперь остается лишь выбрать только что созданный объект GPO и из контекстного меню открыть для него редактор управления групповыми политиками.
Можно переходить к самим сценариям.

Сценарий 1

Для начала будет создаваться новая учетная запись, и для этого в отобразившейся оснастке редактора управления групповыми политиками следует перейти к узлу Конфигурация компьютера\Настройка\Параметры панели управления\Локальные пользователи и группы (Computer Configuration\Preferences\ Control Panel Setting\ Local Users and Groups). Будучи в этом узле, следует в области сведений вызвать контекстное меню, а затем, как видно на следующей иллюстрации, выбрать команду «Создать», а затем «Локальный пользователь» (New > Local User):

Рис. 1. Создание элемента предпочтений групповой политики локального пользователя

В отличие от диалоговых окон свойств рассматриваемой ранее большей части элементов предпочтений, здесь сразу заметно, что данное диалоговое окно заполнено различными настройками практически полностью. Попробуем постепенно в процессе создания двух элементов предпочтений полностью разобраться со всеми этими настройками.
С назначениями действий текущего элемента предпочтения, полагаю, все понятно и без слов, поэтому, так как в первом сценарии будет создаваться учетная запись локального пользователя, выбирается действие «Создать» (Create). Касательно действий следует отметить одну деталь: при выборе действия «Обновить» (Update) идентификатор безопасности SID у обновляемой учетной записи не изменяется, а вот если вы будете заменять учетную запись, в таком случае SID будет присваиваться новый, так как учетная запись сперва будет удалена, а после будет создаваться такая учетка, свойства которой вы будете указывать. На это обязательно следует обращать внимание.
В раскрывающемся списке «Пользователь» (User name) вы можете либо выбрать учетную запись из списка существующих, что удобно при обновлении, замене или удалении существующей учетной записи, либо для создания новой учетной записи можно просто ввести имя нового пользователя, что, собственно, сейчас и будет сделано. Именем такой учетной записи пусть будет, скажем, «MBeasley».
Текстовое поле «Переименовать» (Rename to) позволяет изменять имя учетной записи пользователя, определённого в предыдущем раскрывающемся списке, на то, которое будет указано в текущем текстовом поле. По вполне понятным причинам это поле доступно только для действия «Обновить» (Update), а сейчас оно, как вы вскоре заметите на второй иллюстрации, попросту заблокировано.
Как можно сразу догадаться, текстовое поле «Полное имя» (Full name) предназначено для заполнения ФИО создаваемого пользователя. Чтобы имя нашего пользователя сразу стало понятным, назовем его «Michael Beasley». В текстовом поле «Описание» (Description) вы можете добавить некую дополнительную информации о создаваемом или изменяемом пользователе. Пусть будет написано около этого пользователя, например, «Новая учетная запись».
В следующих двух текстовых полях – «Пароль» и «Подтверждение» (Password и Confirm Password) – вам необходимо указать и, естественно, подтвердить пароль для создаваемой или изменяемой учетной записи. Сразу предупрежу, что изощряться с генерированием пароля в этом случае вам не стоит. Объясню, почему так. Этот пароль вы задаете в объекте групповой политики, а групповые политики хранятся в общедоступной папке SYSVOL. Следовательно, локализовав требуемый объект групповой политики, можно вычислить пароль, что никоим образом положительно не скажется. Между прочим, о том, как можно расшифровать такие пароли, вы можете прочитать в статье Сергея Мариничева «Еще раз про пароли». Поэтому, если вы планируете изменять пароли для каких-либо жизненно важных учетных записей, воздержитесь от использования элементов предпочтений, а реализуйте это каким-либо иным методом. Сейчас же просто будет добавлен стандартный пароль, используемый в тестовых целях, то есть [email protected].
Также в элементе предпочтения сразу установлен флажок на опции «Требовать смену пароля при следующем входе в систему» (User must change password at next logon), и я рекомендую, чтобы этот флажок там и оставался. От пользователя не убудет, если он поменяет для своей учетной записи пароль при первом входе. Конечно, если такой пароль не будет еще более уязвимым.
Практически все следующие опции мы рассмотрим в следующем примере, а сейчас мне хотелось бы остановиться на опции «Срок действия учетной записи не ограничен» (Account never expires). Если необходимо, чтобы создаваемая учетная запись имела срок жизни, требуется снять этот флажок, а затем в соответствующем управляющем компоненте указать дату истечения действия текущей учетной записи, например, здесь укажем 21 января 2014 года. Не будем добавлять никакого нацеливания для этого создаваемого пользователя, а просто перейдём к следующему примеру. Здесь стоит обратить внимание на то, что даже при сохранении элемента предпочтения редактор управления групповыми политиками предупреждает вас о том, что этот пароль можно легко обнаружить, главное, как говорится, было бы желание.
Диалоговое окно со всеми определенными ранее настройками видно на следующей иллюстрации:

Рис. 2. Диалоговое окно создания новой учетной записи локального пользователя

Сценарий 2

В этом примере будет изменяться пароль для учетной записи локального администратора. Как вы поняли, создавать постоянный пароль при помощи элементов предпочтения небезопасно, но сейчас это делается исключительно в целях демонстрации функциональных возможностей предпочтений групповой политики. Сейчас нам следует создать новый элемент предпочтения локального пользователя, где нужно выбрать действие «Обновить» (Update). Из следующего раскрывающегося списка выбираем встроенную учетную запись администратора и переходим к следующим полям. Как вы заметите ниже на третьей иллюстрации, сейчас текстовое поле «Переименовать» (Rename to) уже стало доступным для внесения данных, и мы этим обязательно воспользуемся. Переименуем учетную запись, скажем, в «TrueAdmin» и будем двигаться дальше.
Сейчас мы изменим этому пользователю пароль и для демонстрации работы следующих опций снимем флажок с опции «Требовать смену пароля при следующем входе в систему» (User must change password at next logon). Так как пользователю более не нужно будет изменять свой пароль вручную при входе в систему, для изменения стали доступными опции «Запретить смену пароля пользователем» (User cannot change password), а также «Срок действия пароля не ограничен» (Password never expires). Этими опциями вы уже пользовались, скорее всего, не одну сотню раз при создании доменных учетных записей пользователей, но (на всякий случай) первая опция запрещает пользователю менять свой пароль, и ему придется жить с указанным вами паролем до тех пор, пока вы сами его не измените, а вторая снимает ограничения с регулярного изменения пароля. Для примера установим флажок только на опции «Срок действия пароля не ограничен» (Password never expires).
Если вам необходимо отключить учетную запись какого-то пользователя, например, гостевую запись, – без проблем! Достаточно лишь установить флажок на опции «Отключить учетную запись» (Account is disabled). Тоже не будем создавать какую-то дополнительную фильтрацию, а просто дважды нажмем на «ОК» для сохранения внесенных изменений.

Рис. 3. Изменение встроенной учетной записи администратора

Сценарий 3

Остался третий, заключительный пример, в котором в группу «Администраторы» будет добавлено несколько учетных записей пользователей. Для того чтобы реализовать эту задачу, мы воспользуемся вторым типом элемента предпочтения из текущего узла – «Локальная группа» (Local Group). В отобразившемся диалоговом окне, как в конце этого сценария будет видно на иллюстрации, уже нет такого огромного количества параметров, зато есть некоторые новые управляющие элементы, с которыми мы сейчас буквально за несколько минут разберемся.
Прежде всего, рассмотрим четыре стандартных действия, где в подавляющем большинстве случаев я рекомендую использовать именно действие «Обновить» (Update), естественно, если вам не нужно создавать новую или же удалять какую-либо существующую локальную группу. Действие «Заменить» (Replace) работает по аналогии с элементами предпочтения локальных пользователей, поэтому перед его использованием следует трижды подумать, так ли это вам необходимо.
В раскрывающемся списке «Имя группы» (Group name) вы, как и в предыдущих двух примерах, можете либо выбрать уже существующую группу, либо создать новую. Так как нам нужно в группу локальных админов добавить нескольких пользователей, мы остановимся на существующих группах и выберем группу «Администраторы».
Если вы хотите дать существующей группе новое имя, воспользуйтесь возможностями текстового поля «Переименовать» (Rename to). Всегда удобно, если у вас все красиво оформлено и задокументировано, поэтому вы можете добавить подробное описание для своей группы в соответствующем текстовом поле. Например, в описании можно ввести «Администраторы имеют полные, ничем не ограниченные права доступа на локальном компьютере».
На каждом компьютере в группы локальных администраторов может входить что угодно, ведь вы не можете предугадать все действия ваших пользователей. Специально для этого здесь предусмотрены две замечательные опции: «Удалить всех пользователей-членов для этой группы» (Delete all member users) и «Удалить все группы-члены для этой группы» (Delete all member groups). При помощи первого параметра вы удалите все учетные записи пользователей, которые принадлежат к этой группе, а второй параметр, соответственно, позволяет удалить все группы. Естественно, как первая, так и вторая опция отработает до того, как будут добавляться члены, настроенные при помощи этого элемента предпочтения.
Для того чтобы были добавлены новые учетные записи пользователей и групп, необходимо воспользоваться самым нижним контроллом, то есть группой параметров «Члены группы». В эту группу обязательно должны входить как локальные, так и доменные администраторы, поэтому, если вы удалили учетные записи при помощи соответствующих флажков, следует нажать на кнопку «Добавить» (Add) и в соответствующем текстовом поле ввести «Builtin\Администратор», после чего нажать на кнопку «ОК». Повторим эти же действия с нашим TrueAdmin-ом, а затем добавим администраторов домена. Можно либо выбрать эту группу из соответствующего списка, либо нажать на клавишу F3 и воспользоваться переменной %DomainName%, потом указать имя группы, то есть Администраторы домена, затем уже можно сохранять все внесенные изменения. На следующей иллюстрации вы можете увидеть данное диалоговое окно:

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

Как удалить группы пользователей?

Ответил: Lashchevsky

5 комментариев

Похожие вопросы

Загрузка файлов в группе Журналисты

Удалить отдельную группу пользователей через БД.

Временное размещение в группе и основная группа по окончании лимита

Как используя хак dle-users-list реализовать вывод пользователей определенной группы?

Как удалить комментарии в моб. версии?

Есть еще вариант, более нагрузочный на оперативную память:

Получить все файлы sitemap*.xml и далее через simplexml_load_string + json_encode пересобрать их в нужный вам json вид.

в корне cron.php, там

далее по стек-трейсу вызывается:

в не есть методы, которые начинаются с build_, в них строится xml.

Удалить записи из нескольких связанных таблиц

Делал таблицы при помощи СУБД SQL Server,я знаю что есть ON DELETE CASCADE, но не знаю как его проставить в SQL server. Как можно сформировать запрос при помощи inner join что бы удалить свзязанные записи из 3 таблиц? Вот моя БД, удалить надо строку «номер_группы» из таблица «Группы». Зарание спасибо!

1 ответ 1

В SQL-server невозможно удалить одним запросом записи из нескольких таблиц. Придется воспользоваться несколькими запросами:

Но гораздо лучше все таки переделать внешние ключи и использовать ON DELETE CASCADE . Для этого ключи надо будет скорее всего пересоздать. Т.е. удалить их с помощью alter table X drop constraint Y и создать заново с помощью alter table X add constraint Y foreign key . on delete cascade

Всё ещё ищете ответ? Посмотрите другие вопросы с метками sql или задайте свой вопрос.

Похожие

Подписаться на ленту

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

дизайн сайта / логотип © 2020 Stack Exchange Inc; пользовательское содержимое попадает под действие лицензии cc by-sa 4.0 с указанием ссылки на источник. rev 2020.11.6.35358

Протоколирование действий пользователей и версионность записей


Автор: Смирнов Андрей
APLANA Software
Источник: RSDN Magazine #2-2004

Опубликовано: 23.10.2004
Исправлено: 10.12.2020
Версия текста: 1.0

Одной из частых задач при проектировании базы данных является протоколирования действий пользователей и разработка механизма версионности записей. Существует много различных методов решения этой задачи. В статье рассмотрены наиболее часто используемые при этом методы и проблемы, с которыми можно столкнуться. Для начала надо определиться с терминологией, иначе можно запутаться – у каждого может быть свой взгляд на то, что такое история изменений. Под историей изменений я имею в виду историю изменения записи таблицы базы данных. Помещенные в историю значения являются статическими и уже не могут изменяться (версии значений). Версионность обычно возникает из требования к системе предоставлять состояния записи на моменты в прошлом, протоколирование нужно для выяснения обстоятельств неправильного ввода информации.

Например, в расчете зарплаты есть понятие ставки, которая может изменяться ежедневно. Зарплата считается по актуальным для какой-то даты значениям ставок. Например, если ставка действует с 15 числа, и меняется раньше того дня, когда она должна применяться, то достаточно просто отметить, что запись была изменена (например, пользователем DBUser 10-го апреля в 14:15). Если потребуется узнать, кто последний изменял запись, можно быстро получить ответ. Но если пользователь захочет поменять ставку после того дня, когда она начала применяться и по ней пошли расчеты зарплаты, то нужно создавать новую версию записи. Обычно процесс создания новых версий для пользователя является прозрачным, т.е. пользователь ничего не знает про версии и работает, как будто никаких версий нет, ему показывается лишь одна запись по состоянию на какую-то дату, обычно последнюю. Если я запущу расчет зарплаты за прошлый месяц с точки зрения данных прошлого месяца, то мне и будет все посчитано так, как было в прошлом месяце, цифра в цифру. Если же расчет будет запущен с точки зрения данных текущего месяца, то у меня получатся другие результаты. Это я и называю историей (версионностью значений данных) — атрибуты объекта, взятые во времени, никогда не противоречат остальным данным системы за период их действия.

Метод последнего изменения

Для многих задач достаточно отслеживать, кто и когда последний раз изменял запись. Например, есть таблица “Карточка основного средства”. При внесении изменения в эту таблицу хочется знать, кто последний менял запись. В этом случае нужно добавить во все таблицы два поля: автора и время изменения . Если требуется также знать, кто удалял запись, необходимо добавить поле-признак удаления, например IsDeleted bit default 0, где значение 0 означает, что запись не удалена, 1 – что запись логически удалена. При таком подходе, вместо удаления записи физически командой delete, требуется логическое удаление записей. При выборках необходимо фильтровать по значению этого поля, при удалениях записей – просто изменить значение поля признака логического удаления. Наличие поля IsDeleted очень полезно при возникновении вопроса, куда делась запись – можно быстро и легко посмотреть, кто же ее удалил. Плюсы и минусы этого метода очевидны – требуется мало дополнительного места, просто в реализации. При таком подходе можно получить последнего пользователя, внесшего изменения, что во многих случаях является достаточным для выяснения обстоятельств неверного ввода. Однако метод не позволяет получить информацию о состоянии до последнего изменения. Кроме того, периодически нужно чистить такие таблицы, физически удаляя записи, помеченные как удаленные – например, все, помеченные, как удаленные, более месяца назад. Если операция удаления выполняется часто, то лучше переносить удаленные записи в другие таблицы, чтобы не засорять исходные удаленными записями.

Метод “таблиц-двойников”

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

Рис. 1. Взаимодействие основной таблицы и таблицы-двойника

В примере показана таблица Deterioration (износ), содержащая первичный ключ с названием RegistrationUnitID, и связанная по нему с таблицей истории Deterioration_History. В таблице истории, кроме полей исходной таблицы, содержится поле OperationTypeID. В это поле заносится тип операции – создание записи, изменение или удаление.

Иногда достаточно, чтобы сохранялись не все состояния записи, а только часть изменений. Например, какой-то пользователь несколько раз поменял одну и ту же запись. Нужно ли нам сохранять все эти изменения? Это зависит от требований к программе. В приведенном выше примере со ставкой зарплаты версии изменений необходимо создавать только если ставка измененяется после того как она начала применяться. В похожих случаях имеет смысл применение комбинированного подхода. В тех случаях, когда при изменении записи требуется сохранять предыдущее состояние, необходимо создавать новые версии записей. Для создания новой версии нужно скопировать измененную запись в таблицу-двойник. Когда новая версия не нужна — просто изменять основную запись. В этом случае при изменении основной записи можно записывать в нее же, кто и когда ее изменил. В любой возможной реализации такого подхода несложно сделать включение/выключение протоколирования, если база начнет переполняться.

Метод таблиц-двойников хорошо применять, если изменения основной таблицы происходят не слишком часто. Иначе нужно применять другие подходы, потому что таблицы истории будут быстро расти. Метод обеспечивает возможность получения данных на любой момент времени, что необходимо для версионности записей. Однако, если в таблице есть группа часто меняющихся атрибутов, можно вынести протоколирование изменений этих атрибутов в отдельную таблицу. Таким образом, протоколирование изменений будет разделено на 2 части: запись частых и запись редких изменений. Такой подход позволяет без существенных трудозатрат добавлять протоколирование операций и версионность записей для любой таблицы. Метод прост в реализации, несложно включается практически в любое приложение, даже если оно не было изначально рассчитано на работу с историческими данными. Еще один, и довольно существенный плюс такого подхода – простота написания запросов для получения состояния записи на любой момент времени.

Допустим, что для приведенных на рис. 1 таблиц потребуется получить состояние записи в таблице Deterioration, имеющей значение первичного ключа RegistrationUnit >

В таблице Deterioration_History имеется кластерный индекс по полю RegistrationUnitID, являющемуся первичным ключом в основной таблице, что обеспечивает высокую скорость работы запросов к таблице истории.

Нужно отметить, что производительность, если и снижается, то ненамного. Это связано с тем, что исторические и актуальные данные находятся в разных таблицах, а большинство запросов выполняется к актуальным данным. Таким образом, производительность снижается только за счет некоторого количества обращений к таблицам изменений. Минус, похоже, только один, но существенный – требуется большой объем дискового пространства для хранения таблиц-двойников. Однако этот недостаток можно существенно уменьшить, если хранить не всю историю изменений, а только за некоторый интервал времени, например, за месяц. Если все-таки требуется, чтобы сохранялась информация обо всех изменениях, то необходимо оценить расходы дисковой памяти — возможно, не все так плохо, как кажется. Например, в проекте, где я сейчас занимаюсь базой данных, по расчетам размер базы достигнет 1 Тб только через 5 лет эксплуатации. Значительную часть этого объема будут составлять таблицы изменений. В проекте применен описанный здесь подход – для небольшой части таблиц ведутся версии записей, для основной же части таблиц ведется простая фиксация того, кто и когда изменил запись.

Метод единой таблицы аудита

Довольно часто применяемый метод протоколирования – создание одной таблицы аудита. Пример такой таблицы показан на рис 2. Поля записи имеют следующий смысл:

  • UserName – имя пользователя, внесшего изменения.
  • OperationDateTime – дата/время изменения.
  • TableName – название таблицы, куда было внесено изменение.
  • OperationType – тип операции (создание/изменение/удаление).
  • OperationData – сведения об операции, необходимые для понимания того, что было изменено.
  • PrimaryKeyValue – значение первичного ключа записи, необходимое для идентификации измененной записи.

Здесь я предполагаю, что ключ не составной и имеет тип int. Если имеются составные первичные ключи, или первичный ключ имеет другой тип, несложно в эту схему внести соответствующие изменения. В поле OperationData вносится информация об изменении данных, необходимая для понимания сути изменений. Минимальной информацией является сам факт изменения записи. А можно вносить все измененные поля вместе с их значениями.

Рис. 2. Единая таблица аудита.

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

В одной из реализаций, с которыми мне пришлось столкнуться, при любой операции с таблицами, за которыми ведется наблюдение, в таблицу аудита вносилась запись. В поле «сведения об операции» при создании новой записи заносились все значения полей в формате “название поле=’значение’”, через запятую. Далее, при изменении, в таком же формате вносились значения измененных полей, а при удалении туда помещалось в том же формате все содержимое записи. Сделано все это было на триггерах, приходилось анализировать каждую запись: смотреть, что в ней поменялось, готовить строку для сохранения, сохранять. Разумеется, в случае групповых операций все это работает очень медленно. Например, возникла задача обновить расписание полетов. Оно находилось в двух таблицах, на каждой из которых был включен триггер, ведущий протоколирование. Обновление при включенном протоколировании выполнялось около 5 минут, и несколько секунд с отключенными триггерами – это было на базе Oracle 8.1.7. Думаю, что и на других БД, в том числе SQL Server, такой подход тоже будет медленным. Кроме низкой производительности, такой подход имеет еще один существенный недостаток: очень сложно получить состояние записи на какой-то момент времени. Такой метод хорошо подходит для протоколирования изменений, но не для версионности. Как-то передо мной была поставлена задача по восстановлению состояния записи на произвольный момент в БД, использующей такую схему. Задача не из невозможных, но довольно сложная. Версии записей в такой схеме получаются долго — много вычислений. Был написан метод, который получает текущее состояние записи, а затем последовательно просматривает сведения об изменении этой записи в таблице аудита. По данным, хранящимся в этой таблице, восстанавливается состояние записи на заданный момент.

Однако такая схема все же применяется, так как требует меньше места, чем вариант с таблицами-двойниками. В основных таблицах так же, как и в методе таблиц-двойников, хранятся только актуальные версии записей, что делает запросы по актуальным данным достаточно быстрыми. В целом, метод хорошо подходит для протоколирования изменений БД, где нет массовых операций (или есть возможность отключать протоколирование на время массовых операций), где есть требования экономии дискового пространства и нет необходимости быстро получать состояние записей на произвольный момент времени.

Одной из вариаций этого подхода является разбиение таблицы аудита на две, что показано на рис. 3.

Рис.3. Разделение таблицы аудита на две.

По сравнению с предыдущим подходом с единой таблицей аудита, здесь измененные значения полей вынесены в отдельную таблицу Tbl_LogData – для каждого изменения создается запись в Tbl_Log с пометкой, кто и когда проводил изменение, название таблицы и значение первичного ключа. Затем в таблицу Tbl_LogData заносятся измененные значения полей. Тип sql_variant не позволяет сохранять данные типа image или text, поэтому, если потребуется сохранять и их, то нужно делать дополнительную таблицу для них.

Метод таблиц-версий

Впервые задача по созданию базы с версионностью записей возникла у меня в моем первом проекте БД для корпоративной информационной системы. Одним из требований была возможность получения не только версии какой-то записи, но и версии записей из других таблиц, на которые эта запись ссылается. Каждая таблица, для которой был необходим этот механизм, разбивалась на две: таблицу-заголовок и таблицу версий. Таблица-заголовок — это таблица с неизменяемой частью записи. Запись туда заносится один раз и больше никогда не изменяется, за исключением проставления отметки о логическом удалении. Таблица версий записи содержит набор изменямых атрибутов. При изменении записи создается новая версия, прежняя версия используется только для истории. Для того чтобы ссылки указывали на определенную версию записи, делаем ссылку на таблицу версий записи. Если не нужно получать версию записи, то делаем ссылку на таблицу-заголовок. . На рис. 4. показан пример структуры таблиц при описанном подходе.

Рис. 4. Таблица с неизменяемой частью и таблица версий.

На диаграмме приведены три таблицы. Таблица Tbl_Subject содержит неизменяемую часть данных о контрагенте и является таблицей-заголовком для контрагента; таблица Tbl_SubjectVersion содержит записи с версиями контрагента; Tbl_SupplierOffer – одна из таблиц, содержащая информацию о коммерческих предложениях поставщиков. Как видно, для контрагента было найдено совсем немного неизменяемых атрибутов. На той же диаграмме видны два варианта ссылок: ссылка на таблицу-заголовок – поле ID_HigherSubject в Tbl_SubjectVersion (вышестоящий контрагент для холдинговых структур), и поле ID_SubjectVersion в таблице Tbl_SupplierOffer – ссылка на версию контрагента для коммерческого предложения. Таким образом, мы можем получить версию контрагента на момент занесения записи в Tbl_SupplierOffer. Поле ID_HigherSubject ссылается на таблицу-заголовок, так как нам не нужны версии ссылки для этого поля. Нам нужно получать версию контрагента для коммерческого предложения на тот момент, когда была создана запись, поэтому используется ссылка на версию контрагента. При создании новой версии записи контрагента прежняя версия помечается как удаленная, создается новая версия; при этом все ссылки, которые ссылались на предыдущую версию, остаются неизменными, что позволяет получать состояние записи на момент ввода.

Я не вижу существенных достоинств данного подхода по сравнению с другими. В то же время недостатков у него предостаточно. Объем требуемого дискового пространства не меньше, чем при работе с таблицами-двойниками, а реализация намного сложнее. Ту же самую функциональность легко получить при помощи таблиц-двойников, при сохранении даты изменения. Поскольку с использованием таблиц-двойников мы можем получить состояние записи на любой момент времени, то несложно восстановить состояние записи и всех записей, на которые она ссылается, по состоянию на любой момент времени. Хотя писать запросы при таком подходе проще, поскольку ссылка (если это ссылка на таблицу версий) и так указывает на нужную версию. При использовании таблиц-двойников приходится использовать более сложные запросы .

Я предпочитаю метод с таблицами-двойниками для тех таблиц, где требуется версионность. Если бы я снова проектировал ту структуру БД, то сделал бы все на основе метода таблиц-двойников – та база получилась довольно сложной (около 500 таблиц), и использование таблиц-двойников позволило бы существенно упростить реализацию. При использовании метода таблиц-версий в таблице версий смешиваются исторические и актуальные данные, что ухудшает производительность при выборках – серверу приходится просматривать много лишних записей, особенно при полном сканировании таблицы; ухудшается избирательность индексов, так как значительная часть записей индексов соответствует историческим данным, которые редко используются. Если таблица только с актуальными данными может быть закеширована в памяти, то таблица с актуальными и историческими данными может и не поместиться – и тогда серверу БД придется чаще обращаться к дискам, что сильно снижает скорость.

Метод одной таблицы версий

Этот метод похож на предыдущий – но создается не две таблицы, а одна. Запись при изменении помечается как удаленная, создается новая запись, в ней заполняется поле-ссылка на предыдущую версию записи. На рис. 5 показан пример таблицы для этого метода:


    Example >
    Рис. 5. Метод со ссылками на предыдущую запись.

Требования к дисковому пространству примерно те же, что и для таблиц версий. В этом подходе в таблице версий смешиваются исторические данные и актуальные данные, что ухудшает производительность. По сравнению с подходом, в котором таблицы делятся на две части – таблицы с неизменяемой частью и таблицы версий – здесь сложнее делать выборки по истории, и хуже производительность из-за того, что в таблице много редко используемых данных. Если в методе с отдельными таблицами версий можно делать ссылку на неизменяемую голову записи, то в этом методе такое не получается, что также усложняет систему.

Oracle и flashback queries

В Oracle поддерживается механизм flashback queries, позволяющий получить состояние записи на любой момент в прошлом, которое еще хранится в логе транзакций БД. Метод требует очень много места, при интенсивной работе с базой обычно можно смотреть данные всего на 10-15 часов назад – для большего не хватает места. Впрочем, если данные редко модифицируются, то такой подход тоже можно использовать.

C2 audit

SQL Server поддерживает c2 audit mode, при этом логируются все действия пользователей. Протокол действий пользователей пишется в файлы, путь к которым указывается в настройках. Из БД простыми средствами к этим файлам не обратишься, да их и непросто анализировать. Думаю, лучше этот метод не применять, если действительно нет необходимости в полном протоколировании всех действий пользователей. Метод основательно ухудшает производительность, пригоден только для протоколирования действий пользователей, но для версионности записей полностью не подходит – предыдущие версии записей, наверное, и в этом подходе можно получить, но это будет очень и очень непросто.

Удаление помеченных объектов в 1С 8.3

В программе 1С практически ни один объект нельзя сразу физически удалить. Данная возможность настраивается в ролях (права «удаление» и «интерактивное удаление»). Обычно разработчик не разрешает выполнение таких действий во избежание плачевных последствий в дальнейшем.

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

Далее будет подробно рассмотрено, как можно не только пометить объект на удаление в 1С 8.3, но и физически удалить помеченный объект. Этот принцип применяется во всех конфигурациях 1С.

Пример удаления элемента справочника Номенклатура

В нашем примере мы будем удалять элемент справочника «Номенклатура», но процесс удаления документа или любого другого объекта ничем не отличается от приведенной инструкции.

Установим пометку на удаление непосредственно из формы списка данного справочника. Для этого выделим нужную нам позицию и нажмем на клавиатуре клавишу Del (либо воспользовавшись контекстным меню).

Программа задаст нам вопрос о необходимости (либо снятии) пометки на удаление. Ответим «Да».

После этого у выбранного нами элемента справочника появится знак . Напоминаем, что если у объекта конфигурации доступны права на удаление, либо интерактивное удаление, тогда при помощи комбинации Shift+Del вы сразу сможете удалить его физически.

Теперь можно приступить к непосредственному удалению нашего объекта справочника. Если у вас не будет доступен данный функционал, значит, вы не имеете соответствующих на него прав.

Выберите в меню «Администрирование» пункт «Удаление помеченных объектов».

Так же данный функционал доступен в меню «Все функции».

В открывшемся окне программа предложит вам выбрать, хотите ли вы удалить все помеченные на удаление объекты или только некоторые. В нашем примере мы будем удалять только номенклатуру «Доска обрезная 50*250*300».

После того, как вы нажмете «Далее», выведутся все помеченные на удаление объекты. Отметим флагом только нашу номенклатурную позицию «Доска обрезная 50*250*300» и нажмем «Удалить».

Некоторое время система будет вычислять, не ссылаются ли другие объекты информационной базы на нашу доску. В результате программа выдала нам уведомление о том, что удаление невозможно.

Нажмем на кнопку «Далее» для просмотра тех объектов, из-за которых удаление невозможно.

Чтобы наша номенклатура все-таки удалилась, необходимо пометить на удаления все объекты в таблице справа. Еще одним вариант – везде заменить наш объект на другой.

С простановкой пометки на удаления у связанных объектов у вас не должно возникнуть проблем, поэтому мы выберем замену.

Нажмите на кнопку «Заменить…».

Выберем ту номенклатурную позицию, на которую будет произведена замена во всех связанных объектах. После этого вам снова будет доступно окно для повторного удаления. На этот раз все прошло успешно, о чем нас уведомила программа.

Автоматическое удаление помеченных объектов по расписанию

В более новых версиях программы 1С (начиная с 8.3) разработчики добавили очень удобную возможность автоматического удаления помеченных объектов по расписанию. Давайте рассмотрим, как сделать данную настройку.

В открывшейся форме перейдите в раздел «Регламентные операции» и установите флаг в пункте «Автоматически удалять помеченные объекты по расписанию». После этого для вас станет активной гиперссылка «Настроить расписание». Перейдите по ней.

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

Топ-пост этого месяца:  Как работают в приложении Angular ссылки навигации осуществление перехода на страницу
Добавить комментарий