Здравствуйте
Подскажите как оставить первую часть строки ДоговорНаименование и запятую, если обнаруживается дублирование. Если дублирования нет, нужно вывести полное наименование.

    ДоговорНаименование = СсылкаНаОбъект.ДоговорКонтрагента.Наименование + " ,";
    Если СтрНайти(ДоговорНаименование, "Приложение") = 0 Тогда
        Приложение = СсылкаНаОбъект.Товары[0].ПриложенияДоговораКонтрагента.Наименование;
        Если ЗначениеЗаполнено(Приложение) Тогда
            СклонениеДоговора = ПолучитьСклоненияСтроки(ДоговорНаименование, , "ПД=Дательный");
            ДоговорНаименование = "Приложение № " + Приложение + " к " + СклонениеДоговора[0];
        КонецЕсли;
    КонецЕсли;
---
Вот так решил, да, оказалось все гораздо проще

```1c
    МассивЧастей = СтрРазделить(ДоговорНаименование, ".");
    МассивЧастей = Новый Массив;
    МассивНаименования = Новый Массив;
    МассивЧастей = СтрРазделить(ДоговорНаименование, ".");

    Если МассивЧастей.Количество() > 0 Тогда
    ДоговорНаименование = МассивЧастей[0];
    Для Индекс = 0 По МассивЧастей.Количество() - 1 Цикл
    Если Индекс = МассивЧастей.Количество() - 1 Тогда
    Прервать;
    Иначе
    МассивНаименования.Добавить(МассивЧастей[Индекс]);
    КонецЕсли;
    КонецЦикла;
    КонецЕсли;
    ДоговорНаименованиеГотовый = СтрСоединить(МассивНаименования, ". ") + "." + " ,";
```
---
если обнаруживается дублирование Где обнаруживается? Как обнаруживается? Кем обнаруживается? Зачем обнаруживается?
---
ДоговорНаименование тут дублирующие строки появляются
---
А зачем ты из приложения добровольно тащишь его наименование с дублем договора? Тащи только номер.

// За такие разыменовывания по башке давать надо.
---
чтобы указать что приложение к "наименованию", а если указать номер получиться что-то типа (приложение №123 к 568)
---
Ты сам себя запутал. Бери отладчик и смотри что и где у тебя формируется в какой переменной.
---
приведи пример дублирования. и что ты под этим понимаешь.
на самом дле не совсем понятно.
---
То что желтое это ДоговорНаименование, то что красное дубль, а после идет запятая
---
Сообщение было скрыто модератором.
---
Сообщение было скрыто модератором.
---
Сообщение было скрыто модератором.
---
Сообщение было скрыто модератором.
---
Сообщение было скрыто модератором.
---
Сообщение было скрыто модератором.
---
Сообщение было скрыто модератором.
---
а вообще проще собрать нужное наименование не из существующего, а из Номера и даты Документа.
таким образом не будет ни каких повторов.
---
Такой же совет из (4) никак не сподвиг нашего героя на размышления.
---
Вот так решил, да, оказалось все гораздо проще

```1c
    МассивЧастей = СтрРазделить(ДоговорНаименование, ".");
    МассивЧастей = Новый Массив;
    МассивНаименования = Новый Массив;
    МассивЧастей = СтрРазделить(ДоговорНаименование, ".");

    Если МассивЧастей.Количество() > 0 Тогда
    ДоговорНаименование = МассивЧастей[0];
    Для Индекс = 0 По МассивЧастей.Количество() - 1 Цикл
    Если Индекс = МассивЧастей.Количество() - 1 Тогда
    Прервать;
    Иначе
    МассивНаименования.Добавить(МассивЧастей[Индекс]);
    КонецЕсли;
    КонецЦикла;
    КонецЕсли;
    ДоговорНаименованиеГотовый = СтрСоединить(МассивНаименования, ". ") + "." + " ,";
```
---
если под дублированием - подразумевается повторная обработка данных...

то возможно так:

```1c
    ДоговорИсходноеНаименование = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(СсылкаНаОбъект, "ДоговорКонтрагента.Наименование");

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

    КонецЕсли;
    Иначе
    ДоговорНовоеНаименование = ДоговорИсходноеНаименование + " ,"; // совсем не понятно зачем тут нужна запятая

    КонецЕсли;
```