в окне редактирования (на базе baseDBEdit) добавляю windowcontainer и в нем гриди передаю атрибут
var Dataset = dlData.Dataset;
var OfferingsWindow = wndOfferingsInContract.Window;
SetAttribute(OfferingsWindow, 'AnnexID', Dataset('ID'));
SetAttribute(OfferingsWindow, 'ContractID', Dataset('ContractID'));
OfferingsWindow.Prepare();
}
function wnd_AnnexEditOnPrepare(Window) {
wnd_BaseDBEditOnPrepare(Window);
InitializeOfferingWindow();
}
получаю атрибут и передаю дальше
SetAttribute(Window, 'EditWindowUSI', 'wnd_OfferingInContractEdit');
var AnnexID = Window.Attributes('AnnexID');
var ContractID = Window.Attributes('ContractID');
if (AnnexID != null) {
var Dataset = dlData.Dataset;
ApplyDatasetFilter(Dataset, 'AnnexID', AnnexID, true);
SetAttribute(Dataset, 'AnnexID', AnnexID);
SetAttribute(Dataset, 'ContractID', ContractID);
} RefreshDataset(Dataset);
}
ну и перед записью, хочу добавить в датасет
var AnnexID = Self.Attributes('AnnexID');
if (AnnexID != null) {
Dataset('AnnexID') = AnnexID;
Dataset('ContractID') = Self.Attributes('ContractID');
}
}
но он там null
хотя если смотреть в afteropen то он там есть
Нравится
Здравствуйте!
А что в функции SelfOnDatasetBeforePost возвращает Self?
"Андрей Каспаревич" написал:Здравствуйте!
А что в функции SelfOnDatasetBeforePost возвращает Self?С уважением,
Каспаревич Андрей
Эксперт 3-й линии поддержки
а что именно надо?
к примеру
USI "Contracts\Details\Offerings\ds_OfferingInContract" String
В общем попробуйте вместо
var AnnexID = Self.Attributes('ContractID');
написать
var AnnexID = Dataset.Attributes('ContractID');
пробовал и так
результат тот же
в afterOpen
beforeopen есть ID
в beforepost - null
Непонятно к чему такой изобретательный путь.
Все что я понял, это то что у есть:
1) wnd_AnnexEdit - карточка, в ней получаем параметры AnnexID и ContractID
2) в ней грид wnd_OfferingInContractGridArea
3) (неизвестно)
4) И вдруг сразу записываете в датасет ds_OfferingInContract
Вот можно магию в пункте 3 описать?
Как вы записываете в датасет ds_OfferingInContract (в скобках последующий вопрос):
1) Реально сразу, как только грид подготовлен, так сразу пишем? (не вижу смыла добавлять параметры датасету, можно работать в этом окне, зачем параметры датасету?)
2) Через какую-то кнопку, которая обращается к датасету и пишет (как-то скриптово)? (не сильно от первого отлтчается "(не вижу смыла добавлять параметры датасету, можно работать в этом окне, зачем параметры датасету?)")
3) Через карточку wnd_OfferingInContractEdit? (А почему вы передаете параметры сразу датасету, а не карточке редактирования, а потом с ней не работаете?)
"Змитрук Т.Ю." написал:перед записью, хочу добавить в датасет
кстати, это датасет чего? карточки или грида? это как бы разные экземпляры...
"Сазанов Александр Владимирович" написал:Непонятно к чему такой изобретательный путь.
Все что я понял, это то что у есть:
1) wnd_AnnexEdit - карточка, в ней получаем параметры AnnexID и ContractID
2) в ней грид wnd_OfferingInContractGridArea
3) (неизвестно)
4) И вдруг сразу записываете в датасет ds_OfferingInContractВот можно магию в пункте 3 описать?
Как вы записываете в датасет ds_OfferingInContract (в скобках последующий вопрос):
1) Реально сразу, как только грид подготовлен, так сразу пишем? (не вижу смыла добавлять параметры датасету, можно работать в этом окне, зачем параметры датасету?)
2) Через какую-то кнопку, которая обращается к датасету и пишет (как-то скриптово)? (не сильно от первого отлтчается "(не вижу смыла добавлять параметры датасету, можно работать в этом окне, зачем параметры датасету?)")
3) Через карточку wnd_OfferingInContractEdit? (А почему вы передаете параметры сразу датасету, а не карточке редактирования, а потом с ней не работаете?)
в пункте 3 пункт 3
через карточку wnd_OfferingInContractEdit выбираю продукт
кстати, это датасет чего? карточки или грида? это как бы разные экземпляры...
грида
Ну тогда передавайте параметры в карточку wnd_OfferingInContractEdit (а не вдатасет), точнее в ней на OnPrepare берите параметры из родительского окна (т.е. грида), а в датасет вставляйте значения, что-то типа так:
var ParentWindow = Self.Attributes('NotifyObject').ParentWindow; //Получаем наш грид if (ParentWindow.Attributes('AnnexID')!=null) { dlData.Dataset('AnnexID') = ParentWindow.Attributes('AnnexID'); dlData.Dataset('ContractID') = ParentWindow.Attributes('ContractID'); }
надо больше информации, т.к. не понятно, что на самом деле вы делаете
"Сазанов Александр Владимирович" написал:Ну тогда передавайте параметры в карточку wnd_OfferingInContractEdit (а не вдатасет), точнее в ней на OnPrepare берите параметры из родительского окна (т.е. грида), а в датасет вставляйте значения, что-то типа так:
var ParentWindow = Self.Attributes('NotifyObject').ParentWindow; //Получаем наш грид
if (ParentWindow.Attributes('AnnexID')!=null) {
dlData.Dataset('AnnexID') = ParentWindow.Attributes('AnnexID');
dlData.Dataset('ContractID') = ParentWindow.Attributes('ContractID');
}
да, так и сделал
но интересно почему мой вариант не работает
"Андросов Дмитрий" написал:надо больше информации, т.к. не понятно, что на самом деле вы делаете
что конкретно надо?
выложите сервисы, например
или хотя бы куски кода побольше (желательно все события грида, карточек и датасетов)
у вас либо что-то не туда пишется, либо не оттуда читается, либо перезаписывается