Имя: Пароль:
1C
1С v8
Заполнение реквизита табличной части без дублей
0 wd1200
 
19.02.15
14:34
Здравствуйте.
Есть форма, из шапки которой я прописываю несколько реквизитов в строковом формате, к уже имеющейся информации в реквизит табличной части следующим образом:

Процедура ЗаполнитьНажатие(Элемент)
    
    ДСЧ = Формат(ДатаСчета, "ДФ=dd.MM.yy");
    ДопИнф = ""+Контрагент+" "+ Счет_или_НомерНакладнойПоставщика +" " + "ДСч:" + Строка(ДСЧ)+ " ";    
    
        СтрокаТабличнойЧасти = ЭлементыФормы.Товары;
    
    Для Каждого СтрокаТабличнойЧасти из Товары Цикл
        СтрокаТабличнойЧасти.Примечание = ДопИнф + СтрокаТабличнойЧасти.Примечание;
        КонецЦикла;
    
КонецПроцедуры

Проблема в следующем: при повторном нажатии кнопки, естественно, информация записывается еще раз.
Как сделать чтобы информация не дублировалась, но в тоже время при добавлении новой строки в ТЧ, примечание дописывалось.
Пробовал так:

Процедура ЗаполнитьНажатие(Элемент)
    
    ДСЧ = Формат(ДатаСчета, "ДФ=dd.MM.yy");
    ДопИнф = ""+Контрагент+" "+ Счет_или_НомерНакладнойПоставщика +" " + "ДСч:" + Строка(ДСЧ)+ " ";
    
    Для Каждого СтрокаТабличнойЧасти из Товары Цикл
        исхСтрока = СтрокаТабличнойЧасти.ИнвНомер;
        Если исхСтрока = ДопИнф + СтрокаТабличнойЧасти.ИнвНомер Тогда Прервать Иначе
        СтрокаТабличнойЧасти.Примечание = ДопИнф + СтрокаТабличнойЧасти.Примечание;
        КонецЕсли;
        КонецЦикла;
    
КонецПроцедуры

Все равно информация дублируется.
Посоветуйте, как правильно сделать.
1 wd1200
 
19.02.15
15:59
Вернее пробовал так (перепутал немного ИнвНомер и Примечание):

Процедура ЗаполнитьНажатие(Элемент)
    
    ДСЧ = Формат(ДатаСчета, "ДФ=dd.MM.yy");
    ДопИнф = ""+Контрагент+" "+ Счет_или_НомерНакладнойПоставщика +" " + "ДСч:" + Строка(ДСЧ)+ " ";
    
    Для Каждого СтрокаТабличнойЧасти из Товары Цикл
        исхСтрока = СтрокаТабличнойЧасти.Примечание;
        Если исхСтрока = ДопИнф + СтрокаТабличнойЧасти.Примечание Тогда Прервать Иначе
        СтрокаТабличнойЧасти.Примечание = ДопИнф + СтрокаТабличнойЧасти.Примечание;
        КонецЕсли;
        КонецЦикла;
    
КонецПроцедуры
2 GreatOne
 
19.02.15
16:03
Встроенные функции языка (Script functions)
СтрЧислоВхождений (StrOccurrenceCount)
Синтаксис:

СтрЧислоВхождений(<Строка>, <ПодстрокаПоиска>)
Параметры:

<Строка> (обязательный)

Тип: Строка.
Исходная строка.
<ПодстрокаПоиска> (обязательный)

Тип: Строка.
Искомая подстрока.
Возвращаемое значение:

Тип: Число.
Число вхождений.
Описание:

Вычисляет число вхождений подстроки поиска в исходной строке.

Доступность:

Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение(клиент), мобильное приложение(сервер).
Пример:

Результат = СтрЧислоВхождений(ИсходныйТекст, "Число");
Сообщить("Слово ""Число"" встречается " + Результат + " раз.");
3 Timon1405
 
19.02.15
16:03
Если Найти(ДопИнф,СтрокаТабличнойЧасти.Примечание) тогда Продолжить;
конецЕсли
4 FIXXXL
 
19.02.15
16:07
(0) переписывай эту инфу ПриЗаписи() Формы и не парься
5 GreatOne
 
19.02.15
16:08
(3) почитай СП по этой функции
6 Timon1405
 
19.02.15
16:11
(5) и что не так с сп по данной функции?
7 GreatOne
 
19.02.15
16:12
(6) с ней все так
8 Timon1405
 
19.02.15
16:13
если 0 то ложь, если больше 0 то истина, в чем проблема?
9 GreatOne
 
19.02.15
16:15
(8) в том, что сравнивается строка целиком, а в ней всегда будет лежать либо исходное значение без ДопИнф , либо исходное + допИнф. Соотв. просто ДопИнф Найти() не найдет никогда
10 GreatOne
 
19.02.15
16:16
хотя... х** его знает) Я что-то не подумал о полнотекстовом поиске
11 Timon1405
 
19.02.15
16:18
(9) согласен, попутал, нужно наоборот искать Найти(СтрокаТабличнойЧасти.Примечание,ДопИнф)
12 wd1200
 
19.02.15
16:42
Спасибо всем, понял.
Ступил по работе со строками.
13 Domovoi
 
19.02.15
16:49
Если исхСтрока = ДопИнф + СтрокаТабличнойЧасти.Примечание Тогда Прервать Иначе
        СтрокаТабличнойЧасти.Примечание = ДопИнф + СтрокаТабличнойЧасти.Примечание;
        КонецЕсли;

Вместо этого наверное должно быть

        Если исхСтрока = ДопИнф Тогда Прервать Иначе
        СтрокаТабличнойЧасти.Примечание = ДопИнф;
        КонецЕсли;
14 Domovoi
 
19.02.15
16:50
+(13)Если так то, вот это

    Для Каждого СтрокаТабличнойЧасти из Товары Цикл
        исхСтрока = СтрокаТабличнойЧасти.Примечание;
        Если исхСтрока = ДопИнф + СтрокаТабличнойЧасти.Примечание Тогда Прервать Иначе
        СтрокаТабличнойЧасти.Примечание = ДопИнф + СтрокаТабличнойЧасти.Примечание;
        КонецЕсли;
        КонецЦикла;

можно заменить на Найти для ТЧ
15 wd1200
 
19.02.15
17:02
(13) Не, там в реквизите вручную пишутся кое-какие данные, а потом добавляется ДопИнф с помощью кнопки. Т.е. такое сравнение всегда будет неравенством.
16 Начинающий_13
 
19.02.15
17:06
Лучще ТЧ докмента выгружай в ТаблицуЗначений сворачавая ее как ты считаешь будет уникально и загружай ее обратно в ТЧ документа. Так проще