Имя: Пароль:
1C
 
XDTO : Установить в Неопределено реквизит объекта XDTO
0 bvb
 
25.07.25
11:02
Добрый день

Нужно в процедуре, получив параметром объект XDTO очистить его реквизиты (свойства) установленные как строки

Я пытаюсь это сделать так :

Процедура ОчиститьЗначениеXDTO(Элемент, ИмяРеквизита)
    
    //Элемент.Свойства().Получить("ИмяРеквизита")
    Если Элемент[ИмяРеквизита] <> Неопределено Тогда
        
    
            Элемент[ИмяРеквизита] = Неопределено;
        

Но он не очищает и  ругается на то , что у свойства установлен фасет
1 mikecool
 
25.07.25
11:09
емнип - нельзя установить значение, не соответствующее ограничению поля
2 bvb
 
25.07.25
11:59
(1) Походу, да.  
Но мне очень нужно.

И да,  мне доступен только сам объект XDTO.
Метод .Очистить для него не работает.

Может можно подправить типизацию через  Элемент.Свойства().Получить("ИмяРеквизита") ?
3 АнализДанных
 
25.07.25
11:48
(0) Очень мало информации. Если нужен xml, который сделан по схеме XSD, но при этом ты хочешь изменить какие-то значения, которые противоречат схеме, то можно сделать так:
Сначала сохранить объект XDTO в xml файл, потом прочить это xml, через фабрикуXDTO, но при этом не указывать схему, тогда можно будет зачистить нужные поля. Правда при сохранении что-то в файле может сохраниться иначе, например, если в схеме есть список, но он с одной строкой, то он сохранится не как список, а как какой-то одинарный тип.
4 bvb
 
25.07.25
12:21
(3) Если подробно - мне нужно отредактировать контент Utd820SellerContent исходящего документа в Контур Диадок в части адресов продавца и покупателя (грузополучатель норм)

Проблема в том, что нужно взять подробный юридический адрес строкой из представления юр. адреса.
Первоначально контент адреса заполнен из полей.
В юр адресе заполнены поля и представление.
Очищать стандартные поля я не хочу (это на крайний случай)

Я подставляю текстовое представление но если, не очистить поля, то для выгружаемого документа, приоритетнее значения из полей
Вот я и пытаюсь очистить поля оставив заполненным только AdressText.
5 denk32
 
25.07.25
15:51
(0) можно попробовать создать новый объект xdto, заполнить как нужно и его присвоить:
НовыйОбъектXDTO = ГенерацияXML.НовыйProtoОбъектXDTO(
        "AddressInfo970",
        Ложь
    );
ГенерацияXML - это встроенная обработка в макет КонтурДиадокГенерацияXML
6 mikecool
 
25.07.25
15:53
(4) а нельзя это сделать в подключаемом модуле и пользоваться объектной моделью?
7 denk32
 
25.07.25
15:54
+ из подключаемого модуля можно создать так:
Ядро = ПолучитьИзВременногоХранилища(ОсновнойМодуль.ОбщийКонтекстКлиентСервер.АдресОбработкиЯдра);
ГенерацияXML = Ядро.Модуль_ГенерацияXML(Ядро)
8 mikecool
 
25.07.25
15:56
(7) да там и попроще есть путь, не помню только наизусть
типа передвыгрузкой или как то так, доступен объект, который впоследствии выгружается
9 denk32
 
25.07.25
16:15
(8) ПодготовитьЭлектронныйДокумент?
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.