Заполнение пустых разрядов нулями в номере продажи

При создании маски номера столкнулась с задачей автоматически заполнять пустые разряды нулями. Это позволит решить проблему неверной сортировки по номеру (номер - строка).

Решить эту задачу удалось только путем доработки системной функции генерации номера function GenerateSystemNumber(ItemName)

1) Была добавлена системная настройка OpportunityCapacity (целое число).

В функцию были добавлены следующие строки:

    if(MaskName == 'OpportunityMask'){  
                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'));
                }      
        }        

Вот как выглядит сама функция в итоге:

capacity

Теперь номер продажи будет генерироваться с заполнением пустых разрядов нулями. Количество разрядов задается системной настройкой OpportunityCapacity.

В принципе, решение можно сделать универсальным для всех генерируемых номеров.

Нравится

Поделиться

1 комментарий

Сделать решение универсальным можно следующим образом:

Добавить в начало функции

var CapacityName = FormatStr('%1Capacity', ItemName);

Изменить добавленный код:

var MaskLength = GetSystemParameterValueEx(CapacityName, true);

capacity

Добавить системные настройки запросом в базу данных (в приложении). Обратите внимание, этот запрос будет работать только для XRMDistribution+ServiceDesk, для других продуктов нужно удалить строки, для которых нет разделов.

Показать все комментарии