06.10.2011, 11:29 | #1 |
Участник
|
Есть списочная форма с флоу филдом. На поле с флоу филдом накладывается обычный фильтр. А затем накладывается флоу фильтр. Если записей, удовлетворяющих требованиям совокупности фильтров нет, форма становится неактивной. Есть ли возможность избежать этого?
|
|
06.10.2011, 12:48 | #2 |
Участник
|
FlowFilter на отображение записей не влияет, он влияет на расчет FlowField'ов. Я не совсем понял, что значит избежать этого? Ведь если записей нет, то и делать на этой форме нечего, ведь так? Или вы хотите чтобы кнопки у Вас на форме работали?
|
|
06.10.2011, 13:02 | #3 |
Участник
|
На отображение записей влияет фильтр, поставленный на поле с флоу филдом. Допустим, я хочу разместить фильтры на самой форме, например, во фрейме в верхней части. И если записей не будет обнаружено, хочу иметь возможность просто поменять фильтр на самой форме. Вот если сделать наоборот - то есть сначала поставить флоу фильтр, а затем фильтр на поле флоу филд так, чтобы записей не было, то форма просто не отобразит записей оставаясь при этом активной.
|
|
06.10.2011, 13:25 | #4 |
Участник
|
Цитата:
Сообщение от Васыо
На отображение записей влияет фильтр, поставленный на поле с флоу филдом. Допустим, я хочу разместить фильтры на самой форме, например, во фрейме в верхней части. И если записей не будет обнаружено, хочу иметь возможность просто поменять фильтр на самой форме. Вот если сделать наоборот - то есть сначала поставить флоу фильтр, а затем фильтр на поле флоу филд так, чтобы записей не было, то форма просто не отобразит записей оставаясь при этом активной.
Кстати, о какой форме идет речь? Стандартная или собственная? |
|
06.10.2011, 13:34 | #5 |
Участник
|
Это на любой списочной форме так. Просто мне интересно, можно ли как-то этого избежать? Не красиво как-то пользоваться кнопками управления фильтрами, когда они (фильтры) выведены на форму.
|
|
06.10.2011, 13:36 | #6 |
Участник
|
Обычно при отсутствии записей в фильтре становится неактивна форма, если у нее свойство Editable = No. А у вас?
|
|
06.10.2011, 13:43 | #7 |
Участник
|
Milk, помогло! Только дело оказалось не в Editable, а в InsertAllowed, ModifyAllowed и DeleteAllowed!
|
|
06.10.2011, 14:54 | #8 |
Участник
|
Хм... Если сделать InsertAllowed = Yes, исчезает проблема с деактивацией формы, но появляется новая проблема: добиваемся того, чтобы на форме не было записей, снимаем фильтр и система пытается вставить в таблицу запись. При этом TextBox нередактируемый.
|
|
06.10.2011, 16:14 | #9 |
Участник
|
Цитата:
вся форма Editable = Yes TableBox (в которой показываются отфильтрованные записи) Editable = No InserтAllowed итд оставьте в дефолтном значении (т.е <Yes>) |
|
06.10.2011, 16:30 | #10 |
Участник
|
Так у меня и есть. Опечатался, конечно TableBox нередактируемый. Проблема лежит именно в области flow field/flow filter. Без фильтрации по flow field полям всё работает прекрасно и замечательно.
|
|
06.10.2011, 22:35 | #11 |
Участник
|
Цитата:
завёл новую списочную форму для таблицы Item (SourceTable=Item). Вся форма: Editable=Yes, TableBox: Editable=No InsertAllowed и.т.д. оставил без изменения. В TableBox поля: No., Description, Inventory (FlowField) 1. Вне TableBox'а завёл TextBox (SourceExpr.= Location Filter (FlowFilter, поле таблицы Item). 2. Вне TableBox'а завёл TextBox (SourceExpr.= "InvQtyFilter" (glob. variable, type=Decimal) В OnAfterValidate()-trigger'e код: SETRANGE(Inventory,InvQtyFilter); Код: CurrForm.UPDATE; Код: CurrForm.UPDATE; комбинации, результат: - ТableBox показывает записи соответственно фильтрам, если записей нет, то становится неактивным - TextВох'ы и button всё время активны, т.е. с ними всё время можно работать и изменять фильтры, вне зависиммости от того, активна TableBox или нет. Короче, вся форма с всеми контролами за исключением TableBox'а всё время активна. Т.е. всё прекрасно работет. Попробуйте проделать тоже самое. Ведь ваша форма, в которой проблемы с неактивностью, делает по-идее то же самое? Если у всей формы и у TableBox'а убрать значения в property Edtable, т.е. оставить дефолтным <Yes>, то и будет некрасивый эффект как у вас. |
|
07.10.2011, 09:38 | #12 |
Участник
|
AlexB, да, я говорю о такой форме. Только попробуйте в Вашей конструкции сделать следующее:
1. поставьте фильтр по InvQtyFilter; 2. а теперь поставьте flow filter по складу таким образом, чтобы на форме не должно было бы оказаться записей. Получите ошибку: Внесение изменений в базу данных до начала выполнения транзакции невозможно. |
|
07.10.2011, 11:29 | #13 |
Участник
|
Цитата:
Сообщение от Васыо
AlexB, да, я говорю о такой форме. Только попробуйте в Вашей конструкции сделать следующее:
1. поставьте фильтр по InvQtyFilter; 2. а теперь поставьте flow filter по складу таким образом, чтобы на форме не должно было бы оказаться записей. Получите ошибку: Внесение изменений в базу данных до начала выполнения транзакции невозможно. Проверьте на вашей форме property "PopulateAllFields". Если я в моей форме поставлю в этом property = Yes, то понятное дело, ошибка вылетает и у меня. Если у вас в этом property = Yes , то вы не сделали как я вам посоветовал: создать новую форму, никакие property не трогать кроме Editable (property PopulateAllFields=No), и.т.д. т.е. проделать всё как как я уже описал, и увидите, что всё прекарасно работает. |
|
07.10.2011, 11:56 | #14 |
Участник
|
AlexB, а Вы точно делали именно в той последовательности, о которой пишу я? Сначала фильтр на Inventory, затем flow field на склад таким образом, чтобы на форме не оказалось записей? Ещё раз переделал всё заново и снова ошибка, я о ней уже писал выше: Товар Номер 'М00004' уже существует. Не так, так эдак система пытается создать запись. У меня NAV 2009 R2.
|
|
07.10.2011, 12:09 | #15 |
Участник
|
Вот моя формочка, только без кнопки.
|
|
07.10.2011, 12:14 | #16 |
Участник
|
Для простоты эксперимента попробуйте в фильтр по Inventory ввести заведомо несуществующее количество. Flow filter можно даже и не трогать.
|
|
07.10.2011, 12:50 | #17 |
Участник
|
Цитата:
Сообщение от Васыо
AlexB, да, я говорю о такой форме. Только попробуйте в Вашей конструкции сделать следующее:
1. поставьте фильтр по InvQtyFilter; 2. а теперь поставьте flow filter по складу таким образом, чтобы на форме не должно было бы оказаться записей. Получите ошибку: Внесение изменений в базу данных до начала выполнения транзакции невозможно. |
|
07.10.2011, 13:16 | #18 |
Участник
|
Если DelayedInsert установить в Да, то ставим фильтр по заведомо несуществующему значению на Inventory, снимаем фильтр и пытаемся что-либо сделать в TableBoxе: "Товар нельзя вставить в эту форму". Если в Нет, то получим "Товар Номер 'такой-то' уже существует".
|
|
07.10.2011, 14:42 | #19 |
Участник
|
Вот ваша же формочка, только я сделал в ней маленькую корректуру, теперь и у вас всё работет.
Решение: в property всей формы строка с TableBoxID=1000000000; (Нашёл посредством сравнения обьектов в текстовом формате). Отсутсвие этой строки вело к ошибке. Очевидно, если делать фому не через ассистента и привесить tablebox позже мануально, то такой строки нет. Я же делал мою форму с помощью ассистента и у меня эта строка была. |
|
07.10.2011, 14:46 | #20 |
Участник
|
ЧУМА!
AlexB, спасибо! |
|