Имя: Пароль:
1C
1С v8
УНФ. Выгрузка на сайт.
0 polkin
 
07.02.15
13:23
Пытаюсь выгрузить на сайт лишний реквизит Комментарий1.
И естественно Поле объекта не обнаружено (Применение)

ТоварXDTO.Описание = Параметры.ВыборкаНоменклатуры.Комментарий;
ТоварXDTO.Применение = Параметры.ВыборкаНоменклатуры.Комментарий1;

Где это поле устанавливается и что такое XDTO?
1 ShoGUN
 
07.02.15
13:45
2 polkin
 
07.02.15
14:12
(1) Спасибо, прочитал, но там в основном общие понятия и примеры.
Интересует конкретный пример установления дополнительного поля в УНФ...
3 ShoGUN
 
07.02.15
14:23
(2) Лезь и сам смотри, у меня нет УНФ.
4 ДенисЧ
 
07.02.15
15:49
"что такое XDTO?"

может, всё-таки основы почитать? На нимфострате про XDTO есьт куча статей.... Почитай для начала...
А потом отладчик в зубы и...
5 polkin
 
08.02.15
16:14
(4) Основы читать долго и не понятно. Особенно для не программиста.

Кто занимался подобной проблемой? Как вывести лишний реквизит в обмен с сайтом.
6 Лодырь
 
08.02.15
16:16
(5) смотри код где у тебя создается товарXDTO
ищи его тип, лезь в нужный пакет и либо добавляй новые атрибуты, либо делай его открытым.
7 polkin
 
08.02.15
16:43
Вот код, где создается товарXDTO.
А вот дальше не понятно...

