Как программно удалить в 1С

В этой статье я покажу, как программно удалить объект  в 1С, а также как программно поставить пометку удаления.

В предыдущей статье, я рассказывал, как интерактивно удалять объекты в 1С, и что для этого нужно настроить в правах конфигурации:

Удаление в  1С

Удалить программно справочник в 1С

Для того чтобы программно удалить экземпляр справочника в 1С, необходимо воспользоваться методом Удалить  объекта справочника. Для демонстрации разберу пример: разместим на форме обработки реквизит с ссылкой на справочник Контрагенты.

Реквизит управляемой формы 1С

И при выполнении команды формы обработки, будем удалять этот экземпляр справочника.

&НаСервере
Процедура УдалитьКонтрагента() 
	КонтрагентОбъект = Контрагент.ПолучитьОбъект();
	КонтрагентОбъект.Удалить();
	Контрагент = Справочники.Контрагенты.ПустаяСсылка();
КонецПроцедуры

&НаКлиенте
Процедура Удалить(Команда)
	УдалитьКонтрагента();
КонецПроцедуры

В этом коде удаление экземпляра справочника я производил в серверном контексте. Сначала при помощи метода ПолучитьОбъект() из ссылки был получен экземпляр объекта справочника,  а  потом этот экземпляр удален при помощи метода Удалить(). В реквизит Контрагент управляемой формы я записал пустую ссылку, чтобы  отображение ссылки удаленного объекта не вводило в заблуждение.

Замечу, что программное удаление произошло при таких правах на объект.

Права на справочник 1С

Право «Интерактивное удаление» снято, то есть мы не можем непосредственно удалять  экземпляр этого объекта, но мы можем удалить его программно (благодаря установленному праву Удалить).

Замечу, что при программном удалении объекта контроль ссылочной целостности не происходит! Поэтом не следует злоупотреблять этой возможностью!

Удалить программно документ в 1С

Документ программно удаляется также как и справочник: нужно воспользоваться методом Удалить() экземпляра объекта документа. Например, на форме этой обработки я размещу реквизит с ссылкой на документ.

Реквизит управляемой формы 1С

 А при выполнении команды  документ будет удаляться.

&НаСервере
Процедура УдалитьДокумент() 
	ДокументОплата = Оплата.ПолучитьОбъект();
	ДокументОплата.Удалить();
	Оплата = Документы.Оплата.ПустаяСсылка();
КонецПроцедуры

&НаКлиенте
Процедура Удалить(Команда)	
	УдалитьДокумент();	
КонецПроцедуры

Как и в случае справочника, программное удаление документа стало возможным благодаря установленному праву «Удалить».

Права на документ 1С

Пометка на удаление программно в 1С

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

Для документов он имеет следующий синтаксис:  УстановитьПометкуУдаления(<ПометкаУдаления>), где параметр ПометкаУдаления имеет тип булево.

Если <ПометкаУдаления>  — Истина, то пометка будет установлена, если Ложь – пометка будет снята.

Переделаем предыдущий пример: на форме разместим две команды.

Команды на управляемой форме

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

&НаСервере
Процедура УстановитьНаСервере()
	ДокументОплата = Оплата.ПолучитьОбъект();
	ДокументОплата.УстановитьПометкуУдаления(Истина);
КонецПроцедуры

&НаКлиенте
Процедура Установить(Команда)
	УстановитьНаСервере();
КонецПроцедуры

&НаСервере
Процедура СнятьНаСервере()
	ДокументОплата = Оплата.ПолучитьОбъект();
	ДокументОплата.УстановитьПометкуУдаления(Ложь);
КонецПроцедуры

&НаКлиенте
Процедура Снять(Команда)
	СнятьНаСервере();
КонецПроцедуры

В этом коде, в процедуре УстановитьНаСервере() мы устанавливаем пометку на удаление, передав в метод УстановитьПометкуУдаления параметр Истина, а  в процедуре СнятьНаСервере() снимаем пометку, передав Ложь.

Для объектов справочников метод УстановитьПометкуУдаления имеет следующий синтаксис:

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

Параметр ВключаяПодчиненные имеет тип Булево, и если установлено Истина, то будут помечены на удаление подчиненные элементы (если справочник иерархический), а также все объекты подчиненного справочника (если есть).

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

Реквизиты и команды на управляемой форме 1С

В обработчиках команд будем устанавливать и снимать пометку на удаление.

&НаСервере
Процедура УстановитьНаСервере()
	КонтрагентОбъект = Контрагент.ПолучитьОбъект();
	КонтрагентОбъект.УстановитьПометкуУдаления(Истина,Подчиненные);
КонецПроцедуры

&НаКлиенте
Процедура Установить(Команда)
	УстановитьНаСервере();
КонецПроцедуры

&НаСервере
Процедура СнятьНаСервере()
	КонтрагентОбъект = Контрагент.ПолучитьОбъект();
	КонтрагентОбъект.УстановитьПометкуУдаления(Ложь,Подчиненные);
КонецПроцедуры

&НаКлиенте
Процедура Снять(Команда)
	СнятьНаСервере();
КонецПроцедуры

У справочника Контрагенты включим иерархию.

Иерархия справочника в 1С

И также сделаем подчиненный справочник.

Подчиненный справочник в 1С

Если мы установим пометку для группы с флажком подчиненные.

Пометка на удаление в 1С

То будет помечена группа и все входящие в неё объекты.

Пометка на удаление в 1С

А без установленного флага Подчиненные будет помечена только группа.

Пометка на удаление в 1С

Тоже самое с объектами из подчиненного справочника. При установленном флаге Подчиненные.

Пометка на удаление в 1С

Будет помечен на удаление и сам элемент справочника, и объекты подчиненного ему справочника.

Пометка на удаление в 1С

А иначе, будет помечен только сам элемент.

Пометка на удаление в 1С

Более подробно и основательно начальные вопросы программирования в 1С есть вы можете изучить в
Книга «Программировать в 1С за 11 шагов»

Изучайте программирование в 1С в месте с моей книгой «Программировать в 1С за 11 шагов»

Программировать в 1С за 11 шагов

Книга написана понятным и простым языком — для новичка.

  1. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  2. Научитесь понимать архитектуру 1С;
  3. Станете писать код на языке 1С;
  4. Освоите основные приемы программирования;
  5. Закрепите полученные знания при помощи задачника.

О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»

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

Основы разработки в 1С такси
  1. Очень доступный и понятный язык изложения
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Поймете идеологию управляемого приложения 1С
  4. Узнаете, как разрабатывать управляемое приложение;
  5. Научитесь разрабатывать управляемые формы 1С;
  6. Сможете работать с основными и нужными элементами управляемых форм
  7. Программирование под управляемым приложением станет понятным

Промо-код на скидку в 15% — 48PVXHeYu

Эти книги, плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.
Только для читателей моего блога,
промо-код на скидку в 300 рублей на весь комплект: blog


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

можно оплатить вручную:

Яндекс.Деньги — 410012882996301
Web Money — R955262494655

Вступайте в мои группы:

Вконтакте: https://vk.com/1c_prosto
Фейсбуке: https://www.facebook.com/groups/922972144448119/
ОК: http://ok.ru/group/52970839015518
Твиттер: https://twitter.com/signum2009

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

19 + девятнадцать =