Есть простая форма, на ней Datagrid. Datalink ссылается на MemoryDataset. При добавлении записи в MemoryDataset, в Datagrid добавляется запись, но не отображаются данные.

function ButtonOnClick(Control) {
        dsInvoice = Services.GetNewItemByUSI('ds_Invoice');
        ApplyDatasetFilter(dsInvoice, 'CustomerID', '{16409E87-FC22-464D-B73C-F765C206E70D}', true);
        var SelectDataWindow = Services.GetNewItemByUSI('wnd_SelectData');
        SetAttribute(SelectDataWindow, 'Dataset', dsInvoice);
        SetAttribute(SelectDataWindow, 'DisplayFieldNames', 'InvoiceNumber;InvoiceDate');
        SetAttribute(SelectDataWindow, 'SearchFieldNames', 'InvoiceNumber;InvoiceDate');
        SetAttribute(SelectDataWindow, 'KeyFieldName', 'ID');
        SetAttribute(SelectDataWindow, 'SearchFieldName', 'InvoiceNumber');
        SetAttribute(SelectDataWindow, 'NotifyObject', Self);
        SetAttribute(SelectDataWindow, 'IsReadOnly', true);
        SelectDataWindow.Tag = 'SelectedInvoice';
        SelectDataWindow.Prepare();
        SelectDataWindow.Show();
}

function wnd_WindowOnNotify(ScriptableService, Sender, Message, Data) {
        if (Sender.Tag == 'SelectedInvoice') {
                InvoiceID = Sender.GetSearchIDValue;
        //      DatasetLink.Dataset.DisableEvents();
                DatasetLink.Dataset.Edit(); // Если здесь Append, то добавляется две строки, но не видно данные.
                DatasetLink.Dataset('ID') = InvoiceID;
                DatasetLink.Dataset('Name') = GetDatasetFieldValueByID('ds_Invoice', InvoiceID, 'InvoiceNumber');
                DatasetLink.Dataset('Data') = GetDatasetFieldValueByID('ds_Invoice', InvoiceID, 'InvoiceDate');
                DatasetLink.Dataset.Post();
                //DatasetLink.Dataset.EnableEvents();
        }
}

function Main() {
        wnd = Services.GetNewItemByUSI('wnd_Window');
        wnd.Prepare();
        wnd.Show();
}

function wnd_WindowOnPrepare(Window) {
        DatasetLink.Dataset.Open();
}

Нравится

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

Попробуйте сделать аналогично другой странице с MemoryDataset-ом, например, как в wnd_TableFieldRightGridArea. Из видимых различий, там используются DisableEvents и EnableEvents. Возможно, ещё что-то надо учесть.

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