// Добавляет объект XDTO типа Товар в список товаров объекта XDTO типа Каталог
//
// Параметры
//    ТоварыXDTO - объект XDTO типа Товары
//    ПакетCML - пакет XDTO
//    ДополнительныеДанные - структура, содержащая информацию по изображениям номенклатуры и значения свойств
//    Параметры - структура, содержащая параметры обмена.
//
Процедура ДобавитьНоменклатуруXDTO(ТоварыXDTO, ПакетCML, ДополнительныеДанные, Параметры)
    
    ТоварТип = ПакетCML.Получить("Товар");
    ТоварXDTO = ФабрикаXDTO.Создать(ТоварТип);
    
    Если Параметры.ВыборкаНоменклатуры.ПометкаУдаления Тогда
        
        ТоварXDTO.Статус = "Удален";
        
    КонецЕсли;
    
    Ид = ОбменССайтомПовтИсп.СформироватьУникальныйИдентификаторОбъекта(Параметры.ВыборкаНоменклатуры.Номенклатура);
    ТоварXDTO.Ид = Ид;
    
    Штрихкод = ПолучитьШтрихкодДляXDTO(Параметры.ВыборкаНоменклатуры.ШтрихКод);
    Если ЗначениеЗаполнено(Штрихкод) Тогда
        
        ТоварXDTO.Штрихкод = ШтрихКод;
        
    КонецЕсли;
    
    ТоварXDTO.Артикул = Параметры.ВыборкаНоменклатуры.Артикул;
    ТоварXDTO.Наименование = ФорматНаименованияДляXDTO(Параметры.ВыборкаНоменклатуры.Наименование);
    ТоварXDTO.БазоваяЕдиница = ПолучитьБазовуюЕдиницуXDTO(ПакетCML, Параметры.ВыборкаНоменклатуры);
    
    ИдГруппы = "";
    Если ЗначениеЗаполнено(Параметры.ВыборкаНоменклатуры.Родитель) Тогда
        
        ИдГруппы = ОбменССайтомПовтИсп.СформироватьУникальныйИдентификаторОбъекта(Параметры.ВыборкаНоменклатуры.Родитель);
        
    КонецЕсли;
    
    Если НЕ ПустаяСтрока(ИдГруппы) Тогда
        
        ГруппыТип = ПолучитьТипСвойстваОтТипаОбъектаXDTO(ТоварТип, "Группы");
        ГруппыXDTO = ФабрикаXDTO.Создать(ГруппыТип);
        
        ГруппыXDTO.Ид.Добавить(ИдГруппы);
        
        ТоварXDTO.Группы = ГруппыXDTO;
        
    КонецЕсли;
    
    ТоварXDTO.Описание = Параметры.ВыборкаНоменклатуры.Комментарий;
    ТоварXDTO.Применение = Параметры.ВыборкаНоменклатуры.Комментарий1;
    
    ОписанияФайлов = Новый Соответствие;
    ДобавитьАдресаИзображенийНоменклатурыXDTO(ТоварXDTO, ДополнительныеДанные.ТаблицаФайлов, Параметры, ОписанияФайлов);
    
    ДобавитьЗначенияСвойствНоменклатурыXDTO(ТоварXDTO, ДополнительныеДанные.ТаблицаСвойств, Параметры, ПакетCML);
    
    СтавкаНДС = Параметры.ВыборкаНоменклатуры.СтавкаНДС;
    Если ЗначениеЗаполнено(СтавкаНДС) И НЕ СтавкаНДС.НеОблагается Тогда
        
        СтавкиНалоговТип = ПолучитьТипСвойстваОтТипаОбъектаXDTO(ТоварТип, "СтавкиНалогов");
        
        СтавкиНалоговXDTO = ФабрикаXDTO.Создать(СтавкиНалоговТип);
        СтавкаНалогаXDTO = ФабрикаXDTO.Создать(ПакетCML.Получить("СтавкаНалога"));
        
        СтавкаНалогаXDTO.Наименование = Параметры.НаименованиеНалога;
        СтавкаНалогаXDTO.Ставка = ОбменССайтомПовтИсп.ПолучитьПоСтавкеНДСЗначениеДляВыгрузки(СтавкаНДС);
        
        СтавкиНалоговXDTO.СтавкаНалога.Добавить(СтавкаНалогаXDTO);
        
        ТоварXDTO.СтавкиНалогов = СтавкиНалоговXDTO;
        
    КонецЕсли;
    
    Если Параметры.ОбменЧерезВебСервис Тогда
        ДобавитьХарактеристикиТовараXDTO(ТоварXDTO, ПакетCML, Параметры.ВыборкаНоменклатуры.Номенклатура, Параметры.ДеревоСвойствХарактеристик);
    КонецЕсли;
    
    ЗначенияРеквизитовТип = ПолучитьТипСвойстваОтТипаОбъектаXDTO(ТоварТип, "ЗначенияРеквизитов");
    ЗначенияРеквизитовXDTO = ФабрикаXDTO.Создать(ЗначенияРеквизитовТип);
    
    Для Каждого ОписаниеФайла Из ОписанияФайлов Цикл
        
        Файл = ОписаниеФайла.Ключ;
        Описание = ОписаниеФайла.Значение;
        
        ДобавитьЗначениеРеквизитаXDTO(ЗначенияРеквизитовXDTO, ПакетCML, "ОписаниеФайла", Файл + "#" + Описание);
        
    КонецЦикла;
    
    ДобавитьЗначениеРеквизитаXDTO(ЗначенияРеквизитовXDTO, ПакетCML, "ВидНоменклатуры", Параметры.ВыборкаНоменклатуры.ВидНоменклатуры);
    ДобавитьЗначениеРеквизитаXDTO(ЗначенияРеквизитовXDTO, ПакетCML, "ТипНоменклатуры", Параметры.ВыборкаНоменклатуры.ТипНоменклатуры);
    ДобавитьЗначениеРеквизитаXDTO(ЗначенияРеквизитовXDTO, ПакетCML, "Полное наименование", Параметры.ВыборкаНоменклатуры.НаименованиеПолное);
    
    ТоварXDTO.ЗначенияРеквизитов = ЗначенияРеквизитовXDTO;
    ТоварыXDTO.Товар.Добавить(ТоварXDTO);
    
    Параметры.СтрокаТаблицыКаталогов.СтруктураРезультата.ВыгруженоТоваров =
        Параметры.СтрокаТаблицыКаталогов.СтруктураРезультата.ВыгруженоТоваров + 1;
    
КонецПроцедуры
8 shuhard
 
08.02.15
16:46
(5)[Основы читать долго и не понятно. Особенно для не программиста. ]
а с не программистом нам обсуждать нечего,
ты пациент для хотлайна
9 polkin
 
08.02.15
17:11
(8) (ты пациент для хотлайна)
Спасибо, конечно, но запросы там совсем не гуманные.
10 polkin
 
09.02.15
08:46
Народ, кто может подсказать, где в УНФ добавить поле XDTO?
11 rozer76
 
09.02.15
08:54
12 polkin
 
09.02.15
10:24
(11) Спасибо большое.

Может кому пригодится добавление реквизита для вывода на сайт.

//1. Добавляем реквизит в Номенклатуру и форму элемента.
//2. В Общие Модули в модуле ОбменССайтом вносим изменения
Процедура ДобавитьЗапросыВПакет(ТекстЗапроса, Параметры)

//Добавляем доп реквизит в запрос.        |    ВременнаяТаблицаНоменклатура.Номенклатура.Комментарий1 КАК Комментарий1,

//3. Процедура ДобавитьНоменклатуруXDTO(ТоварыXDTO, ПакетCML, ДополнительныеДанные, Параметры)

//Добавляем вывод доп реквизита в ТоварXDTO
    ТоварXDTO.Применение = Параметры.ВыборкаНоменклатуры.Комментарий1;

//XDTO-пакеты  
//пакет CommerceML205a  
//добавляем поле вывода
//Типы объектов  -  Товар  -  Применение
13 polkin
 
09.02.15
12:04
Осталось пара мелочей. Научиться выводить Описание и Картинку для ГруппыНоменклатуры.


