ДокументОбъект.<Имя документа>.УстановитьПометкуУдаления

Методы · SetDeletionMark

Устанавливает/снимет пометку на удаление документа. Документ при этом не удаляется из базы данных. Окончательное удаление помеченных документов происходит при удалении помеченных объектов.

Синтаксис

УстановитьПометкуУдаления(<ПометкаУдаления>)

Примеры платформы

Если СписокУдаляемых.НайтиПоЗначению(РасходнаяНакладная.Номер) Тогда
    РасходнаяНакладная.УстановитьПометкуУдаления(Истина);
КонецЕсли;
Полное описание, параметры и ограничения

ДокументОбъект.<Имя документа>.УстановитьПометкуУдаления (DocumentObject.<Document name>.SetDeletionMark)

ДокументОбъект.<Имя документа> (DocumentObject.<Document name>)

УстановитьПометкуУдаления (SetDeletionMark)

Доступен, начиная с версии 8.0.

Синтаксис:
УстановитьПометкуУдаления(<ПометкаУдаления>)
Параметры:

<ПометкаУдаления> (обязательный)
Тип: Булево.
Признак установки / снятие пометки на удаление.
Истина - пометка будет установлена; Ложь - пометка будет снята.
Описание:

Устанавливает/снимет пометку на удаление документа. Документ при этом не удаляется из базы данных. Окончательное удаление помеченных документов происходит при удалении помеченных объектов.

Доступность:

Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер), мобильный автономный сервер.

Примечание:
Если документ проведен, применение метода приводит к отмене проведения.
Если объект модифицирован, то выполнение метода вызывает исключение.
Пример:

Если СписокУдаляемых.НайтиПоЗначению(РасходнаяНакладная.Номер) Тогда
РасходнаяНакладная.УстановитьПометкуУдаления(Истина);
КонецЕсли;

Использование в версии:

Доступен, начиная с версии 8.0.

Методическая информация

Практические примеры

Установить и снять пометку только у своей новой непроведённой заявки

Пометка меняет состояние своей записи, но не удаляет её. Перед установкой проверяются отсутствие локальных правок и проведения; всё создание и изменение отменяется.

Где и как запускать

Полный серверный модуль новой собственной Учебная85, точная 8.5.1.1343. Непроводимая заявка; временные собственные записи только с отменой транзакции. Код здесь не запускался.

