AXForum  
Вернуться   AXForum > Microsoft Dynamics NAV > NAV: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 03.12.2008, 13:53   #1  
Sergikk is offline
Sergikk
Участник
 
10 / 10 (1) +
Регистрация: 03.12.2008
Всем здрассьте!

Наверное уже много раз обсуждалось, но поиск не принес результатов.

Есть некая форма списочного вида. Как из ф-ции этой формы "встать" на определенную запись?
(требуется указать таким образом пользователю на эту запись)

Заранее спасибо всем ответившим.
Старый 03.12.2008, 14:16   #2  
Sergikk is offline
Sergikk
Участник
 
10 / 10 (1) +
Регистрация: 03.12.2008
Забыл сказать: форма является субформой.
Старый 03.12.2008, 16:43   #3  
Case is offline
Case
Участник
 
89 / 10 (1) +
Регистрация: 26.09.2005
Адрес: Москва
Зачем через Функции? Фильтр на табличную часть документа или поиск нельзя применить?
Старый 03.12.2008, 16:46   #4  
Sergikk is offline
Sergikk
Участник
 
10 / 10 (1) +
Регистрация: 03.12.2008
Не, нельзя.
Некой ф-цией в таблицу добавляется запись. Когда добавилась, нужно "встать" на нее, чтобы показать пользователю. Вот.
Старый 03.12.2008, 17:00   #5  
Cheb is offline
Cheb
Участник
Лучший по профессии 2017
 
138 / 13 (1) ++
Регистрация: 22.09.2002
Адрес: Ростов-на-Дону -> Москва
В субформе напишите функцию, которая устанавливает указатель на добавленную запись. И можете вызывать ее из главной формы. Я так делал.
Старый 03.12.2008, 17:15   #6  
Fordewind is offline
Fordewind
Участник
 
1,134 / 10 (3) +
Регистрация: 01.12.2005
Цитата:
Сообщение от chebv Посмотреть сообщение
В субформе напишите функцию, которая устанавливает указатель на добавленную запись. И можете вызывать ее из главной формы. Я так делал.
Как вызывать функции сабфомы с формы см. тут. На примере вызова Update.
Старый 03.12.2008, 17:29   #7  
RedFox is offline
RedFox
Участник
 
1,441 / 10 (0) +
Регистрация: 28.12.2004
Адрес: Киев
Цитата:
Сообщение от Sergikk Посмотреть сообщение
Забыл сказать: форма является субформой.
Поробуйте пограться свойством ACTIVATE для нужно поля, например CurrForm.Type.ACTIVATE.
Или с триггером Form - OnActivateForm()

P.S. Исходя их хелпа: Comments
A form or control can become active when the end user clicks on it or selects it by any other means such as through the keyboard. This function provides another way to make active a form or control that's already displayed on the screen.
Старый 03.12.2008, 17:39   #8  
Sergikk is offline
Sergikk
Участник
 
10 / 10 (1) +
Регистрация: 03.12.2008
Цитата:
Сообщение от Fordewind Посмотреть сообщение
Как вызывать функции сабфомы с формы см. тут. На примере вызова Update.
Пробовал и в субформе делать Rec.FIND и из головной субформы то же самое.
Пробовал CurrForm.[subform].FORM.SETRECORD([Record]);
во всех случаях возникает RENAME, т.е.: Переименовать Запись?

Как с этим бороться?
Старый 03.12.2008, 17:45   #9  
.Quattro. is offline
.Quattro.
Участник
Лучший по профессии 2009
 
194 / 22 (1) +++
Регистрация: 22.05.2006
В субформе напишите функцию:
SetCustomRecord(Параметры);
IF Rec.GET(Параметры) THEN;

Вызывайте функцию
CurrForm.[subform].FORM.SetCustomRecord(Параметры);
Старый 04.12.2008, 10:56   #10  
Sergikk is offline
Sergikk
Участник
 
10 / 10 (1) +
Регистрация: 03.12.2008
Вот даже как пробовал делать из головной формы:

CurrForm.PurchLines.FORM.GETRECORD(_PurchLine1);
_PurchLine2.COPYFILTERS(_PurchLine1);
_PurchLine2.FIND('+');
CurrForm.PurchLines.FORM.SETRECORD(_PurchLine2);

все равно rename
Старый 04.12.2008, 11:43   #11  
Cheb is offline
Cheb
Участник
Лучший по профессии 2017
 
138 / 13 (1) ++
Регистрация: 22.09.2002
Адрес: Ростов-на-Дону -> Москва
В субформе пишите функцию
SeekLine(LineNo:ingeger):
IF PurchLine.GET("Document Type","Document No.",LineNo) THEN;
CurrForm.UPDATE(FALSE);

А В главной форме ее вызывайте.
Старый 04.12.2008, 12:04   #12  
Sergikk is offline
Sergikk
Участник
 
10 / 10 (1) +
Регистрация: 03.12.2008
Заработало. Логики, впрочем, не прослеживается. Почему с GET работает, а с FIND прилетает rename.
и по-прежнему не ясно почему нормально не работает вот это:
CurrForm.PurchLines.FORM.GETRECORD(_PurchLine1);
_PurchLine2.COPYFILTERS(_PurchLine1);
_PurchLine2.FIND('+');
CurrForm.PurchLines.FORM.SETRECORD(_PurchLine2);

Тем не менее, результат есть. Всем участникам большое спасибо и специальное спасибо .Quattro. и chebv
Старый 04.12.2008, 12:16   #13  
.Quattro. is offline
.Quattro.
Участник
Лучший по профессии 2009
 
194 / 22 (1) +++
Регистрация: 22.05.2006
Логика в CurrForm.UPDATE(FALSE);
В моем примере забыл про него, поэтому Rename.
Chebv строчку добавил.
С Find'ом так же нужно CurrForm.Update(false) делать
Старый 04.12.2008, 12:29   #14  
Sergikk is offline
Sergikk
Участник
 
10 / 10 (1) +
Регистрация: 03.12.2008
Я тоже его забыл:
IF GET("Document Type", "Document No.", _LineNo) THEN;
все работает.
а FIND('+'); не работает.
Точнее работает, т.е. позиционируется на последнюю запись в форме, но при попытке "схода" с нее rename.
А вот если написать:
FIND('+');
CurrForm.UPDATE(FALSE);
нормально работает.

Резюмируем:
Если GET, то update не нужен.
Если FIND, то без update никак.
 


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 10:14.