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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 30.10.2012, 16:52   #1  
Lapunder is offline
Lapunder
Участник
 
40 / 10 (1) +
Регистрация: 24.04.2008
Доброго дня!

Дано. Форма, созданная на основе временной таблицы, использующей структуру 5700 Stockkeeping Unit
Форма имеет вид - параметры (фильтры по дате, складу, поставщику, а так же галочка - скрывать или показывать записи с нулевым количеством) и табличная часть.

При нажитии на галку (параметр на форме) - скрываются нулевые записи. При выключении галки - показываются все записи. И вот тут начинается страшное: при тыке в табличную часть выходит следующая ошибка

"Единица хранения нельзя изменить в этой форме."

Хотя по сути дела галочка - это либо установка фильтра по полю "Количество", либо снятие.

Понимаю, что тут какая-то ерунда мелкая, но время на эту ошибку уже убито
Старый 30.10.2012, 17:36   #2  
InTacto is offline
InTacto
Участник
Аватар для InTacto
 
323 / 11 (1) +
Регистрация: 09.08.2005
Такая ошибка обычно возникает, если у вас не хватает прав на изменение. Есть подозрение, что форма у вас открыта на редактирование. Без тыкания по галке такая ошибка возникает?
Старый 30.10.2012, 21:28   #3  
.Quattro. is offline
.Quattro.
Участник
Лучший по профессии 2009
 
194 / 22 (1) +++
Регистрация: 22.05.2006
CurrForm.UPDATE(FALSE) стоит на OnAfterValidate в триггере простановки галочки? Он нужен там.
Старый 31.10.2012, 14:24   #4  
DA_NEAL is offline
DA_NEAL
Участник
Аватар для DA_NEAL
Лучший по профессии 2017
Лучший по профессии 2009
 
788 / 54 (3) ++++
Регистрация: 05.08.2002
Адрес: Королев
Можно попробовать после кнопки обновления сделать что то вроде

IF FINDFIRST THEN;

xRec.COPY(Rec);
__________________
Want to believe...
Старый 31.10.2012, 15:12   #5  
ОльгаМ is offline
ОльгаМ
Участник
 
36 / 10 (1) +
Регистрация: 07.09.2004
Адрес: Москва
В триггере OnValidate Поля "простановки галочки" навесьте на таблицу Фильтры выбора таблицы, а
в триггере OnAfterValidate этого же поля пусть будет только CurrForm.UPDATE, без FАLSE.
Старый 31.10.2012, 23:18   #6  
alexb_imported is offline
alexb_imported
Участник
 
256 / 12 (1) ++
Регистрация: 25.08.2006
Цитата:
Сообщение от Lapunder Посмотреть сообщение
При нажитии на галку (параметр на форме) - скрываются нулевые записи. При выключении галки - показываются все записи. И вот тут начинается страшное: при тыке в табличную часть выходит следующая ошибка

"Единица хранения нельзя изменить в этой форме."

Хотя по сути дела галочка - это либо установка фильтра по полю "Количество", либо снятие.
Может у вас те же пробемы, что обсуждались уже здесь
- в property всей формы в строке в TableBoxID стоит что-нибудь?
- в property всей формы: что стоит в ModifyAllowed?
- табличная часть: Editable = No ?
В общем копайте в эту сторону
Старый 31.10.2012, 23:29   #7  
alexb_imported is offline
alexb_imported
Участник
 
256 / 12 (1) ++
Регистрация: 25.08.2006
Цитата:
Сообщение от helga7289 Посмотреть сообщение
а в триггере OnAfterValidate этого же поля пусть будет только CurrForm.UPDATE, без FАLSE.
А разве дефолтное значение CurrForm.UPDATE (без передачи параметра) -> TRUE ?
По-моему FALSE, т.е. CurrForm.UPDATE и CurrForm.UPDATE(FALSE) -> одно и тоже.
Старый 01.11.2012, 16:14   #8  
ОльгаМ is offline
ОльгаМ
Участник
 
36 / 10 (1) +
Регистрация: 07.09.2004
Адрес: Москва
Скорее всего при навешивании фильтра срабатывает валидейт какого-то поля в табл.5700.
Ничего страшного не будет, если вы снабдите свою форму косвенными правами на табл.5700 (в свойствах формы свойство Permissions).
Старый 02.11.2012, 12:23   #9  
alexb_imported is offline
alexb_imported
Участник
 
256 / 12 (1) ++
Регистрация: 25.08.2006
Цитата:
Сообщение от helga7289 Посмотреть сообщение
Скорее всего при навешивании фильтра срабатывает валидейт какого-то поля в табл.5700.
А можете првести пример кода, который путём наложения фильтров вызывает Validatе какого-нибудь поля?
Я лично такой фичи в НАВе не знаю.

Цитата:
Сообщение от helga7289 Посмотреть сообщение
Ничего страшного не будет, если вы снабдите свою форму косвенными правами на табл.5700 (в свойствах формы свойство Permissions).
Проблема не в отсутствии косвенных прав на внесение изменений в табл.5700, а в том, что форма пытается при тыке в табл. часть эти изменения в таблицу 5700 вообще ввести. А ведь форма Lapunder'a основана на временной таблице, значит предназначена не для внесения изменений в табл. 5700.

И в чём всё же по Вашему разница между CurrForm.UPDATE и CurrForm.UPDATE(FALSE) ?
Старый 02.11.2012, 12:53   #10  
.Quattro. is offline
.Quattro.
Участник
Лучший по профессии 2009
 
194 / 22 (1) +++
Регистрация: 22.05.2006
Цитата:
Сообщение от AlexB Посмотреть сообщение
А можете првести пример кода, который путём наложения фильтров вызывает Validatе какого-нибудь поля?
Я лично такой фичи в НАВе не знаю.
Попробуйте в таблице Bin Content наложить фильтр на несуществующий товар
Старый 02.11.2012, 16:44   #11  
alexb_imported is offline
alexb_imported
Участник
 
256 / 12 (1) ++
Регистрация: 25.08.2006
Цитата:
Сообщение от .Quattro. Посмотреть сообщение
Попробуйте в таблице Bin Content наложить фильтр на несуществующий товар
Если Вы имеете ввиду вылетающую при этом ошибку "Товар номер **** не существует", то да, про этот вариант я как-то подзабыл,
т.к. обхожу всегда известным трюком: фильтрую не с SETRANGE a с SETFILTER.
И вылетает эта ошибка только потому, что номер товара входит в перв. ключ таблицы "Bin Content". Если наложить фильтр, например, на несуществующий "Warehouse Class Code", то ошибка не вылетает.
Если наложить фильтр на несуществующий товар XYZ по подобию SETFILTER например с PIPE, т.е. XYZ|XYZ, то и в этом случае ошибка не вылетает.
Опять же: всё это не имеет никакого отношения к проблематике с формой у Lapunder'a, он просто фильтрует (временную!) т. 5700 на записи без нулевого кол-ва (очевидно decimal поле Inventory не входящее в перв. ключ!) и форма пробует сразу внести какие-то изменения (во временнную!) т. 5700, чего по не должно быть и при этом ругается.
Старый 13.11.2012, 12:37   #12  
Lapunder is offline
Lapunder
Участник
 
40 / 10 (1) +
Регистрация: 24.04.2008
Цитата:
Сообщение от .Quattro. Посмотреть сообщение
CurrForm.UPDATE(FALSE) стоит на OnAfterValidate в триггере простановки галочки? Он нужен там.
спасибо. затык был именно в этом. было написано просто CurrForm.UPDATE, а в нем по умолчанию триггер вызывался.
 


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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 09:40.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.