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

Решить эту задачу удалось только путем доработки системной функции генерации номера 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, для других продуктов нужно удалить строки, для которых нет разделов.

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

Доброго времени суток!

Никак не могу решить проблему автоматической генерации номера для карточки заявки.
Новое поле под это дело создал, редактирование запретил, а вот как сделать генерацию номера в этом поле...
По форуму полазил, нашел скрипт, но никак не соображу как этот скрипт связать с нужным мне полем.
p.s. написал письмо в саппорт, пришел ответ с инструкцией во вложении, но вложения отсутствует, ответил, попросил проверить и переслать еще раз, на всякий случай дал 2-й адрес почты, но мне больше не отвечали.

Нравится

10 комментариев

Посмотрите алгоритм реализации автонумерации во вложенном файле, по аналогии Вы сможете реализовать требуемый Вам функционал.

Спасибо, разобрался, но вот всплыла другая проблема:

Все файлы карточки клиенты хранятся по адресу: custom/workspaces/general/main grid (отличии от остальных карточек, например задачи - tasks/general/main grid), но самое страшное что скрипта scr_OrderEdit нет не в этом каталоге не в каком либо другом. В остальных скриптах приложенных к "заявкам" функции btnOKOnClick нету.

Что посоветуете в этом случае?

Скрипт карточки редактирования заявок - wnd_OrderEditScript.

wnd_OrderEditScript - отсутствует.

p.s. моя версия 3.3.2.182

"Фомин ДВ" написал:p.s. моя версия 3.3.2.182

А какой продукт (Sales, CRM, Distribution)?

CRM

Здравствуйте Данил,
wnd_OrderEditScript, может отсутствовать в силу того, что поля карточки не требуют дополнительной логики обработки событий, в нашем случае мы хотим эту логику реализовать, для этого необходимо создать сервис типа Script, на сколько я понял, мы хотим создать логику на нажатие кнопки "Ок" в карточке редактирования, для выберете кнопку "Ок" выберете "События" два раза нажмите на название "OnClick" на предложение о создании сервиса, ответьте "да"

На основании чего реализованы заявки?

Огромное спасибо, но теперь появилась другая проблема:

При создании нового скрипта, и события OnClick перестало работать событие сохранения карточки :). Т.е. после создании OnClick (пустого) при нажатии на кнопку ничего не происходит (ранее карточка сохранялась). После дописывания функции автозаполнения, при нажатии на кнопку генерируется номер.

А как сделать чтобы по нажатию кнопки и номер генерировался и карточка сохранялась/закрывалась?

Подозреваю что в функцию OnClick нужно дописать код. Если я прав - можно пример кода?

проблему решил сам, добавив в процедуру код:

var Dataset = dlData.Dataset;
scr_BaseDBEdit.btnOKOnClick(Control);

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

Добрый день!
С Новым Годом!!!

Подскажите пожалуйста возможно ли в системных настройках прописать маску чтобы номер счета генерировался с префиксом, например 145-А, 146-А и т.д. или надо лезть в скрипт?
Заранее спасибо!

Версия 3.1.0.23 - MS SQL 2005

Нравится

2 комментария

В 3.3 точно есть в системных настройках в группе "счета" настройка маски счета. А вот версии 3.1 под рукой нет проверить.

Добавьте в системные настройки новый параметр с кодом InvoiceMask, заголовком "Маска номера счета", типом "Строка" и значением %1-A. Все новые счета будут создаваться с окончанием -А после номера.

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