Процедура ЗаполнитьГруппыКлассификатораXDTO(ГруппыКлассификатораXDTO, ДеревоГрупп, СписокГрупп, ПакетCML, ТекущийРодитель = Неопределено)
    
    Для Каждого СтрокаДерева Из ДеревоГрупп Цикл
        
        Если НЕ СтрокаДерева.Номенклатура.ЭтоГруппа Тогда
            Продолжить;
        КонецЕсли;
        
        Если СтрокаДерева.Номенклатура = ТекущийРодитель Тогда
            Продолжить;
        КонецЕсли;
        
        Если ЭтоГруппаВерхнегоУровня(СтрокаДерева.Номенклатура, СписокГрупп) Тогда
            
            Если СтрокаДерева.Строки.Количество() > 0 Тогда
                ЗаполнитьГруппыКлассификатораXDTO(ГруппыКлассификатораXDTO, СтрокаДерева.Строки, СписокГрупп, ПакетCML, СтрокаДерева.Номенклатура);
            КонецЕсли;
            
        Иначе
            
            ГруппаXDTO = ФабрикаXDTO.Создать(ПакетCML.Получить("Группа"));
            
            ИдГруппы = ОбменССайтомПовтИсп.СформироватьУникальныйИдентификаторОбъекта(СтрокаДерева.Номенклатура);
            ИмяГруппы = СтрокаДерева.Номенклатура.Наименование;
//            ОписаниеГруппы = СтрокаДерева.Номенклатура.Комментарий;
            
            ГруппаXDTO.Ид = ИдГруппы;
            ГруппаXDTO.Наименование = ФорматНаименованияДляXDTO(ИмяГруппы);
//            ГруппаXDTO.Описание = ФорматОписаниеДляXDTO(ОписаниеГруппы);
            
            ГруппыXDTO = ПолучитьГруппыНоменклатурыXDTO(СтрокаДерева.Строки, СписокГрупп, ПакетCML, СтрокаДерева.Номенклатура);
            Если ГруппыXDTO.Группа.Количество() > 0 Тогда
                ГруппаXDTO.Группы = ГруппыXDTO;
            КонецЕсли;
            
            ГруппыКлассификатораXDTO.Группа.Добавить(ГруппаXDTO);
            
        КонецЕсли;
        
    КонецЦикла;
    
КонецПроцедуры


// Мои строки не работают (обозначенные //). Как правильно вывести Комментарий Группы?
14 polkin
 
09.02.15
12:29
Выдает ошибку

{ОбщийМодуль.ОбменССайтом.Модуль(1439)}: Ошибка при установке значения атрибута контекста (Описание)
            ГруппаXDTO.Описание = ФорматОписаниеДляXDTO(ОписаниеГруппы);
по причине:
Несоответствие типов XDTO
по причине:
Ошибка проверки данных XDTO:
Значение: '' не соответствует простому типу: {urn:1C.ru:commerceml_205}Комментарий
Несоответствие фасету MinLength = '1'
15 Лодырь
 
09.02.15
13:01
(14) Ну у тебя по условию комментарий не короче 1 символа. а стопудово  где то комментарий не стоит. надо ставить в пакете мин.длину 0.
16 polkin
 
09.02.15
13:24
(15) Спасибо. Помогло.
Все комментарии заполнил - и вывело в файл.
Правда не понятно почему так. Все различие в;
Группа Описание - Комментарий (urn:1C.ru:commerceml_205)
17 polkin
 
09.02.15
13:25
Товар Описание - string (http://www.w3.org/2001/XMLSchema)
18 Лодырь
 
09.02.15
13:30
(17) В смысле непонятно почему? У тебя явно в пакете указано длина 1 (minOccurs = "1"), а ты пытаешься туда пустую строку дать. У нее длина 0. Логично что ошибка.
19 polkin
 
09.02.15
13:35
(18) В том то и дело, что 0, как и у номенклатуры...
https://yadi.sk/i/5BKo99EzeZARd
20 polkin
 
09.02.15
14:20
Разобрался, изменил тир объекта с
Комментарий (urn:1C.ru:commerceml_205)
на
string (http://www.w3.org/2001/XMLSchema)
и все заработало как нужно.

Осталось картинку группы вывести....
21 polkin
 
09.02.15
15:39
Не выходит каменный цветок...
Взял процедуру вывода картинки ТоварXDTO и заменил на ГруппаXDTO

https://yadi.sk/i/0wqOuxRceZMok

Все равно выдает ошибку...
Поле объекта не обнаружено (Картинка)
ГруппаXDTO.Картинка.Добавить(АдресФайла);
Хотя в Типы объектов Группа Картинку добавил...
https://yadi.sk/i/eJdiDtTkeZN85
22 polkin
 
10.02.15
09:07
Народ, ну кто там в теме?
Как вывести эту картинку?
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан