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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 10.11.2005, 10:37   #1  
romeo is offline
romeo
Участник
Аватар для romeo
 
564 / 10 (2) +
Регистрация: 31.03.2004
Это не вопрос, а предостережение скорее .. Совсем недавно столкнулся с неприятной очень проблемой. И осознал одну весчь. Валидейты на полях временной таблицы надо делать ... не надо делать -) Ибо хоть таблица и временная и поля у нее ненастоящие, но если на валидейте написано какое-либо действие по модификации данных, то оно будет не по-децки выполнено .. И даже если сейчас, на данный момент, валидейт безобидный или там и вовсе пусто, то это мина замедленного действия.
Будьте бдительны -)
Старый 10.11.2005, 12:30   #2  
Yoil is offline
Yoil
NavAx
NavAx Club
Лучший по профессии 2017
Лучший по профессии 2009
 
1,574 / 70 (6) ++++
Регистрация: 20.11.2002
Адрес: Msk
romeo, а можно более внятно?
"Не-по децки выполнено" - это как?
__________________
"Моей лошадке ядрышком полмордочки снесло..."
А.В.Суворов, письма к дочери
Старый 10.11.2005, 12:34   #3  
romeo is offline
romeo
Участник
Аватар для romeo
 
564 / 10 (2) +
Регистрация: 31.03.2004
2Дуд.
На валидейте Цены Единицы в 37 таблице мы написали модифай других, связанных строк из этой же таблицы. А в юните одном мы написали на временной таблице использование этого валидейта. И было удивительно почему в результате безобидного вроде действия сбрасываются цены в строках, которые вроде как и трогаться не должны.
Старый 10.11.2005, 13:12   #4  
Kirvisniemi is offline
Kirvisniemi
Moderator
 
342 / 13 (1) ++
Регистрация: 21.12.2004
В принципе логично. Кодюнит оперирует временной таблицей, а временная таблица содержит код, который работает с постоянной таблицей.
А вот если использовать в валидейте таблицы исключительно GET, FIND и т.п без рекордов, то все работало бы правильно
Старый 10.11.2005, 13:18   #5  
romeo is offline
romeo
Участник
Аватар для romeo
 
564 / 10 (2) +
Регистрация: 31.03.2004
2Tyrex.
Конечно. Просто изначально работает мысль, что таблица временная и валидейты вызываются просто для того, чтобы заполнить группу полей временной записи. Но вот то, что здесь же может содержаться и модифицирующий код как-то забывается. Только столкнувшись с такой проблемой я реально не то, что понял, а осознал опасность такой реализации. Так что временные реки надо заполнять присвоением и затем колбасить в них руками то, что необходимо. Без валидейтов.
Старый 10.11.2005, 14:33   #6  
zub is offline
zub
Участник
 
40 / 10 (1) +
Регистрация: 23.08.2005
Цитата:
Сообщение от romeo
2Tyrex.
Конечно. Просто изначально работает мысль, что таблица временная и валидейты вызываются просто для того, чтобы заполнить группу полей временной записи. Но вот то, что здесь же может содержаться и модифицирующий код как-то забывается. Только столкнувшись с такой проблемой я реально не то, что понял, а осознал опасность такой реализации. Так что временные реки надо заполнять присвоением и затем колбасить в них руками то, что необходимо. Без валидейтов.
А можно и проверить является ли таблица временной или нет, а от этого и выполнять действия
Старый 10.11.2005, 15:01   #7  
romeo is offline
romeo
Участник
Аватар для romeo
 
564 / 10 (2) +
Регистрация: 31.03.2004
2Zub.
Никакой функции, позволяющей это сделать, я думаю нет. Да и незачем наверное. Должны знать, с чем имеем дело. И потом если еще такую защиту везде писать, то процент полезного кода уменьшится -)
Старый 10.11.2005, 16:17   #8  
zub is offline
zub
Участник
 
40 / 10 (1) +
Регистрация: 23.08.2005
Цитата:
Сообщение от romeo
2Zub.
Никакой функции, позволяющей это сделать, я думаю нет. Да и незачем наверное. Должны знать, с чем имеем дело. И потом если еще такую защиту везде писать, то процент полезного кода уменьшится -)
Функции действительно нет, а способ есть. Для широкого использования он врядли пригодится по причине описанной вами, но иногда выручает
Старый 16.11.2005, 08:58   #9  
Greggy_imported is offline
Greggy_imported
Участник
Аватар для Greggy_imported
 
291 / 10 (1) +
Регистрация: 24.09.2004
:(
Не совсем понял.... это значит если на валидейте стоит модификация данных и я вызываю этот валидейт на временной таблице то он будет колбасить данные в реальной таблице что ли?
Старый 16.11.2005, 09:51   #10  
romeo is offline
romeo
Участник
Аватар для romeo
 
564 / 10 (2) +
Регистрация: 31.03.2004
Цитата:
Сообщение от Greggy
Не совсем понял.... это значит если на валидейте стоит модификация данных и я вызываю этот валидейт на временной таблице то он будет колбасить данные в реальной таблице что ли?
Именно.
Старый 28.11.2005, 13:55   #11  
Andywar is offline
Andywar
Участник
 
2 / 10 (1) +
Регистрация: 01.11.2005
Интересно! Validate делается для поля временной таблицы соответствующей записи. А какая же запись НЕ временной таблицы будет валидэйтиться?
Старый 28.11.2005, 14:14   #12  
romeo is offline
romeo
Участник
Аватар для romeo
 
564 / 10 (2) +
Регистрация: 31.03.2004
Цитата:
Сообщение от Andywar Посмотреть сообщение
Интересно! Validate делается для поля временной таблицы соответствующей записи. А какая же запись НЕ временной таблицы будет валидэйтиться?
В реке когда отрабатывает валидейт прописанные внутри переменные не становятся автоматом тоже временными. Если они объявлены реальными, настоящими, то такими и остаются. Поэтому даже во временной таблице валидейт отрабатывает в соответствии с тем, как он написан. По настоящим, так по настоящим. Само слово "временный" смущать не должно.
 


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

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

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