Подготовка

  1. Создайте НОВУЮ пустую файловую учебную базу, не копию рабочего каталога. В Конфигураторе задайте корню имя Учебная85. Не добавляйте эти объекты в рабочую УТ/КА2/УНФ/БП.

  2. Справочники → Добавить: имя УчебныеТовары. Длина кода 10, тип кода Строка, автонумерация и контроль уникальности включены, длина наименования 100.

  3. Для УчебныеТовары включите иерархию групп и элементов. Добавьте реквизиты Артикул (Строка, длина 20) и Цена (Число, 12 цифр, 2 дробных, неотрицательное). Проверка заполнения для этих учебных реквизитов не устанавливается.

  4. Добавьте табличную часть Штрихкоды: Штрихкод (Строка, длина 20) и Основной (Булево). Обновите конфигурацию базы данных. Модули объектов оставьте пустыми.

  5. Документы → Добавить: имя УчебнаяЗаявка, тип номера Строка, длина 9, автонумерация включена. Проведение запретите: это только учебный документ без движений.

  6. Добавьте реквизит Комментарий (Строка, длина 100) и табличную часть Товары: Товар (СправочникСсылка.УчебныеТовары), Количество (Число, 9 цифр, 0 дробных, неотрицательное), Цена (Число, 12 цифр, 2 дробных, неотрицательное). Модуль документа пустой.

  7. Обновите конфигурацию базы данных. Эти имена существуют только в созданной учебной конфигурации, не подразумеваются в типовой базе.

  8. У своего документа и товара модули пустые, подписок, расширений и внешних обработчиков нет. История данных выключена; проведение УчебнаяЗаявка запрещено, движения/регистры не создаются.

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

  10. Свойства ссылки readonly. Непустой UUID/ссылка не означает наличие записи, а ВерсияДанных — непрозрачная строка, не номер документа или версия конфигурации.

  11. Примеры здесь не запускались в 1С. Только код и установленная справка 8.5.1.1343; ваши документы не создавались, не проводились и не удалялись.

  12. Создайте серверный общий модуль УчебныеСсылкиДокументов и вставьте весь модуль одного урока. ВыполнитьПример() Экспорт вызывайте из своей процедуры формы с &НаСервереБезКонтекста; обновите конфигурацию БД.

  13. Для этого блока корень Учебная85, единственный справочник УчебныеТовары, единственный непроводимый документ УчебнаяЗаявка; регистров нет. Модули объекта/менеджера и подписки пустые, история выключена, расширений, обменов и фоновых заданий нет.

  14. Запускайте полный модуль одного урока отдельно, единственным пользователем. Нельзя заменять проверки имени/схемы рабочими объектами или передавать документ, найденный по первой строке.

  15. Уроки с записью/пометкой/удалением сами создают новый товар и новую заявку внутри своей транзакции, отслеживают только их ссылки и отменяют всё при успехе/ошибке. Фиксации нет; не вызывайте их внутри чужой транзакции.

  16. Уроки черновика/времени/макета вообще не записывают документы. Все помощники и подготовленные данные предоставлены в полном модуле, внешняя библиотека не нужна.

  17. Прямое Удалить не проверяет ссылочную целостность; откат учебной транзакции не делает этот метод безопасным для рабочего документа. Допустима только своя новая пустая база без внешних обработчиков. Здесь 1С не запускалась.

