Форум программистов CODEBY.NET Хостинг в Беларуси — Active Technologies

Разработка бизнес сайтов

Нужны клиенты? Тогда сюда быстрее...
X   Сообщение сайта
(Сообщение закроется через 2 секунды)

Здравствуйте, гость ( Вход | Регистрация )




 
Ответить Новая тема 
> Волшебная кнопка, Редактируем любые поля в документе
Morpheus
Вставить ник
сообщение 18:09:2007, 10:37
Цитата Ответить 


очень злой модератор
Иконка группы

Группа: Lotus team
Сообщений: 3 206
Регистрация: 7:08:2006
Из: Украина, Киев
Пользователь №: 5 807



Репутация:   53  


Автор
]]>rennok]]>

]]>Источник]]>

Цитата
Продублирую тут... кнопка выкладывается на панель инструментов, позволяет быстро и удобно редактировать, создавать, удалять, менять значения полей документа. Сильно облегчает жизнь. (поделился Шмурыгин Сергей)


_act := "Редактировать элементы поля|1" : "Добавить в поле элемент|2" : "Очистить поле|5" : "Удалить поле|3" : "Новое поле|4"; 

_dsp := @Left( _act; "|");
_al := @RightBack( _act; "|");
_fld := "";
_str := "";
_tmp := "";
_val := "";
_selType := "";
_sel := @Prompt( [OkCancelList]:[NoSort]; @DbTitle; "Выбери действие: "; @Subset(_dsp; 1); _dsp);
_pos := @Member( _sel; _dsp );
_sel := @Subset(@Subset(_al; _pos); -1);
_item := @DocFields;
_empty := "";

_DataTypes := "Text" : "Date" : "Integer";

@If( _sel = "1";
@Do(

_fld := @Prompt( [OkCancelList]; "Редактирование поля"; "Выбери имя поля: "; @Subset( _item; 1); _item );

_val := @GetField(_fld);

_selType := @If(
@IsTime( _val ); "Date";
@IsNumber(_val); "Integer";
@Elements(_val) = 1;
@If(_val != ""; "Text";
@Prompt( [OkCancelList] : [NoSort]; "Тип поля"; "Выбери тип данных: "; @Subset( _DataTypes; 1 );_DataTypes )
);
@Elements(_val) = 0;
@Prompt( [OkCancelList] : [NoSort]; "Тип поля"; "Выбери тип данных: "; @Subset( _DataTypes; 1 );_DataTypes );
"");

@If( @Elements(_val) = 0;
@Set( "_tmp";@Prompt( [OkCancelEdit]; "New Value" + " " + _selType; "Новое значение для " + _fld + " : "; ""));
@Do(
@For(n := 1; n <= @Elements( _val ); n := n + 1;

_str := @Prompt( [OkCancelEdit]; "New Value" + @Text( n ) + " " + _selType; "Измени " + @Text( n )+ "-й эл-т поля " + _fld + " (всего " + @Text( @Elements(_val) ) + ") : "; @Text(_val[n]) );

@If( @Trim( _str ) = ""; @Set("_empty"; "1"); "" );
@If( n = 1;
_tmp := _str;
_tmp := _tmp : _str)

)
)
);

@If(_empty = "1" & @Elements(_tmp) > 1; @Do(

@If(_selType = "Date";
@Set("_tmp"; @Trim( _tmp ));
_selType = "Integer";
@Set("_tmp"; @Trim( _tmp ));
@Prompt([YesNo];"Поле " + _fld + " содержит пустые значения"; "Удалить из поля незаполненные элементы? ");
@Set("_tmp"; @Trim( _tmp )); "")
);"");

@If( @Elements( _tmp ) <= 1 & _tmp = ""; @Return( @SetField( _fld; "") ); "" );

@If(_selType = "Date";
@SetField( _fld; @If(@IsError(@TextToTime(_tmp));@Return( @Prompt([Ok];"Error"; "Поле содержит некорректное значение") ); @TextToTime(_tmp)) );
_selType = "Integer";@SetField( _fld; @If( @IsError(@TextToNumber(_tmp)); @Return( @Prompt([Ok];"Error"; "Поле содержит некорректное значение") ); @TextToNumber(_tmp)) );
@SetField( _fld; _tmp ))

);

_sel = "2";
@Do(
_fld := @Prompt( [OkCancelList]; "Добавление значения в поле"; "Выбери имя поля: "; @Subset( _item; 1); _item );
_val := @GetField(_fld);

_selType := @If(
@IsTime( _val ); "Date";
@IsNumber(_val); "Integer";
@Elements(_val) = 1 | @Elements(_val) = 0;
@If(_val != ""; "Text";
@Prompt( [OkCancelList] : [NoSort]; "Тип поля"; "Выбери тип данных: "; @Subset( _DataTypes; 1 );_DataTypes )
);
"");

@Set( "_tmp";@Prompt( [OkCancelEdit]; "New Value" + " " + _selType; "Новый элемент для " + _fld + " : "; ""));
@If( @Elements(_val) > 0;
@Set( "_tmp";@Text(_val) : _tmp);
""
);

@If(_selType = "Date";
@SetField( _fld; @If(@IsError(@TextToTime(_tmp));@Return( @Prompt([Ok];"Error"; "Поле содержит некорректное значение") ); @TextToTime(_tmp)) );
_selType = "Integer";@SetField( _fld; @If( @IsError(@TextToNumber(_tmp)); @Return( @Prompt([Ok];"Error"; "Поле содержит некорректное значение") ); @TextToNumber(_tmp)));
@SetField( _fld; _tmp ));
@Return("")
);

_sel = "3";
@Do(
_fld := @Prompt( [OkCancelList]; "Удаление поля"; "Выбери имя поля: "; @Subset( _item; 1); _item );
@If( !@Prompt([YesNo]; "Внимание"; "Вы действительно хотите удалить поле - " + _fld + "? "); @Return( "" ); "");
@SetField(_fld; @DeleteField);
@Return("")
);
_sel = "4";
@Do(
_fld := @Prompt( [OkCancelEdit]; "Новое поле"; "Укажи наименование нового поля: "; "");
@If(_fld = "";@Return("");"" );

@If( @IsMember( @UpperCase( _fld ); @UpperCase( _item ) ); @Return(@Prompt([Ok]; "Ошибка"; "Поле " + _fld + " уже есть в документе")); "" );

_val := "";
@SetField(_fld; _val);
@Return("")
);

_sel = "5";
@Do(
_fld := @Prompt( [OkCancelList]; "Очистка поля"; "Выбери имя поля: "; @Subset( _item; 1); _item );
@If( !@Prompt([YesNo]; "Внимание"; "Вы действительно хотите очистить поле - " + _fld + "? "); @Return( "" ); "");
@SetField(_fld; "");
@Return("")
);

"")
Подняться вверх 
 
Сообщение #1


Ответить  Новая тема 

 

RSS Текстовая версия Сейчас: 21:11:2008 - 05:27

с нами можно связаться по:
телефону: +375-(29)-632-60-67
e-mail:info@codeby.net