Difference between revisions of "Struct.Numerator"
(No difference)
|
Revision as of 10:36, 3 December 2020
| 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;