|
Заполнение реквизита табличной части без дублей | ☑ | ||
---|---|---|---|---|
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
|
Лучще ТЧ докмента выгружай в ТаблицуЗначений сворачавая ее как ты считаешь будет уникально и загружай ее обратно в ТЧ документа. Так проще
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |