![]() |
#1 |
MCTS
|
Поле SalesId из SalesLine
Привет всем. Возник следующий вопрос. Есть новая таблица. В ней должно быть поле, указывающее на строку заказу SalesLine. Создал поле RefRecId ccылающееся на строку заказа. Теперь каким образом сделать так, чтобы на новой форме, было поле Заказ на продажу, в котором бы отображалось значение SalesId, найденное по RefRecId моей таблицы, и была возможность модифицировать это поле, а при модификации прописывалось бы новое значение RefRecId?
|
|
![]() |
#2 |
Member
|
А каким образом при указании нового номера заказа система должна определить строку заказа, на которую она пропишет ссылку?
И правильнее было бы ссылку на строку заказа делать по полю Номер лота. Так... для единообразия. Он именно для этого и задуман был. Более того, уже существующие связи в системе по нему прописаны. Технически "в лоб" задача решается edit-методом. Но с учетом описанного выше.
__________________
С уважением, glibs® |
|
![]() |
#3 |
Участник
|
А что должно происходить если в заказе несколько строк?Какую из SalesLine для данного salesID надо выбрать?
|
|
![]() |
#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; } |
|
![]() |
#5 |
MCTS
|
Цитата:
А что должно происходить если в заказе несколько строк?
Цитата:
Какую из SalesLine для данного salesID надо выбрать?
|
|
![]() |
#6 |
Участник
|
либо надо выбирать и лот тоже. Либо надо эти поля не редактировать а просто вызывать форму из SalesTable (добавить в нижней части кнопочку) а там поле само заполнится по relation
|
|
![]() |
#7 |
Axapta
|
|
|
![]() |
#8 |
Участник
|
Посмотрите как редактируются другие вещи, связанные с SalesLine - например то, что по кнопке \Forms\SalesTable\Designs\Design\[Group:Line]\[ButtonGroup:ButtonLine]\[MenuButton:ButtonLineSetup]\MenuItemButton:ButtonMarkupTransLine (Настройка\Накл. расходы в нижней части)
|
|
![]() |
#9 |
MCTS
|
Цитата:
Это вы у нас спрашиваете, какая SalesLine вам исходя из вашей бизнес-логики нужна?
Может лукап как-то переделать - передавать туда, текущую строку, потом возвращать SalesLine. Но это уже как-то совсемкоряво выходит. Должно же быть стандартное решение... |
|
![]() |
#10 |
Axapta
|
Э... Так вы в лукапе выбираете что? Строку заказа или заказ (salesId)? Ничего не понимаю.
|
|
![]() |
#11 |
Участник
|
можно сделать вспомогательное поле на форме: SalesID и сначала выбирать его, а потом SalesLine, только те, которые входят в выбранный salesTable.
|
|
![]() |
#12 |
MCTS
|
выбираю строку заказа, конечно. Если бы там SalesTable был, проблем бы не было...
|
|
![]() |
#13 |
MCTS
|
Цитата:
можно сделать вспомогательное поле на форме
|
|
![]() |
#14 |
Axapta
|
Тогда при чем тут модифицировать поле SalesId? может вы все же задачу опишите, а не ваш метод решения? или я тут один не понимаю о чем речь. Вам надо выбирать строки, сохранять в таблице ссылку на строку, но отображать просто SalesId?
Как правильно задать вопрос, что бы быть услышанным? |
|
![]() |
#15 |
Участник
|
либо два поля либо своя лукап форма либо без лукапа а
|
|
![]() |
#16 |
MCTS
|
Хорошо. Задача:
есть новая таблица SmmWorks. К каждой строке этой таблицы по полю RefRecId (InventTransId, оказывается, не пойдет, так как не уникально) привязывается строка заказа (SalesLine). Нужно на форме отображать ОДНО поле в выпадающем списке, которого будут строки SalesLine. Отображаться будет SalesId X++: SalesLine::findRecId(smmWorks.RefRecId).SalesId |
|
![]() |
#17 |
Axapta
|
|
|
![]() |
#18 |
MCTS
|
Цитата:
Там даже индекс по нему уникальный есть...
|
|
![]() |
#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). |
![]() |
#20 |
MCTS
|
miklenew, вполне подходит. Создал новую форму в которой SalesLine. В lookup отображаю ее. Всем большое спасибо!
|
|