2016-10-04 2 views
0

У меня есть программный модуль, который имеет производственные линии заказов таблицу в качестве источника и триггера на Run показывает эти две строки кода:Запуск программный модуль по ссылке в Navision

ProdOrderLine.GET(Status,'xxxx',10000); 
ExecuteFunction(ProorderLine); 

XXXX представляет производственный заказ Нет но кто-то жестко закодировал его, как вы можете видеть. Как я могу назвать этот код еще где (скажем, в форме), но по ссылке, в зависимости от того, на какой строке производственного заказа я нахожусь? Я попытался выполнить процедуру SetRANGE или вызвать метод codeunit.run напрямую и до сих пор не повезло. Помогите!!

+0

Wich версия ** СЧА ** ?, но это не зависит от того, как вы фильтруете любую таблицу. –

ответ

4

Откройте код, или его копию для тестирования, в режиме проектирования и установите таблицу no. свойство codeunit. Затем вы можете ссылаться на запись, переданную в codeunit.run как Rec внутри функции OnRun.

Путь вы передаете запись изменяется, но один из способов заключается в использовании этого синтаксиса:

Codeunit.RUN(CodeUnitNumber, Record) 

SetRange не будет достаточно на переданному в переменной, потому что это только фильтры, но не выбрать запись. Вам не понадобится ProdOrderLine.GET в OnRun, если я правильно понимаю вашу проблему. Просто позвоните в ExecuteFunction (Rec).

Вы не упомянули номера версий или функции ExecuteFunction, но попробуйте.

Вы можете найти более подробную информацию по адресу: https://msdn.microsoft.com/en-us/library/dd301214(v=nav.90).aspx и https://msdn.microsoft.com/en-us/library/dd355035(v=nav.90).aspx

Прошло несколько лет с тех пор я разработал для Navision, и я не есть способ тестирования больше. Надеюсь, это укажет вам в правильном направлении, и я не забыл ничего критического.

+0

Большое вам спасибо за помощь. Да, вы сделали это, отметив один шаг, который я пропустил, когда попытался использовать rec. Я не задал свойство таблицы, поэтому я попытаюсь попробовать. – WSNoob

0

В зависимости от того, действительно ли первичный ключ для таблицы производственного заказа [Статус], [Номер заказа], [Номер строки], вам необходимо использовать FIND ('-') или FINDSET в зависимости от того, на какой версии NAV.

Похоже, что линия нет также жестко закодирована .... этот процесс касается только первой строки заказа?

Вас интересует номер для заказа или номер документа?

В любом случае я бы записать его в качестве условного оператора, если вы предпочитаете сообщение об ошибке возвращается в пользовательский интерфейс, если результаты фильтрации в 0 строк:

IF ProdOrderLine.GET(Status,"Order No.", "Line No.") THEN 
    ExecuteFunction(ProdOrderLine); 
Смежные вопросы