При создании маски номера столкнулась с задачей автоматически заполнять пустые разряды нулями. Это позволит решить проблему неверной сортировки по номеру (номер - строка).
Решить эту задачу удалось только путем доработки системной функции генерации номера function GenerateSystemNumber(ItemName)
1) Была добавлена системная настройка OpportunityCapacity (целое число).
В функцию были добавлены следующие строки:
var Num = SystemNumber.toString();
var Nulls = '';
var MaskLength = GetSystemParameterValueEx('OpportunityCapacity', true);
for (i = 0; i (MaskLength - Num.length); i++){
Nulls = Nulls + '0';
}
if(!IsEmptyValue(Nulls)){
Mask = Mask.replace(/\%1/g, (Nulls+'%1'));
}
}
Вот как выглядит сама функция в итоге:
Теперь номер продажи будет генерироваться с заполнением пустых разрядов нулями. Количество разрядов задается системной настройкой OpportunityCapacity.
В принципе, решение можно сделать универсальным для всех генерируемых номеров.
Сделать решение универсальным можно следующим образом:
Добавить в начало функции
var CapacityName = FormatStr('%1Capacity', ItemName);
Изменить добавленный код:
var MaskLength = GetSystemParameterValueEx(CapacityName, true);
Добавить системные настройки запросом в базу данных (в приложении). Обратите внимание, этот запрос будет работать только для XRMDistribution+ServiceDesk, для других продуктов нужно удалить строки, для которых нет разделов.