Вероятно, лучшее, что здесь можно сделать, - это разбить процесс назначения на две части или реструктурировать его, чтобы в итоге вы получили сценарий Scheduled, которому вы даете явную очередь.Таким образом, ваш доступ к серийным номерам будет сериализован, и вам не потребуется выполнять дополнительную работу.Если вам нужен совет по обработке больших партий с помощью SS2, см. https://github.com/BKnights/KotN-Netsuite-2 для служебного скрипта, который может потребоваться для обработки больших партий.
Если это невозможно, то я сделал следующее: Создатьдругая пользовательская запись под названием «Таблица блокировки».Он должен иметь хотя бы идентификатор и текстовое поле.Создайте одну запись и запишите ее внутренний идентификатор.Если вы оставите его со столбцом имени, дайте ему имя, которое отражает его назначение.
Когда вы хотите получить серийный номер, который вы: читаете из таблицы блокировки с помощью функции поля поиска.Если это не 0, тогда подождите *.Если это 0, тогда сгенерируйте случайное целое число от 0 до MAX_SAFE_INTEGER.
попробуйте записать это в «Таблицу блокировок» с помощью функции отправки поля.Тогда прочитайте это прямо сейчас.Если он содержит ваше случайное число, значит, у вас есть блокировка.Если этого не произойдет, тогда подождите *.
Если у вас есть блокировка, тогда продолжайте и назначьте серийный номер.Снимите блокировку, записав обратно 0.
- wait: это сложно в NS.Поскольку я не ожидаю, что задание s / n займет много времени, я иногда инициировал ожидание, просто повторяя то, что, как я надеюсь, является трудоемкой задачей ЦП, не требующей затрат на управление до истечения некоторого времени.