• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

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

  • Автор темы 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
214
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
38
Код:
	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

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

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