Имя: Пароль:
1C
1С v8
Фабрика 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) Нашел свою ошибку :) когда создавал Тип объекта в свойствах задал явный тип "Контрагент", даже если стоит галка "Возможно пустое значение" отрабатывает не верно. Убрал явное указание типа и все заработало!
Всем огромное спасибо за помощь!
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn