Работа с большими объемами данных в 1С:Предприятие часто требует массовых операций — например, когда нужно очистить базу от устаревших документов перед архивацией или миграцией. Ручное помечение каждого документа на удаление может занять часы, а то и дни. К счастью, в платформе 1С 8.3 есть несколько способов автоматизировать этот процесс: от стандартных инструментов до программного кода.

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

Прежде чем приступать к массовому помечению, убедитесь, что у вас есть резервная копия базы — это правило №1 при любых групповых операциях в 1С. Также проверьте, не заблокированы ли документы другими пользователями (особенно актуально для клиент-серверного варианта работы).

📊 Как часто вы проводите массовое удаление документов в 1С?
Ежемесячно
Раз в квартал
Реже 1 раза в год
Никогда не делал

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

Самый простой метод — использовать встроенный функционал 1С:Предприятие. Он не требует знаний программирования и подходит для большинства типовых конфигураций (Бухгалтерия 3.0, Управление торговлей 11, Зарплата и управление персоналом 3.1 и др.).

Инструкция:

  • 📄 Откройте журнал документов, которые нужно пометить (например, Продажи → Реализация товаров и услуг).
  • 🔍 Включите отбор по дате или другим критериям (например, Дата < ТекущаяДата() - 365 для документов старше года).
  • 📋 Нажмите Ещё → Пометить на удаление (в некоторых конфигурациях пункт может называться Действия → Пометить на удаление).
  • ✅ Подтвердите операцию в диалоговом окне.

Ограничения метода:

  • ⚠️ Работает только с документами одного типа (нельзя одновременно пометить реализации и поступления).
  • ⚠️ В больших базах может зависнуть на этапе обработки — если документов больше 10 000, лучше использовать другие способы.
  • ⚠️ Не все конфигурации поддерживают массовое помечение через журнал (например, в 1С:Розница 2.3 этот пункт может отсутствовать).

Создать резервную копию базы|Закрыть 1С у всех пользователей|Проверить права доступа (нужна роль "Администратор")|Отключить регламентные задания

-->

2. Через обработку "Групповое изменение реквизитов"

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

Как найти обработку:

  • 🔧 В меню Все функции (включается через Сервис → Параметры → Отображать команду "Все функции").
  • 🔍 Введите в поиске Групповое изменение реквизитов.
  • 📂 Или найдите в папке Обработки (путь может отличаться в зависимости от конфигурации).

Пошаговая инструкция:

  1. Выберите тип объекта (например, Документ.РеализацияТоваровУслуг).
  2. Установите отбор (например, по дате, контрагенту или статусу).
  3. В поле Действие выберите Пометить на удаление.
  4. Нажмите Выполнить и дождитесь завершения операции.

Преимущества метода:

  • 🎯 Можно использовать сложные условия отбора (например, документы конкретного менеджера за определённый период).
  • 📊 Поддерживает предварительный просмотр списка документов перед помечением.
  • ⚡ Быстрее, чем ручное помечение через журнал (особенно при работе с 5 000+ документов).
💡

Если обработка "Групповое изменение реквизитов" отсутствует в вашей конфигурации, её можно скачать с портала ИТС (раздел "Обработки для типовых конфигураций").

3. Программный метод: запрос + помечение через код

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

Пример кода для помечения всех документов типа РеализацияТоваровУслуг за 2022 год:

Запрос = Новый Запрос;

Запрос.Текст =

"ВЫБРАТЬ

| РеализацияТоваровУслуг.Ссылка КАК Ссылка

|ИЗ

| Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг

|ГДЕ

| РеализацияТоваровУслуг.Дата МЕЖДУ &НачалоГода AND &КонецГода";

НачалоГода = Дата(2022, 1, 1);

КонецГода = Дата(2022, 12, 31);

Запрос.УстановитьПараметр("НачалоГода", НачалоГода);

Запрос.УстановитьПараметр("КонецГода", КонецГода);

Результат = Запрос.Выполнить();

Выборка = Результат.Выбрать();

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

ДокументОбъект = Выборка.Ссылка.ПолучитьОбъект();

ДокументОбъект.ПометитьНаУдаление();

ДокументОбъект.Записать();

КонецЦикла;

