К статье
Практический материал

Администрирование · 12 мин

Как удалить задачи в 1С: рабочие способы и меры предосторожности

Как удалить задачи в 1С: пометка на удаление, контроль ссылочной целостности, удаление через обработки и код. Риски, проверка результата, ответы на вопросы.

Задачи в 1С — это объект метаданных «Задачи», который в типовых конфигурациях используется для механизмов бизнес-процессов, поручений и согласований. Со временем в базе накапливаются тысячи выполненных или потерявших актуальность задач: они раздувают размер информационной базы, замедляют отборы в списках и мешают пользователям ориентироваться в текущей работе. Удалить такие задачи можно несколькими способами — от штатной пометки на удаление до программной очистки через встроенный язык.

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

Материал подходит для конфигураций на платформе 1С:Предприятие 8.3 — как типовых (1С:Документооборот, 1С:ERP, 1С:Комплексная автоматизация, 1С:Управление нашей фирмой), так и самописных решений, где используется объект «Задачи». Конкретные названия команд могут немного отличаться в зависимости от конфигурации, но логика действий везде одинаковая.

Что проверить перед удалением задач

Прежде чем удалять что-либо, убедитесь, что у вас есть полные права или права на удаление объектов «Задачи», а также доступ к сервисным функциям администрирования. В типовых конфигурациях удаление помеченных объектов обычно доступно только пользователям с ролью «Администратор системы» или «Полные права». Если прав нет, часть объектов просто не удалится, и вы получите неполную картину.

Второй обязательный шаг — резервная копия. Для файловой базы достаточно скопировать файл 1Cv8.1CD при остановленной работе пользователей либо выполнить выгрузку через конфигуратор (Администрирование → Выгрузить информационную базу). Для клиент-серверной базы корректнее делать выгрузку средствами СУБД или через конфигуратор в монопольном режиме. Удаление — необратимая операция, и копия — единственный способ откатиться.

Третий момент — определите, какие именно задачи нужно удалить. Критерии обычно такие: задачи выполнены давно (например, старше определённой даты), задачи отменены, задачи созданы ошибочно, либо это тестовые записи. Смешивать критерии в один заход не стоит: сначала удаляйте самый простой и безопасный массив, проверяйте результат, затем переходите к следующему.

Удаление одиночной задачи через пометку на удаление

Стандартный способ, доступный в любой конфигурации, — пометка на удаление. Откройте список задач (в типовых решениях это разделы «Задачи», «Мои задачи» или «Бизнес-процессы и задачи»), найдите нужную запись, выделите её и нажмите клавишу Delete или кнопку «Пометить на удаление» в меню «Ещё». Система запросит подтверждение, после чего задача получит пометку — она ещё физически в базе, но уже не участвует в стандартных отборах.

Если задача связана с бизнес-процессом, конфигурация может предложить пометить на удаление и сам бизнес-процесс — соглашайтесь, если процесс тоже не нужен. В некоторых конфигурациях (например, в 1С:Документооборот) действуют дополнительные правила: выполненная задача может быть недоступна для пометки, пока не завершён родительский процесс. В таком случае сначала прервите или завершите бизнес-процесс.

Чтобы физически удалить помеченные объекты, перейдите в раздел «Администрирование» → «Обслуживание» → «Удаление помеченных объектов» (в некоторых конфигурациях — «Операции» → «Удаление помеченных объектов»). Выберите режим «Выборочное удаление» или «Автоматическое удаление всех помеченных объектов» и запустите процесс. Система проверит ссылки и удалит только те объекты, на которые никто не ссылается.

Порядок действий для одиночного удаления
  1. 1
    Сделайте резервную копию базы или убедитесь, что актуальная копия есть
  2. 2
    Откройте список задач и найдите нужную запись через отбор или поиск
  3. 3
    Пометьте задачу на удаление клавишей Delete или командой из меню «Ещё»
  4. 4
    Откройте «Администрирование» → «Удаление помеченных объектов»
  5. 5
    Запустите удаление и изучите список объектов, которые не удалось удалить
  6. 6
    Проверьте, что задача исчезла из списка и связанные объекты открываются без ошибок

