Robert Cemper · Dec 13, 2022 go to post

Your example uncovers that you are mixing up 2 different things

#1)
There are Objects that extend %RegisteredObject  (or some derivate of it.
properties in these classes get automatically generated methods.
like the ....Get you  @Eduard Lebedyuk  wrote this related article.

Useful auto-generated methods
you find those properties also in the realted %Dictioary classes.
 

#2)
Your example is a %DynamicObject and something total different.
There is the JSON style object
but it has nothing to do with the classic object architecture
implemented in Caché and IRIS.
Mixing of methods between those 2 implementations is just not foreseen.
Example:
%DynamicObjeckts have an Iterartor. Unknown to %RegisteredObject.
and many more

Robert Cemper · Dec 13, 2022 go to post

Use BREAK with a postcondition depending on Username 
or some other personal switch (eg. PPG)

Robert Cemper · Dec 11, 2022 go to post

It seems there are different Studio versions around that cause confusion,

Could be a Keyboard dependency ? 
I use a German keyboard  where # is close / on a US keyboard,
might be * or ! on a French keyboard  (just guessing)

Robert Cemper · Dec 9, 2022 go to post
  • using InterSystems Studio Client  2022.2.0 Build 368  
  • the 2nd Menue shows to me 
    • <CTRL> + #  ,... for commenting
    • <CTRL>+ <SHIFT> + #
    • <CTRL> + <ALT> + #   ... for block commenting
    • <CTRL>+ <SHIFT> + <ALT> + #
Robert Cemper · Dec 9, 2022 go to post

- You may need to use Caché Studio for 2016,.1
or
- you map the affected Namespace using ECP to the newer version and use VSCode

If your servers are correctly licensed you have a 
MULTISERVER license that includes ECP
Robert Cemper · Dec 5, 2022 go to post

It is less effort to install swager-ui manually from the repo than a backport of ZPM

Robert Cemper · Dec 5, 2022 go to post

Hi @Mark Charlton 
it is simpler:

  • minimum is a GitHub account.
  • create repo using the template
  • enable Actions
  • add your code
  • code quality is triggered by a GitHub -workflow that you imported

Neither Docker nor ZPM is required for Code Quality.
It's just nice to have and well prepared for demo.
 

Robert Cemper · Dec 1, 2022 go to post

Same as last year I will provide the results of our private leaderboard 

  • It will sort by published ranking but separate DC members from "guests"
  • The matching of DC members is a manual task 
  • if I missed you pls. let me know your identity in AoC by DC mail  to add your DC flag
  • updates will always happen in this reply
  •  
  • FINAL LISTING from AoC2022
    • DCrank  AOCrank Scores  Stars   Name
      ---     ---     ----    ----    --- DC Members ---
      1       1       5467    50      Kevin An
      2       2       5298    50      maxymczech
      3       4       5182    50      Robert Barbiaux
      4       8       4279    40      Yuval Golan
      5       9       3732    36      Oliver Wilms
      6       10      3003    30      Ivo ver eecke
      7       13      2825    30      Mark Charlton
      8       14      2660    25      Keith Avery
      9       18      2160    23      TylerFeldhege
      10      21      1785    18      Muhammad Umar Waseem
      11      23      1438    16      Laura Cavanaugh
      12      22      1352    16      Shamus Clifford ^ISC
      13      26      776     9       Udo Leimberger
      14      27      774     8       Paul Cranston
      15      29      710     8       rhodery
      16      31      485     6       Mike
      17      34      82      1       Davi-Massaru
      18      ---     ----    ----    --- DC but not COS ---
      19      3       5196    50      rcemper
      20      7       4858    50      otto-k21      ---     ----    ----    --- unknow in DC ---
      22      2       5408    48      Anja Ostovršnik
      23      5       5111    50      Dominik Znidar
      24      6       5088    50      Jarjar 314
      25      10      3703    33      Алёна Полищук
      26      11      3610    33      Alyonka
      27      12      3107    32      (anonymous user #1614379)
      28      11      2894    30      Jesper Olsson
      29      12      2875    30      Shafran Cat
      30      15      2648    28      John Mesin
      31      16      2231    22      nwattana
      32      17      2223    22      hazamashoken
      33      18      1987    19      (anonymous user #2793860)
      34      19      1965    20      j-dolenc
      35      20      1917    20      LFY
      36      22      1545    16      unikrubii
      37      24      1359    14      Paphawit Ngamchaliew
      38      25      1203    14      Dieter PAUL
      39      28      765     8       rcniinoi
      40      30      547     6       (anonymous user #2357048)
      41      30      527     6       alex2008alex
      42      32      206     2       gvatash
      43      33      86      1       cbarrette9 
      44 Rows(s) Affected
       
      UTC 2022-12-29 14:51:07
      EST 2022-12-29 09:51:07
Robert Cemper · Nov 24, 2022 go to post

Add this line to your test:

Set object = ##class(dado.TblTeste).idxFieldOneFieldTwoFieldThreeOpen(1, 2, "")
If 'object Do $system.OBJ.DisplayError()

So you see the reason for failing

Open by unique index reqires an EXACT match

Robert Cemper · Nov 16, 2022 go to post

Once you have your own children you would learn that there is no need to TEACH interest.
If your children accept you they follow your path. anything else is just academic nonsense.

So proven by my 3 highly adult and successful children and 4 grandchildren following the traces.

Robert Cemper · Nov 12, 2022 go to post

my review on OEX now shows also if the package supports IPM
all 19 reviews have been updated

Robert Cemper · Nov 9, 2022 go to post

To achieve the expected result of individual storage you may take this approach:

Class Test.NewClass Extends%Persistent [ NoExtent ]
{
Property Name As%String [ Required ];
Index NameIndex On Name [ Unique ];
}

and
 

Class Test.NewClass1 Extends Test.NewClass
{
Storage Default
{
<Data name="NewClass1DefaultData">
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>Name</Value>
</Value>
</Data>
<DataLocation>^Test.NewClass1D</DataLocation>
<DefaultData>NewClass1DefaultData</DefaultData>
<IdLocation>^Test.NewClass1D</IdLocation>
<IndexLocation>^Test.NewClass1I</IndexLocation>
<StreamLocation>^Test.NewClass1S</StreamLocation>
<Type>%Library.CacheStorage</Type>
}

}

and you see:
ERROR #5808: Key not unique: Test.NewClass1:NameIndex:^Test.NewClass1I("NameIndex"," A1")

Robert Cemper · Nov 9, 2022 go to post

no big surprise.
if IDKEY <> PrimaryKey then PrimaryKey is just a UNIQUE Key on some property.

I expected it as on object side you have %OpenId()  but no %OpenPrimary() or similar.
only Classmethod  <uniqueProperty>KeyOpen(...)

Robert Cemper · Nov 7, 2022 go to post

there is a quite wide selection of licenses.
the best for details is to contact your local sales rep from InterSystems to find your optimal solution

Robert Cemper · Nov 3, 2022 go to post

Following this discussion since beginning I'm wondering about the variant I've learned.
my personal approach would be.
#1)
have an exact copy of your class also pointing to the same storage
remove all index definitions from that clone class
run your bulkload
#2)
if you don't want to have the same storage
just eliminate the index definitions in the copy
clean its storage and run your bulk load
finally, merge the resulting globals

#' .)
It's not pure OO,
but writing to storage is never OO with Caché or IRIS 

Robert Cemper · Oct 28, 2022 go to post

GREAT!
Looks like embedded Py starts to understand how IRIS really works inside !!!!  yes