База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как выгрузить номенклатуру в YML файл из УТ 11.5 с помощью кода?
- В этой теме 1 ответ, 2 участника, последнее обновление 27 минут назад сделано
Odin — Одинэсник.
-
АвторСообщения
-
-
20 июля 2026 в 12:11 #38185
/b УТ 11.5 дай код выгрузки номенклатуры в YML файл
-
20 июля 2026 в 12:11 #38186
Для выгрузки номенклатуры из УТ 11.5 в YML (Yandex Market Language) файл можно использовать следующий пример кода на встроенном языке 1С. Код формирует XML в формате YML и записывает его в файл.
1С (Код)123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384Процедура ВыгрузитьНоменклатуруВYML(ИмяФайла)// Создаем XML-документДокументXML = Новый XMLДокумент;Корень = ДокументXML.ДобавитьУзел("yml_catalog");Корень.УстановитьАтрибут("date", Формат(ТекущаяДата(), "ДФ=yyyy-MM-dd HH:mm"));Магазин = Корень.ДобавитьУзел("shop");// Заполняем информацию о магазине (пример)Магазин.ДобавитьУзел("name").Текст = "Мой магазин";Магазин.ДобавитьУзел("company").Текст = "ООО Ромашка";Магазин.ДобавитьУзел("url").Текст = "https://www.moy-magazin.ru";// Категории (если нужны)Категории = Магазин.ДобавитьУзел("categories");// Получаем категории номенклатурыЗапросКатегорий = Новый Запрос;ЗапросКатегорий.Текст =|ВЫБРАТЬ| НоменклатураКатегории.Ссылка КАК Ссылка,| НоменклатураКатегории.Наименование КАК Наименование,| НоменклатураКатегории.Родитель КАК Родитель|ИЗ| Справочник.Номенклатура КАК НоменклатураКатегории|ГДЕ| НоменклатураКатегории.ЭтоГруппа = ИСТИНА|УПОРЯДОЧИТЬ ПО| НоменклатураКатегории.Родитель,| НоменклатураКатегории.Наименование;РезультатКатегорий = ЗапросКатегорий.Выполнить().Выбрать();Пока РезультатКатегорий.Следующий() ЦиклКатегория = Категории.ДобавитьУзел("category");Категория.УстановитьАтрибут("id", РезультатКатегорий.Ссылка);Если ЗначениеЗаполнено(РезультатКатегорий.Родитель) ТогдаКатегория.УстановитьАтрибут("parentId", РезультатКатегорий.Родитель);КонецЕсли;Категория.Текст = РезультатКатегорий.Наименование;КонецЦикла;// ТоварыТовары = Магазин.ДобавитьУзел("offers");// Запрос номенклатуры (товаров)ЗапросТоваров = Новый Запрос;ЗапросТоваров.Текст =|ВЫБРАТЬ| Номенклатура.Ссылка КАК Ссылка,| Номенклатура.Наименование КАК Наименование,| Номенклатура.Код КАК Код,| Номенклатура.Цена КАК Цена,| Номенклатура.Родитель КАК Категория|ИЗ| Справочник.Номенклатура КАК Номенклатура|ГДЕ| Номенклатура.ЭтоГруппа = ЛОЖЬ|УПОРЯДОЧИТЬ ПО| Номенклатура.Наименование;РезультатТоваров = ЗапросТоваров.Выполнить().Выбрать();Пока РезультатТоваров.Следующий() ЦиклТовар = Товары.ДобавитьУзел("offer");Товар.УстановитьАтрибут("id", РезультатТоваров.Ссылка);Товар.УстановитьАтрибут("available", "true"); // Можно добавить логику наличияТовар.ДобавитьУзел("url").Текст = "https://www.moy-magazin.ru/product/" + Формат(РезультатТоваров.Ссылка, "ХХХХХХХХ");Товар.ДобавитьУзел("price").Текст = Формат(РезультатТоваров.Цена, "ЧЦ=2; ЧД=.");Товар.ДобавитьУзел("currencyId").Текст = "RUR";Товар.ДобавитьУзел("categoryId").Текст = РезультатТоваров.Категория;Товар.ДобавитьУзел("name").Текст = РезультатТоваров.Наименование;// Можно добавить описание, картинки и другие теги YMLКонецЦикла;// Записываем XML в файлПоток = Новый Файл(ИмяФайла);Поток.Записать(ДокументXML.ПолучитьСтроку(), КодировкаТекста.UTF8);Поток.Закрыть();КонецПроцедурыКак использовать:
1С (Код)1ВыгрузитьНоменклатуруВYML("C:Tempyml.xml");—
Пояснения:
— В примере выгружаются только справочник Номенклатура (группы и элементы).
— Для групп создается раздел «categories», для товаров — «offers».
— В поле «id» используется ссылка на элемент справочника (можно заменить на Код или другой уникальный идентификатор).
— В поле «price» и «url» нужно подставить реальные данные из вашей базы.
— Можно расширить выгрузку, добавив описание, картинки, наличие, параметры и т.д.Если нужна более точная выгрузка с учетом характеристик, цен, остатков — нужно доработать запросы и логику.
Рекомендую посмотреть примеры и описание формата YML на официальном сайте Яндекс.Маркета:
https://yandex.ru/support/market/partner/help/yml.html
-
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.