Zoho Creator делает пользовательскую функцию для отчета
Попытка обернуть голову вокруг создателя zoho, это не так просто, как они делают для создания приложений... У меня есть база данных инвентаризации, и у меня есть четыре поля, которые я вызываю, чтобы заполнить поле с именем Inventory Number (Inv_Num1) -
Имя (Имя)
Фамилия (Фамилия)
Год (год)
Количество (Number)
У меня есть сценарий пользовательской функции, который я вызываю через пользовательское действие в отчете формы. Я пытаюсь загрузить CSV-файл с 900 записями. Конечно, не все из них имеют эти значения (первый / последний / номер), поэтому мне нужно массово редактировать их все. Однако, когда я выполняю массовое редактирование, поле Inv_Num1 не обновляется новыми значениями. Я использую пользовательское действие, чтобы заполнить поле Inv_Num1 значениями других 4 полей.
Вот мой сценарий:
void onetime.UpdateInv()
{
for each Inventory_Record in Management
{
FN = Inventory_Record.First_Name.subString(0,1);
LN = Inventory_Record.Last_Name.subString(0,1);
YR = Inventory_Record.Year.subString(2,4);
NO = Inventory_Record.Number;
outputstr = FN + LN + YR + NO;
Inventory_Record.Inv_Num1 = outputstr;
}
}
Я получаю эту ошибку обратно при попытке запустить эту функцию
Error.
Error in executing UpdateInv workflow.
Error in executing For Each Record task.
Error in executing Set Variable task. Unable to update template variable FN.
Error evaluating STRING expression :
Хотя, например, есть Имя, оно все еще думает, что его нет. Это происходит только на полях, которые я изменил с помощью Bulk Edit. Если я выполняю каждое из них вручную, то настраиваемое действие работает, но, конечно же, Inv_Num1 уже обновляется в процессе редактирования функций успеха и делает все это спорным.
2 ответа
Это может быть на год позже, возможно, вы нашли решение, но просто для того, чтобы подчеркнуть, что ошибка, с которой вы столкнулись, была вызвана нулевым значением в имени.
Вы просто поставили нулевую проверку на каждом поле, и вы готовы идти.
Вы можете сгенерировать inv_number во время массовой загрузки, также добавив нулевую проверку в том же коде и поместив код в Add> On Submt.(только часть внутри цикла)
Опция Better будет использовать поле формулы, вам просто нужно поместить эту формулу в это поле формулы, и вы получите свой инвентарный номер автоматически сгенерированным, вы можете переименовать поле формула в Inv Number или как вам угодно.
Поскольку вы используете подстроку непосредственно в поле Год, я предполагаю, что поле года указано как string.else, вам необходимо использовать Year.tostring(). Substring(2,4) & вместо if(Year=="","",...) вы должны поставить if(Year==null, null,...);
так вот формула
if(First_Name=="","",First_Name.subString(0,1))+if(Last_Name =="","",Last_Name.subString(0,1)) + if(Year=="","",Year.subString(2,4)+Number
Дайте мне знать ваш ответ, если вы реализуете это.
Не зная тип данных, его трудно исправить, но сделав предположение, что ваш Inventory_Record.number
это числовой элемент данных, к которому вы добавляете строку к числу:
"+" Используется для конкатенации строк - Joiner, но он также добавляет два числа вместе, так что подумайте "a" + "b" = "ab"
для строк, но для чисел 1 + 2 = 3
,
Все хорошо, но когда вы делаете "a" + 2
система не знает, добавлять или объединять, поэтому выдает ошибку.