|
Фабрика XDTO необязательный реквизит обязателен? | ☑ | ||
---|---|---|---|---|
0
ZUM
11.09.12
✎
10:39
|
В пакете XDTO есть тип объекта у одного из свойств установлено возможно пустое значение, при передаче веб-сервисом ругается на незаполненность. Подскажите, пожалуйста, в чем беда?
|
|||
1
zladenuw
11.09.12
✎
10:40
|
оно пустое или неопределенно ?
|
|||
2
ZUM
11.09.12
✎
10:42
|
У свойства в пакете стоит "Возможно пустое", когда создается объект по умолчанию стоит неопределено.
|
|||
3
zladenuw
11.09.12
✎
10:43
|
ну так присвой ""
|
|||
4
ZUM
11.09.12
✎
10:44
|
ТипОбъекта = ФабрикаXDTO.Тип(ПространстваИмен,НаименованиеТипаОбъекта);
Объект = ФабрикаXDTO.Создать(ТипОбъекта); |
|||
5
zladenuw
11.09.12
✎
10:46
|
у меня так
Если ТекСервисEurocar = НЕОПределено Тогда ТекФабрика = ФабрикаXDTO; Кл = ТекФабрика.Создать(ТекФабрика.Тип("itek", "Клиент")); Иначе ТекФабрика = ТекСервисEurocar.Определение.ФабрикаXDTO; Кл = ТекФабрика.Создать(ТекФабрика.Тип("itek", "Клиент")); КонецЕсли; Если НЕ ЗначениеЗаполнено(Клиент) Тогда // Кл.Код = "xxx"; // Кл.Наименование = "-"; // Возврат Кл; КонецЕсли; Если Клиент.Метаданные().Имя = "Сотрудники" Тогда Кл.Код = СОКРЛП(Клиент.Код); //Кл.ОКПО =СОКРЛП(Клиент.ИНН); Кл.Наименование = Клиент.Наименование; Кл.АдресЮридический = Клиент.Адрес; Кл.АдресФизический = Клиент.Адрес; Кл.ОсобыеПометки = "Сотрудник " + Клиент.Должность; Кл.Регион = ""; Кл.Телефоны = Клиент.ТелефонМоб; |
|||
6
ZUM
11.09.12
✎
10:49
|
(3) по причине:
Несоответствие типов XDTO: Тип '{UPP_WMSTopLog}Контрагент' не найден Значение не может быть установлено свойству, имеющему объектный тип |
|||
7
zladenuw
11.09.12
✎
10:50
|
(6) тип какой ?
|
|||
8
ZUM
11.09.12
✎
10:58
|
(7) Тип объектный Контрагент, который содержит свои свойства
|
|||
9
zladenuw
11.09.12
✎
11:01
|
ну а свойство какое именно и его тип? из тебя все тисками вытягивать или паяльником ?
|
|||
10
ZUM
11.09.12
✎
11:04
|
(9) :) Спасибо за внимание!
В общем у меня есть объект: Документ - тип объекта Контрагент - тип объекта GUID - строка ИНН - строка КПП - строка Контрагент заполняется не всегда. |
|||
11
zladenuw
11.09.12
✎
11:04
|
а если дать пустую ссылку на контрагента ?
|
|||
12
ZUM
11.09.12
✎
11:06
|
При создании объекта Контрагент по умолчанию становится неопределено, и не заполняется до передачи.
(11) пробовал, тогда за собой тянуться свойства ИНН и КПП, которые при условии заполнения контрагента, должны быть обязательно заполнены. |
|||
13
zladenuw
11.09.12
✎
11:08
|
хм. а что за схема такая ? туповато.
|
|||
14
ll13
11.09.12
✎
11:13
|
Перед записью XDTO-объекта используй процедуру дозаполнения, т.е. схема работы такая:
1. Создаешь и заполняешь требуемыми(не пустыми) свойствами XDTO-объект. 2. Инициализируешь остальные свойства.(обрати внимания, что в схеме у всех свойства должно быть установлено "Возможно пустое = Истина") 3. Записываешь. Процедура ИнициализироватьПоУмолчанию(ОбъектXDTO) // Все реквизиты которые забиваются Неопределенно в схеме должны иметь nillable="true" ТипСписокXDTO = Тип("СписокXDTO"); Для каждого СвойствоОбъектаXDTO Из ОбъектXDTO.Свойства() Цикл Если НЕ ТипЗнч(ОбъектXDTO[СвойствоОбъектаXDTO.Имя]) = ТипСписокXDTO Тогда Если НЕ ОбъектXDTO.Установлено(СвойствоОбъектаXDTO) Тогда Попытка ОбъектXDTO[СвойствоОбъектаXDTO.Имя] = Неопределено; Исключение //Сообщить(""+ОбъектXDTO+" "+СвойствоОбъектаXDTO.Имя); КонецПопытки; КонецЕсли; КонецЕсли; КонецЦикла; КонецПроцедуры |
|||
15
ZUM
11.09.12
✎
11:14
|
Схема как схема
CML 4 Контрагент http://commerceml.1c.ru/Schema4.01 |
|||
16
zladenuw
11.09.12
✎
11:18
|
(14) все равно нужно указать значение, даже неопределенно ?
|
|||
17
ZUM
11.09.12
✎
12:40
|
(17) Нашел свою ошибку :) когда создавал Тип объекта в свойствах задал явный тип "Контрагент", даже если стоит галка "Возможно пустое значение" отрабатывает не верно. Убрал явное указание типа и все заработало!
Всем огромное спасибо за помощь! |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |