Показать сообщение отдельно
Старый 13.06.2013, 23:45   #2  
romeo is offline
romeo
Участник
Аватар для romeo
 
564 / 10 (2) +
Регистрация: 31.03.2004
Цитата:
Сообщение от 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);