Массовое удаление задач типовыми средствами

Когда задач много, помечать их по одной нерационально. В типовых конфигурациях на базе Библиотеки стандартных подсистем есть обработка «Групповое изменение реквизитов» (Администрирование → Обслуживание → Корректировка данных). С её помощью можно отобрать задачи по условиям — например, «Выполнена = Истина» и «Дата меньше указанной» — и пакетно установить пометку удаления. Это безопасный путь, потому что отбор нагляден, а результат можно предварительно оценить по количеству найденных записей.

Альтернатива — универсальная обработка «Поиск и удаление дублей» тут не подходит, а вот внешние обработки типа «Универсальный подбор и обработка объектов» позволяют отобрать задачи произвольным запросом и выполнить над ними действие. Такие обработки открываются через «Файл» → «Открыть» и требуют понимания структуры данных: ошибочный отбор удалит лишнее.

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

Сравнение способов удаления

Пометка на удаление вручную

Подходит для единичных задач. Безопасно, но долго при большом количестве.

Групповое изменение реквизитов

Типовой способ массовой пометки по отбору. Ограничение: работает только с реквизитами, доступными в форме обработки.

Программное удаление кодом

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

Свертка базы

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

Программное удаление задач через встроенный язык

Для администраторов и разработчиков самый управляемый способ — обработка с кодом на встроенном языке. Типовой приём: запросом отобрать ссылки на задачи по условиям, затем в цикле получать объекты и вызывать метод удаления. Прямое удаление методом Удалить() у объекта минует контроль ссылочной целостности, поэтому используйте его только когда уверены в отсутствии ссылок, либо сначала вызывайте УстановитьПометкуУдаления(Истина), а затем штатную процедуру УдалениеОбъектов.

Пример безопасного фрагмента для пометки выполненных задач старше заданной даты:

bsl
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Задачи.Ссылка КАК Ссылка
|ИЗ
| Задача.ЗадачиИсполнителя КАК Задачи
|ГДЕ
| Задачи.Выполнена
| И Задачи.Дата < &ДатаГраницы";
Запрос.УстановитьПараметр("ДатаГраницы", ДатаГраницы);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
 ЗадачаОбъект = Выборка.Ссылка.ПолучитьОбъект();
 ЗадачаОбъект.УстановитьПометкуУдаления(Истина);
КонецЦикла;

Имя задачи в запросе («ЗадачиИсполнителя») замените на актуальное для вашей конфигурации — оно видно в конфигураторе в ветке «Задачи». Перед запуском на рабочей базе обязательно выполните обработку на копии и сравните количество помеченных записей с ожидаемым. После пометки запустите штатное «Удаление помеченных объектов» — оно выполнит контроль ссылок автоматически.

Если нужно обойти контроль ссылок осознанно (например, при чистке тестовой базы), используется ЗадачаОбъект.Удалить() в транзакции. Помните: такие удаления оставляют битые ссылки вида «Объект не найден» во всех местах, где задача была указана.

Контроль ссылочной целостности и типичные препятствия

Частая ситуация: задача помечена, но при удалении помеченных объектов система сообщает, что удалить её нельзя — есть ссылки. Чтобы увидеть, кто ссылается на задачу, откройте её карточку и выполните команду «Ещё» → «Найти ссылки на объект» (или воспользуйтесь отчётом «Места использования» в разделе администрирования). В списке будут бизнес-процессы, документы, регистры сведений и другие объекты.

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

Типичные ошибки при удалении задач
01
Удаление без резервной копии — при ошибке восстановить данные нечем
02
Прямое удаление методом Удалить() в рабочей базе — появляются битые ссылки и ошибки «Объект не найден»
03
Пометка задач без завершения связанных бизнес-процессов — процессы зависают и продолжают порождать новые задачи
04
Массовое удаление в рабочее время в клиент-серверной базе — блокировки и жалобы пользователей
05
Удаление задач за период, по которому ещё не закрыта отчётность, — теряется история согласований

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

