Сделал кнопку по которой заполняется номенклатура из Поступлений товаров и услуг. Столкнулся с проблемой не могу удалить одинаковую номенклатуру при заполнении табличной части ДеревоЦен.
Результат - это ДанныеФормыКоллекция. Где есть ссылка на документ ,сумму и т.д. и табличную часть с которой беру номенлктауру.

```1c
    ДеревоНаФорме = ДеревоЦен.ПолучитьЭлементы();
    СтрокаТабЧасти = ДеревоНаФорме.Добавить();
    //очищаем таб часть (дерево)
    Счетчик=0;
    Пока Счетчик <= ДеревоНаФорме.Количество()-1 Цикл
    Стр = ДеревоНаФорме[Счетчик];
    ДеревоНаФорме.Удалить(Стр);
    КонецЦикла;
    //защита от
    Если Результат = Неопределено Тогда
    Возврат;
    КонецЕсли;

    //добавляем номенклатру
    Для каждого Строка Из Результат Цикл
    Если Строка.Пометка Тогда
    Для каждого Ном Из Строка.ДокументПоступления.Товары Цикл
    СтрокаН = ДеревоНаФорме.Добавить();
    СтрокаН.Номенклатура = Ном.Номенклатура;
    СтрокаН.Артикул = Ном.Номенклатура.Артикул;
    СтрокаН.ЕдиницаИзмерения = Ном.Номенклатура.ЕдиницаИзмерения;
    СтрокаН.ЦеноваяГруппа = Ном.АналитикаУчетаНоменклатуры.Номенклатура.ЦеноваяГруппа;
    //СтрокаН.УпаковкаВидЦены = Ном.Упаковка;
    КонецЦикла;
    КонецЕсли;
    КонецЦикла;
```

Как с этого ДереваКоллекции убрать одинаковую номенклатуру?
---
Попробуйте перед добавлением новой строки сначала искать дублирующуюся, и добавлять новую только тогда, когда дублирующаяся не найдена.

Например,

```1c
    ДеревоНаФорме = ДеревоЦен.ПолучитьЭлементы();

    ДеревоНаФорме.Очистить();

    //защита от
    Если Результат = Неопределено Тогда
    Возврат;
    КонецЕсли;

    //добавляем номенклатру
    Для каждого Строка Из Результат Цикл
    Если Строка.Пометка Тогда
    Для каждого Ном Из Строка.ДокументПоступления.Товары Цикл

    //дубли не добавляем
    СтрокаНайдена = Ложь;
    Для Каждого СтрокаДерева Из ДеревоНаФорме Цикл
    Если СтрокаДерева.Номенклатура = Ном.Номенклатура Тогда
    СтрокаНайдена = Истина;
    Прервать;
    КонецЕсли;
    КонецЦикла;

    Если СтрокаНайдена Тогда
    Продолжить;
    КонецЕсли;

    СтрокаН = ДеревоНаФорме.Добавить();
    СтрокаН.Номенклатура = Ном.Номенклатура;
    СтрокаН.Артикул = Ном.Номенклатура.Артикул;
    СтрокаН.ЕдиницаИзмерения = Ном.Номенклатура.ЕдиницаИзмерения;
    СтрокаН.ЦеноваяГруппа = Ном.АналитикаУчетаНоменклатуры.Номенклатура.ЦеноваяГруппа;
    //СтрокаН.УпаковкаВидЦены = Ном.Упаковка;
    КонецЦикла;
    КонецЕсли;
    КонецЦикла;
```
---
Попробуйте перед добавлением новой строки сначала искать дублирующуюся, и добавлять новую только тогда, когда дублирующаяся не найдена.

Например,

```1c
    ДеревоНаФорме = ДеревоЦен.ПолучитьЭлементы();

    ДеревоНаФорме.Очистить();

    //защита от
    Если Результат = Неопределено Тогда
    Возврат;
    КонецЕсли;

    //добавляем номенклатру
    Для каждого Строка Из Результат Цикл
    Если Строка.Пометка Тогда
    Для каждого Ном Из Строка.ДокументПоступления.Товары Цикл

    //дубли не добавляем
    СтрокаНайдена = Ложь;
    Для Каждого СтрокаДерева Из ДеревоНаФорме Цикл
    Если СтрокаДерева.Номенклатура = Ном.Номенклатура Тогда
    СтрокаНайдена = Истина;
    Прервать;
    КонецЕсли;
    КонецЦикла;

    Если СтрокаНайдена Тогда
    Продолжить;
    КонецЕсли;

    СтрокаН = ДеревоНаФорме.Добавить();
    СтрокаН.Номенклатура = Ном.Номенклатура;
    СтрокаН.Артикул = Ном.Номенклатура.Артикул;
    СтрокаН.ЕдиницаИзмерения = Ном.Номенклатура.ЕдиницаИзмерения;
    СтрокаН.ЦеноваяГруппа = Ном.АналитикаУчетаНоменклатуры.Номенклатура.ЦеноваяГруппа;
    //СтрокаН.УпаковкаВидЦены = Ном.Упаковка;
    КонецЦикла;
    КонецЕсли;
    КонецЦикла;
```
---
Спасибо. Все гениальное простынь. а я уже полез через таблицу значений воротить , сворачивать и потом назад хотел вернуть. А все намного проще. Спасибо большое , запомню такой финт. Учусь ещё