Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.97.9.171] |
|
Сообщ.
#1
,
|
|
|
Коллеги, появилась выгружать в Битрикс каталог товаров. Конфигурация написана с нуля.
С чего начать и куда копать? |
Сообщ.
#2
,
|
|
|
Ну тут есть пара вариантов:
1. Выдернуть типовую выгрузку из УТ11 (сложная монструозная обработка). 2. Попробовать сделать самому попроще. Если сильно надо, у меня есть примерчик под самописную конфигурацию. |
Сообщ.
#3
,
|
|
|
Цитата evGenius @ Если сильно надо, у меня есть примерчик под самописную конфигурацию. Был бы весьма благодарен. Цитата evGenius @ Выдернуть типовую выгрузку из УТ11 (сложная монструозная обработка). Уже успел оценить масштабы... |
Сообщ.
#4
,
|
|
|
Тут часть была по-английски написана
Выгрузка идёт в csv-файл. Соответствие между номерами свойств и номенклатуры задается в админке Битрикса. Пример предельно простой, только тут прикол был придуман для универсальности со списком значений. Procedure FormMainActionsВыгрузить(Button) Если Товары.Count() = 0 Тогда Сообщить("Не заполнена таблица выгрузки!"); Возврат; КонецЕсли; СоответствиеКолонок = Новый СписокЗначений; СоответствиеКолонок.Add("Код", "IE_XML_ID"); СоответствиеКолонок.Add("Наименование", "IE_NAME"); СоответствиеКолонок.Add("", "IE_PREVIEW_TEXT"); СоответствиеКолонок.Add("", "IE_DETAIL_TEXT"); СоответствиеКолонок.Add("", "IP_PROP6"); СоответствиеКолонок.Add("", "IP_PROP43"); СоответствиеКолонок.Add("", "IP_PROP7"); СоответствиеКолонок.Add("", "IP_PROP8"); СоответствиеКолонок.Add("", "IP_PROP47"); СоответствиеКолонок.Add("", "IP_PROP9"); СоответствиеКолонок.Add("", "IP_PROP48"); СоответствиеКолонок.Add("Артикул", "IP_PROP10"); СоответствиеКолонок.Add("", "IP_PROP49"); СоответствиеКолонок.Add("", "IP_PROP11"); СоответствиеКолонок.Add("", "IP_PROP12"); СоответствиеКолонок.Add("", "IP_PROP50"); СоответствиеКолонок.Add("", "IP_PROP51"); СоответствиеКолонок.Add("", "IP_PROP16"); СоответствиеКолонок.Add("", "IP_PROP52"); СоответствиеКолонок.Add("", "IP_PROP17"); СоответствиеКолонок.Add("", "IP_PROP62"); СоответствиеКолонок.Add("", "IP_PROP18"); СоответствиеКолонок.Add("", "IP_PROP63"); СоответствиеКолонок.Add("", "IP_PROP19"); СоответствиеКолонок.Add("", "IP_PROP64"); СоответствиеКолонок.Add("", "IP_PROP20"); СоответствиеКолонок.Add("", "IP_PROP21"); СоответствиеКолонок.Add("", "IP_PROP22"); СоответствиеКолонок.Add("", "IP_PROP23"); СоответствиеКолонок.Add("", "IP_PROP24"); СоответствиеКолонок.Add("", "IP_PROP25"); СоответствиеКолонок.Add("%0.00", "IP_PROP26"); СоответствиеКолонок.Add("", "IP_PROP56"); СоответствиеКолонок.Add("", "IP_PROP57"); СоответствиеКолонок.Add("", "IP_PROP18"); СоответствиеКолонок.Add("Родитель1", "IC_GROUP0"); СоответствиеКолонок.Add("Родитель2", "IC_GROUP1"); СоответствиеКолонок.Add("Родитель3", "IC_GROUP2"); СоответствиеКолонок.Add("Остаток", "CP_QUANTITY"); СоответствиеКолонок.Add("%0", "CP_WEIGHT"); СоответствиеКолонок.Add("%0", "CP_WIDTH"); СоответствиеКолонок.Add("%0", "CP_HEIGHT"); СоответствиеКолонок.Add("%0", "CP_LENGTH"); СоответствиеКолонок.Add("", "CV_QUANTITY_FROM"); СоответствиеКолонок.Add("", "CV_QUANTITY_TO"); СоответствиеКолонок.Add("Цена", "CV_PRICE_1"); СоответствиеКолонок.Add("КодВалюты", "CV_CURRENCY_1"); Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение); Диалог.Заголовок = "Сохранение файла CSV товаров"; Диалог.ПолноеИмяФайла = ""; Диалог.ПредварительныйПросмотр = Ложь; Диалог.Фильтр = "Файлы CSV (*.csv)|*.csv|"; Если Диалог.Выбрать() Тогда ИмяФайла = Диалог.ПолноеИмяФайла; Иначе Возврат; КонецЕсли; Текст = Новый ТекстовыйДокумент; ТекстСтроки = ""; Зпт2 = ""; Для Каждого ТекЗначение Из СоответствиеКолонок Цикл ТекстСтроки = ТекстСтроки + Зпт2 + СокрЛП(ТекЗначение.Presentation); Зпт2 = ";"; КонецЦикла; Текст.AddLine(ТекстСтроки); Для Каждого ТекСтрока Из Товары Цикл Если Не ТекСтрока.Товар Тогда Продолжить; КонецЕсли; ТекстСтроки = ""; Зпт2 = ""; Для Каждого ТекЗначение Из СоответствиеКолонок Цикл Если ТекЗначение.Value = "" Тогда ТекстЗначения = ""; ИначеЕсли Лев(ТекЗначение.Value, 1) = "%" Тогда ТекстЗначения = СокрЛП(Прав(ТекЗначение.Value, СтрДлина(ТекЗначение.Value)-1)); Иначе ТекстЗначения = СокрЛП(ТекСтрока[ТекЗначение.Value]); ТекстЗначения = СтрЗаменить(ТекстЗначения, Символы.НПП, ""); ТекстЗначения = СтрЗаменить(ТекстЗначения, Символы.ПС, " "); ТекстЗначения = СтрЗаменить(ТекстЗначения, """", """"""); ТекстЗначения = СтрЗаменить(ТекстЗначения, ";", " "); Если Найти(ТекстЗначения, ",") > 0 И Лев(ТекстЗначения, 1) <> """" Тогда ТекстЗначения = """" + ТекстЗначения + """"; КонецЕсли; КонецЕсли; ТекстСтроки = ТекстСтроки + Зпт2 + ТекстЗначения; Зпт2 = ";"; КонецЦикла; Текст.AddLine(ТекстСтроки); КонецЦикла; Текст.Записать(ИмяФайла, TextEncoding.UTF8, Символы.ПС); СоответствиеКолонок = Новый СписокЗначений; СоответствиеКолонок.Add("Код", "IE_XML_ID"); СоответствиеКолонок.Add("Наименование", "IE_NAME"); СоответствиеКолонок.Add("", "IE_PREVIEW_TEXT"); СоответствиеКолонок.Add("", "IE_DETAIL_TEXT"); СоответствиеКолонок.Add("КодВладельца", "IP_PROP27"); СоответствиеКолонок.Add("Длина", "IP_PROP45"); СоответствиеКолонок.Add("Цвет", "IP_PROP28"); СоответствиеКолонок.Add("Сорт", "IP_PROP46"); СоответствиеКолонок.Add("Размер", "IP_PROP29"); СоответствиеКолонок.Add("Высота", "IP_PROP53"); СоответствиеКолонок.Add("Толщина", "IP_PROP54"); СоответствиеКолонок.Add("Модель", "IP_PROP59"); СоответствиеКолонок.Add("ОткрываниеДвери", "IP_PROP61"); СоответствиеКолонок.Add("РазмерыКупели", "IP_PROP60"); СоответствиеКолонок.Add("Объем", "IP_PROP65"); СоответствиеКолонок.Add("Мощность", "IP_PROP66"); СоответствиеКолонок.Add("Материал", "IP_PROP67"); СоответствиеКолонок.Add("", "IP_PROP68"); СоответствиеКолонок.Add("Артикул", "IP_PROP55"); СоответствиеКолонок.Add("", "IC_GROUP0"); СоответствиеКолонок.Add("", "IC_GROUP1"); СоответствиеКолонок.Add("", "IC_GROUP2"); СоответствиеКолонок.Add("Остаток", "CP_QUANTITY"); СоответствиеКолонок.Add("%0", "CP_WEIGHT"); СоответствиеКолонок.Add("%0", "CP_WIDTH"); СоответствиеКолонок.Add("%0", "CP_HEIGHT"); СоответствиеКолонок.Add("%0", "CP_LENGTH"); СоответствиеКолонок.Add("", "CV_QUANTITY_FROM"); СоответствиеКолонок.Add("", "CV_QUANTITY_TO"); СоответствиеКолонок.Add("Цена", "CV_PRICE_1"); СоответствиеКолонок.Add("КодВалюты", "CV_CURRENCY_1"); Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение); Диалог.Заголовок = "Сохранение файла CSV товарных предложений"; Диалог.ПолноеИмяФайла = ""; Диалог.ПредварительныйПросмотр = Ложь; Диалог.Фильтр = "Файлы CSV (*.csv)|*.csv|"; Если Диалог.Выбрать() Тогда ИмяФайла = Диалог.ПолноеИмяФайла; Иначе Возврат; КонецЕсли; Текст = Новый ТекстовыйДокумент; ТекстСтроки = ""; Зпт2 = ""; Для Каждого ТекЗначение Из СоответствиеКолонок Цикл ТекстСтроки = ТекстСтроки + Зпт2 + СокрЛП(ТекЗначение.Presentation); Зпт2 = ";"; КонецЦикла; Текст.AddLine(ТекстСтроки); Для Каждого ТекСтрока Из Товары Цикл Если Не ТекСтрока.ТоварноеПредложение Тогда Продолжить; КонецЕсли; ТекстСтроки = ""; Зпт2 = ""; Для Каждого ТекЗначение Из СоответствиеКолонок Цикл Если ТекЗначение.Value = "" Тогда ТекстЗначения = ""; ИначеЕсли Лев(ТекЗначение.Value, 1) = "%" Тогда ТекстЗначения = СокрЛП(Прав(ТекЗначение.Value, СтрДлина(ТекЗначение.Value)-1)); Иначе ТекстЗначения = СокрЛП(ТекСтрока[ТекЗначение.Value]); ТекстЗначения = СтрЗаменить(ТекстЗначения, Символы.НПП, ""); ТекстЗначения = СтрЗаменить(ТекстЗначения, Символы.ПС, " "); ТекстЗначения = СтрЗаменить(ТекстЗначения, """", """"""); ТекстЗначения = СтрЗаменить(ТекстЗначения, ";", " "); Если Найти(ТекстЗначения, ",") > 0 И Лев(ТекстЗначения, 1) <> """" Тогда ТекстЗначения = """" + ТекстЗначения + """"; КонецЕсли; КонецЕсли; ТекстСтроки = ТекстСтроки + Зпт2 + ТекстЗначения; Зпт2 = ";"; КонецЦикла; Текст.AddLine(ТекстСтроки); КонецЦикла; Текст.Записать(ИмяФайла, TextEncoding.UTF8, Символы.ПС); EndProcedure Добавлено А, и еще, тут в одной таблице смешаны товары и товарные предложения. |
Сообщ.
#5
,
|
|
|
evGenius, а ты делал передачу файла с выгрузкой в Битрикс?
|
Сообщ.
#6
,
|
|
|
Нет, этого я не делал.
|