Публикация

Сортировка по номеру договора, документа

Вопрос

Что можно сделать, чтобы отсортировать список договоров по возрастанию или убыванию номеров, а не так, как на скрине?

Изображение удалено.

Ответ

Данное поведение сортировки обусловлено тем, что поле [Номер] - текстовое, а правила сортировки текста отличаются от правил сортировки чисел. Для решения задачи сортировки, необходимо:

1. Создать замещающий объект [Договор] и добавить в него новую числовую колонку. Опубликовать объект.

Изображение удалено.

2. Открыть замещающий объект [Договор] вновь, создать событие [Перед сохранением записи] ([ContractSaving]), перейти к процессу объекта ([Дополнительно] – [Открыть процесс]).

Изображение удалено.

3. В процессе добавить [Событийный подпроцесс].

4. На подпроцессе разместить сигнал, в поведении сигнала указать сигнал - [ContractSaving].

5. За сигналом добавить скрипт-задачу с кодом:

int num = 0;
bool res = int.TryParse(Entity.Number, out num);
if (res == true)
{
    Entity.UsrNumber = num;
}
return true;

6. За скрипт-задачей разместить завершающий сигнал. Сохранить. Опубликовать процесс.

Изображение удалено.

Теперь при сохранении новых или изменении старых записей договоров, номер будет дублироваться в числовую колонку. Её и необходимо вывести вместо старой в реестр, и там будет работать сортировка по правилам сортировки чисел.

Изображение удалено.

Для обновления всех старых записей системы и заполнения новой колонки значениями, в конфигурации необходимо добавить на закладке [SQL-сценарии] скрипт и выполнить его:

UPDATE Contract
SET UsrNumber = CONVERT(INT, Number)

Все это справедливо, если в поле номер пишутся номера без префикса.

Нравится

Поделиться

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