Администрирование · 10 мин
Как очистить сообщения на сервере 1С
Как очистить сообщения на сервере 1С: удаление истории переписки в системе взаимодействия, очистка регистров, настройка хранения и типичные ошибки администраторов.
Речь об очистке сообщений в 1С обычно идёт в двух ситуациях: когда в базе накопилась история переписки системы взаимодействия (встроенный чат, обсуждения к документам) и она раздувает размер базы, либо когда нужно удалить устаревшие или конфиденциальные сообщения по требованию безопасности. В обоих случаях данные хранятся не в «обычных» таблицах документов, а в отдельном механизме — сервере взаимодействия 1С или в регистрах информационной базы, поэтому простое удаление через интерфейс пользователя часто недоступно или неудобно.
Перед любыми действиями определите, где именно хранятся сообщения: в клиент-серверном варианте с подключённым сервером взаимодействия история лежит на этом сервере, а в файловой базе или при работе обсуждений через сервис 1С:Диалог — в самой информационной базе или на внешнем сервисе. От этого зависит инструмент очистки: штатные средства конфигуратора, регламентные задания, встроенный язык или администрирование сервера взаимодействия.
Критически важно: удаление сообщений необратимо. Если переписка может понадобиться для разбора инцидентов, аудита или восстановления контекста по документам, сначала сделайте полную резервную копию базы и, при необходимости, выгрузку истории. Ниже разобраны рабочие способы очистки, их ограничения и проверка результата.
Определяем, где хранятся сообщения
Первый шаг — понять архитектуру. В платформе 1С:Предприятие механизм обсуждений (система взаимодействия) может работать в двух режимах: через отдельный сервер взаимодействия (рекомендуемый для клиент-серверных баз) или в режиме совместимости, когда данные хранятся в самой информационной базе. Узнать режим можно в конфигураторе: пункт меню «Администрирование» — «Обсуждения», либо в параметрах информационной базы.
Если используется отдельный сервер взаимодействия, сообщения физически находятся в его хранилище, и очистка выполняется средствами этого сервера. Если работает режим хранения в базе, объём можно оценить через стандартные отчёты о размере таблиц или через «Тестирование и исправление» с отчётом по таблицам. Дополнительно сообщения могут дублироваться в регистрах типовых конфигураций — например, в механизмах обсуждений БСП (библиотеки стандартных подсистем).
Очистка через настройки срока хранения
Самый безопасный способ — не удалять сообщения вручную, а настроить автоматическое ограничение глубины хранения. В параметрах сервера взаимодействия и в настройках обсуждений можно задать срок, после которого старые сообщения удаляются автоматически. Это снижает риск случайного удаления нужных данных и избавляет от регулярных ручных операций.
Порядок действий: откройте конфигуратор под учётной записью с правами администратора, перейдите в настройки обсуждений информационной базы, проверьте параметры хранения. Если типовая конфигурация предоставляет свою настройку (например, в разделе «Администрирование» — «Обсуждения» в режиме предприятия), задайте срок хранения там — например, хранить переписку за последние 90 или 180 дней. После изменения настройки очистка выполняется регламентным заданием, а не мгновенно.
Разовая очистка сообщений в информационной базе
Если сообщения хранятся в базе (режим совместимости или регистры типовой конфигурации), очистку выполняют обработкой на встроенном языке. Типовой подход — перебрать записи соответствующего регистра сведений или таблицы сообщений и удалить записи старше заданной даты. Работать такую обработку следует только под полными правами и только после резервного копирования.
Пример логики для удаления обсуждений по конкретному объекту или старше даты: получить набор записей регистра, отобрать по условию, записать пустой набор с замещением. Для системы взаимодействия в коде используются объекты менеджера обсуждений — через них можно получать и удалять сообщения программно, если это предусмотрено версией платформы.
// Удаление сообщений обсуждения по предмету (пример логики)
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ Идентификатор ИЗ РегистрСведений.СообщенияОбсуждений ГДЕ Дата < &Граница";
Запрос.УстановитьПараметр("Граница", ДобавитьМесяц(ТекущаяДатаСеанса(), -6));
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Набор = РегистрыСведений.СообщенияОбсуждений.СоздатьНаборЗаписей();
Набор.Отбор.Идентификатор.Установить(Выборка.Идентификатор);
Набор.Записать(); // запись пустого набора = удаление
КонецЦикла;Имена регистров и полей зависят от конфигурации — перед запуском откройте структуру метаданных и уточните реальные имена объектов. Универсальной команды «очистить все сообщения» в платформе нет, поэтому код всегда адаптируется под конкретную базу.
Очистка на сервере взаимодействия
Когда переписка хранится на отдельном сервере взаимодействия, удаление записей из SQL-базы не затронет сообщения. Очистка выполняется средствами администрирования этого сервера: через его конфигурационные файлы задаются параметры хранения, а для управления данными используются штатные утилиты и команды платформы. Конкретный набор команд зависит от версии сервера взаимодействия — сверяйтесь с документацией на установленную версию.
В ряде случаев практикуют полную переустановку сервера взаимодействия с созданием нового хранилища — это радикальный способ, обнуляющий всю историю обсуждений сразу. Он оправдан, только если переписка заведомо не нужна: восстановить её после пересоздания хранилища невозможно. Перед таким шагом убедитесь, что пользователи предупреждены, а резервная копия всей системы создана.
Очистка сообщений обмена и регламентных заданий
Под «сообщениями на сервере» иногда понимают не чат, а служебные сообщения: сообщения обмена данными (планы обмена, EnterpriseData), очереди сообщений и журналы ошибок регламентных заданий. Они тоже накапливаются и занимают место. Для планов обмена в типовых конфигурациях есть штатная очистка: в настройках синхронизации можно удалить устаревшие сообщения обмена и регистрацию изменений для уже отправленных пакетов.
Для журнала регистрации — отдельный механизм: его сокращение выполняется через конфигуратор («Администрирование» — «Журнал регистрации» — «Сократить») с указанием даты, до которой удалять события. Это не сообщения пользователей, но часто именно журнал регистрации даёт основной прирост объёма служебных данных, и его регулярное сокращение — обязательная часть обслуживания сервера.
Сравнение вариантов
Подходит для постоянной эксплуатации: автоматически ограничивает рост истории. Не освобождает место мгновенно.
Подходит для точечной очистки по дате или объекту. Требует полных прав, копии базы и проверки на копии.
Подходит, когда вся переписка не нужна. Удаляет всё безвозвратно, требует остановки работы пользователей.
Подходит для служебных данных. Штатный и безопасный способ, но не затрагивает переписку пользователей.
Проверка результата и восстановление работоспособности
После очистки проверьте три вещи: объём базы или хранилища уменьшился, механизм обсуждений работает (пользователи могут отправлять и получать новые сообщения), отсутствуют ошибки в журнале регистрации, связанные с обсуждениями или регламентными заданиями. Учтите, что в клиент-серверном варианте физическое уменьшение файлов СУБД может потребовать шринка (сжатия) базы средствами СУБД — само по себе удаление записей не всегда возвращает место операционной системе.
Дополнительно запустите тестирование и исправление информационной базы в режиме проверки ссылочной целостности, если удаление затрагивало регистры, связанные с документами. Это исключит «битые» ссылки на удалённые сообщения в карточках объектов.
Как проверить результат
Сообщение отправляется и видно собеседнику
Ошибка отправки, обсуждения не открываются
Размер уменьшился после очистки и сжатия
Размер не изменился — очистка не затронула реальное хранилище
Нет новых ошибок по обсуждениям и регламентным заданиям
Повторяющиеся ошибки ссылочной целостности
Типичные ошибки при очистке
FAQ: частые вопросы об очистке сообщений в 1С
Можно ли удалить сообщения только одного пользователя или одного обсуждения?
Да, если очистка выполняется программно: в запросе к регистру или через менеджер обсуждений добавляется отбор по автору, предмету обсуждения или идентификатору обсуждения. Штатного интерфейса «удалить всю переписку пользователя» в типовых конфигурациях обычно нет, поэтому используется обработка.
Почему после удаления сообщений размер базы не уменьшился?
Удалённые записи лишь помечаются свободным местом внутри файлов СУБД. Чтобы вернуть место операционной системе, выполните сжатие (shrink) базы средствами вашей СУБД — для MS SQL Server это операции сжатия базы или файлов, для PostgreSQL — VACUUM FULL. Для файловой базы 1С выполните тестирование и исправление с сжатием таблиц.
Удалятся ли сообщения у всех пользователей сразу?
Да. Переписка хранится централизованно, а не на компьютерах пользователей, поэтому очистка на сервере удаляет сообщения для всех участников одновременно. Локальные копии в кэше клиента пропадут после обновления данных.
Можно ли восстановить удалённые сообщения?
Штатных средств восстановления нет. Единственный вариант — развернуть резервную копию базы (и хранилища сервера взаимодействия, если оно использовалось) на отдельном стенде и выгрузить нужную переписку оттуда. Поэтому копия перед очисткой обязательна.
Как часто нужно очищать сообщения?
Частота зависит от интенсивности использования обсуждений. Практичный подход — не ручная периодическая очистка, а настройка ограничения срока хранения (например, несколько месяцев) и контроль объёма базы раз в месяц. Тогда ручные операции потребуются только в исключительных случаях.
Что важно запомнить
Сначала определите, где хранятся сообщения — в базе или на сервере взаимодействия, — и выберите соответствующий инструмент. Предпочтителен автоматический срок хранения вместо ручных удалений. Любая очистка выполняется только после резервного копирования, а результат проверяется по объёму хранилища, работоспособности обсуждений и отсутствию ошибок в журнале регистрации.