Удаляем бизнес-процессы в 1С 8.3 без потери задач и ссылок

· 11 мин

Содержание

Конкретный бизнес-процесс (запущенное задание, согласование) в 1С 8.3 удаляют в два шага: ставят на нём пометку удаления в списке, а затем запускают Администрирование → Обслуживание → Удаление помеченных объектов. Если нужно убрать сам вид бизнес-процесса из программы, это делают в Конфигураторе: удаляют объект из ветки «Бизнес-процессы» и обновляют конфигурацию базы данных.

Это два разных действия с разными последствиями. Первое убирает данные — один процесс или сотню старых. Второе меняет структуру базы и уничтожает все процессы этого вида вместе с таблицами. Порядок действий для обоих случаев и то, как не оставить в базе «висящие» задачи, — ниже по разделам. Описание общее для платформы 8.3 и конфигураций на Библиотеке стандартных подсистем (БСП): БП 3.0, ЗУП 3.1, УТ 11, ERP, Документооборот.

Что проверить перед удалением бизнес-процесса

Сначала определитесь, что именно вы удаляете.

ЗадачаГде делаетсяЧто исчезнетОбратимо?
Убрать один или несколько процессовРежим «Предприятие»Выбранные процессы и их задачиТолько из резервной копии
Очистить базу от старых процессов массовоОбработка на встроенном языкеВсе процессы по условию отбораТолько из резервной копии
Убрать вид бизнес-процесса из конфигурацииКонфигураторОбъект метаданных, все его данные и таблицыТолько из резервной копии

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

Перед работой проверьте три вещи:

  • 🔗 Ссылки. На процесс могут ссылаться задачи, документы-основания, записи регистров БСП (например, сведения о состоянии и исполнителях процессов), вложенные процессы через ВедущаяЗадача.
  • ⏳ Состояние. Активный процесс продолжает порождать задачи. Сначала его останавливают или прерывают.
  • 👥 Пользователи. Если удаление массовое или затрагивает конфигурацию, предупредите коллег: при обновлении структуры базы сеансы придётся завершить.

Удаление помеченных объектов и изменение конфигурации необратимы. Сделайте выгрузку Администрирование → Выгрузить информационную базу в Конфигураторе (файл .dt) или резервную копию средствами СУБД. Без копии не начинайте.

Способ 1. Удаление бизнес-процесса в режиме «Предприятие»

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

Шаг 1. Найдите список процессов

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

  1. Включите команду: главное меню (☰) → Сервис → Параметры → флажок «Отображать команду “Все функции”».
  2. Главное меню → Все функции → ветка Бизнес-процессы → нужный вид (в БСП это, например, «Задание»).

Шаг 2. Остановите активный процесс

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

Шаг 3. Поставьте пометку удаления

  1. Выделите процесс (или несколько, с Ctrl или Shift).
  2. Нажмите Del или Ещё → Пометить на удаление / Снять пометку.
  3. Подтвердите. Строка станет перечёркнутой.

Задачи этого процесса пометьте так же — в списке задач с отбором по процессу. В БСП при пометке процесса пометку обычно получают и его задачи, но проверьте это глазами: откройте список задач и отфильтруйте по колонке «Бизнес-процесс».

Шаг 4. Удалите помеченные объекты

Откройте Администрирование → Обслуживание → Удаление помеченных объектов. Обработка покажет все помеченные объекты базы.

  1. Выберите режим с выбором объектов, чтобы не удалить заодно чужие пометки.
  2. Оставьте флажки только у процессов и их задач.
  3. Нажмите «Удалить».

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

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

Способ 2. Программное удаление бизнес-процессов обработкой

Когда процессов тысячи, удобнее внешняя обработка. Создайте её в Конфигураторе (Файл → Новый → Внешняя обработка), добавьте форму с кнопкой и серверную процедуру.

Пример ниже ставит пометку удаления на все завершённые процессы вида «Задание» старше заданной даты и на их задачи. Ссылочная целостность при этом сохраняется: окончательно удалит их обработка удаления помеченных.