Процедура ВыполнитьПример() Экспорт
    
    Если Метаданные.Справочники.Найти("УчебныеТовары") = Неопределено Тогда
        ВызватьИсключение "Сначала создайте учебный справочник по подготовке";
    КонецЕсли;
    Если Метаданные.Документы.Найти("УчебнаяЗаявка") = Неопределено Тогда
        ВызватьИсключение "Сначала подготовьте собственную УчебнаяЗаявка";
    КонецЕсли;
    Если Метаданные.Справочники.Количество() <> 1
        Или Метаданные.Документы.Количество() <> 1
        Или Метаданные.РегистрыНакопления.Количество() <> 0
        Или Метаданные.РегистрыСведений.Количество() <> 0
        Или Метаданные.РегистрыБухгалтерии.Количество() <> 0 Тогда
        ВызватьИсключение "Нужны только собственные товар и непроводимая заявка, без регистров";
    КонецЕсли;
    Если ТранзакцияАктивна() Тогда
        ВызватьИсключение "Не запускайте урок внутри чужой транзакции";
    КонецЕсли;
    СозданныеСсылки = Новый Массив;
    НачатьТранзакцию();
    Попытка
        Товар = Справочники.УчебныеТовары.СоздатьЭлемент();
        Товар.Наименование = "Собственная книга заявки";
        Товар.Артикул = "DOC-OWN-01";
        Товар.Цена = 250;
        Товар.УстановитьНовыйКод("У");
        Товар.Записать();
        СозданныеСсылки.Добавить(Товар.Ссылка);
        Заявка = Документы.УчебнаяЗаявка.СоздатьДокумент();
        Заявка.Дата = Дата(2026, 10, 6, 12, 0, 0);
        Заявка.Комментарий = "Собственный источник копии";
        Первая = Заявка.Товары.Добавить();
        Первая.Товар = Товар.Ссылка;
        Первая.Количество = 3;
        Первая.Цена = 250;
        Вторая = Заявка.Товары.Добавить();
        Вторая.Товар = Товар.Ссылка;
        Вторая.Количество = 1;
        Вторая.Цена = 50;
        Заявка.УстановитьНовыйНомер("У");
        Заявка.Записать(РежимЗаписиДокумента.Запись);
        СозданныеСсылки.Добавить(Заявка.Ссылка);
        Читаемая = Заявка.Ссылка;
        Объект = Читаемая.ПолучитьОбъект();
        Если Объект = Неопределено Или Объект.Ссылка <> СозданныеСсылки.Получить(1) Тогда
            ВызватьИсключение "Разрешена только собственная заявка этого запуска";
        КонецЕсли;
        Если Объект.Модифицированность() Или Объект.Проведен Тогда
            ВызватьИсключение "Нужна немодифицированная непроведённая собственная запись";
        КонецЕсли;
        Объект.УстановитьПометкуУдаления(Истина);
        ПослеПометки = Читаемая.ПолучитьОбъект();
        Если ПослеПометки = Неопределено Тогда
            ВызватьИсключение "Пометка не должна немедленно удалять собственную запись";
        КонецЕсли;
        Сообщить(ПослеПометки.ПометкаУдаления);
        Сообщить(ПослеПометки.Товары.Количество() = 2);
        Сообщить(ПослеПометки.Товары.Получить(0).Количество = 3);
        Если ПослеПометки.Модифицированность() Тогда
            ВызватьИсключение "Нельзя снимать пометку у локально изменённого объекта";
        КонецЕсли;
        ПослеПометки.УстановитьПометкуУдаления(Ложь);
        ПослеСнятия = Читаемая.ПолучитьОбъект();
        Если ПослеСнятия = Неопределено Тогда
            ВызватьИсключение "Собственная запись после снятия пометки отсутствует";
        КонецЕсли;
        Сообщить(Не ПослеСнятия.ПометкаУдаления);
        Сообщить(Не ПослеСнятия.Проведен);
        Сообщить("Обе операции касались только новой собственной записи и будут отменены");
        ОтменитьТранзакцию();
    Исключение
        Если ТранзакцияАктивна() Тогда
            ОтменитьТранзакцию();
        КонецЕсли;
        ВызватьИсключение;
    КонецПопытки;
    Сообщить(Не ТранзакцияАктивна());
    Для Каждого СозданнаяСсылка Из СозданныеСсылки Цикл
        Сообщить(СозданнаяСсылка.ПолучитьОбъект() = Неопределено);
    КонецЦикла;
КонецПроцедуры

Разбор по шагам

  1. Создать собственную заявку внутри своей транзакции и сохранить её ссылку в отслеживаемом списке.

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

  3. Перед пометкой исключить Модифицированность и Проведен: модифицированный объект недопустим, проведение при пометке было бы отменено.

  4. УстановитьПометкуУдаления(Истина), затем получить существующий объект по своей ссылке и проверить флаг/сохранность строк.

  5. Для снятия взять свежий немодифицированный объект, вызвать с Ложь и повторно прочитать запись.

  6. Подтвердить отсутствие пометки и проведения; отменить все собственные записи без фиксации.

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

  1. После установки своя запись существует, пометка Истина, две строки и первая с количеством 3.

  2. После снятия пометка Ложь, проведение Ложь.

  3. Код напрямую Удалить не вызывает.

  4. После общего отката обе свои записи отсутствуют.

Ожидаемый результат

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

На что обратить внимание

  1. Непустая ссылка не доказывает существование записи; плановую ссылку не читать как сохранённый документ.

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

  3. Заблокирован относится к блокировке именно этим объектом языка; это не общий индикатор всех блокировок записи. Собственную явную блокировку освобождайте отдельно, не рассчитывайте только на откат.

  4. Пометка не удаляет запись, а прямое Удалить удаляет сразу без проверки ссылок. Если документ проведён, установка пометки отменяет проведение; модифицированный объект перед пометкой вызывает ошибку.

  5. Статические проверки по справке и тексты контрольных условий не являются выполнением BSL в 1С.

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

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.