СвойствоXDTO.Имя

Свойства · Name

Тип: Строка. Имя свойства.

Полное описание, параметры и ограничения

СвойствоXDTO.Имя (XDTOProperty.Name)

СвойствоXDTO (XDTOProperty)

Имя (Name)

Доступен, начиная с версии 8.1.

Использование:
Только чтение.
Описание:
Тип: Строка.
Имя свойства.
Доступность:

Тонкий клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.

Использование в версии:

Доступен, начиная с версии 8.1.

Методическая информация

Практические примеры

Заполнить товар по собственному типу XDTO и проверить обязательные свойства

Объект создаётся на собственной схеме. Для Установить передаём значения XDTO соответствующих типов, а не непроверенные произвольные данные.

Где и как запускать

Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.

Подготовка

  1. Сначала прочитайте учебную XSD в начале кода: code обязателен, note необязателен; quantity — nonNegativeInteger.

  2. Каждый запуск создаёт собственную фабрику и товар в памяти. Никакой справочник Номенклатура не используется.

XSD = "<xs:schema xmlns:xs=""http://www.w3.org/2001/XMLSchema""
| xmlns:g=""urn:guide:product"" targetNamespace=""urn:guide:product""
| elementFormDefault=""qualified"" version=""1.0"" xml:lang=""ru"">
| <xs:annotation><xs:documentation>Учебный товар, не контракт внешнего API</xs:documentation></xs:annotation>
| <xs:simpleType name=""Sku""><xs:restriction base=""xs:string"">
|  <xs:length value=""4""/><xs:pattern value=""[A-Z][0-9]{3}""/>
| </xs:restriction></xs:simpleType>
| <xs:complexType name=""Product""><xs:sequence>
|  <xs:element name=""name"" type=""xs:string""/>
|  <xs:element name=""quantity"" type=""xs:nonNegativeInteger""/>
|  <xs:element name=""note"" type=""xs:string"" minOccurs=""0""/>
| </xs:sequence><xs:attribute name=""code"" type=""g:Sku"" use=""required""/>
| </xs:complexType>
| <xs:element name=""product"" type=""g:Product""/>
|</xs:schema>";
Чтение = Новый ЧтениеXML;
Чтение.УстановитьСтроку(XSD);
Попытка
    ЧтениеДерева = Новый ПостроительDOM;
    ДокументСхемы = ЧтениеДерева.Прочитать(Чтение);
    Чтение.Закрыть();
Исключение
    Чтение.Закрыть();
    ВызватьИсключение;
КонецПопытки;
Построитель = Новый ПостроительСхемXML;
Схема = Построитель.СоздатьСхемуXML(ДокументСхемы.ЭлементДокумента);
Если Схема = Неопределено Тогда
    ВызватьИсключение "Не удалось построить учебную схему";
КонецЕсли;
Набор = Новый НаборСхемXML;
Набор.Добавить(Схема);
Если Не Набор.Проверить() Тогда
    ВызватьИсключение "Учебная XSD не прошла проверку";
КонецЕсли;
Фабрика = Новый ФабрикаXDTO(Набор);
ТипТовара = Фабрика.Тип("urn:guide:product", "Product");
Если ТипТовара = Неопределено Тогда
    ВызватьИсключение "В фабрике не найден тип Product";
КонецЕсли;
Товар = Фабрика.Создать(ТипТовара);
Свойства = Товар.Свойства();
Код = Свойства.Получить("code");
Название = Свойства.Получить("name");
Количество = Свойства.Получить("quantity");
Примечание = Свойства.Получить("note");
Если Код = Неопределено Или Название = Неопределено
    Или Количество = Неопределено Или Примечание = Неопределено Тогда
    ВызватьИсключение "Не найдены четыре свойства учебной модели";
КонецЕсли;
Товар.Установить(Код, Фабрика.Создать(Код.Тип, "A001"));
Товар.Установить(Название, Фабрика.Создать(Название.Тип, "Книга"));
Товар.Установить(Количество, Фабрика.Создать(Количество.Тип, "3"));
Товар.Проверить();

Сообщить(Свойства.Количество() = 4);
Сообщить(Товар.Тип().Имя = "Product");
Сообщить(Товар.Тип().URIПространстваИмен = "urn:guide:product");
Сообщить(Товар.Установлено(Код));
Сообщить(Не Товар.Установлено(Примечание));
Сообщить(Код.НижняяГраница = 1 И Код.ВерхняяГраница = 1);
Сообщить(Примечание.НижняяГраница = 0 И Примечание.ВерхняяГраница = 1);
Сообщить("Форма свойства code: " + Строка(Код.Форма));
Сообщить("Имя свойства: " + Код.Имя + "; локальное имя: " + Код.ЛокальноеИмя);
Сообщить("URI свойства code: " + Код.URIПространстваИмен);
Сообщить("Квалифицированное: " + Строка(Код.Квалифицированное));
Сообщить("Возможно пустое: " + Строка(Код.ВозможноПустое));
Сообщить("Фиксированное: " + Строка(Код.Фиксированное));
Сообщить(Код.ТипВладелец.Имя = "Product");
ЗначениеКода = Товар.ПолучитьXDTO(Код);
ЗначениеНазвания = Товар.ПолучитьXDTO(Название);
ЗначениеКоличества = Товар.ПолучитьXDTO(Количество);
Сообщить(ЗначениеКода.Значение = "A001");
Сообщить(ЗначениеНазвания.Значение = "Книга");
Сообщить(ЗначениеКоличества.Значение = 3);
Товар.Установить(Примечание, Фабрика.Создать(Примечание.Тип, ""));
Сообщить(Товар.Установлено(Примечание));
Товар.Сбросить(Примечание);
Сообщить(Не Товар.Установлено(Примечание));
Товар.Проверить();

Разбор по шагам

  1. Тип Product получаем из фабрики по URI и имени; Создать возвращает новый ОбъектXDTO.

  2. Коллекция свойств описывает четыре поля. НижняяГраница 1 означает обязательность, 0 допускает отсутствие. ВерхняяГраница 1 ограничивает одиночное значение.

  3. Форма code — атрибут XML, name/quantity/note — элементы. Квалифицированное и URI определяют правила имени, а не значение SKU.

  4. Фабрика.Создать по типу конкретного свойства даёт ЗначениеXDTO. Установить получает описатель и совместимое значение.

  5. ПолучитьXDTO возвращает типизированное значение; у него .Значение содержит скаляр платформы.

  6. Пустая строка note всё ещё установлена. Сбросить удаляет установленность необязательного поля, не записывает пустую строку вместо отсутствия.

Как проверить результат

  1. Четыре свойства, тип Product и URI urn:guide:product.

  2. code/name/quantity заполнены как A001/Книга/3, note первоначально отсутствует.

  3. После назначения пустой строки note установлено, после Сбросить снова не установлено; окончательная проверка модели проходит.

Ожидаемый результат

Конкретный учебный товар заполнен и проверен по XSD с различием отсутствующего и пустого необязательного поля.

На что обратить внимание

  1. ЗначениеЗаполнено не заменяет Установлено XDTO: пустая строка может быть установленным значением.

  2. Проверка схемы не гарантирует, что название соответствует справочнику или товар разрешён к продаже.

  3. Нельзя присваивать отрицательное количество: его тип в учебной схеме nonNegativeInteger.

  4. Свойства схемы только читаем; для другого контракта создавайте согласованную схему, не меняйте внешнюю модель наугад.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.