Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Удаление подчинённых объектов          
Bon Jovi Подменю пользователя
сообщение 18.05.20, 15:06
Сообщение #1

Общительный
**
Группа: Пользователи
Сообщений: 13
Спасибо сказали: 1 раз
Рейтинг: 1

Конфигурация: Trade (10.3.29.1) (http://v8.1c.ru/trade/), версия: 8.3.11.2867, обычные формы.
Добрый день. Подскажите пожалуйста. У меня есть справочник ЗначенияХарактеристик, также есть справочник Характеристики (который в свою очередь является владельцем справочника ЗначенияХарактеристик). Сделал обработку, с помощью которой я могу выбрать характеристику и удалить (пометить на удаление) её и её значения (пометить на удаление в справочнике ЗначенияХарактеристик и также очистить записи по нужным регистрам). Появилась нужда доработать обработку таким способом, чтобы можно было выбрать характеристику и удалить (пометить) только её значения, а саму характеристику не трогать. Раньше удалял (помечал) характеристики таким способом:
УдаляемаяХарактеристика = Выборка.Характеристика.ПолучитьОбъект();
УдаляемаяХарактеристика.УстановитьПометкуУдаления(Истина, Истина);
УдаляемаяХарактеристика.Записать();


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


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

В таком случае пометок вообще нет.

denis84 Подменю пользователя
сообщение 19.05.20, 7:38
Сообщение #2

Завсегдатай
****
Группа: Пользователи
Сообщений: 101
Из: Украина
Спасибо сказали: 28 раз
Рейтинг: 28

Bon Jovi @ Вчера, 16:06 * ,
Добрый день! Если правильно понял Вас, то вот такие варианты:

Вариант 1:

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

Выборка = Справочники.ЗначенияХарактеристики.Выбрать( , Характеристика);

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

    УдаляемоеЗначение = Выборка.Значение.ПолучитьОбъект();
    УдаляемоеЗначение.УстановитьПометкуУдаления(Истина);
    УдаляемоеЗначение.Записать();

КонецЦикла;

Вариант 2:

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

Запрос.Текст = "ВЫБРАТЬ

    |    ЗначенияХарактеристики.Ссылка

    |ИЗ

    |    Справочник.ЗначенияХарактеристики КАК ЗначенияХарактеристики

    |ГДЕ

    |    ЗначенияХарактеристики.Владелец = &Владелец";

Запрос.УстановитьПараметр("Владелец", Характеристика);

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

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

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

    УдаляемоеЗначение = Выборка.Значение.ПолучитьОбъект();
    УдаляемоеЗначение.УстановитьПометкуУдаления(Истина);
    УдаляемоеЗначение.Записать();

КонецЦикла;

Спасибо сказали: Bon Jovi,

Bon Jovi Подменю пользователя
сообщение 19.05.20, 9:26
Сообщение #3

Общительный
**
Группа: Пользователи
Сообщений: 13
Спасибо сказали: 1 раз
Рейтинг: 1

denis84 @ Сегодня, 8:38 * ,

Спасибо большое за ответ. Пришёл к тому, что достаточно просто почистить РС на основании которого заполняются данные характеристик в форме элемента характеристики, а значения характеристик (в справочнике) нисколько не мешают, поэтому и помечать их на удаление нет смысла. Но и Вы и я были правы, как удаляются элементы с помощью метода
УстановитьПометкуУдаления
.

denis84 Подменю пользователя
сообщение 19.05.20, 10:00
Сообщение #4

Завсегдатай
****
Группа: Пользователи
Сообщений: 101
Из: Украина
Спасибо сказали: 28 раз
Рейтинг: 28

Цитата(denis84 @ 19.05.20, 8:38) *
УдаляемоеЗначение = Выборка.Значение.ПолучитьОбъект();

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

Выборка = Справочники.ЗначенияХарактеристики.Выбрать( , Характеристика);

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

    УдаляемоеЗначение = Выборка.ПолучитьОбъект();
    УдаляемоеЗначение.УстановитьПометкуУдаления(Истина);
    УдаляемоеЗначение.Записать();

КонецЦикла;


"Значение" - здесь лишнее. Не внимателен был!

Bon Jovi Подменю пользователя
сообщение 20.05.20, 10:15
Сообщение #5

Общительный
**
Группа: Пользователи
Сообщений: 13
Спасибо сказали: 1 раз
Рейтинг: 1

denis84 @ Вчера, 11:00 * ,

Я получаю значения со своего запроса. Просто ваше решение совпало, от части, с моим.

"ВЫБРАТЬ
    |    мд_ЗначенияХарактеристикНоменклатуры.Номенклатура КАК Номенклатура,
    |    мд_ЗначенияХарактеристикНоменклатуры.Характеристика КАК Характеристика,
    |    мд_ЗначенияХарактеристикНоменклатуры.Значение КАК Значение,
    |    мд_ЗначенияХарактеристикНоменклатуры.Номенклатура.НоменклатурнаяГруппа КАК НоменклатурнаяГруппа
    |ИЗ
    |    РегистрСведений.мд_ЗначенияХарактеристикНоменклатуры КАК мд_ЗначенияХарактеристикНоменклатуры
    |ГДЕ
    |    мд_ЗначенияХарактеристикНоменклатуры.Номенклатура.НоменклатурнаяГруппа = &НоменклатурнаяГруппа";

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 06.06.20, 6:50
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!