Есть необходимость настроить сортировку в выпадающем списке редактируемого реестра. 

 

На обычной странице мы решаем эту проблему через атрибут:

"State": {
              lookupListConfig: {
                orders: [{columnPath: "SortCode"}]
              }
            },

 

однако очевидно на детали это не отрабатывает.

 

Вариант "добавить в название цифру чтобы сортировать по алфавиту" не подходит, т.к. значений в справочнике довольно много. Может быть у кого-то был опыт добавление подобного конфига для полей детали с редактируемым реестром? Заранее благодарю

Нравится

2 комментария
Лучший ответ

Если нужно сортировать список в колонке MyColumn по полю справочника SortCode, нужно описать такой метод в схеме детали

getGridRowViewModelConfig: function(config) {
                var result = this.callParent(arguments);
                if (result && result.rowConfig && result.rowConfig.MyColumn) {
                    result.rowConfig.MyColumn.lookupListConfig = {
                        orders: [{columnPath: "SortCode", direction: Terrasoft.OrderDirection.DESC}]
                    };
                }
                return result;
            },

 

 

 

Если нужно сортировать список в колонке MyColumn по полю справочника SortCode, нужно описать такой метод в схеме детали

getGridRowViewModelConfig: function(config) {
                var result = this.callParent(arguments);
                if (result && result.rowConfig && result.rowConfig.MyColumn) {
                    result.rowConfig.MyColumn.lookupListConfig = {
                        orders: [{columnPath: "SortCode", direction: Terrasoft.OrderDirection.DESC}]
                    };
                }
                return result;
            },

 

 

 

Вадим Курунов,

Спасибо!

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

Подскажите, пожалуйста:
есть у меня грид в состоянии IsEditable = true
есть колонки которые можно править.
как можно сделать, чтоб в зависимости от поля в строке запрещать или разрешать редактирование?

Нравится

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

Тимур, вложила файл с примером реализации.

Спасибо. Все получилось.

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

ПОмогите пожалуйста! Я тока начал осваивать терасофт, никак не пойму вообще как он программируется, ни документации ничего толком нет.. Вот никак не могу узнать как сделать мне функцию автоматического создания задач в отдел монтажа по договору (Монтаж оборудования по договору для транспортных средств по договору). Начал с элементарного. При нажатии на кнопку вызвал окно с окном грида транспортных средств по договору( во вкладке договоры которое отображается внизу в пейдж контроле), Новое окно с гридом естественно пустое.. Нужно как то передать параметр ContractID для нового окна, и соответственно в новом окне отфильтровать записи по этому ID. Как передать параметр, как добавляется Dataset, как отфильтровать, на какое событие это все вешать..я тут пока ниче толком не могу понять. Если есть у кого примеры похожие - поделитесь пожалуйста! Я так понимаю, готовое окно с гридом которое я прикрепил к вызываемому мною новому окну уже имеет свой датасорс, квери и тд. Как это все отфильтровать? Что писать куда писать? Как передать номер договора на новое окно чтобы там отфильтровать?

Нравится

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

Здравствуйте, Раймир!

Рекомендую обратить Ваше внимание на меню Действия в левом верхнем углу раздела Договоры. В частности, в данном меню уже реализовано создание задачи по проекту.

Вы можете взять пример программного кода из данного действия, и применить у себя.

Найти его можно в скрипте раздела scr_ContractsWorkspace

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

Добрый день!
Являюсь новичком. Подскажите пож-а как показать данные на Grid'e? Я уже создал таблицу в БД, сделал sq_SelectQuery, на его основе DataSet. Кинул на форму Grid, GridView, Columns. Соединил все параметры. В конструкторе все появилось (столбцы). Но при открытии формы с TSClient.exe грид пустой, а при нажатии на PrintPreview этого грида - данные есть. Форму я не наследовал ни от чего, т.к. мне не нужны лишние элементы управления. Нужно ли в OnPrepare() этой формы дописывать код, для показа данных?

Нравится

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

"Исаев Нурбек Сыргакович" написал:Нужно ли в OnPrepare() этой формы дописывать код, для показа данных?

как минимум открыть датасет

dlData.Dataset.Open();

ой спасибо, а то думал на такой простой вопрос никогда ответа не получу

А еще вопрос: есть ли возможность добавления новой записи прямо в Grid (т.е. встать на новую строку грида и добавить новую запись)? Или же для добавления новой записи нужно открывать овое окно и туда заполнять данные?

В базовой версии нет возможности добавления записи непосредственно в реестре. Для добавления необходимо открыть окно редактирования и заполнить обязательные поля.

Для реализации подобной функциональности необходимо внести изменения в систему. Например, сделать реестр редактируемым и добавить дополнительную кнопку для создания записи без открытия карточки. В обработчике события OnClick этой кнопки создавать новую запись, заполняя обязательные поля автоматически:

	var Dataset = dlData.Dataset;
	Dataset.DisableEvents();
	Dataset.Append();
	Dataset.Values('ID') = Connector.GenGUID();
	Dataset.Values('Name') = ' ';
	<Заполняем обязательные поля>
	Dataset.Post();
	Dataset.EnableEvents();

"Лабьяк Олег Игоревич" написал:В базовой версии нет возможности добавления записи непосредственно в реестре.

А если сделать грид редактируемым и сказать датасету Append() ?
Визуально ж будет добавление записи в реестр, нет?

Да, Юрий, Вы правы.
Но я бы всё-таки рекомендовал после выполнения Append заполнить обязательные поля. Иначе есть вероятность свала при переходе на другую строку, когда не все обязательные поля заполнены. Также желательно установить признак "Всегда выбирать в запросе" для всех полей, которые используются в скриптах датасета, чтобы не возникало исключение "Поле с названием ... неактивно".

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