JS ошибки не определяет. Только при выводе значений
Почему делаем так, а не иначе, ответ простой - мы по ходу внедрения Галактики учимся программированию на JS .
Код: Выделить всё
// AnalyticsAndRole - стандартная функция
function RoleName(aRole)
{
VIP.CallMethod("AnalyticsAndRole", "RoleName", aRole, "")
return VIP.ArgValue(3)
}
function KauName(aKau)
{
VIP.CallMethod("AnalyticsAndRole", "KauName", aKau, "")
return VIP.ArgValue(3)
}
function ValueName(aKau, aValue)
{
VIP.CallMethod("AnalyticsAndRole", "ValueName", aKau, aValue, "")
return VIP.ArgValue(4)
}
function RoleName_()
{
VIP.CallMethod("AnalyticsAndRole", "RoleName", this.Role, "")
return VIP.ArgValue(3)
}
function KauName_()
{
VIP.CallMethod("AnalyticsAndRole", "KauName", this.MainKau, "")
return VIP.ArgValue(3)
}
function ValueName_()
{
VIP.CallMethod("AnalyticsAndRole", "ValueName", this.Kau, this.Value, "")
return VIP.ArgValue(4)
}
function RoleSelect_()
{
VIP.CallMethod("AnalyticsAndRole", "RoleSelect", this.Role, this.MainKau, "")
this.Role = VIP.ArgValue(2)
return Boolean(Number(VIP.ArgValue(4)))
}
function KauSelect_()
{
VIP.CallMethod("AnalyticsAndRole", "KauSelect", this.Role, this.MainKau, "")
this.MainKau = VIP.ArgValue(3)
if( VIP.ArgValue(4) = "1" ) this.Value = 0
return Boolean(Number(VIP.ArgValue(4)))
}
function ValueSelect_()
{
VIP.CallMethod("AnalyticsAndRole", "ValueSelect", this.MainKau, this.Kau, this.Value, "")
this.Kau = VIP.ArgValue(3)
this.Value = VIP.ArgValue(4)
return Boolean(Number(VIP.ArgValue(5)))
}
// - constructor
function KauWorkLine(aRole, aMainKau, aKau, aValue)
{
this.Role = aRole
this.MainKau = aMainKau
this.Kau = aKau
this.Value = aValue
this.RoleName = RoleName_
this.KauName = KauName_
this.ValueName = ValueName_
this.RoleSelect = RoleSelect_
this.KauSelect = KauSelect_
this.ValueSelect = ValueSelect_
}
function GetCodeUserAnVal(aValue)
{
VIP.CallMethod("AnalyticsAndRole", "GetCodeUserAnVal", aValue, "")
return VIP.ArgValue(3)
}
function CreateNextKauValueNum(aKau)
{
VIP.CallMethod("AnalyticsAndRole", "CreateNextKauValueNum", aKau, "")
return VIP.ArgValue(3)
}
function CreateNewSpKau(aKau, aName, aCode, aLevelCode)
{
VIP.CallMethod("AnalyticsAndRole", "CreateNewSpKau", aKau, aName, aCode, aLevelCode, "")
return VIP.ArgValue(6)
}
//*** описание объекта маркер:
function InitMarker(Name)
{ VIP.CallMethod(this.Inter,'InitMarker', this.NoTable, Name) }
function DoneMarker(Name)
{ VIP.CallMethod(this.Inter,'DoneMarker', this.NoTable, Name) }
function AddMarkerItem(Item)
{ VIP.CallMethod(this.Inter,'AddMarkerItem', this.NoTable, Item) }
function GetMarkerItem(Index)
{ VIP.CallMethod(this.Inter,'GetMarkerItem', this.NoTable, Index); return VIP.ArgValue(2) }
function CountMarkerItem()
{ VIP.CallMethod(this.Inter,'CountMarkerItem', this.NoTable); return parseFloat(VIP.ArgValue(2)) }
function ClearMarkerItem()
{ VIP.CallMethod(this.Inter,'ClearMarkerItem', this.NoTable) }
function AtDeleteMarkerItem(Index)
{ VIP.CallMethod(this.Inter,'AtDeleteMarkerItem', this.NoTable, Index) }
function DeleteMarkerItem(Item)
{ VIP.CallMethod(this.Inter,'DeleteMarkerItem', this.NoTable, Item) }
function SearchMarker(Item)
{ VIP.CallMethod(this.Inter,'SearchMarker', this.NoTable, Item); return VIP.ArgValue(2) }
function aMarker()
{
this.Inter = 'iJS_Marker'
this.NoTable = 0
this.Init = InitMarker
this.Done = DoneMarker
this.Add = AddMarkerItem
this.Item = GetMarkerItem
this.Count = CountMarkerItem
this.Clear = ClearMarkerItem
this.AtDelete = AtDeleteMarkerItem
this.Delete = DeleteMarkerItem
this.Check = SearchMarker
}
//*** конец описания объекта маркер
//***
// Сервисные функции и объекты
// константы
rDiametr = "281474976710698"
// объекты
var ResultOfNavigation = false;
var PositionOfNavigation = "";
function NavigateCallMethod()
{
VIP.ArgValue(0) = "StdObjectConst"
VIP.ArgValue(1) = "StdCallMethod"
VIP.ArgValue(2) = this.EntityNumber
VIP.ArgValue(3) = ""
VIP.ArgValue(4) = ""
iCount = NavigateCallMethod.arguments.length
for(var i=0;i<iCount;i++)
VIP.ArgValue(3+i) = NavigateCallMethod.arguments[i]
VIP.CallMethodEx();
ResultOfNavigation = Boolean(VIP.ArgValue(3))
PositionOfNavigation = VIP.ArgValue(4)
this.reread()
return ResultOfNavigation
}
function ObjectConstFirst()
{
return this.NavigateCallMethod(20001)
}
function ObjectConstNext()
{
return this.NavigateCallMethod(20002)
}
function ObjectConstLast()
{
return this.NavigateCallMethod(20003)
}
function ObjectConstPrev()
{
return this.NavigateCallMethod(20004)
}
function ObjectConstPos(Pos)
{
return this.NavigateCallMethod(20005, Pos)
}
function rereadtKatMC()
{
VIP.ArgValue(0) = "StdObjectConst"
VIP.ArgValue(1) = "StdReread"
VIP.ArgValue(2) = this.EntityNumber
VIP.CallMethodEx();
}
function rewritetKatMC()
{
VIP.ArgValue(0) = "StdObjectConst"
VIP.ArgValue(1) = "StdRewrite"
VIP.ArgValue(2) = this.EntityNumber
VIP.CallMethodEx();
}
function toMarker(toMarker_Par_1, toMarker_Par_2, toMarker_Par_3, toMarker_Par_4)
{
VIP.CallMethod("StdObjectConst","StdCallMethod", this.EntityNumber, 4006, toMarker_Par_1, toMarker_Par_2, toMarker_Par_3, toMarker_Par_4)
}
function tKatMC(EntityNumber) // constructor tKatMC
{
this.EntityNumber = EntityNumber
this.TableNumber = "1"
this.NavigateCallMethod = NavigateCallMethod
this.getFirst = ObjectConstFirst
this.getNext = ObjectConstNext
this.getLast = ObjectConstLast
this.getPrev = ObjectConstPrev
this.setPosition = ObjectConstPos
this.reread = rereadtKatMC
this.rewrite = rewritetKatMC
this.toMarker = toMarker
}
var KatMC = new tKatMC("1")
// Текст скрипта
/*
прототип aMarker
метод Init(Name) инициализация маркера под именем Name, если параметр не указан, то создается пустой маркер.
метод Done(Name) сохранение элементов маркера под именем Name, если параметр не указан, то элементы не сохраняются.
метод Add(Item) вставляет новый элемент в маркер.
метод Item(Index) возвращает элемент маркера с индексом Index, индексация элементов от 0 до Count()-1
метод Count() возвращает количество элементов маркера.
метод Clear() удаление всех элементов маркера.
метод AtDelete(Index) удаление элемента маркера по индексу.
метод Delete(Item) удаление элемента маркера.
метод Check(Item) поиск элемента маркера, если элемент найден, возвращается номер элемента в маркере, в противном случае возвращается 0.
*/
// Код: Выделить все МЦ, которые связаны с некоей ролью "Диаметр" - rDiametr
aaa = new aMarker;
aaa.Init("mRole");
aaa.Add(rDiametr);
aaa.Done("mRole");
Debug.Print( aaa.Count() + '; ' + aaa.Item[0] );
KatMC.toMarker( false, "mRole", "" , "" ); // Хотим получить список МЦ, которые связаны с некоей ролью "Диаметр" - rDiametr, аналогично фильтру по аналитикам в каталоге МЦ при указании только роли
for( KatMC.getFirst(); ResultOfNavigation; KatMC.getNext())
{
Debug.Print(ValueName( kauMC, KatMC.nRec ));
}