Имя: Пароль:
1C
1С v8
ошибка SOAP сервера поле объекта недоступно для записи
0 Svirepy
 
24.10.11
15:22
Ошибка вызова операции сервиса:  {http://192.168.0.211:8080/1c-web/test.1cws}:Test:Products()
по причине:
Ошибка SOAP сервера:  Неизвестная ошибка. {WebСервис.Test.Модуль(39)}: Поле объекта недоступно для записи (Наименование)
по причине:
{WebСервис.Test.Модуль(39)}: Поле объекта недоступно для записи (Наимено

В функции написано:
Функция Prod(ProdName,Article) Экспорт
   Товар = ФабрикаXDTO.Тип("http://192.168.0.211:8080/Nomen", "Номенклатура");
   КорневойЭлемент = ФабрикаXDTO.Создать(Товар);
   КорневойЭлемент.Наименование = "КорневойЭлемент";
   Возврат КорневойЭлемент;
КонецФункции

Где порыться, кто знает?
1 skunk
 
24.10.11
15:27
наверное надо объект получить
2 Svirepy
 
24.10.11
15:41
Объект XDTO? Это как? Я создал тип, новый элемент (значение XDTO), но к его свойствам доступа не имею... Фигня какая-то...
3 DmitrO
 
24.10.11
15:42
надо порыться в пакете XDTO где описан тип Номенклатура{http://192.168.0.211:8080/Nomen}, наверное фасеты количества элемента Наименование установлены не 1 и 1, поэтому КорневойЭлемент.Наименование имеет тип СписокXDTO.
4 Fragster
 
гуру
24.10.11
15:44
ФабрикаXDTO (XDTOFactory)
Создать (Create)
Вариант синтаксиса: Создание значения из значения
Описание:
Создает значение XDTO по произвольному значению.
Синтаксис:
Создать(<Тип>, <Значение>)
Параметры:
<Тип> (обязательный)
Тип: ТипЗначенияXDTO. Тип, значение которого необходимо создать.
<Значение> (обязательный)
Тип: Произвольный. Произвольное значение, на основе которого должно быть создано значение XDTO.
Вариант синтаксиса: Создание значения по лексическому представлению
Описание:
Создает значение XDTO по лексическому представлению значения.
Синтаксис:
Создать(<Тип>, <Строка>)
Параметры:
<Тип> (обязательный)
Тип: ТипЗначенияXDTO. Тип, значение которого необходимо создать.
<Строка> (обязательный)
Тип: Строка. Лексическое представление значения.
Вариант синтаксиса: Создание объекта
Описание:
Создание объекта, указанного типа.
Синтаксис:
Создать(<Тип>)
Параметры:
<Тип> (обязательный)
Тип: ТипОбъектаXDTO. Тип, объект которого необходимо создать.
5 Fragster
 
гуру
24.10.11
15:46
ЗначениеXDTO (XDTODataValue)
Свойства:
Значение (Value)
ЛексическоеЗначение (LexicalValue)
Список (List)

Методы:
Тип (Type)

Описание:
Значение простого типа XDTO.
6 Fragster
 
гуру
24.10.11
15:47
Когда у народа СП красть перестанут - непонятно...
7 Svirepy
 
24.10.11
16:32
НЕ ПОНИМАЮ!!!
Ошибка вызова операции сервиса:  {http://192.168.0.211:8080/1c-web/test.1cws}:Test:Products()
по причине:
Неизвестная ошибка. Ошибка преобразования данных XDTO:
НачалоСвойства: {http://192.168.0.211:8080/Nomen}Наименование    Форма: Элемент    Тип: {http://www.w3.org/2001/XMLSchema}anyType
по причине:
Ошибка преобразования данных XDTO:
НачалоСвойства: {http://192.168.0.211:8080/Nomen}Наименование    Форма: Элемент    Тип: {http://www.w3.org/2001/XMLSchema}anyType

Что-то я не то делаю, но не понимаю, что именно...
Создал пакет XDTO, http://192.168.0.211:8080/Nomen
Добавил в него тип объекта, назвал "Номенклатура". В свойствах оставил всё по умолчанию, без заполнения.
Добавил в Номенклатуру свойство Артикул, тип string (http://www.w3.org/2001/XMLSchema), минимальное и максимальное количество - 1, возможно пустое - истина, форма - элемент.
Такое же свойство - Наименование.
Еще одно свойство - элемент, тип Номенклатура (http://192.168.0.211:8080/Nomen),
минимальное количество - 1, макс. 100 000, возможно пустое, форма - элемент.

Веб сервис: Test, пакеты XDTO http://192.168.0.211:8080/Nomen, пространство http://192.168.0.211:8080/1c-web/test.1cws, функция Products, тип возвращаемого значения Номенклатура (http://192.168.0.211:8080/Nomen).
Функция:
Функция Prod(ProdName,Article) Экспорт
   Товар = ФабрикаXDTO.Тип("http://192.168.0.211:8080/Nomen","Номенклатура");
   КорневойЭлемент = ФабрикаXDTO.Создать(Товар);
   КорневойЭлемент.Наименование = "КорневойЭлемент";
   Возврат КорневойЭлемент;
КонецФункции

И все это выдает такую поганую ошибку.... :(
8 DmitrO
 
24.10.11
16:46
(7)свойство Артикул надо заполнить (не смотря на то что возможно пустое) хотя бы так:
КорневойЭлемент.Артикул = "";
9 DmitrO
 
24.10.11
16:50
Просто если значение ему не устанавливалось, оно вообще в результате отсутствует, а согласно схеме присутствовать оно должно (минимальное и максимальное количество - 1, но может быть пустым).
И когда возвращаемый объект сериализуется и проходит проверку, он встречает элемент Наименование, а ожидался Артикул (он первым объявлен), вот оно про начало свойства Наименование и ругается.