|
УНФ. Выгрузка на сайт. | ☑ | ||
---|---|---|---|---|
0
polkin
07.02.15
✎
13:23
|
Пытаюсь выгрузить на сайт лишний реквизит Комментарий1.
И естественно Поле объекта не обнаружено (Применение) ТоварXDTO.Описание = Параметры.ВыборкаНоменклатуры.Комментарий; ТоварXDTO.Применение = Параметры.ВыборкаНоменклатуры.Комментарий1; Где это поле устанавливается и что такое XDTO? |
|||
1
ShoGUN
07.02.15
✎
13:45
|
(0) Вот тут можно почитать: http://langslab.com/ebooks/prof-dev2/tome2/pr-dev-t2-ch18/pr-dev-t1-ch18-1
|
|||
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
|
Народ, ну кто там в теме?
Как вывести эту картинку? |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |