Не вопрос. Бум писать имена в нижнем регистре (или с учётом pNamesInLowerCase) и всё. 
Это особенность которую просто нужно знать, т.к. регистр имён в строке Options не имеет значения.
Скорость выгрузки данных с большими Options для RuleHelper (опять) реально выросла в разы !  
 
И насколько приятней вместо вот этого вот всего (где нужно выверить каждый знак в строке !):
Код: Выделить всё
  Root &= json::CreateObject(gPack,,'[' & |
          '{{"name":"*","EmptyString":"ignore","IgnoreZero":true,"IgnoreEmptyObject":true,"IgnoreEmptyArray":true},' & |
          '{{"name":"SCod",       "FormatLeft":"@p<##-#####-#####-#p"},' & |
          '{{"name":"Provodka",   "IsBool":true},'                       & |
          '{{"name":"FlagBack",   "IsBool":true,"IgnoreFalse":true},'    & |
          '{{"name":"FlagNDS",    "IsBool":true,"IgnoreFalse":true},'    & |
          '{{"name":"FlagOplata", "IsBool":true,"IgnoreFalse":true},'    & |
          '{{"name":"FlagSale",   "IsBool":true,"IgnoreFalse":true},'    & |
          '{{"name":"FlagSF",     "IsBool":true,"IgnoreFalse":true},'    & |
          '{{"name":"FlagStorno", "IsBool":true,"IgnoreFalse":true},'    & |
          '{{"name":"FlagUsluga", "IsBool":true,"IgnoreFalse":true},'    & |
          '{{"name":"FlagService","IsBool":true,"IgnoreFalse":true},'    & |
          '{{"name":"FlagOpl",    "IsBool":true,"IgnoreFalse":true},'    & |
          '{{"name":"FlagCost",   "IsBool":true,"IgnoreFalse":true},'    & |
          '{{"name":"FlagDocF",   "IsBool":true,"IgnoreFalse":true},'    & |
          '{{"name":"FlagClose",  "IsBool":true,"IgnoreFalse":true},'    & |
          '{{"name":"FlagAkziz",  "IsBool":true,"IgnoreFalse":true},'    & |
          '{{"name":"FlagNoStamp","IsBool":true,"IgnoreFalse":true},'    & |
          '{{"name":"FlagNoSeal", "IsBool":true,"IgnoreFalse":true},'    & |
          '{{"name":"FlagNoNDS",  "IsBool":true,"IgnoreFalse":true},'    & |
          '{{"name":"FlagNoPhone","IsBool":true,"IgnoreFalse":true},'    & |
          '{{"name":"FlagUrgent", "IsBool":true,"IgnoreFalse":true},'    & |
          '{{"name":"Shet",       "instance":' & Instance(qShet,     Thread()) & '},'  & |
          '{{"name":"TrNakl",     "instance":' & Instance(qTrNakl,   Thread()) & '},'  & |
          '{{"name":"Travel",     "instance":' & Instance(qTravel,   Thread()) & '},'  & |
          '{{"name":"Bank",       "instance":' & Instance(qBank,     Thread()) & '},'  & |
          '{{"name":"Kass",       "instance":' & Instance(qKass,     Thread()) & '},'  & |
          '{{"name":"History",    "instance":' & Instance(qHistory,  Thread()) & '},'  & |
          '{{"name":"Fall",       "instance":' & Instance(qFall,     Thread()) & '},'  & |
          '{{"name":"Plat",       "instance":' & Instance(qPlat,     Thread()) & '},'  & |
          '{{"name":"Client",     "instance":' & Instance(qJClient,  Thread()) & '},'  & |
          '{{"name":"Tovar",      "instance":' & Instance(qJTovar,   Thread()) & '},'  & |
          '{{"name":"Project",    "instance":' & Instance(qJProject, Thread()) & '},'  & |
          '{{"name":"Liza",       "instance":' & Instance(qJLiza,    Thread()) & '},'  & |
          '{{"name":"Otdel",      "instance":' & Instance(qJOtdel,   Thread()) & '},'  & |
          '{{"name":"Spisok",     "IsQueue":true},' & |
          '{{"name":"Exemp",      "IsQueue":true},' & |
          '{{"name":"SList",      "IsQueue":true},' & |
          '{{"name":"TrItem",     "IsQueue":true},' & |
          '{{"name":"Sborka",     "IsQueue":true},' & |
          '{{"name":"Content",    "IsQueue":true},' & |
          '{{"name":"AddBank",    "IsQueue":true}]')
Работать с нормально транслируемым аналогом:
Код: Выделить всё
  Root &= json::CreateObject(gPack,,'[{{"name":"*","RuleHelper":"' & Address(rh) & '"}]')
  ...
rh.FindCB  Procedure(String fldName, *typCJsonFieldRule rule)
  Code
  rule.EmptyString       = 'ignore'
  rule.IgnoreZero        = True
  rule.IgnoreEmptyObject = True
  rule.IgnoreEmptyArray  = True
  If Sub(fldName,1,4) = 'flag'
     rule.IsBool      = True
     rule.IgnoreFalse = True
  elsIf fldName = 'scod'     then rule.FormatLeft = '@p<##-#####-#####-#p'
  elsIf fldName = 'provodka' then rule.IsBool     = True
  elsIf fldName = 'shet'     then rule.instance   = Instance(qShet,     Thread())
  elsIf fldName = 'trnakl'   then rule.instance   = Instance(qTrNakl,   Thread())
  elsIf fldName = 'travel'   then rule.instance   = Instance(qTravel,   Thread())
  elsIf fldName = 'bank'     then rule.instance   = Instance(qBank,     Thread())
  elsIf fldName = 'kass'     then rule.instance   = Instance(qKass,     Thread())
  elsIf fldName = 'history'  then rule.instance   = Instance(qHistory,  Thread())
  elsIf fldName = 'fall'     then rule.instance   = Instance(qFall,     Thread())
  elsIf fldName = 'plat'     then rule.instance   = Instance(qPlat,     Thread())
  elsIf fldName = 'client'   then rule.instance   = Instance(qJClient,  Thread())
  elsIf fldName = 'tovar'    then rule.instance   = Instance(qJTovar,   Thread())
  elsIf fldName = 'project'  then rule.instance   = Instance(qJProject, Thread())
  elsIf fldName = 'liza'     then rule.instance   = Instance(qJLiza,    Thread())
  elsIf fldName = 'otdel'    then rule.instance   = Instance(qJOtdel,   Thread())
  elsIf fldName = 'spisok'   then rule.IsQueue    = True
  elsIf fldName = 'exemp'    then rule.IsQueue    = True
  elsIf fldName = 'slist'    then rule.IsQueue    = True
  elsIf fldName = 'tritem'   then rule.IsQueue    = True
  elsIf fldName = 'sborka'   then rule.IsQueue    = True
  elsIf fldName = 'content'  then rule.IsQueue    = True
  elsIf fldName = 'addbank'  then rule.IsQueue    = True.
И это я ещё пока не использовал все возможности фильтрации имён в обычном коде ... 
Минус (особенность) пока только один: нельзя использовать метод rh.FindCB внутри Routine, и как следствие -
нужно выносить класс и все описания используемых в нём структур данных в общее описание процедуры.
Но это приятные хлопоты.  
