10.06.2008, 14:34 | #1 |
MCTS
|
Поле SalesId из SalesLine
Привет всем. Возник следующий вопрос. Есть новая таблица. В ней должно быть поле, указывающее на строку заказу SalesLine. Создал поле RefRecId ccылающееся на строку заказа. Теперь каким образом сделать так, чтобы на новой форме, было поле Заказ на продажу, в котором бы отображалось значение SalesId, найденное по RefRecId моей таблицы, и была возможность модифицировать это поле, а при модификации прописывалось бы новое значение RefRecId?
|
|
10.06.2008, 14:42 | #2 |
Member
|
А каким образом при указании нового номера заказа система должна определить строку заказа, на которую она пропишет ссылку?
И правильнее было бы ссылку на строку заказа делать по полю Номер лота. Так... для единообразия. Он именно для этого и задуман был. Более того, уже существующие связи в системе по нему прописаны. Технически "в лоб" задача решается edit-методом. Но с учетом описанного выше.
__________________
С уважением, glibs® |
|
10.06.2008, 14:52 | #3 |
Участник
|
А что должно происходить если в заказе несколько строк?Какую из SalesLine для данного salesID надо выбрать?
|
|
10.06.2008, 14:56 | #4 |
MCTS
|
Хорошо. Создаем поле SmmWorks.InventTransId. Делаем в Works релейшен на SaleLine по этому полю. А дальше то как? Если создать на SmmWorks_DS метод:
X++: //BP Deviation documented edit SalesId editSalesId( boolean _set, SmmWorks _smmWorks, SalesId _salesId ) { ; if (_set) { // здесь надо бы как-то установить SmmWorks.InventTransId = ...; - как? } return SalesLine::findInventTransId(_smmWorks.InventTransId).SalesId; } |
|
10.06.2008, 14:57 | #5 |
MCTS
|
Цитата:
А что должно происходить если в заказе несколько строк?
Цитата:
Какую из SalesLine для данного salesID надо выбрать?
|
|
10.06.2008, 14:57 | #6 |
Участник
|
либо надо выбирать и лот тоже. Либо надо эти поля не редактировать а просто вызывать форму из SalesTable (добавить в нижней части кнопочку) а там поле само заполнится по relation
|
|
10.06.2008, 15:00 | #7 |
Axapta
|
|
|
10.06.2008, 15:00 | #8 |
Участник
|
Посмотрите как редактируются другие вещи, связанные с SalesLine - например то, что по кнопке \Forms\SalesTable\Designs\Design\[Group:Line]\[ButtonGroup:ButtonLine]\[MenuButton:ButtonLineSetup]\MenuItemButton:ButtonMarkupTransLine (Настройка\Накл. расходы в нижней части)
|
|
10.06.2008, 15:04 | #9 |
MCTS
|
Цитата:
Это вы у нас спрашиваете, какая SalesLine вам исходя из вашей бизнес-логики нужна?
Может лукап как-то переделать - передавать туда, текущую строку, потом возвращать SalesLine. Но это уже как-то совсемкоряво выходит. Должно же быть стандартное решение... |
|
10.06.2008, 15:07 | #10 |
Axapta
|
Э... Так вы в лукапе выбираете что? Строку заказа или заказ (salesId)? Ничего не понимаю.
|
|
10.06.2008, 15:09 | #11 |
Участник
|
можно сделать вспомогательное поле на форме: SalesID и сначала выбирать его, а потом SalesLine, только те, которые входят в выбранный salesTable.
|
|
10.06.2008, 15:09 | #12 |
MCTS
|
выбираю строку заказа, конечно. Если бы там SalesTable был, проблем бы не было...
|
|
10.06.2008, 15:11 | #13 |
MCTS
|
Цитата:
можно сделать вспомогательное поле на форме
|
|
10.06.2008, 15:17 | #14 |
Axapta
|
Тогда при чем тут модифицировать поле SalesId? может вы все же задачу опишите, а не ваш метод решения? или я тут один не понимаю о чем речь. Вам надо выбирать строки, сохранять в таблице ссылку на строку, но отображать просто SalesId?
Как правильно задать вопрос, что бы быть услышанным? |
|
10.06.2008, 15:17 | #15 |
Участник
|
либо два поля либо своя лукап форма либо без лукапа а
|
|
10.06.2008, 15:23 | #16 |
MCTS
|
Хорошо. Задача:
есть новая таблица SmmWorks. К каждой строке этой таблицы по полю RefRecId (InventTransId, оказывается, не пойдет, так как не уникально) привязывается строка заказа (SalesLine). Нужно на форме отображать ОДНО поле в выпадающем списке, которого будут строки SalesLine. Отображаться будет SalesId X++: SalesLine::findRecId(smmWorks.RefRecId).SalesId |
|
10.06.2008, 15:27 | #17 |
Axapta
|
|
|
10.06.2008, 15:28 | #18 |
MCTS
|
Цитата:
Там даже индекс по нему уникальный есть...
|
|
10.06.2008, 15:28 | #19 |
Участник
|
Лучше посмотрите внимательно на таблицу InventTrans.
В ней есть всё и лот и к какому типу документа относится лот и номер самого документа. В лукапе у вас как раз отображается эта таблица. Так что если edit метод делать так в InventTrans файндить. А вообще я бы не стал это делать лучше бы поле сделал, а в лукапе достал бы целиком строку(InventTrans), а из неё код документа. Что-то типа вот этой конструкции. Свои формы и таблицы поставите. X++: public void lookup(FormControl _formControl, str _filterStr) { InventSum inventSum; FormRun fr; Args args; ; args = new Args(formStr(InventSumForSerial)); args.caller(this); fr = new FormRun(args); fr.init(); this.performFormLookup(fr, _formControl); fr.wait(); inventSum = fr.dataSource(1).cursor(); } |
|
|
За это сообщение автора поблагодарили: Eldar9x (1). |
10.06.2008, 15:58 | #20 |
MCTS
|
miklenew, вполне подходит. Создал новую форму в которой SalesLine. В lookup отображаю ее. Всем большое спасибо!
|
|