&НаСервере
Процедура ПометитьСтарыеПроцессыНаСервере(ДатаГраницы)

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

	Пока Выборка.Следующий() Цикл

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

		НачатьТранзакцию();
		Попытка
			Пока ВыборкаЗадач.Следующий() Цикл
				ЗадачаОбъект = ВыборкаЗадач.Ссылка.ПолучитьОбъект();
				ЗадачаОбъект.УстановитьПометкуУдаления(Истина);
			КонецЦикла;
			ПроцессОбъект = Выборка.Ссылка.ПолучитьОбъект();
			ПроцессОбъект.УстановитьПометкуУдаления(Истина);
			ЗафиксироватьТранзакцию();
		Исключение
			ОтменитьТранзакцию();
			Сообщить("Не удалось пометить " + Строка(Выборка.Ссылка) + ": "
				+ КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
		КонецПопытки;

	КонецЦикла;

КонецПроцедуры

Имена Задание и ЗадачаИсполнителя — из БСП. В вашей конфигурации посмотрите точные имена в дереве метаданных и замените.

Пометка или прямое удаление

У объекта есть и метод Удалить(). Он стирает запись сразу, без контроля ссылок. Задачи с битой ссылкой на процесс останутся в базе и будут показываться как <Объект не найден>.

МетодКонтроль ссылокКогда применять
УстановитьПометкуУдаления(Истина) + удаление помеченныхЕстьПочти всегда
Удалить()НетТолько если вы сами удалили все задачи и записи регистров, ссылающиеся на процесс

Запускайте обработку сначала на копии базы. Проверьте количество помеченных объектов и только потом повторите в рабочей базе.

Способ 3. Удаление бизнес-процесса из конфигурации в Конфигураторе

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

Подготовка конфигурации

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

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

Порядок удаления

  1. Откройте Конфигуратор, Конфигурация → Открыть конфигурацию.
  2. Найдите процесс в ветке Бизнес-процессы.
  3. Правой кнопкой → Поиск ссылок на объект. Платформа покажет, где он используется: реквизиты других объектов, роли, подсистемы, формы, модули, параметры функциональных опций.
  4. Уберите эти ссылки: удалите реквизиты нужного типа, поправьте код, где процесс упоминается по имени (БизнесПроцессы.СогласованиеДоговора), исключите его из подсистем.
  5. Выделите объект и нажмите Del. Если ссылки остались, Конфигуратор покажет их список и удалять не станет.
  6. Проверьте синтаксис модулей: Конфигурация → Проверка конфигурации.
  7. Обновите базу: Конфигурация → Обновить конфигурацию базы данных (F7).

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

Все экземпляры удалённого процесса пропадут вместе с таблицей. Если по ним нужна история, выгрузите её до шага 7 (см. раздел про архив).

Что ещё проверить разработчику

  • 📌 Задача. Удалённый процесс мог быть единственным, кто использовал свой объект «Задача». Тогда задача станет ненужной — решите, удалять ли и её.
  • 📌 Регистры адресации и сведений. Измерения с типом удалённого процесса превратятся в ошибки при проверке конфигурации.
  • 📌 Расширения. Если расширение заимствует удалённый объект, оно перестанет применяться. Проверьте Конфигурация → Расширения конфигурации.

Особенности в Документообороте, ERP и других конфигурациях на БСП

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

1С:Документооборот. Процессы здесь — основа работы: согласование, исполнение, рассмотрение, комплексные процессы. Через них связаны документы и история согласований. Поэтому:

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

ERP, УТ 11, КА. Бизнес-процессы БСП (задания, задачи исполнителям) используются в органайзере и согласованиях. Здесь чаще чистят старые завершённые задания: пометка + удаление помеченных подходит лучше всего.

БП 3.0, ЗУП 3.1. Механизм заданий из БСП есть, но пользователи им пользуются редко. Если процессов немного, хватает Способа 1.

КонфигурацияЧто обычно удаляютРекомендуемый способ
ДокументооборотОшибочно запущенные процессыПрервать → пометить → удалить помеченные
ERP, УТ 11, КАСтарые завершённые заданияОбработка с пометкой (Способ 2)
БП 3.0, ЗУП 3.1Единичные заданияПометка в списке (Способ 1)
Своя конфигурацияНеиспользуемый вид процессаКонфигуратор (Способ 3)
Что именно нужно убрать?

Чем заменить удаление: архив, отключение и перенос процессов

Удаление — не единственный выход. Часто задачу решают мягче.

Отключить вместо удаления

  • 🚫 Убрать права. Снимите право «Старт» и «Добавление» на процесс в ролях. Пользователи не смогут запускать новые процессы, старые останутся для истории.
  • 🙈 Скрыть из интерфейса. Исключите процесс из подсистем, и он исчезнет из разделов.
  • 🏷️ Префикс «Удалить». Так поступает сама фирма 1С в типовых конфигурациях: устаревший объект переименовывают в УдалитьСогласованиеДоговора, убирают из интерфейса, а физически удаляют через несколько релизов. Подход удобен для своих доработок.

Сохранить историю в архив

Если процессы нужны для аудита, сначала сохраните их, а потом удаляйте:

  1. Отчёт или список. Выведите список процессов с колонками (дата, автор, исполнители, результат) и сохраните в Excel через Ещё → Вывести список.
  2. Копия базы. Сохраните .dt на дату чистки и подпишите её. При вопросе «что было в процессе от марта» поднимете копию.
  3. Выгрузка XML. Типовая обработка «Выгрузка и загрузка данных XML» переносит процессы и задачи в другую базу той же конфигурации. Возьмите её с диска ИТС под свою версию платформы.

Перенос в другую базу

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

Проверка базы после удаления бизнес-процессов

После чистки убедитесь, что не осталось битых ссылок и лишнего места.

Контроль после удаления
Выполнено: 0 / 6

Поиск битых ссылок

Если удаляли методом Удалить(), найдите задачи с пустой или битой ссылкой на процесс. Простой запрос в консоли запросов:

ВЫБРАТЬ
	З.Ссылка,
	З.БизнесПроцесс
ИЗ
	Задача.ЗадачаИсполнителя КАК З
ГДЕ
	З.БизнесПроцесс.Ссылка ЕСТЬ NULL

Обращение к реквизиту через точку даёт NULL, если объекта по ссылке нет. Такие задачи пометьте на удаление и удалите.

Тестирование и исправление

В Конфигураторе: Администрирование → Тестирование и исправление. Отметьте «Проверка логической целостности» и «Проверка ссылочной целостности». Для режима исправления нужен монопольный доступ, поэтому запускайте его в нерабочее время, предупредив пользователей: их сеансы придётся завершить.

Вернуть место на диске

  • 💾 Файловая база. Удалённые записи освобождают место не сразу. В «Тестировании и исправлении» отметьте «Сжатие таблиц информационной базы».
  • 🗄️ Клиент-серверная база. Место внутри файлов СУБД освобождается, но размер файла не уменьшается. Сжатие делают средствами СУБД (в MS SQL — DBCC SHRINKFILE, в PostgreSQL — VACUUM FULL), только после резервной копии и в окно обслуживания.

Ошибки при удалении бизнес-процессов и как их обойти

Здесь — ситуации, которые не следуют прямо из шагов выше.

Диагностика: выберите симптом

Ещё одна частая ловушка — обмен данными. Если база участвует в распределённой информационной базе (РИБ), удаление объектов уйдёт в подчинённые узлы. Изменение конфигурации в РИБ делают только в главном узле, а подчинённые получают его при обмене.

Можно ли удалить бизнес-процесс без прав администратора?
Пометить на удаление можно с правом «Интерактивная пометка удаления» на этот вид процесса. Окончательно удаляет помеченные обычно только администратор.
Удалятся ли задачи вместе с бизнес-процессом?
Не автоматически. При контроле ссылок процесс не удалится, пока на него ссылаются непомеченные задачи. Задачи нужно пометить вместе с процессом.
Можно ли восстановить удалённый бизнес-процесс?
Только из резервной копии. Снятие пометки работает лишь до запуска «Удаления помеченных объектов».
Чем остановленный процесс отличается от удалённого?
Остановленный остаётся в базе со всей историей, задачи по нему не создаются. Его можно продолжить. Удалённый исчезает из базы полностью.
Нужен ли монопольный режим для удаления помеченных?
В современных версиях БСП удаление помеченных работает и при активных пользователях, но надёжнее запускать его, когда в базе никто не работает. Для обновления структуры базы в Конфигураторе монопольный доступ обязателен.