Имя: Пароль:
1C
1С v8
XDTO - как сделать свойство объекта обязательным?
0 antgenp
 
10.07.17
11:38
Добрый день!
Преамбула проблемы:
ЕГАИС перешел на версию 2 документооборота, немного изменились схемы обмена с УТМ.

Амбула:
хотя 1С во многом постаралась за меня и проблем с переходом на 2-ю версию было немного, есть один косяк сразу на нескольких платформах:
учетной системой полагается, что при получении документа WayBill_v2 узел Transport будет обязательно заполнен, в то время, как в схемах он как раз перестал быть обязательным. Как это выглядит в старой и новой схемах соответственно:

<xs:element name="Transport" type="ns:TransportType" minOccurs="1" maxOccurs="1">

и

<xs:element name="Transport" type="ns:TransportType" minOccurs="0" maxOccurs="1">

т.е. если раньше элемент не был заполнен, то в WayBill была запись
<Transport\>, а сейчас, в новой версии, её не будет, что не даст клиенту с указанной ошибкой в модуле загрузить накладную.

Что хочу сделать:
если это возможно, хотелось бы после получения
ТТНXDTO = ФабрикаXDTO.Создать(ФабрикаXDTO.Тип(ПространствоИмен, "WayBillType_v2"));
ШапкаXDTO = ОбъектXDTOПоИмениСвойства(ПространствоИмен, "Header", ТТНXDTO);
менять для свойства Transport нижнюю границу с 0 на 1. Как это сделать и возможно ли это?
Пытался сделать прямое присвоение
ШапкаXDTO.Тип().Свойства.Получить("Transport").НижняяГраница = 1
получил ошибку, что "Поле объекта недоступно для записи". Так же крутил/вертел метод "Установить", но безрезультатно до сего момента.
Если это сделать это так нельзя, то, возможно, есть какие-то другие красивые способы решения проблемы?
Ссылка на коллекцию свойств, получаемых через ШапкаXDTO.Тип().Свойства: http://radikal.ru/big/cqd06leyaxf2e
1 antgenp
 
10.07.17
12:37
ап
2 Широкий
 
10.07.17
13:23
Почему бы схему не поправить?
3 Лефмихалыч
 
10.07.17
13:26
может исправить просто указанную ошибку в модуле?..
4 antgenp
 
10.07.17
13:57
(3) я у себя то поправил, у клиентов править не спешат, а каждый раз править руками не хочется
(2) я с XTDO не очень, даже не думал, что схема где-то у меня может хранится, думал, что грузится сама. Сейчас посмотрю - попробую
5 antgenp
 
10.07.17
14:17
(2) (4) Посмотрел, насколько я понял, схема подтягивается автоматом:
ТТНXDTO = ФабрикаXDTO.Создать(ФабрикаXDTO.Тип(ПространствоИмен, "WayBillType_v2"));

здесь ПространствоИмен = "http://fsrar.ru/WEGAIS/TTNSingle_v2";
6 тарам пам пам
 
10.07.17
14:36
(5) у тебя фабрика ХДТО используется глобальная, судя по всему, т. е. пакеты импортированы прямо в конфигурацию (раздел Общие - XDTO-пакеты). Вот прям там и исправь, кода вообще никакого не нужно.
7 antgenp
 
10.07.17
14:46
(6) оО
Спасибо, нашел, сейчас внесу в конфигурацию - проверю.
8 antgenp
 
10.07.17
16:28
(6) Внес изменения, проверил - пока всё отлично.
Ещё раз огромное спасибо!