30.08.2012 Добавлен импорт коммерческого предложения (прайс листа с ценами, главный файл ksnikx21.epf). Байка из склепа (о жутком баге): как-то ночтью случайно допустил досадную опечатку в одном из тегов, а именно «Предложение» написал с латинской буквой «е». Двое суток сходил с ума, почему же мои цены напрочь игнорирует модуль обмена данными umi cms, и при этом утверждает, что все импортировалось успешно. Теперь все в порядке. Если есть непонятные глюки с загрузкой xml (например не загружается коммерческое предложение offers commerceml2), подвергните синтаксическому анализу свои теги. п.с. После выгрузки не забывайте чистьть конец файла, удалять весь мусор, который остается после закрытия тега «Коммерческая информация».
13.08.2012 Новая версия с расширенными возможностями добавлена отдельным файлом ksnikx2.epf , в этой обработке кроме справочника Номенклатура в формировании наименования товара используется справочник бухгалтерских групп (категорий) номенклатуры. Сейчас работа идет над загрузкой с яндекс.маркета. Кто хочет помогайте недовольным юзерам осваивать обработку, но и про автора не забывайте 😉 В файле import.xml — пример номенклатуры, в файле offers.xml — пример заказов из комплекта umi.cms
29.06.2012 Кроме этого демонстрационного примера в версию 2 архива добавлена процедура, которая по справочнику Номенклатура создает классификатор и каталог (полный или с отбором на основании заполнения табличной части обработки).
В системе управления вебсайтом UNI.CMS (да и в Битриксе) есть отступление от схемы cml, заставляют очень подробно заполнять владельца классификатора. Результат импорта в UNI.CMS:
====================================
тип "Объект каталога" (root-catalog-object-type) был обновлен
тип "Раздел каталога" (root-catalog-category-type) был обновлен
тип "1C: - ИРИДА" (676a1a6d-d635-4d0c-84c6-363658f94a33) был обновлен
тип "1C: Шокорель" (63389a41-64cf-4a88-bc43-193917af7b61) был обновлен
страница "Каталог товаров 7 дней" (6933ae38-7e4a-4e7b-8fa2-d7a732101ee1) была обновлена
страница "- ИРИДА" (676a1a6d-d635-4d0c-84c6-363658f94a33) была обновлена
страница "Шокорель" (63389a41-64cf-4a88-bc43-193917af7b61) была обновлена
страница "- ИРИДА/Шокорель/Регенерирующий бальзам для ухода за кожей в/глаз" (871fcad4-cbdc-4b5d-b8b7-c5508d013a50) была обновлена
====================================
Только обратите внимание - файл cml.xsd нужно загрузить в ветку "Пакеты XDTO" дерева конфигурации. Чтобы все товары записались на сайт мне пришлось после сохранения файла в моей обработке руками очищать из него атрибуты тегов "Группа" и "Товар" (они одинаковые, удаляются заменой на пустую строку) вот это:
xmlns="cml" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
====================================
Вот как создается CommerceML2:
====================================
// Методы работы с XDTO практически не документированы.
// Эта обработка формирует маленький CommerceML2 (прилагается файл XDTOSample9.xml)
// при помощи удобных методов XDTO в отличии от прошлой ЗаписатьТэгиВXMLДокумент(),
// и вспомогательной ПолучитьСтрокуЗаписиДляXML которые рекурсивно обходят жуткое дерево.
// Задачу формирования CommerceML2 удобнее решать встроенными средствами XDTO.
// Работа с вложенными группами немного напоминает паскалевский Турбо Вижен (Turbo Vision).
Процедура КнопкаВыполнитьНажатие(Кнопка)
//Берем за основу произвольную схему XML без ограничений, накладываемых на названия пакетов,
//присущих пакету cml из дерева конфигурации, чтоб 1Ска не ругалась на несоответствие типов
//при использовании конструкторов типов фабрики. Отплевался от конфигурашного комерцемеля.
Чтение = Новый ЧтениеXML;
Чтение.ОткрытьФайл("D:Tempcml.xsd");
ПостроительДом = Новый ПостроительDOM;
ДокументДом = ПостроительДом.Прочитать(Чтение);
ПостроительСхемы = Новый ПостроительСхемXML;
СхемаХМЛ = ПостроительСхемы.СоздатьСхемуXML(ДокументДом);
НаборСхемХМЛ = Новый НаборСхемXML;
НаборСхемХМЛ.Добавить(СхемаХМЛ);
Фабрика = Новый ФабрикаXDTO(НаборСхемХМЛ); //создали
//Без сериализации XDMO не получится сделать рекурсию при добавлении
//в классификатор вложенных групп и ссылку на группы в товарах каталога
//но сериализация без проблем сочетается с элементарной записью XML
Сериализатор = Новый СериализаторXDTO(Фабрика);
Запись = Новый ЗаписьXML;
ПараметрыЗаписиXML = Новый ПараметрыЗаписиXML("UTF-8", "1.0", Ложь);
Запись.ОткрытьФайл("D:TempXDTOSample25.xml", ПараметрыЗаписиXML);
Запись.ЗаписатьОбъявлениеXML();
Запись.ЗаписатьНачалоЭлемента("КоммерческаяИнформация");
Запись.ЗаписатьАтрибут("ВерсияСхемы" , "2.04");
Запись.ЗаписатьАтрибут("ДатаФормирования", ФорматДатыДляXML(ТекущаяДата(), Истина, Истина));
Запись.ЗаписатьНачалоЭлемента("Классификатор");
ИдКлассификатора = Новый УникальныйИдентификатор;
ЗаписатьТекстовыйУзел(Запись, ОписаниеОшибокXML, "Ид", ФорматНаименованияДляXML(ИдКлассификатора)); //УниканьныйИдентификатор
ЗаписатьТекстовыйУзел(Запись, ОписаниеОшибокXML, "Наименование", ФорматНаименованияДляXML("Классификатор товаров 7 дней"));
// Оказалась обязательной расшифровка для поля Владелец в классификаторе и в каталоге
//ЗаписатьТекстовыйУзел(Запись, ОписаниеОшибокXML, "Владелец", ФорматНаименованияДляXML("*******"));
Запись.ЗаписатьНачалоЭлемента("Владелец");
ЗаписатьТекстовыйУзел(Запись, ОписаниеОшибокXML, "Ид", ФорматНаименованияДляXML("3b9d2388-fdee-11e0-a341-0022153a8c09")); //УниканьныйИдентификатор
ЗаписатьТекстовыйУзел(Запись, ОписаниеОшибокXML, "Наименование", ФорматНаименованияДляXML("**********"));
ЗаписатьТекстовыйУзел(Запись, ОписаниеОшибокXML, "ОфициальноеНаименование", ФорматНаименованияДляXML("******************************************")); //УниканьныйИдентификатор
ЗаписатьТекстовыйУзел(Запись, ОписаниеОшибокXML, "ИНН", ФорматНаименованияДляXML("36********11"));
Запись.ЗаписатьКонецЭлемента();//Владелец
//ЗаписатьТекстовыйУзел(Запись, ОписаниеОшибокXML, "Описание", ФорматНаименованияДляXML("Классификатор товаров в формате CommerceML2 для сайта *************"));
Запись.ЗаписатьНачалоЭлемента("Группы");
// Начинаем обрабатывать корневую группу, но помним, что в CommerceML положено
// при записи корневой группы иерархического справочника делать рекурсию
ТекЭлемент = Справочники.Номенклатура.НайтиПоКоду("ЦБ042097");
ГруппаНоменклатурыТип = Фабрика.Тип("cml", "Группа");
ГруппаНоменклатуры = Фабрика.Создать(ГруппаНоменклатурыТип);
ЗаполнитьЗначенияСвойств(ГруппаНоменклатуры, ТекЭлемент);
ГруппаНоменклатуры.Ид = СокрЛП(ТекЭлемент.УникальныйИдентификатор());
ГруппаНоменклатуры.Наименование = ТекЭлемент.Наименование;
//Из-за того, что писал описания, каталог на сайт не загружался, закомментировал их.
//ГруппаНоменклатуры.Описание = ТекЭлемент.ПолноеНаименование();
//Вот так при желании вставляется СписокXDTO внутрь ОбъектXDTO, но в CommerceML
//запись свойства по-другому написана, а так мы поступим с группами в товарах каталога
//Создаем ОбъектXDTO, внутри которого пустой список типа СписокXDTO
//Свойства = Фабрика.Создать(ГруппаНоменклатуры.Свойства()[3].Тип);
//Внутри контейнера вставляем одно пустое свойство
//Свойство = Фабрика.Создать(Свойства.Свойство.ВладеющееСвойство.Тип, Неопределено);
//Свойства.Свойство.Добавить(Свойство);
//ГруппаНоменклатуры.Свойства = Свойства;
//И немного каши из топора, работать с таким объектом можно, а интегрировать его не удается
//По номеру извлекаем (списочный СписокXDTO "Элементы.Свойство") тип, соответствующий фрагменту ОбъектXDTO "{cml}Группа".Свойства
//Свойства = Фабрика.Создать(фабрика.Пакеты[1][48]); // Правильнее искать тип данных по имени а не по номеру, потому что при добавлении
//Элементы = Фабрика.Создать("{cml}СписокСвойств"); // новых типов данных в пакет XDTO индексы сбиваются и в коде приходится менять
//цыфОрки (именно данный номер типа данных), но так не получается потому что {Обработка.Демо.Форма.Форма1(229)}: Ошибка при вызове
//метода контекста (Создать) Элементы = Фабрика.Создать("{cml}СписокСвойств"); по причине: Несоответствие типов (параметр номер '2')
//Сообщить("СписокXDTO "+СокрЛП(Свойства.Свойство.Количество())+" шт. "); // в данном случае = 1 шт.
//{Обработка.Демо.Форма.Форма1(245)}: Ошибка при установке значения атрибута контекста (Свойства)
// ГруппаНоменклатуры.Свойства = Свойства;
//по причине:
//Несоответствие типов XDTO:
//Тип '{cml}СписокСвойств' не соответствует типу ''
//Тип свойства не соответствует типу значения
// '' само собой в номенклатуре, а '{cml}СписокСвойств' справа
//А вот это именно тот результат, который совпадает с выгрузкой Битрикса
ГруппаНоменклатуры.Сбросить("Свойства");
//Если у вложенной группы есть родитель, тогда делаем начало вложенной группы
ТекЭлемент = Справочники.Номенклатура.НайтиПоКоду("ЦБ053031");
Если ЗначениеЗаполнено(ТекЭлемент.Родитель) Тогда
//Создаем ОбъектXDTO, внутри которого пустой список типа СписокXDTO
Группы = Фабрика.Создать(ГруппаНоменклатуры.Свойства()[4].Тип);
//Подготавливаем вложенную группу для вставки в список
ГруппаНоменклатурыТип2 = Фабрика.Тип("cml", "Группа");
ГруппаНоменклатуры2 = Фабрика.Создать(ГруппаНоменклатурыТип2);
ЗаполнитьЗначенияСвойств(ГруппаНоменклатуры2, ТекЭлемент);
ГруппаНоменклатуры2.Ид = СокрЛП(ТекЭлемент.УникальныйИдентификатор());
ГруппаНоменклатуры2.Наименование = ТекЭлемент.Наименование;
//ГруппаНоменклатуры2.Описание = ТекЭлемент.ПолноеНаименование();
//Подготавливаем контейнер для укладки вложенной группы в список
//Группа = Фабрика.Создать(Группы.Группа.ВладеющееСвойство.Тип, ГруппаНоменклатуры2);
//Внутри контейнера вставляем нужную группу
Группы.Группа.Добавить(ГруппаНоменклатуры2);
ГруппаНоменклатуры.Группы = Группы;
Иначе
Запись.ЗаписатьНачалоЭлемента("Группы");
Запись.ЗаписатьКонецЭлемента(); // Группы
КонецЕсли;
Сериализатор.Фабрика.ЗаписатьXML(Запись, ГруппаНоменклатуры);
//Элементы = Фабрика.Создать(фабрика.Пакеты[1][47]);
//Группа = Фабрика.Создать(Группы.Группа.ВладеющееСвойство.Тип, СокрЛП(ТекЭлемент.Родитель.УникальныйИдентификатор()));
//Группы.Группа.Добавить(Группа);
//ГруппаНоменклатуры2.Группы = Группы; //Несоответствие свойства и элемента данных XDTO
//ГруппаНоменклатуры2.Описание = ТекЭлемент.ПолноеНаименование();
//Сериализатор.Фабрика.ЗаписатьXML(Запись, ГруппаНоменклатуры2);
Запись.ЗаписатьКонецЭлемента(); // Группы
Запись.ЗаписатьКонецЭлемента(); // Классификатор
Запись.ЗаписатьНачалоЭлемента("Каталог");
ЗаписатьАтрибут(Запись, ОписаниеОшибокXML, "СодержитТолькоИзменения", "false");
ЗаписатьТекстовыйУзел(Запись, ОписаниеОшибокXML, "Ид", ФорматНаименованияДляXML(Новый УникальныйИдентификатор)); //УниканьныйИдентификатор
ЗаписатьТекстовыйУзел(Запись, ОписаниеОшибокXML, "ИдКлассификатора", ФорматНаименованияДляXML(ИдКлассификатора)); //УниканьныйИдентификатор
ЗаписатьТекстовыйУзел(Запись, ОписаниеОшибокXML, "Наименование", ФорматНаименованияДляXML("Каталог товаров 7 дней"));
//ЗаписатьТекстовыйУзел(Запись, ОписаниеОшибокXML, "Владелец", ФорматНаименованияДляXML("7 дней"));
Запись.ЗаписатьНачалоЭлемента("Владелец");
ЗаписатьТекстовыйУзел(Запись, ОписаниеОшибокXML, "Ид", ФорматНаименованияДляXML("3b9d2388-fdee-11e0-a341-0022153a8c09")); //УниканьныйИдентификатор
ЗаписатьТекстовыйУзел(Запись, ОписаниеОшибокXML, "Наименование", ФорматНаименованияДляXML("И**********."));
ЗаписатьТекстовыйУзел(Запись, ОписаниеОшибокXML, "ОфициальноеНаименование", ФорматНаименованияДляXML("3*****************************************************4")); //УниканьныйИдентификатор
ЗаписатьТекстовыйУзел(Запись, ОписаниеОшибокXML, "ИНН", ФорматНаименованияДляXML("3*************1"));
Запись.ЗаписатьКонецЭлемента();//Владелец
Запись.ЗаписатьНачалоЭлемента("Товары");
// Записываю товар
ТекЭлемент = Справочники.Номенклатура.НайтиПоКоду("ЦБ053035");
//В группу и в товар 1Ска пихает вот такие атрибуты:
//xmlns="cml" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
структурныйТип = Фабрика.Тип("cml", "Товар");
НоменклатураXDTO = Фабрика.Создать(структурныйТип);
ЗаполнитьЗначенияСвойств(НоменклатураXDTO, ТекЭлемент);
НоменклатураXDTO.Ид = СокрЛП(ТекЭлемент.УникальныйИдентификатор());
НоменклатураXDTO.ПолноеНаименование = ТекЭлемент.ПолноеНаименование();
Группы = Фабрика.Создать(НоменклатураXDTO.Свойства()[8].Тип);
//Элементы = Фабрика.Создать(фабрика.Пакеты[1][47]);
Ид = Фабрика.Создать(Группы.Ид.ВладеющееСвойство.Тип, СокрЛП(ТекЭлемент.Родитель.УникальныйИдентификатор()));
Группы.Ид.Добавить(Ид);
НоменклатураXDTO.Группы = Группы; //Несоответствие свойства и элемента данных XDTO лечится строкой Группы = Фабрика.Создать(НоменклатураXDTO.Свойства()[8].Тип)
Сериализатор.Фабрика.ЗаписатьXML(Запись, НоменклатураXDTO);
// Записываю товар
ТекЭлемент = Справочники.Номенклатура.НайтиПоКоду("ЦБ053033");
//xmlns="cml" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
структурныйТип = Фабрика.Тип("cml", "Товар");
НоменклатураXDTO = Фабрика.Создать(структурныйТип);
ЗаполнитьЗначенияСвойств(НоменклатураXDTO, ТекЭлемент);
НоменклатураXDTO.Ид = СокрЛП(ТекЭлемент.УникальныйИдентификатор());
НоменклатураXDTO.ПолноеНаименование = ТекЭлемент.ПолноеНаименование();
Группы = Фабрика.Создать(НоменклатураXDTO.Свойства()[8].Тип);
//Элементы = Фабрика.Создать(фабрика.Пакеты[1][47]);
Ид = Фабрика.Создать(Группы.Ид.ВладеющееСвойство.Тип, СокрЛП(ТекЭлемент.Родитель.УникальныйИдентификатор()));
Группы.Ид.Добавить(Ид);
НоменклатураXDTO.Группы = Группы; //Несоответствие свойства и элемента данных XDTO лечится строкой Группы = Фабрика.Создать(НоменклатураXDTO.Свойства()[8].Тип)
Сериализатор.Фабрика.ЗаписатьXML(Запись, НоменклатураXDTO);
Запись.ЗаписатьКонецЭлемента(); // Товары
//ЗаписатьТекстовыйУзел(Запись, ОписаниеОшибокXML, "Описание", ФорматНаименованияДляXML("Товар каталога (2 уровня группировки товаров)"));
Запись.ЗаписатьКонецЭлемента(); // Каталог
Запись.ЗаписатьКонецЭлемента(); // Коммерческая информация
Запись.Закрыть();
КонецПроцедуры
Товары для мужчин -> Жёлтая принцесса 😀
Забыл сказать — в своей разработке CommerceML2 своими руками из любой конфигурации (для сайта) версия 2. я использовал фрагменты общего модуля из типовой конфигурации «Управление торговлей»:
Функция ФорматДатыДляXML
Функция ФорматНаименованияДляXML
Процедура ЗаписатьТекстовыйУзел
ПолучитьСтрокуЗаписиДляXML
Функция ПодставитьПараметрыВСтроку
Процедура ДобавитьОписаниеОшибки
Процедура ЗаписатьАтрибут
(4) artbear, это выгрузка для сайта и обусловлена она требованиями компаний, специализирующихся на веб-дизайне. Чтение данных CommerceML в произвольной конфигурации подскажите, зачем Вам понадобилось, в чем заключается специфика задачи, почему для этой цели не пригодились более изъезженные способы, как xml, xls, txt, …?
(4) artbear, если в произвольной конфигурации (например в обменной для сайта) создать объекты, которые будут называться идентично объектам схемы CommerceML, тогда программирование взаимодействия благодаря функции XDTO «заполнить…» во много раз упростится.
(7) artbear, советую создать конфигурацию для обмена, а в ней у объектов поля идентичные схеме CommerceML. Тогда можно будет автоматически перезаполнить (методом ЗаполнитьЗначенияСвойств(ГруппаНоменклатуры, ТекЭлемент))
http://gs46.gs1ru.org/GEPIR31/process?p=gtin&lng=ru>in=4607175850315&mode=party&protolog=on через гребанный soap. Давайте работать вместе.
Я это делать сейчас не буду, но актуально, если и придется — то сперва так. А из 1С в 1С уже легкими методами. Пока решаю задачу загрузки правильных наименований товара с сайта
Спасибо за статью, как раз во время попалась на глаза, поскольку необходимо решать подобную задачу.
В статье только код бы оформить, а так +. Спасибо.
(9) EfiopReal, это тема не закрытая, доделывайте, делитесь, а я ошибок пока на ооочень больших выборках данных не выявил, это тоже важное обстоятельство.
Здраствуйте. Кто-нибудь уже пользовался обработкой?
Автор, можно мануал для пользователя-не программиста по использованию вашей обработки. Вот ошибочка выскочила, ка крешить?
Запускаю обработку, выбираю в поле ссылку либо на элемент, либо на группу номенклатуры.
{Форма.Форма2.Форма(2222)}: Ошибка при вызове метода контекста (Создать)
КорневаяГруппа = Фабрика.Создать(НоменклатураГруппаТип);
по причине:
Несоответствие типов (параметр номер ‘1’)
(12) forever-lilya, у нас платформа 8.2, но конфа еще от 8.0
У Вас какие версии платформы и конфигурации?
Вы не забыли загрузить в конфигурацию прилагающийся xdto пакет из архива разработки cml?
Можете вырезать мне и прислать свой справочник номенклатуры (то есть для этой обработки требуется в конфе справочник «Номенклатура» и мой xdto пакет «cml»), я посмотрю почему у Вас не работает?
1С:Предприятие 8.2 (8.2.15.318)
При загрузке xdto пакета вылетает ошибка
http://s2.hostingkartinok.com/uploads/images/2012/08/7f398120191da6f7a89507e158840865.png
помогите, пожалуйста решить проблему
(15) forever-lilya, только что выгрузил пакет еще раз для Вас, попробуйте вот этотhttp://zalil.ru/33659346
(15) forever-lilya, Да, я забыл, если не загрузится — откройте его текстовым редактором (например akelpad) — в конце файла мусор 1Совский удалите.
(8)
(4) artbear,
мне вот тоже интересно 🙂
это как так — еще дополнительную конфу делать? А потом перегружать туда-сюда?
И оформите код в статье — а то читать сложно.
(18) AlexO, зщадача выполнять чтение интересная, но пока второстепенная.
Гораздо более важно актуализировать наименования товаров через глобальные базы артикулов и штрихкодов, работа существенно ускорится, если у Вас есть предложения в этом направлении?
> дополнительную конфу делать? А потом перегружать туда-сюда?
Вероятно так и буду делать, если Вы не подскажете другие примеры.
Если эта тема Вам интересна, может погуглите и у знакомых поспрашиваете и сюда напишете?
Спасибо!
(19)
кто ж вас знает, что у вас там за глобальные базы… выгружайте в txt из них, и сравнивайте 🙂
напишите парсер выгрузки в CML, а потом загрузки в 1С.
В этом и проблема, что нужны инструменты под определенный формат, и создавать их только вручную можно.
> кто ж вас знает, что у вас там за глобальные базы…
Как раз загвоздка в том, что база gepir хоть и очень качествеенная, но в ней очень мало товаров.
Иногда яндекс.маркет дает лучшие результаты.
О том и вопрос, где брать наименования товаров (желательно от поставщиков), чтоб не было слишком трудоемко??
А Вы что еще видели или делали в этом направлении?
Здраствуйте! Помогите, пожалуйста. В вашей обработке я выбираю одну группу номенклатуры, а в итоге в файл XDTOSample24.xml записываются все группы и подгруппы, даже те, которых не выбирала. Не могу разобраться…
Кто-нибудь пользовался обработкой? У кого работает правильно? У кого правильно выгружаются группы в иерархие?
Люди добрые, а знает кто-нибудь, где взять правильный формат xml-файлов обмена для Битрикс? Надоело в угадайку играть. То иерархию не читает, то ещё что. Есть ли описание или xsd-схема для классического обмена с Битрикс?
Плизз!
пы.сы. очень неохота гонять выгрузку из УТ и смотреть, как да что она сделала…
Не правильно выстраивается иерархия номенклатуры, проблемка, как решить?
Ну и прилагаю к обработке еще один файл — новую версию. Сейчас Юрий Пермитин дал мне свой парсер яндекс.маркета и работа кипит, скоро будет готовый варант упорядочивания наименований номенклатуры и вариант загрузки картинок! Присоединяйтесь пожалуйста к обмену опытом! Самое нужное сейчас на данном этапе работы — доступ в gepir, если есть идеи или сведения пожалуйста поделитесь!!! Ребята из gepir-а не отвечают на е-мейл.
(25) Yashazz, Битрикса полно в интернете, он кстати немного не стандартный, впрочем как и в umi-cms тоже с точностью соответствия cml2 не загонялись, но я к сожалению далек об Битрикса, хотя могу скинуть красивые примеры cml2 из комплекта поставки umi (они приведены во вложении в эту обработку).
(23) forever-lilya, отвечаю на
>в итоге в файл XDTOSample24.xml записываются все группы и подгруппы, даже те, которых не выбирала. Не могу разобраться…
cml2 пакет, который формируется такими обработками, состоит из 2х частей — (1) классификатор (типы данных) и (2) каталог товаров (экземпляры типа). Классификатор (состоящий из групп номенклатуры) это заготовки шаблонов данных для разных товарных категорий интернет-магазина или сайта-витрины. Он невидимый визуально, это как классы объектов в объектной модели. Полностью грузится чтобы проверить работу механизма обмена данными. Если мешают на сайте лишние типы данных и хотите обрезать классификатор, это тоже возможно, скачайте консоль запросов, скопируйте в нее самый первый текст запроса (не забудьте заполнить параметры запроса) и добавьте такое условие, какое хотите. Например как во втором запросе, если хотите не список значений а одну группу, можно настроить условие не «в списке» а просто «в иерархии». Пробуйте, это пригодится! Или шлите мне справочник. А здесь, на форуме, развивать эту тему не нужно — такие детальные подробности мало кого заинтересуют.
(30) К сожалению, нифига в интернетах по Битриксу нет. Есть куча руководств для типовых 1С, а вот нормального описания формата, т.е. порядка, состава и смысла тегов в xml-файле (не говоря уж о полноценной схеме) — нету. Не знаю, где и искать… Спасибо на добром слове.
(32) Yashazz, А в группеhttp://infostart.ru/community/groups/622/ разве нету? тогда создайте тему поиска, будем искать вместе! Не могу полностью согласиться с Вашим не достаточно задорным настроением, считаю что формат красивый и прозрачный, я бы зарегистрирровался на тематических форумах по битриксу и попросил у их пользователей файлы примеров.
Спасибо огромное!!!!!!!!!!!
(22)
я немного с другой стороны в этом вопросе — со стороны обменом между конфигурациями в том числе и по форматам XML.
Т.е. у меня нет схем XML (CML и прочих) именно от какой-то конкретной реализации.
(33)
как я помню — там все жадные (деньги же платили!), да и формат выгрузки периодически меняется…
Но по Битрикс я тоже не встречал никакой доументации по обмену, тем более — на уровне форматов.
(35) AlexO, кажется если открыть файл выгрузки из 1С в Битрикс в формате cml2 через текстовый редактор (например acelpad) все сразу становится понятно, или нет? Yt gjvy.? Не помню, пробовал ли я тогда гуглить по названиям узлов, но вот сейчас понравилась статейка про DOMhttp://www.structuralist.narod.ru/it/internet/dom.htm
Навигационные атрибуты объекта Node
Атрибут Описание
firstChild Возвращает первый узел-потомок
lastChild Возвращает последний узел-потомок
previousSibling Возвращает предыдущий соседний узел, имеющий с текущим одного родителя
nextSibling Возвращает следующий соседний узел, имеющий с текущим одного родителя
parentNode Возвращает родительский узел
ownerDocument Возвращает корневой узел документа, содержащий текущей узел
nodeName Возвращает имя узла
nodeValue Возвращает значение узла в текстовом формате
nodeType Возвращает тип узла в виде числа
(36)
т.е. по оброненной булавке вы, как А.Кристи, делаете, вывод, что это булавка соседки-швеи, и именно она — убийца? 😀
Может, это типичный файл, а может — зависит от условий выгрузки. Спорить не буду, не знаю 🙂
Но вот, например, если вы будете судить о форматах выгрузки в другие Банки — по выгрузке из 1С в какой-нибудь СберБанк (как самую распространенно-встречающуюся), то ждет вас разочарование и уныние.
Хотя там вообще — сплошной текст без намека на XML 🙂
(35) (37) Именно такая фигня. Никто ничего не знает или делает вид. А изучать файл — можно, конечно, но совершенно верно замечено, файл может здорово зависеть от условий выгрузки, тут целое исследование затевать надо.
В версии 2 потеряна некоторая доля универсальности. Это связано с тем, что запрос по номенклатуре, соединенный с номенклатурными группами бухгалтерии (который появился в версии 2) может оказаться не совместимым с произвольной конфигурацией. То есть если у Вас с помощью моей обработки не получается формирование классификатора (версии 2), тогда можно скачать версию 1 (она не удалена а прикреплена во вложенных файлах) и посмотреть текст запроса по номенклатуре в ней. Размет текста запроса очень большой, сюда вставить увы нереально.
(38) Yashazz,1с:Предприятие 8 — Стандарты и форматы — достаточно подробное описание, я основываясь на этих статьях и на примерах файлов из них, с нуля написала свою обработку для обмена заказной конфигурации на 1с v7.7 с магазином на битриксе
(38) Yashazz, еще вторая редакция схемыhttp://v8.1c.ru/edi/edi_stnd/90/92.htm
выгружает ли обработка каталог и предложения с учетом характеристик номенклатуры? Посмотрел код не увидел.Просьба не пинать…
(42) savvato, выгружается только штрихкод товара (в коммерческом предложении). Характеристика должна быть создана в пакете XDTO (найдите в нем «Товар») Характеристики как правило выгружаются в каталоге, примерно после этих строчек (по аналогии с данным фрагментом, ПолноеНаименование — характеристика):
Номенклатура = Фабрика.Создать(НоменклатураТип);
//ЗаполнитьЗначенияСвойств(Номенклатура, ТекСтр.Ссылка);
Номенклатура.Ид = СокрЛП(ТекСтр.Ссылка.УникальныйИдентификатор());
Если СтрДлина(СокрЛП(ТекСтр.НаименованиеПолное)) < 10 Тогда
Номенклатура.ПолноеНаименование = ТекСтр.СовсемПолное;
Иначе
Номенклатура.ПолноеНаименование = ТекСтр.НаименованиеПолное;
КонецЕсли;
а в ofers.xml в таком случае попадут остатки? С учетом характеристик номенклатуры? У меня в каталоге к примеру есть товар:рубашка. И ведеться учет по характеристикам :размер и цвет. Естественно разные остатки в зависимости от характеристик. Заранее спасибо за ответ, от меня Вам огромный жирный +. Тема очень актуальна для меня. Не очень сильно дружу с программированием в 1С, поэтому прошу ткнуть носом, как говориться…
(44) savvato, в import.xml — основная информация (то есть то, что занимает большой объем и относительно редко меняется) через классификатор групп номенклатуры (в umi.cms это типы данных) и каталог (непосредственно товары с прицепленными идентификаторами групп и свойствами), в offers.xml — то, что грузить нужно чаще, например цены и остатки. В Вашем случае характеристики размер и цвет я бы добавил в реквизиты классификатора (в umi.cms эти поля автоматически добавятся на сайт), а значения заполнения этих реквизитов присвоить можно в каталоге по аналогии с «полным наименованием», как я уже привел пример в прошлом фрагменте. Я пока сам пока еще не занимался учетом в разрезе характеристик, думаю что это зависит от интернет магазина. Мне кажется, в простейшем случае чтобы остатки учитывались точно, нужно делать копии отдельного товара на каждое значение зхарактеристики, а свойства — только для информации (для показа на сайте и не более).
Извините что не достаточно универсальный ответ, в основном пишу о том, как работало у меня.
КорневаяГруппа = Фабрика.Создать(НоменклатураГруппаТип);
по причине:
Несоответствие типов (параметр номер ‘1’)
вылетела такая же ошибка как итут , только
1С:Предприятие 8.2 (8.2.15.318) Конфигурация «Розница»
cml пакет добавил в конфу
(46) savvato, чего-то ничего в голову не приходит, вот скриншот. Помогло?
помогло, сенкс, но вылезла след. ошибка, привел выше. Просьба не пинать, оч. заинтересоан в Вашей обработке.
(48) savvato, об этом уже написано выше, если у Вас нет справочника номенклатурных групп, тогда Вам не удастся использовать их для вывода на сайт. Пользуйтесь запросом из первой версии обработки и внимательнее читайте комментарии к публикации.
Справочник номенклатурных групп есть .
Привел переменные в соответствие со своей конфой:
ГруппаДляБухгалтерии -> НоменклатурнаяГруппа
ОстаткиТоваровКомпании -> ТоварыНаСкладах
Теперь вывалилась ошибка в запросе
Показать
Куда ковырнуть?
(50) savvato, а консоль запросов не пробовали запускать?
Запускаю конструктор запросов
получаю вылет, или конструктор это не консоль?
(51) savvato, текст запроса не соответствует Вашему дереву конфигурации. Попробуйте подогнать не текст запроса а создайте копию базы и попробуйте подогнать дерево конфигурации, может разберетесь. А еще лучше потренироваться на кошках, на чем-нить меньшего размера, чем мое двухкилометровое чудо. Строковой реквизит полное наименование хоть есть?
А еще можно погуглить, скопируйте текст ошибки в поиск и увидите что можно попробовать сделать.
Строковый реквизит НименованиеПолное есть. С конфой играться нет возможности, так как в ней уже ведеться учет. Может еще какие нибудь мысли есть?
(55) savvato, попробуйте сравнивать допустимые типы, попробуйте функцию ЕстьNull или уберите null, разберитесь почему там написано такое условие. Или возьмите запрос из первой версии обработки и не парьтесь. Адаптация к конфигурации второй версии требует минимум профессиональных знаний, а Ваши вопросы показывают, что у Вас их нет и желания разобраться тоже нет. Сообщение об ошибке натыкать не потрудились? Консоль запросов открыть и фрагмент запроса в ней запустить не потрудились? Я не могу сейчас заниматься с розницей. Писать в эту тему такие вопросы пожалуйста больше не нужно, задавайте их лучше в форумах по программированию, ато я буду ставить за них минусы.
Коллеги, подытожу: не связывайтесь с битриксоидами-самопальщиками. В моём случае всё кончилось большими удивлёнными глазами, когда я сообщил, что вообще-то ни в одном стандарте ОЭИ, в т.ч. CML, нет таких тегов, как BolshayaKartinka, и что телепатически угадать наличие подобных тегов в своей выгрузке я не сумел не потому, что полный ламер. И ещё позабавил постоянный рефрен «Ну типовая 1С ведь всё выгружает!». Ужосъ.
1. Файл cml не загружается, т.к. в конце файла записаны какие-то «левые» символы. Поэтому у 14 forever-lilya выходила ошибка.
2.При редактировании в блокноте теряется кодировка UTF-8, надо убирать эти символы в другом редакторе, в Word получается. (Это для тех, кто захочет исправить. А то Вы будете злиться и нормально не объясните.)
3. Обработка под именем «Космачев» в рознице что-то формирует, по крайней мере ошибка не вылетает. Могли бы и ответить (55) savvato,
Судя по комментам — одна головная боль с этой обработкой…