Добрый день!

Есть окно добавление прайс-листов, добавляю на него кнопку (хочу чтобы данные сохранялись по нажатию на эту кнопку, а не на кнопку "ок")

function btnButtonOnClick(Control) {
    var wnd = Services.GetNewItemByUSI('wnd_PriceListsEdit');
    var dl = wnd.ComponentsByName('dlData');
    SaveChanges(dl, wnd); // не работает, т.е. не сохраняет прайс-лист
    //----
    SaveChanges(dlData, wnd); // k dlData привязан dataset ds_PriceLists, но этот вариант работает (т.е.
//сохраняет как и надо

На самом деле мне нужно сохранять эту форму в другом месте (поэтому я и получаю доступ к dlData через wnd.ComponentsByName('dlData')
т.к. в другом скрипте dlData - это не ds_PriceLists

Нравится

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

Александр, кнопка в том же окне которое нужно сохранить?

Если да, тогда всё просто:

dlData.Dataset.Post();

Если в другом окне - метод получения нового экземпляра окна и датасета не подойдет.
Нужно передавать в это окно ссылку на уже существующий обьект этого окна.

Т.е. в том окне, которое нужно сохранить:

Connector.Attributes('DatasetToSave') = dlData.Dataset;

В другом окне:

var DS = Connector.Attributes('DatasetToSave');
DS.Post();

Александр, на всякий случай, если вы не поняли ошибку, то строкой

var wnd = Services.GetNewItemByUSI('wnd_PriceListsEdit');

Вы получаете, не текущее окно, ни другое окно, а создаете принципиально новый экземпляр окна.
А если в дальнейшем вам понадобится получить объект текущего окна, то используйте

var wnd = Self;

Немного не понимаю "На самом деле мне нужно сохранять эту форму в другом месте (поэтому я и получаю доступ к dlData через wnd.ComponentsByName('dlData')"
Если просто сохранять, то лучше поставьте событие AfterPost на датасет, создать объект нужного датасета, найти нужную запись, использовав фильтры, измените и сохраните ее.
Если же необходимо обмениваться данными между открытыми окнами, то думаю надо взять совет Дмитрия и еще совместить с OnNotify.

Дмитрий, огромное спасибо!

Второй вариант - то что нужно.

"Сазанов Александр Владимирович" написал:Вы получаете, не текущее окно, ни другое окно

Спасибо! В этом то и была проблема. Мне нужно было получить объект одного окна, в скрипте другого окна. ( Self указывал бы на другое окно)

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