Загрузка прайса с Nix #283


#0 by MaxMaster
Господа, подскажите или поделитесь, как загружать (написать загрузку) прайса с Nix.ru, так чтобы он делился по группам, например, МОниторы, в ней группы по производителям, а вних уже перечисления, товаров. Спасибо
#1 by Волшебник
Надо выяснить, предоставляют ли они данные в каком-либо формате, кроме HTML, например, XML, txt, Excel и т.д. Если да, то лучше работать с этим файлом. Вариант с XML удобнее всего. Насколько я выяснил, здесь можно скачать прайс-лист в zip-файле: (250К). Это файл Excel, где есть общий список товаров, распределенных по группам.
#2 by MaxMaster
Я понимаю, но как это правильно загрузить, чтобы они группами и остались?
#3 by skunk
Ты сказал бы в каком плане поделиться. А то не понятно куда загружать. Что не можешь загрузить. С Excel не знаешь как работать на 1С. Или как текстовый анализатор написать, чтоб отделял производителя от группы.
#4 by skunk
Если первое то, что в этом духе: //******************************************* Процедура Загрузить    Т.НоваяКолонка("Группа", "Строка");    Т.НоваяКолонка("Код", "Число");    Т.НоваяКолонка("Товар", "Строка");    Т.НоваяКолонка("Розница", "Число");    Т.НоваяКолонка("Опт", "Число");    Т.НоваяКолонка("Дилер", "Число");    Прайс = СоздатьОбъект("Excel.Application");    Прайс.Workbooks.Open(ПолноеИмяФайла);    Лист1 = Прайс.Worksheets;    х = 8;    Грузить = "Да";    Пока Грузить = "Да" Цикл        Значение = СокрЛП(Лист1.Cells(х, 1).Value);        Если Значение = "" Тогда            Прервать;        КонецЕсли;        Товар = СокрЛП(Лист1.Cells(х, 2).Value);        Если Товар = "" Тогда            НоваяГруппа = Значение;        Иначе            Т.НоваяСтрока;            Т.Группа = НоваяГруппа;            Т.Код = Число(Значение);            Т.Товар = Товар;            Т.Розница = Число(Лист1.Cells(х, 4).Value);            Т.Опт = Число(Лист1.Cells(х, 5).Value);            Т.Дилер = Число(Лист1.Cells(х, 6).Value);        КонецЕсли;        х = х + 1;        Состояние("Обработка группы: " + Строка(НоваяГруппа));    КонецЦикла; КонецПроцедуры
#5 by skunk
Для второго поболее //******************************************* Перем ИмяФайла, ПутьДоФайла, ПолноеИмяФайла; Перем Производитель, Мусор; //******************************************* Процедура ФайлДляЗагрузки    Если (ФС.ВыбратьФайл(0, ИмяФайла, ПутьДоФайла, "Выберите файл", "Файлы Excel (*.xls)|*.xls",,) = 1) Тогда        ПолноеИмяФайла = ПутьДоФайла + ИмяФайла;        Форма.кнПросмотр.Доступность;        Форма.кнЗагрузить.Доступность;    КонецЕсли;   КонецПроцедуры //******************************************* Процедура ПосмотретьФайл    Если (ФС.СуществуетФайл(ПолноеИмяФайла) = 0) Тогда        Предупреждение("Файл: " + ПолноеИмяФайла + " не найден!");        Форма.кнПросмотр.Доступность;        Форма.кнЗагрузить.Доступность;        Возврат;                КонецЕсли;    Прайс = СоздатьОбъект("Excel.Application");    Прайс.Workbooks.Open(ПолноеИмяФайла);    Прайс.Visible = 1; КонецПроцедуры //******************************************* Функция РазложитьСтр(Параметр)    Результат = СоздатьОбъект("СписокЗначений");    СтрПараметр = Параметр;    Пока Найти(СтрПараметр, " ") > 0 Цикл;        Стр = Лев(СтрПараметр, Найти(СтрПараметр, " "));        СтрПараметр = СтрЗаменить(СтрПараметр, Стр, "");        Результат.ДобавитьЗначение(СокрЛП(Стр));    КонецЦикла;    Результат.ДобавитьЗначение(СтрПараметр);    Возврат Результат; КонецФункции //******************************************* Функция НоваяГруппа(Параметр)    Результат = СоздатьОбъект("СписокЗначений");    НоваяГруппа = "";    НоваяФирма = "";    СтрПараметр = Параметр;    Ответ = РазложитьСтр(СтрПараметр);    Размер = Ответ.РазмерСписка;    Если Размер = 1 Тогда        НоваяГруппа = Ответ.ПолучитьЗначение;    Иначе        Для х = 1 По Размер Цикл            Стр = Ответ.ПолучитьЗначение(х);            Позиция = Производитель.НайтиЗначение(ВРег(Стр));            Если Позиция = 0 Тогда                ПозицияВМусоре = Мусор.НайтиЗначение(ВРег(Стр));                Если ПозицияВМусоре = 0 Тогда                    НоваяГруппа = НоваяГруппа + Стр + " ";                КонецЕсли;            Иначе                НоваяФирма = Стр;                Представление = "";                Производитель.ПолучитьЗначение(Позиция, Представление);                Если Представление <> "" Тогда                    Если х < Размер Тогда                        Стр = Ответ.ПолучитьЗначение(х + 1);                        Если Стр = Представление Тогда                            х = х + 1;                            НоваяФирма = НоваяФирма + " " + Представление;                        КонецЕсли;                    КонецЕсли;                КонецЕсли;            КонецЕсли;        КонецЦикла;        НоваяГруппа = СокрЛП(НоваяГруппа);    КонецЕсли;    Результат.ДобавитьЗначение(НоваяГруппа);    Результат.ДобавитьЗначение(НоваяФирма);    Возврат Результат; КонецФункции //******************************************* Процедура Загрузить    Т.Очистить;    Т.НоваяКолонка("Группа",  "Строка", , , , 35);    Т.НоваяКолонка("Фирма",   "Строка", , , , 15);    Т.НоваяКолонка("Код",     "Число",  , , , 10);    Т.НоваяКолонка("Товар",   "Строка", , , , 60);    Т.НоваяКолонка("Розница", "Число",  , , , 10);    Т.НоваяКолонка("Опт",     "Число",  , , , 10);    Т.НоваяКолонка("Дилер",   "Число",  , , , 10);    Прайс = СоздатьОбъект("Excel.Application");    Прайс.Workbooks.Open(ПолноеИмяФайла);    Лист1 = Прайс.Worksheets;    х = 8;    Грузить = "Да";    Пока Грузить = "Да" Цикл        Значение = СокрЛП(Лист1.Cells(х, 1).Value);        Если Значение = "" Тогда            Прервать;        КонецЕсли;        Товар = СокрЛП(Лист1.Cells(х, 2).Value);        Если Товар = "" Тогда            Ответ = НоваяГруппа(Значение);            Группа = Ответ.ПолучитьЗначение;            Фирма = Ответ.ПолучитьЗначение;        Иначе            Т.НоваяСтрока;            Т.Группа = Группа;            Т.Фирма = Фирма;            Т.Код = Число(Значение);            Т.Товар = Товар;            Т.Розница = Окр(Число(Лист1.Cells(х, 4).Value), 2);            Т.Опт = Окр(Число(Лист1.Cells(х, 5).Value), 2);            Т.Дилер = Окр(Число(Лист1.Cells(х, 6).Value), 2);        КонецЕсли;        х = х + 1;        Состояние("Обработка группы: " + Строка(Группа));    КонецЦикла;    Прайс.Quit; КонецПроцедуры //******************************************* ИмяФайла = "*.XLS"; ПутьДоФайла = "C:"; ПолноеИмяФайла = ПутьДоФайла + ИмяФайла; Производитель = СоздатьОбъект("СписокЗначений"); Производитель.ДобавитьЗначение("3WARE"); Производитель.ДобавитьЗначение("3COM"); Производитель.ДобавитьЗначение("AMD"); Производитель.ДобавитьЗначение("ATI"); Производитель.ДобавитьЗначение("ATX"); Производитель.ДобавитьЗначение("APC"); Производитель.ДобавитьЗначение("ABIT"); Производитель.ДобавитьЗначение("ACER"); Производитель.ДобавитьЗначение("ADDA"); Производитель.ДобавитьЗначение("ACORP"); Производитель.ДобавитьЗначение("ALTEC", "Lansing"); Производитель.ДобавитьЗначение("AIPTEK"); Производитель.ДобавитьЗначение("ASROCK"); Производитель.ДобавитьЗначение("AUREAL"); Производитель.ДобавитьЗначение("ASUSTEK"); Производитель.ДобавитьЗначение("ADAPTEC"); Производитель.ДобавитьЗначение("A4-TECH"); Производитель.ДобавитьЗначение("ALCATEL"); Производитель.ДобавитьЗначение("ALBATRON"); Производитель.ДобавитьЗначение("BTC"); Производитель.ДобавитьЗначение("BENQ"); Производитель.ДобавитьЗначение("BROTHER"); Производитель.ДобавитьЗначение("BELINEA"); Производитель.ДобавитьЗначение("BRANDNAME"); Производитель.ДобавитьЗначение("CANON"); Производитель.ДобавитьЗначение("CISCO"); Производитель.ДобавитьЗначение("CASIO"); Производитель.ДобавитьЗначение("COMPAQ"); Производитель.ДобавитьЗначение("CHERRY"); Производитель.ДобавитьЗначение("COMPEX"); Производитель.ДобавитьЗначение("CODEGEN"); Производитель.ДобавитьЗначение("CREATIVE"); Производитель.ДобавитьЗначение("CHAINTECH"); Производитель.ДобавитьЗначение("CHIEFTEC/SUPER", "Micro"); Производитель.ДобавитьЗначение("DELL"); Производитель.ДобавитьЗначение("D-LINK"); Производитель.ДобавитьЗначение("DEFENDER"); Производитель.ДобавитьЗначение("EPOX"); Производитель.ДобавитьЗначение("ELINE"); Производитель.ДобавитьЗначение("EPSON"); Производитель.ДобавитьЗначение("ELPINA"); Производитель.ДобавитьЗначение("ELITEGROUP"); Производитель.ДобавитьЗначение("FUJITSU"); Производитель.ДобавитьЗначение("FUJIFILM"); Производитель.ДобавитьЗначение("FUJITSU-SIEMENS"); Производитель.ДобавитьЗначение("HP"); Производитель.ДобавитьЗначение("HIGHPOINT"); Производитель.ДобавитьЗначение("HYUNDAI(HYNIX)"); Производитель.ДобавитьЗначение("IRU"); Производитель.ДобавитьЗначение("INWIN"); Производитель.ДобавитьЗначение("INTEL"); Производитель.ДобавитьЗначение("IIYAMA"); Производитель.ДобавитьЗначение("IBM/HITACHI"); Производитель.ДобавитьЗначение("LG"); Производитель.ДобавитьЗначение("LSI", "Logic"); Производитель.ДобавитьЗначение("LOMOND"); Производитель.ДобавитьЗначение("LEADTEK"); Производитель.ДобавитьЗначение("LEXMARK"); Производитель.ДобавитьЗначение("LITE-ON"); Производитель.ДобавитьЗначение("LOGITECH"); Производитель.ДобавитьЗначение("RL", "(Rolsen)"); Производитель.ДобавитьЗначение("ROLSEN"); Производитель.ДобавитьЗначение("ROVERBOOK"); Производитель.ДобавитьЗначение("ROVERSHOT"); Производитель.ДобавитьЗначение("ROVERSCAN"); Производитель.ДобавитьЗначение("SVEN"); Производитель.ДобавитьЗначение("SONY", "Ericsson"); Производитель.ДобавитьЗначение("SOLTEK"); Производитель.ДобавитьЗначение("SEAGATE"); Производитель.ДобавитьЗначение("SURECOM"); Производитель.ДобавитьЗначение("SAMSUNG"); Производитель.ДобавитьЗначение("SIEMENS"); Производитель.ДобавитьЗначение("SVEN/F&D"); Производитель.ДобавитьЗначение("SAPPHIRE"); Производитель.ДобавитьЗначение("TEAC"); Производитель.ДобавитьЗначение("TITAN"); Производитель.ДобавитьЗначение("TEKRAM"); Производитель.ДобавитьЗначение("TURTLE", "Beach"); Производитель.ДобавитьЗначение("TOSHIBA"); Производитель.ДобавитьЗначение("TOSHIBA"); Производитель.ДобавитьЗначение("TRENDNET"); Производитель.ДобавитьЗначение("TOPDEVICE"); Производитель.ДобавитьЗначение("THERMALTAKE"); Производитель.ДобавитьЗначение("GENIUS"); Производитель.ДобавитьЗначение("GLACIAL", "Tech"); Производитель.ДобавитьЗначение("GIGABYTE"); Производитель.ДобавитьЗначение("MAXON"); Производитель.ДобавитьЗначение("MAXTOR"); Производитель.ДобавитьЗначение("MATROX"); Производитель.ДобавитьЗначение("MUSTEK"); Производитель.ДобавитьЗначение("MITSUMI"); Производитель.ДобавитьЗначение("MULTICO"); Производитель.ДобавитьЗначение("MOTOROLA"); Производитель.ДобавитьЗначение("MICROLAB"); Производитель.ДобавитьЗначение("MICROSOFT"); Производитель.ДобавитьЗначение("MICRO-STAR"); Производитель.ДобавитьЗначение("MITSUBISHI"); Производитель.ДобавитьЗначение("NEC"); Производитель.ДобавитьЗначение("NOKIA"); Производитель.ДобавитьЗначение("NIKON"); Производитель.ДобавитьЗначение("NONAME"); Производитель.ДобавитьЗначение("NVIDIA"); Производитель.ДобавитьЗначение("WD"); Производитель.ДобавитьЗначение("PLUS"); Производитель.ДобавитьЗначение("PENTAX"); Производитель.ДобавитьЗначение("PROMISE"); Производитель.ДобавитьЗначение("PHILIPS"); Производитель.ДобавитьЗначение("POWERCOM"); Производитель.ДобавитьЗначение("POWERMAN"); Производитель.ДобавитьЗначение("PANASONIC"); Производитель.ДобавитьЗначение("JAZZ-SPEAKERS"); Производитель.ДобавитьЗначение("VIEWSONIC"); Производитель.ДобавитьЗначение("ZYXEL"); Производитель.ДобавитьЗначение("XEROX"); Производитель.ДобавитьЗначение("OKI"); Производитель.ДобавитьЗначение("OLYMPUS"); Производитель.ДобавитьЗначение("KONICA/MINOLTA"); Производитель.ДобавитьЗначение("ДИАЛОГ"); Производитель.ДобавитьЗначение("ПРОЧИЕ"); Производитель.ДобавитьЗначение("РАЗНОЕ"); Мусор = СоздатьОбъект("СписокЗначений"); Мусор.ДобавитьЗначение("ДЛЯ"); Мусор.ДобавитьЗначение("EUR"); Мусор.ДобавитьЗначение("USA"); Мусор.ДобавитьЗначение("ПРОЧЕЕ"); Мусор.ДобавитьЗначение("-"); Мусор.ДобавитьЗначение("/");
#6 by MaxMaster
Ребята спасибо, мне кто-то кинул обработку, подгрузку сделала.
#7 by skunk
Мыло смотреть надо.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям