Работа с большими объемами данных в 1С:Предприятие часто требует массовых операций — например, когда нужно очистить базу от устаревших документов перед архивацией или миграцией. Ручное помечение каждого документа на удаление может занять часы, а то и дни. К счастью, в платформе 1С 8.3 есть несколько способов автоматизировать этот процесс: от стандартных инструментов до программного кода.
В этой статье мы разберём 5 рабочих методов, как пометить все документы на удаление — от простых (доступных даже начинающим пользователям) до продвинутых (для администраторов и разработчиков). Вы узнаете, какие нюансы важно учесть перед массовым удалением, как избежать ошибок при работе с помеченными объектами, и что делать, если система вдруг "зависла" во время операции. А в конце статьи — ответы на частые вопросы и предупреждения о типичных ловушках.
Прежде чем приступать к массовому помечению, убедитесь, что у вас есть резервная копия базы — это правило №1 при любых групповых операциях в 1С. Также проверьте, не заблокированы ли документы другими пользователями (особенно актуально для клиент-серверного варианта работы).
1. Стандартный способ: через журнал документов
Самый простой метод — использовать встроенный функционал 1С:Предприятие. Он не требует знаний программирования и подходит для большинства типовых конфигураций (Бухгалтерия 3.0, Управление торговлей 11, Зарплата и управление персоналом 3.1 и др.).
Инструкция:
- 📄 Откройте журнал документов, которые нужно пометить (например,
Продажи → Реализация товаров и услуг). - 🔍 Включите отбор по дате или другим критериям (например,
Дата < ТекущаяДата() - 365для документов старше года). - 📋 Нажмите
Ещё → Пометить на удаление(в некоторых конфигурациях пункт может называтьсяДействия → Пометить на удаление). - ✅ Подтвердите операцию в диалоговом окне.
Ограничения метода:
- ⚠️ Работает только с документами одного типа (нельзя одновременно пометить реализации и поступления).
- ⚠️ В больших базах может зависнуть на этапе обработки — если документов больше 10 000, лучше использовать другие способы.
- ⚠️ Не все конфигурации поддерживают массовое помечение через журнал (например, в 1С:Розница 2.3 этот пункт может отсутствовать).
Создать резервную копию базы|Закрыть 1С у всех пользователей|Проверить права доступа (нужна роль "Администратор")|Отключить регламентные задания
-->
2. Через обработку "Групповое изменение реквизитов"
Если стандартный способ не сработал или вам нужно более гибкое управление, воспользуйтесь универсальной обработкой Групповое изменение реквизитов. Она есть в большинстве типовых конфигураций и позволяет помечать документы по сложным условиям.
Как найти обработку:
- 🔧 В меню
Все функции(включается черезСервис → Параметры → Отображать команду "Все функции"). - 🔍 Введите в поиске
Групповое изменение реквизитов. - 📂 Или найдите в папке
Обработки(путь может отличаться в зависимости от конфигурации).
Пошаговая инструкция:
- Выберите тип объекта (например,
Документ.РеализацияТоваровУслуг). - Установите отбор (например, по дате, контрагенту или статусу).
- В поле
ДействиевыберитеПометить на удаление. - Нажмите
Выполнитьи дождитесь завершения операции.
Преимущества метода:
- 🎯 Можно использовать сложные условия отбора (например, документы конкретного менеджера за определённый период).
- 📊 Поддерживает предварительный просмотр списка документов перед помечением.
- ⚡ Быстрее, чем ручное помечение через журнал (особенно при работе с 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С Предприятие 8.3 → Администрирование серверов). - Выберите ваш сервер и кластер.
- Перейдите в
Информационные базыи выберите нужную. - Нажмите
Открыть консоль администратора. - Введите команду для помечения (пример для документов
ПоступлениеТоваров):выполнить-запрос "ВЫБРАТЬ ПоступлениеТоваров.Ссылка КАК Ссылка ИЗ Документ.ПоступлениеТоваров КАК ПоступлениеТоваров ГДЕ ПоступлениеТоваров.Дата < &ТекущаяДата - 365"Затем:
пометить-на-удаление результат-запроса
Предупреждения:
⚠️ Внимание: Команды в консоли администратора выполняются непосредственно на сервере и не проходят проверку на уровне прикладного решения. Ошибка в запросе может привести к помечению всех документов в базе, включая актуальные!
Когда использовать этот метод:
- 🖥️ База слишком большая для обработки в пользовательском режиме.
- 🔒 Нужно пометить документы, заблокированные другими сеансами.
- ⚡ Требуется максимальная скорость (например, при миграции данных).
Типичные ошибки и как их избежать
Даже опытные пользователи 1С сталкиваются с проблемами при массовом помечении документов. Вот самые критичные ошибки, которые могут привести к потере данных или сбою базы:
1. Помечение связанных документов
Если документ имеет движения по регистрам (например, РеализацияТоваровУслуг формирует записи в РегистрНакопления.ТоварыНаСкладах), его удаление может нарушить связность данных. Перед помечением проверьте:
- 🔗 Есть ли у документа проводки (в бухгалтерских конфигурациях).
- 📦 Связан ли он с другими объектами (например, счетами, заказами).
- 📈 Влияет ли на отчёты (например,
Оборотно-сальдовая ведомость).
2. Игнорирование прав доступа
⚠️ Внимание: Если у вас нет ролиАдминистраторилиПолные права, массовое помечение может завершиться ошибкой"Отказано в доступе". В 1С:Управление торговлей для этой операции требуется право"Редактирование данных"с флагом"Удаление помеченных объектов".
3. Зависание при большом объёме данных
Если в выборке больше 50 000 документов, 1С может "подвисать" на этапе записи. Решения:
- 📅 Разбейте операцию на части (например, помечайте документы помесячно).
- ⏳ Используйте
ОбменДанными.Загрузка = Истина;в коде. - 🖥️ Для серверных баз запускайте операцию в фоновом задании.
4. Помечение без резервной копии
Без бэкапа массовое удаление документов — это как игра в русскую рулетку с вашей базой. Даже если вы уверены в своих действиях, всегда делайте резервную копию через:
- 💾
Администрирование → Выгрузить информационную базу(для файлового варианта). - 🗄️
SQL-бэкап(для серверного варианта, через Microsoft SQL Server Management Studio). - ☁️ Облачный бэкап (если используете 1С:Fresh или 1С:ГИС).
FAQ: Ответы на частые вопросы
Можно ли отменить помечение на удаление для всех документов сразу?
Да, но только через запрос или обработку. Пример кода:
Запрос = Новый Запрос("ВЫБРАТЬ Ссылка ИЗ Документ.РеализацияТоваровУслуг ГДЕ ПометкаУдаления = ИСТИНА");
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
Выборка.Ссылка.ПометитьНаУдаление(Ложь);
КонецЦикла;
В некоторых конфигурациях (например, 1С:ERP) есть стандартная обработка "Снятие пометки удаления".
Почему после помечения документы не исчезают из списка?
Помеченные документы остаются в базе до выполнения операции "Удаление помеченных объектов". Чтобы их убрать:
- Закройте 1С у всех пользователей.
- Запустите
Администрирование → Тестирование и исправление. - Выберите
"Удаление помеченных объектов"и нажмитеВыполнить.
В клиент-серверном варианте это делается через Консоль администратора командой удалить-помеченные-объекты.
Как пометить документы по нескольким типам сразу (например, реализации и поступления)?
Стандартными средствами — невозможно. Используйте:
- 🛠️ Универсальную обработку (например, "Массовое удаление документов" с Инфостарта).
- 📝 Скрипт на встроенном языке с циклом по метаданным:
Для Каждого ТипДокумента Из Метаданные.Документы ЦиклЗапрос = Новый Запрос("ВЫБРАТЬ Ссылка ИЗ Документ." + ТипДокумента.Имя);
// ... помечение ...
КонецЦикла;
Что будет, если пометить документ, по которому есть движения?
Это зависит от конфигурации:
- 📉 В 1С:Бухгалтерии удаление документа с проводками приведёт к расхождению итогов (нужно перепровести документы за период).
- 📦 В 1С:Управление торговлей могут "сбиться" остатки товаров на складах.
- ⚠️ В 1С:Зарплата и управление персоналом удаление начислений зарплаты сделает невозможным формирование отчётности (например,
6-НДФЛ).
Перед помечением проверьте движения через отчёт "Анализ субконто" или "Карточка счёта".
Как ускорить помечение 100 000+ документов?
Для больших баз используйте:
- Пакетный режим:
ОбменДанными.Загрузка = Истина;Для Каждого Документ Из МассивДокументов Цикл
Документ.ПометитьНаУдаление();
Если НЕ ОбменДанными.Загрузка Тогда
Документ.Записать();
КонецЕсли;
КонецЦикла;
ОбменДанными.Загрузка = Ложь;
- Фоновое задание (для серверных баз): создайте задание через
Планы обмена. - SQL-запрос (только для опытных администраторов!):
UPDATE _1SJOURN SET POSTED = 0, MARKDELETION = 1 WHERE REF LIKE 'Документ.РеализацияТоваровУслуг%'⚠️ Внимание: Прямые SQL-запросы к базе 1С могут нарушить её целостность! Используйте только если понимаете последствия.