|
![]() |
#1 |
Участник
|
А где можно посмотреть пример такого кода?
|
|
![]() |
#2 |
Moderator
|
Деления? Например, у меня здесь: Пользовательский генератор строк-перечислений...- 2: Доп.вкладка для SysQueryForm
P.S. Еще вот такую "статику" у себя отыскал: X++: // Created on 01 Сен 2008 at 15:04:08 by KKU static Set choppedQueryRanges( Set _conditions = new Set(Types::String), str _separator = '||' ) { // "Нашинкованные диапазоны критериев" // на входе - множество условий (каждая строка существенно короче EDT Range) // на выходе - множество диапазонов (каждый максимально впихнут в длину EDT Range) // примеры элементов множества условий (_conditions): // (CenterId=="09000") или (RequestTable.ReasonId=="ВЫБ_Ф") Set setRanges = new Set(Types::String); SetEnumerator enumerator; str curr; str currElem; str currCrit = ''; str prevCrit = ''; int edtRangeSize = new DictField( tableNum(TmpSysQuery), fieldNum(TmpSysQuery, RangeValue) ).stringLen(); ; enumerator = _conditions.getEnumerator(); while (enumerator.moveNext()) { curr = enumerator.current(); currElem = strLTrim( strRTrim (strFmt(curr))); if (currElem) { currCrit = prevCrit + currElem + _separator; if ( strLen(currCrit) > (edtRangeSize + strLen(_separator)) ) { setRanges.add( subStr(prevCrit, 1, strLen(prevCrit)-strLen(_separator)) ); prevCrit = currElem + _separator; } else { prevCrit = currCrit; } } } if (prevCrit) { setRanges.add( subStr(prevCrit, 1, strLen(prevCrit)-strLen(_separator)) ); } return setRanges; } Последний раз редактировалось Gustav; 01.03.2010 в 18:38. |
|