13vp писал(а):
Доброго дня розробники.
Як дізнатися кількість створених(винесених на карту) підписів об'єкта? Інколи один параметр виноситься декілька разів - це теж треба врахувати.
Чи можливо створити функцію для підрахунку підписів об'єкта? напр. @Map.Object[N].CaptionCount
Можна за допомогою ф-цiї @Map.GetObjectParamBuf, правда бiльше коду, нiж @Map.Object[N].CaptionCount

Код:
; признак початку параметру Char(1)
$C01=@Calc Char(1)
$C01=@DequoteText $C01
; признак кiнця параметру Char(3)
$C03=@Calc Char(3)
$C03=@DequoteText $C03
; признак даних параметру Char(5)
$C05=@Calc Char(5)
$C05=@DequoteText $C05
;
$Count=@Map.SelCount
@If $Count=0 Then @Break
$Obj=@Map.SelectedObject
; буфер з даними винесених параметрiв
$Buf=@Map.GetObjectParamBuf $Obj
;
@If "$Buf"="<none>" Then @Break Вибраний об'єкт не має пiдписiв
; к-сть параметрiв, що вiдображенi на картi
$PCount=@StringPartCount $C01 $Buf
; цикл для проходження по кожному параметру зокрема
@While $PCount>1 %LoopParamsBuf
$Param=@StringPart $PCount$C01$Buf
;
$I=1
%LoopPGet
$I=$I+1
$Char=@Calc Copy("$Param",$I,1)
@If ($Char<>"$C03") Then @Goto %LoopPGet
$I=$I-1
;
$ParamID=@Calc Copy("$Param",1,$I)
; в цьому мiсцi можна проаналiзувати кiлькiсть позицiй XYZ (роздiленi 124 символом, якщо бiльше одного разу)
@Dialog.Message Param: $Param|Id: $ParamID
$PCount=$PCount-1
%LoopParamsBuf
;