Найти в Дзене

Удаление сообщений и чатов из Битрикс24, просмотр сообщений в чатах пользователей Битрикс24 администратором системы

Аксиома: по умолчанию в коробочной версии Битрикс24 чаты с сообщениями не удаляются. Чат можно скрыть. Но при этом он вместе с сообщениями остается существовать в таблицах базы данных Битрикс24. И пользователи-администраторы могут "вытащить" его содержимое. При увольнении и даже удалении пользователя его чаты остаются в системе. Каждый пользователь в своих чатах может удалить только собственные сообщения. При длительной переписке и большом количестве чатов - это долго и трудоемко. Аксиома: в коробочной версии Битрикс24 отсутствует стандартный функционал (даже для администраторов) по удалению чатов и сообщений в чатах. Сторонние разработчики предлагают собственные платные решения. Например, https://marketplace.1c-bitrix.ru/solutions/deha.chats/ (цена расширения на дату публикации статьи 30 000 рублей). Тем не менее, есть возможность посмотреть, изменить, удалить сообщения в "ручном" режиме с ролью администратора. Некоторые чаты теряют актуальность и остаются в системе "мусором", некотор
Оглавление

Проблематика вопроса

Аксиома: по умолчанию в коробочной версии Битрикс24 чаты с сообщениями не удаляются.

Чат можно скрыть. Но при этом он вместе с сообщениями остается существовать в таблицах базы данных Битрикс24. И пользователи-администраторы могут "вытащить" его содержимое.

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

Каждый пользователь в своих чатах может удалить только собственные сообщения. При длительной переписке и большом количестве чатов - это долго и трудоемко.

Аксиома: в коробочной версии Битрикс24 отсутствует стандартный функционал (даже для администраторов) по удалению чатов и сообщений в чатах.

Сторонние разработчики предлагают собственные платные решения. Например, https://marketplace.1c-bitrix.ru/solutions/deha.chats/ (цена расширения на дату публикации статьи 30 000 рублей).

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

Хранение сообщений чатов пользователей

Для операций над чатами и сообщениями в чатах необходимо получить доступ к трем таблицам: b_user, b_im_chat, b_im_message.

Все таблицы находятся в Администрировании по адресу: Настройки --> Производительность --> Таблицы.

Таблица b_user

Таблица хранит ID (уникального идентификатора) пользователей. Поиск удобно производить по фильтру. Добавьте необходимое поле, по которому вы сможете легко идентифицировать пользователя, или набор полей.

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

ID из таблицы b_user может быть критерием для поиска, удаления чатов и/или сообщений по автору чата/сообщений.

Таблица b_im_chat

Таблица хранит ID (уникального идентификатора) чатов.

Поле AUTHOR_ID - автор чата - будет соответствовать ID из таблицы b_user.

Если в AUTHOR_ID вставить ID пользователя из таблицы b_user, то найдутся все чаты, которые он создавал.
Если в AUTHOR_ID вставить ID пользователя из таблицы b_user, то найдутся все чаты, которые он создавал.

Таблица b_im_message

Таблица хранит все сообщения всех чатов системы. У каждой записи таблицы есть поля CHAT_ID, в котором хранится ID чата из таблицы b_im_chat и AUTHOR_ID, в котором хранится ID автора сообщения из таблицы b_user.

Зная ID чата, можно посмотреть сообщения всех пользователей в этом чате.

Зная ID автора сообщений, можно посмотреть сообщения пользователя во всех чатах.

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

Удаление чатов и сообщений в чатах пользователей

Теперь, когда мы понимаем, что и где хранится, решить задачу "по зачистке" достаточно просто. Она состоит из 3 этапов:

  • удаление сообщений;
  • удаление чата;
  • удаление вложений (файлов) из чата (при необходимости, в данной статье пока не рассматривается).

Понадобится инструмент Администрирования по адресу Настройки --> Инструменты --> SQL запрос. И владение языком запросов.

Команда SELECT позволяет выбрать (посмотреть) записи таблиц. Результат будет как и при фильтрации таблиц.

Команда DELETE позволяет удалить записи.

Несколько примеров SELECT:

SELECT * FROM b_im_message WHERE CHAT_ID=19682

Выбрать (посмотреть) все сообщения из чата с ID 19682

SELECT * FROM b_im_message WHERE AUTHOR_ID=125

Выбрать (посмотреть) все сообщения пользователя с ID 125 (во всех чатах).

SELECT * FROM b_im_message WHERE AUTHOR_ID=125 AND CHAT_ID=19682

Выбрать (посмотреть) все сообщения пользователя с ID 125 в чате с ID 19682.

SELECT * FROM b_im_chat WHERE AUTHOR_ID=125

Выбрать (посмотреть) все чаты, созданные пользователем с ID 125.

Если изменить команду 'SELECT *' на 'DELETE' и выполнить запрос, то соответствующие записи из базы удалятся.

DELETE FROM b_im_message WHERE AUTHOR_ID=125 AND CHAT_ID=19682

Удалит сообщения пользователя с ID 125 в чате 19682

DELETE FROM b_im_message WHERE CHAT_ID=19682

Удалит все сообщения в чате с ID 19682

DELETE FROM b_im_chat WHERE CHAT_ID=19682

Удалит запись о чате с ID 19682

В зависимости от целей можно:

  • удалить сообщения конкретного пользователя в конкретном чате;
  • удалить сообщения всех пользователей в конкретном чате и затем удалить запись о чате;
  • удалить сообщения конкретного пользователя во всех чатах;
  • и масса других вариаций по другим критериям. Например, можно удалять сообщения за период или раньше/позже выбранной даты.