|
03.12.2008, 13:53 | #1 |
Участник
|
Всем здрассьте!
Наверное уже много раз обсуждалось, но поиск не принес результатов. Есть некая форма списочного вида. Как из ф-ции этой формы "встать" на определенную запись? (требуется указать таким образом пользователю на эту запись) Заранее спасибо всем ответившим. |
|
03.12.2008, 14:16 | #2 |
Участник
|
Забыл сказать: форма является субформой.
|
|
03.12.2008, 17:29 | #3 |
Участник
|
Поробуйте пограться свойством 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, 16:43 | #4 |
Участник
|
Зачем через Функции? Фильтр на табличную часть документа или поиск нельзя применить?
|
|
03.12.2008, 16:46 | #5 |
Участник
|
Не, нельзя.
Некой ф-цией в таблицу добавляется запись. Когда добавилась, нужно "встать" на нее, чтобы показать пользователю. Вот. |
|
03.12.2008, 17:00 | #6 |
Участник
|
В субформе напишите функцию, которая устанавливает указатель на добавленную запись. И можете вызывать ее из главной формы. Я так делал.
|
|
03.12.2008, 17:15 | #7 |
Участник
|
Цитата:
|
|
03.12.2008, 17:39 | #8 |
Участник
|
Цитата:
Сообщение от Fordewind
Как вызывать функции сабфомы с формы см. тут. На примере вызова Update.
Пробовал CurrForm.[subform].FORM.SETRECORD([Record]); во всех случаях возникает RENAME, т.е.: Переименовать Запись? Как с этим бороться? |
|
03.12.2008, 17:45 | #9 |
Участник
|
В субформе напишите функцию:
SetCustomRecord(Параметры); IF Rec.GET(Параметры) THEN; Вызывайте функцию CurrForm.[subform].FORM.SetCustomRecord(Параметры); |
|
04.12.2008, 10:56 | #10 |
Участник
|
Вот даже как пробовал делать из головной формы:
CurrForm.PurchLines.FORM.GETRECORD(_PurchLine1); _PurchLine2.COPYFILTERS(_PurchLine1); _PurchLine2.FIND('+'); CurrForm.PurchLines.FORM.SETRECORD(_PurchLine2); все равно rename |
|
04.12.2008, 11:43 | #11 |
Участник
|
В субформе пишите функцию
SeekLine(LineNo:ingeger): IF PurchLine.GET("Document Type","Document No.",LineNo) THEN; CurrForm.UPDATE(FALSE); А В главной форме ее вызывайте. |
|
04.12.2008, 12:04 | #12 |
Участник
|
Заработало. Логики, впрочем, не прослеживается. Почему с 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 |
Участник
|
Логика в CurrForm.UPDATE(FALSE);
В моем примере забыл про него, поэтому Rename. Chebv строчку добавил. С Find'ом так же нужно CurrForm.Update(false) делать |
|
04.12.2008, 12:29 | #14 |
Участник
|
Я тоже его забыл:
IF GET("Document Type", "Document No.", _LineNo) THEN; все работает. а FIND('+'); не работает. Точнее работает, т.е. позиционируется на последнюю запись в форме, но при попытке "схода" с нее rename. А вот если написать: FIND('+'); CurrForm.UPDATE(FALSE); нормально работает. Резюмируем: Если GET, то update не нужен. Если FIND, то без update никак. |
|