powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Не получается %OnBeforeSave()
8 сообщений из 8, страница 1 из 1
Не получается %OnBeforeSave()
    #36303859
srsd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вобщем ситуация в следующем перелапатив прототип выбрал из него метод шифрования поролей,
но у меня он не работает:
Сам метод в классе:
Method %OnBeforeSave() As %Status [ Private ]
{
if (..NewPassword]"") {
if $e(..NewPassword,1,4)="MD5:" quit $$$ERROR(10000,"Пароль не может начинаться с последовательности символов 'MD5:'!")
set ..Password="MD5:"_$SYSTEM.Encryption.MD5Encode(..NewPassword)
}
set ..NewPassword=""
if ..Password="" quit $$$ERROR(10000,"Укажите непустой пароль!")
quit $$$OK
}

также метод на сохранение:
/// Сохранение
Method %OnSaveSource(pSource As Entry.UserEntry) As %Status
{
Set tSC = pSource.%Save()
Set ..%id = pSource.%Id()
Quit tSC
}

а на странице метод:
/// Сохранение объекта
Method saveItem() [ Language = javascript ]
{

var form = zenPage.getComponentById('RegForm');
form.save();

var table = zenPage.getComponentById('table');
table.executeQuery(true);
}
т.е. на странице форма в которую вводятся данные а при попытке сохранить ошибка (см. прикрепленный файл).

как сделать чтобы метод %OnBeforeSave() работал подскажите а то я уже запутался в конец.
...
Рейтинг: 0 / 0
Не получается %OnBeforeSave()
    #36304027
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
покажите что конкретно у вас не работает

на вашей картинке видно что произошла ошибка сгенерированная вашим методом %OnBeforeSave()
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Method %OnBeforeSave() As %Status [ Private ]
{
if (..NewPassword]"") {
if $e(..NewPassword, 1 , 4 )="MD5:" quit $$$ERROR( 10000 ,"Пароль не может начинаться с последовательности символов 'MD5:'!")
set ..Password="MD5:"_$SYSTEM.Encryption.MD5Encode(..NewPassword)
}
set ..NewPassword=""
if ..Password="" quit $$$ERROR( 10000 ,"Укажите непустой пароль!")
quit $$$OK
}
непонятно на что вы жалуетесь, вы скопировали код а сами не знаете как он работает и для чего ?
тогда опишу вам что он делает

при вызове метода, берется значение из поля ..NewPassword, если не пустое то MD5 хеш этого значения записывается в поле ..Password, и если значение в ..Password пустое, то вызывается та самая ошибка на которую вы жалуетесь
_________________________________
Cache for Windows NT (AMD64) 5.0.21 (Build 6408) Tue Jan 3 2006 13:37:41 EST
...
Рейтинг: 0 / 0
Не получается %OnBeforeSave()
    #36305568
srsd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DAiMor,
Я понял что делает метод, поэтому и взял его.
Почему не работает где ошибка вот в чем вопрос?!
А конкретно и не работает , если знал что то не обращался бы.
Форма для регистрации:
<form id="RegForm" layout="vertical" controllerId="source" align="center">
<hgroup>
<vgroup valign="top">
<text label="Пользователь:"
id="Login" name="Login"
dataBinding="Login"
size="40"
labelClass="required"
required="true"
maxlength="40"
/>
<spacer width="10"/>
<password label="Пароль:"
id="NewPassword"
name="NewPassword"
size="40"
labelClass="required"
required="true"
maxlength="40"
/>
<spacer width="10"/>
</hgroup>
<spacer height="25"/>
<menu id="adminmenu" layout="vertical" align="center" width="100">
<menuItem caption="СОХРАНЕНИЕ" align="center" valign="middle" onclick="zenPage.saveItem();"/>
</menu>
</form>
Ну есть и таблица которая все это отображает соответственно
...
Рейтинг: 0 / 0
Не получается %OnBeforeSave()
    #36305625
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вы можете выложить полностью весь код который можно было у себя поставить и увидеть, что точно оно не работает, а так вы кидаете только обрывки, по которым не видно что вы делаете

ошибка из-за того что свойства NewPassword или Password пустое

_________________________________
Cache for Windows NT (AMD64) 5.0.21 (Build 6408) Tue Jan 3 2006 13:37:41 EST
...
Рейтинг: 0 / 0
Не получается %OnBeforeSave()
    #36305649
srsd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DAiMor,

UserEntry- сам класс, Reg - форма для регистрации, там много лишнего , тут до меня стока натворили что отладил пока лишь малую часть, а с регистрацией нуно разобраться.....
Ужо голова кругом.
...
Рейтинг: 0 / 0
Не получается %OnBeforeSave()
    #36305663
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
srsdтам много лишнего

Тогда пора делать простой тестовый пример... ;)
...
Рейтинг: 0 / 0
Не получается %OnBeforeSave()
    #36305806
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ты забыл связать поле формы с данными контроллера

для тех полей которые ты связываешь с контроллером, обязательно указывать
dataBinding="NewPassword", с названием поля с которым связываешь

а так же в %OnStoreModel, необходимо добавить строчку
set pSource.NewPassword=..NewPassword
иначе данные из формы не сохранятся в объект
_________________________________
Cache for Windows NT (AMD64) 5.0.21 (Build 6408) Tue Jan 3 2006 13:37:41 EST
...
Рейтинг: 0 / 0
Не получается %OnBeforeSave()
    #36305953
srsd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DAiMor,

Ура!!!!!!!!!!!!
Большое спасибо!
Так и знал что по мелочи что то не заметил..... но как обычно искал что то крупное.....
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Не получается %OnBeforeSave()
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]