Имя: Пароль:
IT
 
Загрузка прайса с Nix
0 MaxMaster
 
02.12.03
17:47
Господа, подскажите или поделитесь, как загружать (написать загрузку) прайса с Nix.ru, так чтобы он делился по группам, например, МОниторы, в ней группы по производителям, а вних уже перечисления, товаров.

Спасибо
1 Волшебник
 
03.12.03
00:20
Надо выяснить, предоставляют ли они данные в каком-либо формате, кроме HTML, например, XML, txt, Excel и т.д. Если да, то лучше работать с этим файлом. Вариант с XML удобнее всего.

Насколько я выяснил, здесь можно скачать прайс-лист в zip-файле: http://nix.ru/price/Nix3.ZIP (250К). Это файл Excel, где есть общий список товаров, распределенных по группам.
2 MaxMaster
 
06.12.03
17:51
Я понимаю, но как это правильно загрузить, чтобы они группами и остались?
3 skunk
 
06.12.03
21:01
Ты сказал бы в каком плане поделиться. А то не понятно куда загружать. Что не можешь загрузить. С Excel не знаешь как работать на 1С. Или как текстовый анализатор написать, чтоб отделял производителя от группы.
4 skunk
 
06.12.03
21:14
Если первое то, что в этом духе:

//*******************************************
Процедура Загрузить()
   Т.НоваяКолонка("Группа", "Строка");
   Т.НоваяКолонка("Код", "Число");
   Т.НоваяКолонка("Товар", "Строка");
   Т.НоваяКолонка("Розница", "Число");
   Т.НоваяКолонка("Опт", "Число");
   Т.НоваяКолонка("Дилер", "Число");
   Прайс = СоздатьОбъект("Excel.Application");
   Прайс.Workbooks.Open(ПолноеИмяФайла);
   Лист1 = Прайс.Worksheets(1);
   х = 8;
   Грузить = "Да";
   Пока Грузить = "Да" Цикл
       Значение = СокрЛП(Лист1.Cells(х, 1).Value);
       Если Значение = "" Тогда
           Прервать;
       КонецЕсли;
       Товар = СокрЛП(Лист1.Cells(х, 2).Value);
       Если Товар = "" Тогда
           НоваяГруппа = Значение;
       Иначе
           Т.НоваяСтрока();
           Т.Группа = НоваяГруппа;
           Т.Код = Число(Значение);
           Т.Товар = Товар;
           Т.Розница = Число(Лист1.Cells(х, 4).Value);
           Т.Опт = Число(Лист1.Cells(х, 5).Value);
           Т.Дилер = Число(Лист1.Cells(х, 6).Value);
       КонецЕсли;
       х = х + 1;
       Состояние("Обработка группы: " + Строка(НоваяГруппа));
   КонецЦикла;
КонецПроцедуры
5 skunk
 
06.12.03
23:52
Для второго поболее

//*******************************************
Перем ИмяФайла, ПутьДоФайла, ПолноеИмяФайла;
Перем Производитель, Мусор;

//*******************************************
Процедура ФайлДляЗагрузки()
   Если (ФС.ВыбратьФайл(0, ИмяФайла, ПутьДоФайла, "Выберите файл", "Файлы Excel (*.xls)|*.xls",,) = 1) Тогда
       ПолноеИмяФайла = ПутьДоФайла + ИмяФайла;
       Форма.кнПросмотр.Доступность(1);
       Форма.кнЗагрузить.Доступность(1);
   КонецЕсли;  
КонецПроцедуры

//*******************************************
Процедура ПосмотретьФайл()
   Если (ФС.СуществуетФайл(ПолноеИмяФайла) = 0) Тогда
       Предупреждение("Файл: " + ПолноеИмяФайла + " не найден!");
       Форма.кнПросмотр.Доступность(0);
       Форма.кнЗагрузить.Доступность(0);
       Возврат;            
   КонецЕсли;
   Прайс = СоздатьОбъект("Excel.Application");
   Прайс.Workbooks.Open(ПолноеИмяФайла);
   Прайс.Visible = 1;
КонецПроцедуры

//*******************************************
Функция РазложитьСтр(Параметр)
   Результат = СоздатьОбъект("СписокЗначений");
   СтрПараметр = Параметр;
   Пока Найти(СтрПараметр, " ") > 0 Цикл;
       Стр = Лев(СтрПараметр, Найти(СтрПараметр, " "));
       СтрПараметр = СтрЗаменить(СтрПараметр, Стр, "");
       Результат.ДобавитьЗначение(СокрЛП(Стр));
   КонецЦикла;
   Результат.ДобавитьЗначение(СтрПараметр);
   Возврат Результат;
КонецФункции

//*******************************************
Функция НоваяГруппа(Параметр)
   Результат = СоздатьОбъект("СписокЗначений");
   НоваяГруппа = "";
   НоваяФирма = "";
   СтрПараметр = Параметр;
   Ответ = РазложитьСтр(СтрПараметр);
   Размер = Ответ.РазмерСписка();
   Если Размер = 1 Тогда
       НоваяГруппа = Ответ.ПолучитьЗначение(1);
   Иначе
       Для х = 1 По Размер Цикл
           Стр = Ответ.ПолучитьЗначение(х);
           Позиция = Производитель.НайтиЗначение(ВРег(Стр));
           Если Позиция = 0 Тогда
               ПозицияВМусоре = Мусор.НайтиЗначение(ВРег(Стр));
               Если ПозицияВМусоре = 0 Тогда
                   НоваяГруппа = НоваяГруппа + Стр + " ";
               КонецЕсли;
           Иначе
               НоваяФирма = Стр;
               Представление = "";
               Производитель.ПолучитьЗначение(Позиция, Представление);
               Если Представление <> "" Тогда
                   Если х < Размер Тогда
                       Стр = Ответ.ПолучитьЗначение(х + 1);
                       Если Стр = Представление Тогда
                           х = х + 1;
                           НоваяФирма = НоваяФирма + " " + Представление;
                       КонецЕсли;
                   КонецЕсли;
               КонецЕсли;
           КонецЕсли;
       КонецЦикла;
       НоваяГруппа = СокрЛП(НоваяГруппа);
   КонецЕсли;
   Результат.ДобавитьЗначение(НоваяГруппа);
   Результат.ДобавитьЗначение(НоваяФирма);
   Возврат Результат;
КонецФункции

//*******************************************
Процедура Загрузить()
   Т.Очистить();
   Т.НоваяКолонка("Группа",  "Строка", , , , 35);
   Т.НоваяКолонка("Фирма",   "Строка", , , , 15);
   Т.НоваяКолонка("Код",     "Число",  , , , 10);
   Т.НоваяКолонка("Товар",   "Строка", , , , 60);
   Т.НоваяКолонка("Розница", "Число",  , , , 10);
   Т.НоваяКолонка("Опт",     "Число",  , , , 10);
   Т.НоваяКолонка("Дилер",   "Число",  , , , 10);
   Прайс = СоздатьОбъект("Excel.Application");
   Прайс.Workbooks.Open(ПолноеИмяФайла);
   Лист1 = Прайс.Worksheets(1);
   х = 8;
   Грузить = "Да";
   Пока Грузить = "Да" Цикл
       Значение = СокрЛП(Лист1.Cells(х, 1).Value);
       Если Значение = "" Тогда
           Прервать;
       КонецЕсли;
       Товар = СокрЛП(Лист1.Cells(х, 2).Value);
       Если Товар = "" Тогда
           Ответ = НоваяГруппа(Значение);
           Группа = Ответ.ПолучитьЗначение(1);
           Фирма = Ответ.ПолучитьЗначение(2);
       Иначе
           Т.НоваяСтрока();
           Т.Группа = Группа;
           Т.Фирма = Фирма;
           Т.Код = Число(Значение);
           Т.Товар = Товар;
           Т.Розница = Окр(Число(Лист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 MaxMaster
 
08.12.03
17:52
Ребята спасибо, мне кто-то кинул обработку, подгрузку сделала.
7 skunk
 
08.12.03
18:36
Мыло смотреть надо.
Независимо от того, куда вы едете — это в гору и против ветра!