Difference between revisions of "Struct.Numerator"
m (1 revision imported) |
|
(No difference)
|
Latest revision as of 07:52, 7 February 2021
Numerator (Свойства нумераторов) | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Атрибут применяется к объекту структуры базы данных, позиционированному на нумераторе (в случае свободного нумератора, привязанного к нескольким реквизитам разных объектов), либо на реквизите объекта, являющемся нумератором (в случае связанного нумератора, привязанного к единственному реквизиту объекта), и возвращает новый объект структуры базы данных который можно использовать для получения свойств нумератора. Данный атрибут применяется для получения свойств как к объектам общих нумераторов и к реквизитам с самостоятельным нумератором, так и к реквизитам, ссылающимся на общий нумератор (в последнем случае, можно, к примеру, получить реквизит периода нумерации, см. Numerator.PeriodProperty). См. также статью Конфигурация данных проекта.
Синтаксис
Struct.Numerator:<Свойства нумератора текущего объекта (DBSTRUCT)>
Возвращаемое значение
Возвращается объект структуры базы данных, позиционированный на нумераторе.
Примеры
//Фрагмент вызывается при изменении реквизита "DocDate" (дата документа) существующего документа. //Фрагмент проверяет, выходит ли измененное значение реквизита "DocDate" за период нумерации для реквизита-нумератора "DocNum" // Если выходит, необходимо запретить запись изменений, так как в новом периоде это может нарушить нумерацию (нумерация продолжиться не с начала, а с старого номера этого документа). //Получим старую дату существовавшего документа ДатаСтар:=aEl.Copy().DocDate; //Найдем период нумерации номера ФлПериод:=Struct.Doc(Вид).Props("DocNum").Numerator.TimePeriod; Фл:=0; If ФлПериод=1 Then //Год Фл:=(GetYear(aEl.DocDate)<>GetYear(ДатаСтар); ElseIf ФлПериод=2 Then //Квартал Фл:=BegOfQuarter(aEl.DocDate)<>BegOfQuarter(ДатаСтар); ElseIf ФлПериод=3 Then //Месяц Фл:=BegOfMonth(aEl.DocDate)<>BegOfMonth(ДатаСтар); ElseIf ФлПериод=4 Then //День Фл:=BegOfDay(aEl.DocDate)<>BegOfDay(ДатаСтар); EndIf; If Фл Then Message("Сохранение запрещено, так как дата выходит за предыдущий период нумерации документа!","!"); Exit; EndIf; ...
//Фрагмент выводит свойства общего нумератора aNum:=Struct.Num("НумераторДокументов").Numerator; aList:=List.Create("без периода","год","квартал","месяц","день"); bList:=List.Create("контроль по всем номерам","контроль в пределах подчинения родителю","контроль в пределах папки справочника", "контроль в пределах элемента, используется для реквизитов строчных частей","контроль уникальности отсутствует"); сList:=List.Create("номер создается при сохранении объекта","номер создается при создании нового объекта","номер не создается автоматически"); Message("Свойства нумератора "+aNum.NumeratorObjectLink.Name+": "+ ?(aNum.DataType="NUMBER","тип данных число","тип данных строка")+ ", период нумерации: "+aList[aNum.TimePeriod+1]+ ", контроль номеров: "+bList[aNum.UnicityControl+1]+ ", создание номера: "+сList[aNum.AutoNumeration+1]); Message(" Объекты, в которых используется нумератор:"); For i:=1 To aNum.Props.Count() Do aProp:=aNum.Props(i); Message(" "+aProp.ObjectLink.Name+", реквизит: "+aProp.Name); If aNum.TimePeriod>0 Then Message(" Реквизит периода нумерации: "+aProp.Numerator.PeriodProperty.Name); EndIf; EndDo;