Ampscript BuildRowsetFromString() не работает с одним элементом

Мне поручили задачу ExactTarget, в которой используется Ampscript. Пытаюсь учиться на ходу здесь. См. фрагмент кода ниже:

%%[
    Var @testString, @testOutput
    Set @testString = Qwerty
    Set @testOutput = BuildRowsetFromString(@testString,"~")
]%%

TestOutput:%%= v(@testOutput) =%%

Код работает, если testString содержит ~, но когда в строке нет символа ~, вывод пуст. Это правильно по замыслу? Нужно ли добавлять условие для проверки наличия символа ~?


person PixelPaul    schedule 25.08.2016    source источник
comment
Вы получите гораздо больше ответов на свои вопросы SFMC на salesforce.stackexchange.com, в частности, с marketing-cloud и ampscript теги.   -  person Adam Spriggs    schedule 26.08.2016


Ответы (1)


Это ожидаемое поведение. Функция BuildRowsetFromString() сама по себе не будет возвращать никакого значения при отображении, вам нужно будет использовать Row() и Field()< /strong> для извлечения значения.

Используя ваш пример:

%%[
    Var @testString, @testOutput

    Set @testString = "Qwerty"
    Set @testOutput = BuildRowsetFromString(@testString,"~")

]%%

RowCount: %%=RowCount(@testOutput)=%%
TestOutput: %%=v(@testOutput)=%%

Функция RowCount() возвращает значение 1, фактически говоря, что она знает, что там есть по крайней мере одна "строка". Чтобы отобразить это единственное значение, вам нужно обернуть это значение с помощью Field() и Row():

TestOutput: %%=Field(Row(@testOutput,1),1)=%%

Если вы хотите отобразить другие значения в строке, скажем, вы передавали "Qwerty~Second~Third", вам нужно либо изменить число в функции Row(), либо выполнить цикл.

Ссылки

Использование циклов

Функция BuildRowsetFromString()

person edu8rdo    schedule 25.08.2016
comment
Это было очень полезно. Спасибо. - person PixelPaul; 27.08.2016