Ampscript BuildRowsetFromString() завершается ошибкой для одного элемента

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

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

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

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

1 ответ

Решение

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

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

%%[
    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()

Другие вопросы по тегам