DynamicContent¶
Представление содержания документа
Используется:
- в CustomDocumentToSend.Content, если тот создан через объект PackageSendTask2
- в PackageContentItem.Content, полученным через объект ReplySendTask2 с типом
AcceptDocument
- как результат выполнения метода
Document.GetDynamicContent()
Свойства
Не имеет фиксированного набора свойств.
Описание полей можно понять или из XSD, получаемой методами Organization.SaveUserDataXSD()
, Organization.GetBase64UserDataXSD()
, или, используя объект Reflector
Каждое поле объекта является или строкой, или коллекцией, или DynamicContent’ом
Предупреждение
При использовании динамического контента ориентироваться на описание старых версий контента (например, UtdSellerContent) нельзя - отличается как набор полей, так и допустимые для них значения.
Всё описание теперь находится в соответвующей XSD схеме
Методы
GetPropertiesNames() | HasProperty() |
-
DynamicContent.
GetPropertiesNames
()¶ Возвращает коллекцию строк - имён свойств контента
Добавлено в версии 5.28.3.
Не рекомендуется, начиная с версии 5.28.7: Используйте Reflector
-
DynamicContent.
HasProperty
(PropertyName)¶ PropertyName: строка
- имя свойстваВозвращает булевое значение наличия у объекта свойства с заданным именем
Добавлено в версии 5.28.3.
Не рекомендуется, начиная с версии 5.28.7: Используйте Reflector
Как работать с коллекциями
Если контент выглядит так:
DynamicContent_ВладелецКоллекции.Коллекция
Тогда для добавления элемента в коллекцию необходимо вызвать
// Если коллекция состоит из сложных объектов
НовыйЭлементКоллекции = DynamicContent_ВладелецКоллекции.AddКоллекция();
// Если коллекция состоит из строк
DynamicContent_ВладелецКоллекции.AddКоллекция("Значение");
Имя метода, с помощью которого можно добавить элемент зависит от названия коллекции и формируется как "Add" + <название коллекции>
.
У коллекций, для которых в XSD не указано имя, используется имя items
Пример работы с динамическим контентом
// Добавление нового элемента в коллекцию строк
SendTask = Organization.CreatePackageSendTask2();
DocumentToSend = SendTask.AddDocument("UniversalTransferDocument", "СЧФДОП", "utd820_05_01_01");
DynamicContent = DocumentToSend.Content;
Utd820_SellerContent = DynamicContent.UniversalTransferDocument;
Signers = Utd820_SellerContent.Signers;
NewSigner = Signers.AddItems();
// Signers - Владелец коллекции с именем items. Имя будет items потому, что у узла choice нет имени и он повторяющийся
// Описание в XSD:
// <xs:element name="Signers">
// <xs:complexType>
// <xs:choice maxOccurs="unbounded">
// <xs:element name="SignerReference" type="SignerReference" />
// <xs:element name="SignerDetails" type="ExtendedSignerDetails_SellerTitle" />
// </xs:choice>
// </xs:complexType>
// </xs:element>
InvoiceTable = Utd820_SellerContent.Table;
NewInvoiceTableItem = InvoiceTable.AddItem();
// InvoiceTable - Владелец коллекции с именем Item
// Описание в XSD:
// <xs:complexType name="InvoiceTable">
// <xs:sequence>
// <xs:element maxOccurs="unbounded" name="Item">
ItemIdentificationNumbers = NewInvoiceTableItem.ItemIdentificationNumbers;
NewItemIdentificationNumber = ItemIdentificationNumbers.AddItemIdentificationNumber();
NewItemIdentificationNumber.AddUnit("Unit1")
NewItemIdentificationNumber.TransPackageId = "SomeTransPackageId";
// ItemIdentificationNumbers - Владелец коллекции с именем ItemIdentificationNumber
// NewItemIdentificationNumber - владелец коллекции строк с именем Unit. В отличие от Signers, узел choice не повторяющийся
// Описание в XSD:
// <xs:element minOccurs="0" name="ItemIdentificationNumbers">
// <xs:complexType>
// <xs:sequence>
// <xs:element maxOccurs="**unbounded**" name="ItemIdentificationNumber">
// <xs:complexType>
// <xs:choice>
// <xs:element minOccurs="0" maxOccurs="unbounded" name="Unit" type="string255">
// </xs:element>
// <xs:element minOccurs="0" maxOccurs="unbounded" name="PackageId" type="string255">
// </xs:element>
// </xs:choice>
// <xs:attribute name="TransPackageId" type="string255" use="optional">
// </xs:attribute>
// </xs:complexType>
// </xs:element>
// </xs:sequence>
// </xs:complexType>
// </xs:element>
См.также