На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела:

  • Перед тем, как задать вопрос, желательно почитать документацию и воспользоваться поиском.
  • Когда задаёте вопрос, то обязательно указывайте платформу (7.7, 8.0, 8.1, 8.2, etc), причем желательно в заголовке. Если речь идёт о типовой конфигурации, то указывайте её название и релиз. Текущие версии можно посмотреть здесь.
  • Ещё раз напоминаем о необходимости соблюдать не только правила, но и законы. Уважайте авторские права.

Высказать своё мнение о модераторах раздела можно здесь: evGenius
  
> Интеграция с Битрикс. , Самописная конфигурация.
    Коллеги, появилась выгружать в Битрикс каталог товаров. Конфигурация написана с нуля.
    С чего начать и куда копать?
      Ну тут есть пара вариантов:
      1. Выдернуть типовую выгрузку из УТ11 (сложная монструозная обработка).
      2. Попробовать сделать самому попроще. Если сильно надо, у меня есть примерчик под самописную конфигурацию.
        Цитата evGenius @
        Если сильно надо, у меня есть примерчик под самописную конфигурацию.

        Был бы весьма благодарен.

        Цитата evGenius @
        Выдернуть типовую выгрузку из УТ11 (сложная монструозная обработка).

        Уже успел оценить масштабы...
          Тут часть была по-английски написана :D
          Выгрузка идёт в csv-файл. Соответствие между номерами свойств и номенклатуры задается в админке Битрикса. Пример предельно простой, только тут прикол был придуман для универсальности со списком значений.

          ExpandedWrap disabled
            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


          Добавлено
          А, и еще, тут в одной таблице смешаны товары и товарные предложения. ;)
            evGenius, а ты делал передачу файла с выгрузкой в Битрикс?
              Нет, этого я не делал.
              0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
              0 пользователей:


              Рейтинг@Mail.ru
              [ Script execution time: 0,0275 ]   [ 15 queries used ]   [ Generated: 28.03.24, 19:45 GMT ]