> Удаление подчинённых объектов

1. Jovi 18.05.20 16:07 Сейчас в теме
Добрый день. Подскажите пожалуйста. У меня есть справочник ЗначенияХарактеристик, также есть справочник Характеристики (который в свою очередь является владельцем справочника ЗначенияХарактеристик). Сделал обработку, с помощью которой я могу выбрать характеристику и удалить (пометить на удаление) её и её значения (пометить на удаление в справочнике ЗначенияХарактеристик и также очистить записи по нужным регистрам). Появилась нужда доработать обработку таким способом, чтобы можно было выбрать характеристику и удалить (пометить) только её значения, а саму характеристику не трогать. Раньше удалял (помечал) характеристики таким способом:
УдаляемаяХарактеристика = Выборка.Характеристика.ПолучитьОбъект();
УдаляемаяХарактеристика.УстановитьПометкуУдаления(Истина, Истина);
УдаляемаяХарактеристика.Записать();


Теперь, когда пытаюсь удалить (пометить) значения характеристики с помощью похожей конструкции:
УдаляемоеЗначение = Выборка.Значение.ПолучитьОбъект();
УдаляемоеЗначение.УстановитьПометкуУдаления(Истина);
УдаляемоеЗначение.Записать();


Элемент значения характеристик помечается, но связь между ним и характеристикой всё же остаётся, так как при повторном добавлении через обработку такого же значения той же характеристики, значение не добавляется, так как в базе он есть, но он помечен и в этом загвоздка. Пробовал так:
УдаляемаяХарактеристика = Выборка.Характеристика.ПолучитьОбъект();
УдаляемаяХарактеристика.УстановитьПометкуУдаления(Ложь, Истина);
УдаляемаяХарактеристика.Записать();

В таком случае пометок вообще нет.
По теме из базы знаний
Найденные решения
7. Jovi 19.05.20 10:28 Сейчас в теме
(6) Спасибо большое за ответ. Пришёл к тому, что достаточно просто почистить РС на основании которого заполняются данные характеристик в форме элемента характеристики, а значения характеристик (в справочнике) нисколько не мешают, поэтому и помечать их на удаление нет смысла. Но в моём случае с помощью метода
УдаляемоеЗначение = Выборка.Значение.ПолучитьОбъект();
УдаляемоеЗначение.УстановитьПометкуУдаления(Истина);

можно было бы правильно пометить на удаление элементы.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user1357043 18.05.20 16:41 Сейчас в теме
А почему должна разрываться связь между значением и характеристикой? вы ведь этого нигде не прописываете. Пометка удаления никак не влияет на другие реквизиты объекта.
3. Jovi 18.05.20 16:44 Сейчас в теме
(2) Вот я об этом же. Как мне пометить на удаление значение справочника ЗначенияХарактеристик, при этом не трогая характеристику саму?

Почитав синтаксис, я подумал что с помощью такой конструкции получится, но нет.
УдаляемаяХарактеристика = Выборка.Характеристика.ПолучитьОбъект();
УдаляемаяХарактеристика.УстановитьПометкуУдаления(Ложь, Истина);
УдаляемаяХарактеристика.Записать();
4. user1357043 18.05.20 16:46 Сейчас в теме
(3)у значения характеристик должен быть владелец. соответственно, отобрать элементы по владельцу и установить пометку.
Или я задачу не понимаю до конца...
5. Jovi 18.05.20 17:02 Сейчас в теме
(4) Владельцем значений характеристик является справочник Характеристики. Когда я применяю метод
УстановитьПометкуУдаления
(по синтаксису) первый параметр отвечает за пометку самого объекта (характеристики), а второй параметр за пометку его подчиненного элемента (то есть значения характеристики). Поэтому этот метод отлично справляется с задачей удаление характеристик и их значений. Но мне нужно теперь разработать функционал, с помощью которого смогу удалять только значения характеристик, саму характеристику оставляю без изменений. То есть вариант с
УдаляемаяХарактеристика.УстановитьПометкуУдаления(Ложь, Истина);
логичнее всего. Но он не работает. Видимо я ещё что то не знаю.
6. VictorRGB2 14 18.05.20 18:53 Сейчас в теме
(5) если не привязываться к УстановитьПометкуУдаления
получаем характеристики и значения, дальше обрабатываем только значения, помечая их на удаление
можно через выборку запроса, можно через цикл, можно через простую выборку справочника
смысл в том что, получив Характеристику, можно получить все элементы подчиненного справочника ЗначенияХарактеристики и пометить их на удаление

например, как-то так
Выборка_1 = Справочники.Характеристики.Выбрать();
Пока Выборка_1.Следующий() Цикл
	Выборка_2 = Справочники.ЗначенияХарактеристик.Выбрать(, Выборка_1.Ссылка);
	Пока Выборка_2.Следующий() Цикл
		Объект = Выборка_2.Ссылка.ПолучитьОбъект();
		Объект.ПометкаУдаления = Истина;
		Объект.Записать();
	КонецЦикла;	
КонецЦикла;
Показать
7. Jovi 19.05.20 10:28 Сейчас в теме
(6) Спасибо большое за ответ. Пришёл к тому, что достаточно просто почистить РС на основании которого заполняются данные характеристик в форме элемента характеристики, а значения характеристик (в справочнике) нисколько не мешают, поэтому и помечать их на удаление нет смысла. Но в моём случае с помощью метода
УдаляемоеЗначение = Выборка.Значение.ПолучитьОбъект();
УдаляемоеЗначение.УстановитьПометкуУдаления(Истина);

можно было бы правильно пометить на удаление элементы.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот