Делаю внешнюю обработку, которая при выборе доп. реквизита (например: цвет) должна очистить его значение (например: черный) во всех карточках номенклатуры. Разобрался как удалить сам реквизит и само значение реквизита из плана вида характеристик. Но нужно чтобы при выборе доп. реквизита удалялся не сам реквизит, а только строка в карточке номенклатуры, т.е. допустим присваивалось пустое значение. Не знаю как это сделать. Прошу помощи!
---
```1c
    Процедура ВыбратьНаСервере()

    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | НоменклатураДополнительныеРеквизиты.Ссылка КАК НоменклатураСсылка
    |ИЗ
    | Справочник.Номенклатура.ДополнительныеРеквизиты КАК НоменклатураДополнительныеРеквизиты
    |ГДЕ
    | НоменклатураДополнительныеРеквизиты.Значение = &Значение";
    Запрос.УстановитьПараметр("Значение", Объект.ДопРеквизит);

    Выборка = Запрос.Выполнить().Выбрать();
    Если Выборка.Следующий()Тогда
    НоменклатураОбъект = Выборка.Ссылка.ПолучитьОбъект();
    МассивДР = НоменклатураОбъект.ДополнительныеРеквизиты.НайтиСтроки(Новый Структура("Значение", Объект.ДопРеквизит)); //можно просто Найти использовать или в цикле перебрать, тут уж как удобнее
    стрДР = МассивДР[0]; //Исходим из того, что строка одна
    СтрДР.Удалить(); //Если надо удалить всю строку с ДР
    //СтрДР.Значение = "; //если просто очистить значение
    КонецЕсли;

    КонецПроцедуры
```
---
В запросе первой строкой получить ссылку на элемент справочника Номенклатура - в результах запроса получить объект надо именно этой ссылки, потом найти в табличной части ДополнительныеРеквизиты строку с нужным доп. рекизитом, и или удалить её или очистить значение, после чего записать номенклатуру (если бы код был представлен в виде текста, а не картинки, показал бы код, а набирать всё честно говоря лень)
---
```1c
    Процедура ВыбратьНаСервере()

    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | НоменклатураДополнительныеРеквизиты.Значение.Наименование КАК ЗначениеНаименование
    |ИЗ
    | Справочник.Номенклатура.ДополнительныеРеквизиты КАК НоменклатураДополнительныеРеквизиты
    |ГДЕ
    | НоменклатураДополнительныеРеквизиты.Значение = &Значение";
    Запрос.УстановитьПараметр("Значение", Объект.ДопРеквизит);

    РезультатЗапроса = Запрос.Выполнить();
    Если Не РезультатЗапроса.Пустой() Тогда

    Выборка = РезультатЗапроса.Выбрать();
    Пока Выборка.Следующий() Цикл
    Реквизит = Выборка.Ссылка.ПолучитьОбъект();
    Реквизит.Удалить();

    КонецЦикла;
    КонецЕсли;

    КонецПроцедуры
```

Вот код) помогите разобраться пожалуйста
---
Сам-то разобрался чего написал? Или нам это надо?
Тебе надо удалить весь элемент, или какую-то строку из его табличной части?

Киров, ну ёпрст!
---
строку
---
Тогда расскажи нам - зачем тут ПолучитьОбъект()? И тут же его весь удалить...

Прав был Николай Морилов (зам из кировского Коммунэнерго), когда на мою просьбу поднять зарплату, сказал: "Все умные из Кирова давно уехали, а дуракам платить никто не собирается".
Через 3 недели я работал на швейцарском заводе в Костромской области. С повышением ЗП почти в 3 раза.
---
```1c
    Процедура ВыбратьНаСервере()

    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | НоменклатураДополнительныеРеквизиты.Ссылка КАК НоменклатураСсылка
    |ИЗ
    | Справочник.Номенклатура.ДополнительныеРеквизиты КАК НоменклатураДополнительныеРеквизиты
    |ГДЕ
    | НоменклатураДополнительныеРеквизиты.Значение = &Значение";
    Запрос.УстановитьПараметр("Значение", Объект.ДопРеквизит);

    Выборка = Запрос.Выполнить().Выбрать();
    Если Выборка.Следующий()Тогда
    НоменклатураОбъект = Выборка.Ссылка.ПолучитьОбъект();
    МассивДР = НоменклатураОбъект.ДополнительныеРеквизиты.НайтиСтроки(Новый Структура("Значение", Объект.ДопРеквизит)); //можно просто Найти использовать или в цикле перебрать, тут уж как удобнее
    стрДР = МассивДР[0]; //Исходим из того, что строка одна
    СтрДР.Удалить(); //Если надо удалить всю строку с ДР
    //СтрДР.Значение = "; //если просто очистить значение
    КонецЕсли;

    КонецПроцедуры
```
---
1. В запросе свойство тоже надо описывать в "Где"
2. Получив массив допреквизитов, лучше обойти их с конца вперёд в цикле, удаляя каждую строку.
Ибо действительно, строк может быть более одной.
Перестраховка не помешает.
---
В запросе свойство тоже надо описывать в "Где" - Добавить в запрос ещё одно условие для отбора конкретного свойства можно, почему нет? Но, стесняюсь спросить, а кому это "надо"? Вы считаете табличной части "Дополнительные реквизиты" могут быть повторяющиеся значения разных свойств? Нет, я конечно понимаю, что может быть несколько разных дополнительных реквизитов типа "Цвет утром", "Цвет вечером" и "Ещё какой то цвет" и все они будут иметь одно значение "Черный"...вот только утилитарная ценность таких данных вызывает некоторое сомнение.
лучше обойти их с конца вперёд в цикле - а вот тут налицо непонимание процесса удаления - обход с конца необходим только в случае перебора табличной части (таблицы значений, массива итп) только в том случае, когда удаляем строки из этого же объекта (количество строк цикла будет уменьшаться, и при "прямом" обходе получим ошибку) - а тут получаем массив строк к удалению, и просто удаляем их из ТЧ - ничего не рушится, потому что нет перебора строк - удаляется конкретная строка(и)...
---
Большое спасибо, вы меня выручили!)