• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Операции с многозначными полями

  • Автор темы Chron
  • Дата начала
C

Chron

Всем превед... У мну снова проблема с многозначными полями, а именно такая... в документы есть связанные с друг другом 2 многозначных поля... Суть такова, например: у первого поля такие элементы --> "A";"C";"F";"A";"B", у второго - "x";"x";"x";"x";"x"... Мне необходимо в первом поле выявить значения (или одно значение) "A", узнать его порядковый номер и заменить элементы с такими же номерами во втором поле на другое значение... т.е. второе поле будет выглядеть уже так, например --> "y";"x";"x";"y","x"... Возможно реализации скриптом?.. Я пробовал через формулы, своим недалеким умом допер до

Код:
@For(n := 1;
n <= @Elements(ПОЛЕ1);
n := n + 1;
@If(ПОЛЕ1[n]="A";
@Set(ПОЛЕ2[n];"y");
"")
)

естественно не работает)))... Хотел бы услышать ваши советы...
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
217
result:=@Replace(source;"A";"y");
если я не напутал с утра :rolleyes:
 

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
4
Вроде как по индексу нельзя менять элемент.
 
C

Chron

Попробуйте без @Set.
ПОЛЕ2[n]:="y";
должно работать

Не получается... Удивительным образом после сохранения агента строчка ПОЛЕ2[n]:="y" преобразуется в ПОЛЕ2[n:="y"] :rolleyes:


Добавлено:
result:=@Replace(source;"A";"y");
если я не напутал с утра :)

С помощью @Replace в пределах одного поля вроде работается....
 

Kizarek86

Green Team
20.07.2007
871
7
BIT
41
Код:
	Dim FIELD1 As Variant
Dim FIELD2 As Variant
Dim i As Integer

FIELD1 = doc.getitemvalue("ПОЛЕ1")
FIELD2 = doc.getitemvalue("ПОЛЕ2")

For i=0 To Ubound(FIELD1)
If FIELD1(i)="А" Then FIELD2(i) = "y"
Next

Call doc.ReplaceItemValue("ПОЛЕ2", FIELD2)
 

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
4
Код:
a := "A" : "C" : "F" : "A" : "B";
b := "x" : "x" : "x" : "x" : "x";
c := "A";
d := "y";
@Right(@Replace(a + "|" + b; c + "|" + b; a + "|" + d); "|")
 
D

Darker

Medevic, гениально! +1

единственное - над разделителем надо подумать (посложнее, чтоб не встретился где-нибудь)
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!