Как запустить код:

  • 🛠️ Откройте Консоль запросов (Сервис → Консоль запросов в режиме 1С:Предприятие).
  • 📝 Вставьте код, отредактировав тип документа и условия отбора.
  • ▶️ Нажмите Выполнить (или F5).

Важные нюансы:

  • 🔄 После помечения Записать() обязателен — иначе изменения не сохранятся.
  • ⏳ Для больших выборок (10 000+ документов) используйте ОбменДанными.Загрузка = Истина; перед циклом — это ускорит процесс.
  • 🚫 Если документ заблокирован, скрипт выдаст ошибку. Чтобы игнорировать заблокированные документы, добавьте проверку:
    Если НЕ ДокументОбъект.ПометкаУдаления И НЕ ДокументОбъект.ЭтоГруппа Тогда
Что делать, если скрипт зависает?

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

Выборка.Ссылка.ПометитьНаУдаление(Истина);

Это сработает быстрее, но не позволит проверить дополнительные условия (например, статус документа).

4. Использование внешних обработок для массового удаления

Если стандартные инструменты не подходят, а писать код нет времени, можно воспользоваться готовыми внешними обработками. Наиболее популярные:

  • 📥 Обработка "Массовое удаление документов" (доступна на Инфостарт и ИТС).
  • 🔄 "Универсальный помощник" — включает функцию помечения на удаление с гибкими настройками.
  • 📊 "Анализ и очистка базы" — подходит для комплексного удаления устаревших данных.

Преимущества внешних обработок:

Критерий Стандартные инструменты Внешние обработки
Скорость работы Медленно при больших объёмах Оптимизированы для массовых операций
Гибкость отбора Ограничена типовыми фильтрами Поддержка сложных условий (регулярные выражения, связи с другими объектами)
Логгирование Нет Есть (можно сохранить отчёт о помеченных документах)
Поддержка нетиповых конфигураций Только для стандартных документов Работает с любыми объектами (включая справочники и регистры)

Где скачать обработки:

  • 🌐 Портал ИТС (раздел "Обработки для типовых конфигураций").
  • 💻 Инфостарт (платные и бесплатные решения, есть рейтинг и отзывы).
  • 📂 GitHub (репозитории с открытым кодом, например, 1C-Scripts).
💡

Перед использованием внешней обработки проверьте её совместимость с вашей версией платформы 1С (8.3.20+ может не поддерживать старые скрипты).

5. Помечение через консоль администратора (для серверных баз)

Если вы работаете с клиент-серверным вариантом 1С (например, 1С:Предприятие 8.3 для SQL), можно использовать консоль администратора сервера для массовых операций. Этот способ подходит для опытных администраторов и позволяет помечать документы без открытия базы в пользовательском режиме.

Инструкция:

  1. Откройте Администрирование серверов 1С:Предприятия (пуск → 1С Предприятие 8.3 → Администрирование серверов).
  2. Выберите ваш сервер и кластер.
  3. Перейдите в Информационные базы и выберите нужную.
  4. Нажмите Открыть консоль администратора.
  5. Введите команду для помечения (пример для документов ПоступлениеТоваров):
    выполнить-запрос "ВЫБРАТЬ ПоступлениеТоваров.Ссылка КАК Ссылка ИЗ Документ.ПоступлениеТоваров КАК ПоступлениеТоваров ГДЕ ПоступлениеТоваров.Дата < &ТекущаяДата - 365"

    Затем:

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

Предупреждения:

⚠️ Внимание: Команды в консоли администратора выполняются непосредственно на сервере и не проходят проверку на уровне прикладного решения. Ошибка в запросе может привести к помечению всех документов в базе, включая актуальные!

Когда использовать этот метод:

  • 🖥️ База слишком большая для обработки в пользовательском режиме.
  • 🔒 Нужно пометить документы, заблокированные другими сеансами.
  • ⚡ Требуется максимальная скорость (например, при миграции данных).

Типичные ошибки и как их избежать

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

1. Помечение связанных документов

Если документ имеет движения по регистрам (например, РеализацияТоваровУслуг формирует записи в РегистрНакопления.ТоварыНаСкладах), его удаление может нарушить связность данных. Перед помечением проверьте:

  • 🔗 Есть ли у документа проводки (в бухгалтерских конфигурациях).
  • 📦 Связан ли он с другими объектами (например, счетами, заказами).
  • 📈 Влияет ли на отчёты (например, Оборотно-сальдовая ведомость).

2. Игнорирование прав доступа

⚠️ Внимание: Если у вас нет роли Администратор или Полные права, массовое помечение может завершиться ошибкой "Отказано в доступе". В 1С:Управление торговлей для этой операции требуется право "Редактирование данных" с флагом "Удаление помеченных объектов".

3. Зависание при большом объёме данных

Если в выборке больше 50 000 документов, 1С может "подвисать" на этапе записи. Решения:

  • 📅 Разбейте операцию на части (например, помечайте документы помесячно).
  • ⏳ Используйте ОбменДанными.Загрузка = Истина; в коде.
  • 🖥️ Для серверных баз запускайте операцию в фоновом задании.

4. Помечение без резервной копии

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

  • 💾 Администрирование → Выгрузить информационную базу (для файлового варианта).
  • 🗄️ SQL-бэкап (для серверного варианта, через Microsoft SQL Server Management Studio).
  • ☁️ Облачный бэкап (если используете 1С:Fresh или 1С:ГИС).

FAQ: Ответы на частые вопросы

Можно ли отменить помечение на удаление для всех документов сразу?

Да, но только через запрос или обработку. Пример кода:

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

Результат = Запрос.Выполнить();

Выборка = Результат.Выбрать();

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

Выборка.Ссылка.ПометитьНаУдаление(Ложь);

КонецЦикла;

В некоторых конфигурациях (например, 1С:ERP) есть стандартная обработка "Снятие пометки удаления".

Почему после помечения документы не исчезают из списка?

Помеченные документы остаются в базе до выполнения операции "Удаление помеченных объектов". Чтобы их убрать:

  1. Закройте 1С у всех пользователей.
  2. Запустите Администрирование → Тестирование и исправление.
  3. Выберите "Удаление помеченных объектов" и нажмите Выполнить.

В клиент-серверном варианте это делается через Консоль администратора командой удалить-помеченные-объекты.

Как пометить документы по нескольким типам сразу (например, реализации и поступления)?

Стандартными средствами — невозможно. Используйте:

  • 🛠️ Универсальную обработку (например, "Массовое удаление документов" с Инфостарта).
  • 📝 Скрипт на встроенном языке с циклом по метаданным:
    Для Каждого ТипДокумента Из Метаданные.Документы Цикл
    

    Запрос = Новый Запрос("ВЫБРАТЬ Ссылка ИЗ Документ." + ТипДокумента.Имя);

    // ... помечение ...

    КонецЦикла;

Что будет, если пометить документ, по которому есть движения?

Это зависит от конфигурации:

  • 📉 В 1С:Бухгалтерии удаление документа с проводками приведёт к расхождению итогов (нужно перепровести документы за период).
  • 📦 В 1С:Управление торговлей могут "сбиться" остатки товаров на складах.
  • ⚠️ В 1С:Зарплата и управление персоналом удаление начислений зарплаты сделает невозможным формирование отчётности (например, 6-НДФЛ).

Перед помечением проверьте движения через отчёт "Анализ субконто" или "Карточка счёта".

Как ускорить помечение 100 000+ документов?

Для больших баз используйте:

  1. Пакетный режим:
    ОбменДанными.Загрузка = Истина;
    

    Для Каждого Документ Из МассивДокументов Цикл

    Документ.ПометитьНаУдаление();

    Если НЕ ОбменДанными.Загрузка Тогда

    Документ.Записать();

    КонецЕсли;

    КонецЦикла;

    ОбменДанными.Загрузка = Ложь;

  2. Фоновое задание (для серверных баз): создайте задание через Планы обмена.
  3. SQL-запрос (только для опытных администраторов!):
    UPDATE _1SJOURN SET POSTED = 0, MARKDELETION = 1 WHERE REF LIKE 'Документ.РеализацияТоваровУслуг%'
    ⚠️ Внимание: Прямые SQL-запросы к базе 1С могут нарушить её целостность! Используйте только если понимаете последствия.