После удаления откройте список задач и убедитесь, что целевые записи исчезли, а нужные остались на месте. Затем проверьте несколько связанных объектов: откройте бизнес-процессы и документы, где раньше фигурировали удалённые задачи, — они должны открываться без сообщений об ошибках. Если видите надпись «<Объект не найден>», значит, ссылка осталась, а объект удалён — её нужно очистить или восстановить данные из копии.

Полезно оценить эффект для базы: в файловом варианте сравните размер файла 1Cv8.1CD до и после (учтите, что файл может не уменьшиться без выполнения «Тестирования и исправления» с реструктуризацией — это нормально для внутреннего формата хранения). В клиент-серверном варианте размер таблиц смотрят средствами СУБД. Само по себе неуменьшение файла не означает, что удаление не сработало.

Контрольные точки

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

Список задач
Норма

Удалённые записи отсутствуют, актуальные задачи на месте

Тревожный признак

Пропали задачи, которые не входили в критерии удаления

Связанные объекты
Норма

Бизнес-процессы и документы открываются без ошибок

Тревожный признак

Сообщения «Объект не найден» в реквизитах

Удаление помеченных объектов
Норма

Все целевые задачи удалены, список неудалённых пуст или объясним

Тревожный признак

Масса неудалённых объектов с непонятными ссылками

Работа пользователей
Норма

Отборы и списки задач работают быстрее, жалоб нет

Тревожный признак

Ошибки при открытии форм, падение отчётов по процессам

Если база участвует в обмене данными (РИБ, синхронизация с другими системами), учтите: удаление объектов регистрируется в планах обмена и передастся в другие узлы. Это может быть как желаемым поведением (чистка во всех базах), так и источником конфликтов, если в другом узле по задаче уже созданы новые объекты. Перед массовым удалением в распределённой системе согласуйте порядок чистки по всем узлам.

Итог

Что важно запомнить

Задачи в 1С удаляются через пометку на удаление и штатное «Удаление помеченных объектов», массово — через групповую обработку или код. Перед удалением обязательны резервная копия и анализ ссылок, после — проверка связанных объектов на отсутствие битых ссылок.

Частые вопросы

Можно ли восстановить удалённую задачу?

Штатных средств восстановления отдельного объекта в 1С нет. Восстановить задачу можно только из резервной копии: либо откатом всей базы, либо выгрузкой нужных данных из копии через обработку переноса данных. Поэтому копия перед удалением — обязательное условие.

Почему задача помечена, но не удаляется?

Значит, на неё ссылаются другие объекты — бизнес-процессы, документы или регистры. Откройте список неудалённых объектов в форме «Удаление помеченных объектов», перейдите по ссылкам и устраните их: удалите ненужные ссылающиеся объекты или очистите реквизиты со ссылкой. После этого повторите удаление.

Что будет с бизнес-процессом, если удалить его задачи?

Процесс останется в базе, но потеряет связь с точками маршрута, по которым были выданы задачи. Активный процесс при этом может зависнуть или выдавать ошибки. Правильный порядок обратный: сначала завершить или прервать и удалить бизнес-процесс, затем удалять порождённые им задачи.

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

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

Уменьшится ли размер базы сразу после удаления?

Не обязательно. В файловой базе физическое уменьшение файла происходит после процедуры «Тестирование и исправление» с сжатием, в клиент-серверной — после шринка таблиц средствами СУБД. Данные при этом удалены корректно уже сразу, меняется только физическое хранение.

Чем удаление задач отличается от свертки базы?

Удаление задач — точечная чистка одного вида объектов. Свертка — комплексная процедура обрезания всей истории базы на дату с переносом остатков. Если проблема только в задачах, свертка избыточна; если база тяжёлая целиком и история за старые периоды не нужна, рассматривайте свертку как более системное решение.