13.06.2013, 18:58 | #1 |
Участник
|
Недавно начал заниматься Nav.
И вот никак не могу решить первую поставленною задачу. Когда в форме заказы (модуль продажи и клиенты) в поле "Продажа клиент Но." кнопкой LookUp выбираю клиента (или вручную набираю его код), то после покидания поля все остальные поля на вкладках заполняются автоматически. Вопрос: каким образом можно сделать это программно. Т.е. программно создать запись в таблице Sales Header, но не присваивать значение каждому полю, а по коду клиента сымитировать авто вставку значений в остальные поля. Где-то же реализована вставка значений при работе с формой |
|
13.06.2013, 23:45 | #2 |
Участник
|
Цитата:
Сообщение от ferioney
Недавно начал заниматься Nav.
И вот никак не могу решить первую поставленною задачу. Когда в форме заказы (модуль продажи и клиенты) в поле "Продажа клиент Но." кнопкой LookUp выбираю клиента (или вручную набираю его код), то после покидания поля все остальные поля на вкладках заполняются автоматически. Вопрос: каким образом можно сделать это программно. Т.е. программно создать запись в таблице Sales Header, но не присваивать значение каждому полю, а по коду клиента сымитировать авто вставку значений в остальные поля. Где-то же реализована вставка значений при работе с формой Но вернемся к делу. В любом объекте навижена есть триггеры. Откройте таблицу 36 в дизайнере. Ткните в поле Селл-ту кастомер Но. и нажмите клавишу F9. В открывшемся окне курсор будет стоять на первом из двух триггеров этого поля. OnValidate(). Есть еще OnLookup(). Вот в триггере OnValidate() и написан весь интересующий вас код. Когда делаете программное создание документа объявите переменную на таблице 36. Rec. Скажем имя ей будет SalesHeader. И напишите. Код: SalesHeader.INIT; SalesHeader."Document Type" := SalesHeader."Document Type"::Order; // пусть новый док будет заказом продажи SalesHeader."No." := ''; SalesHeader.INSERT(TRUE); // здесь присвоится номер по серии номеров. OnInsert() - это тоже триггер в таблице. Параметр TRUE означает, что код в нем будет выполнен SalesHeader.VALIDATE("Sell-to Customer No.", 'КодКлиента'); // это интересующее вас место. Тут заполнится довольно много полей автоматом SalesHeader.MODIFY(FALSE); |
|