Здравствуйте, скажите пожалуйста как можно получить выбранную запись из реестр детали (через script) в странице записи?

Нравится

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

Добрый день,

 

находясь в контексте модели реестра нужно вызвать метод this.getActiveRow() чтобы получить модель выбранной записи, или this.get("ActiveRow") чтобы получить идентификатор выбранной записи. 



С уваженим,

Юрий. 

Yurii,

Спасибо

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

Если на любой странице выбрать команду "Выделить все" (Ctrl + А) и дальше производить какие-либо действия с этими записями (например, перетащить в другую группу, или изменить), то эти действия выполняются только с теми записями, которые видны на данной страничке, т. е. 40 шт. Как можно сделать так, чтобы действия выполнялись применительно КО ВСЕМ!!!!?

Нравится

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

нужно делать отдельную кнопку (по аналогии с "Удалить все"), которая будет выполнять выбранное действие со всеми записями датасета

Добрый день!

Либо можно сделать кнопку (чек-бокс), которая при нажатии, будет устанавливать количесто выводимых записей, равное RecordsCount датасета нужного грида (реестра). Но при большом количестве записей, загрузка грида будет занимать какое-то время.

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

Добрый день.
Помогите разобраться с проблемой.

Есть раздел, у раздела есть деталь. Одно из полей детали - справочник. При редактировании детали необходимо осуществлять фильтрацию элементов справочника в зависимости от значений двух полей раздела.

Фильтрацию в справочнике я реализовал, передачу параметров из скрипта окна редактирования детали в датасет справочника тоже. Осталось решить такую проблему: из скрипта редактирования детали получить доступ к значениям двух полей той записи раздела, для которой открыта деталь.

Раздел самописный (называется Чеки - Drafts). Деталь раздела - товары в чеке (ItemsInDraft).
Справочник, который фильтруем - номенклатуры товаров. Его необходимо фильтровать по двум параметрам записи раздела - организации (Org) и спд (BuName)

Мой код в скрипте wnd_ItemsInDraftEditScript

function edtNomenameOnPrepareSelectWindow(LookupDataControl, SelectWindow) {
    var Dataset = LookupDataControl.DataField.LookupDataset;
    var SelectQuery = Dataset.SelectQuery;
 // в этих двух строчках я пытался получить нужные мне значения, но BaseGridArea.WorkspaceDataset - null
//var OrgID = GetFieldValueFromDisabledField(BaseGridArea.WorkspaceDataset, 'Org');
//var BuNameID = GetFieldValueFromDisabledField(BaseGridArea.WorkspaceDataset, 'BuName');
    SetParameterValue(SelectQuery.Parameters, 'Org', OrgID);
    SetParameterValue(SelectQuery.Parameters, 'BuName', BuNameID);
}

Нравится

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

Что-то типо этого

var OrgID = GetDatasetFieldValueByID('ds_Drafts', dlData('DraftsID'), 'Org');
var BuNameID = GetDatasetFieldValueByID('ds_Drafts', dlData('DraftsID'), 'BuName');

где 'ds_Drafts' - USI раздела Чеки
dlData - название датасета в карточке редактирования товаров в чеке
'DraftsID' - поле, связывающее товары в чеке с чеком

Мой код выглядит так

var OrgID = GetDatasetFieldValueByID('ds_SDrafts', dlData('SDraftsID'), 'Org');
var BuNameID = GetDatasetFieldValueByID('ds_SDrafts', dlData('SDraftsID'), 'BuName');

Выдает ошибку 438 "Объект не поддерживает это свойство или метод".

Попробуйте поменять так:

var OrgID = GetDatasetFieldValueByID('ds_SDrafts', dlData.Dataset('SDraftsID'), 'Org');
var BuNameID = GetDatasetFieldValueByID('ds_SDrafts', dlData.Dataset('SDraftsID'), 'BuName');

И корректно ли в переменную OrgID получать поле Org ? Может надо получать поля OrgID и BuNameID соответственно?

Спасибо, последний вариант заработал.

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

BPM 5.4.0
Создал кнопку реестре, для обработки необходимо получить id и другие поля выделенной записи. Как это сделать?
И еще вопрос, как потом в эту запись что-то добавить или изменить?

Нравится

1 комментарий
Page.TreeGrid.SelectedNodes

вернет Вам выделенные клиентом в реестре записи как ObservableCollection
А свойство

SelectedNodePrimaryColumnValue

- Id той записи на которой находится курсор

Какой-то странный вопрос??? Как в уже существующую запись можно что либо добавить. Если Вам нужно изменить запись, то вот код:

var esq = new EntitySchemaQuery(UserConnection.EntitySchemaManager, Page.DataSource.Schema.Name);
esq.AddAllSchemaColumns();
var entity = esq.GetEntity(UserConnection, SelectedNodePrimaryColumnValue);
// код модификации записи
// entity.SetValueAndText("Id записи лукапного", "Текстовое представление лукапного поля");
entity.Save();

Для создания новой записи код:

var manager = UserConnection.EntitySchemaManager.GetInstanceByName(Page.DataSource.Schema.Name);
var entity = manager.CreateEntity(UserConnection);
entity.SetDefValues();
// код модификации записи см. выше
entity.Save();

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