#1 07/03/2008 13:27

offchar
Сведущий
Откуда: Владикавказ
Зарегистрирован: 20/02/2008
Сообщений: 92
Вебсайт

Добавление информации из файлов .CSV формата.

Дано - Заказчик:оффлайн магазин компьютерной техники. Делаем интернет-магазин.

Задача - интегрировать интернет-магазин с 1С Бухгалтерией. Сделать так, чтобы администратору магазина (пользователю со стороны Заказчика) было удобно синхронизировать оффлайн и онлайн магазины - добавлять большое количество новой продукции, менять статус закончившихся товаров. В прайсе заказчика около 2000 наименований, сделить за актуальностью информации только средствами админки проблематично.

Подготовка - выгружен прайс из 1С (в формат MS-Excel) и сохранен в формат .CSV

Вопрос - как "запихать" .csv файл в систему? Ссылок на это в админке я не нашел. Как сделать так, чтобы пользователю достаточно было только заменить .csv? (То есть как правильно организовать структуру .csv файлов если их несколько? по типам товара? по производителю?)

Собираюсь почитать про это больше, если есть рекомендации или подсказки - с удовольствием почитаю.

Неактивен

 

#2 07/03/2008 15:42

mario
Сведущий
Зарегистрирован: 04/03/2008
Сообщений: 133

Re: Добавление информации из файлов .CSV формата.

Я бы написал просто скрипт на php, который будет брать csv-файл в определенной папке сайта или скачивать его с определенного адреса, обрабатывать этот файл и обновлять базу магазина. И настроил бы запуск этого скрипта через cron на сервере, например, 1 раз в 30 минут.
Насчет структуры csv-файла: главное, чтобы было соответствие между кодом продукта (product_code) в БД магазина и кодом продукта в 1С. Тут или добавлять новое поле в БД магазина (например, в таблицу shop_Products добавить поле 1с_product_code), или настраивать соответствующим образом 1С, чтобы в csv-файле один из параметров был кодом товара и соответствовал бы product_code.

Т.е. пользователю нужно просто закачать файл в определенную папку магазина. Может и 1с можно настроить, чтобы она сама закачивала файл через определенный промежуток времени, я не знаю, с 1с не знаком.

Отредактированно mario (07/03/2008 15:46)

Неактивен

 

#3 08/03/2008 13:48

Pavka
Administrator
Откуда: Киев
Зарегистрирован: 10/12/2007
Сообщений: 21
Вебсайт

Re: Добавление информации из файлов .CSV формата.

offchar написал:

Дано - Заказчик:оффлайн магазин компьютерной техники. Делаем интернет-магазин.

Задача - интегрировать интернет-магазин с 1С Бухгалтерией. Сделать так, чтобы администратору магазина (пользователю со стороны Заказчика) было удобно синхронизировать оффлайн и онлайн магазины - добавлять большое количество новой продукции, менять статус закончившихся товаров. В прайсе заказчика около 2000 наименований, сделить за актуальностью информации только средствами админки проблематично.

Подготовка - выгружен прайс из 1С (в формат MS-Excel) и сохранен в формат .CSV

Вопрос - как "запихать" .csv файл в систему? Ссылок на это в админке я не нашел. Как сделать так, чтобы пользователю достаточно было только заменить .csv? (То есть как правильно организовать структуру .csv файлов если их несколько? по типам товара? по производителю?)

Собираюсь почитать про это больше, если есть рекомендации или подсказки - с удовольствием почитаю.

есть специальный компонент
core\modules\shop\components\PriceLoader.class.php
он предназначен для заливки данных из Excel
но через него можно только обновлять цены и количество имеющегося списка товаров, добавлять новые позиции - нельзя
единственный тонкий момент  - он использует сторонюю библиотеку excel_reader

я ее выложу отдельно куда то

Для того чтобы заливать полностью весь список товаров... надо думать что то другое
и боюсь это не совсем просто sad

Неактивен

 

#4 08/03/2008 15:04

offchar
Сведущий
Откуда: Владикавказ
Зарегистрирован: 20/02/2008
Сообщений: 92
Вебсайт

Re: Добавление информации из файлов .CSV формата.

Паш, а если я деньгу из них достану - сколько может стоить разработка такого компонента? Можно в асю.

Отредактированно offchar (08/03/2008 15:05)

Неактивен

 

#5 08/03/2008 19:17

offchar
Сведущий
Откуда: Владикавказ
Зарегистрирован: 20/02/2008
Сообщений: 92
Вебсайт

Re: Добавление информации из файлов .CSV формата.

Так, spreadsheet_excel_reader я нашел, поставил. Сделал страницу с шаблоном PriceLoader.content.xml.
Ругается, что файл который я пытаюсь загрузить "is not readable".

В связи с тем неплохо было бы понять как надо составлять .csv файл, чтобы он таки был readable))

Со вчера ничего не изменилось, очень нужен компонент, который позволяет добавлять полный перечень товаров из одного или нескольких .csv (попутно раскидывая его по структуре магазина))). То есть насколько я понял нужно, чтобы обработчик брал информацию из csv или excel - формата и закидывал ее в определенные ячейки базы данных, что приведет соответственно к пополнению в магазине..

Если это возможно сделать - готов помочь финансово (цены чур не гнуть, опен сорс все же wink ) и написать в дальнейшем подробный мануал ))

Неактивен

 

#6 08/03/2008 19:35

offchar
Сведущий
Откуда: Владикавказ
Зарегистрирован: 20/02/2008
Сообщений: 92
Вебсайт

Re: Добавление информации из файлов .CSV формата.

Нашел забавную утилиту: clariosha.clarion.ru/excel.htm
По идее должна добавлять таблицы excel в sql БД. В демо-режиме не добавляет string значения.
Потестить не получилось, что-то недонастроил. Может у кого-нибудь получится..

Неактивен

 

#7 08/03/2008 23:44

Pavka
Administrator
Откуда: Киев
Зарегистрирован: 10/12/2007
Сообщений: 21
Вебсайт

Re: Добавление информации из файлов .CSV формата.

offchar написал:

Так, spreadsheet_excel_reader я нашел, поставил. Сделал страницу с шаблоном PriceLoader.content.xml.
Ругается, что файл который я пытаюсь загрузить "is not readable".

В связи с тем неплохо было бы понять как надо составлять .csv файл, чтобы он таки был readable))

Со вчера ничего не изменилось, очень нужен компонент, который позволяет добавлять полный перечень товаров из одного или нескольких .csv (попутно раскидывая его по структуре магазина))). То есть насколько я понял нужно, чтобы обработчик брал информацию из csv или excel - формата и закидывал ее в определенные ячейки базы данных, что приведет соответственно к пополнению в магазине..

Если это возможно сделать - готов помочь финансово (цены чур не гнуть, опен сорс все же wink ) и написать в дальнейшем подробный мануал ))

по поводу написать - сразу скажу что нет, из наших никто не возьмется - работы валом
по поводу is_not_readable - ну да бог с ним тебе ж все равно другая ф-ность нужна
а priceLoader откровенно говоря -сыроват

по поводу компонента, всем чем могу помочь - подсказать направление как это делать...

Неактивен

 

#8 09/03/2008 03:19

offchar
Сведущий
Откуда: Владикавказ
Зарегистрирован: 20/02/2008
Сообщений: 92
Вебсайт

Re: Добавление информации из файлов .CSV формата.

Безумно жаль, что не получится. Написал Mario в почту, может что и выйдет. Если не выйдет, буду дальше искать человека.. Думаю коллективным разумом решим.

Паш, давай направление) Очень прошу, чем подробнее, тем лучше)

Отредактированно offchar (09/03/2008 03:22)

Неактивен

 

#9 09/03/2008 05:35

offchar
Сведущий
Откуда: Владикавказ
Зарегистрирован: 20/02/2008
Сообщений: 92
Вебсайт

Re: Добавление информации из файлов .CSV формата.

Так, истина где-то рядом.

Ребят, дайте описание структуры базы данных, касаемо магазина. Меня интересуют поля, формирующие каталог.
Как выгружать в БД я придумал, осталось найти поля в которые выгружать. И будет совсем здорово если кто-нибудь опишет как создаются новые параметры (вне админки) товара.

Вообщем мне интересно какие поля в БД (применительно к магазину) за что отвечают.

Спасибо)

ps > ох не надо было лекции по базам данных прогуливать.. сейчас бы и запросы составлять умел.. )))))))

Отредактированно offchar (09/03/2008 05:38)

Неактивен

 

#10 09/03/2008 22:55

mario
Сведущий
Зарегистрирован: 04/03/2008
Сообщений: 133

Re: Добавление информации из файлов .CSV формата.

В твоем случае нужны две таблицы:

Первая таблица - это shop_Products. У нее следующие поля:
product_id - ИД продукта, внутренний параметр, в админке сайта не отображается.
smap_id - ссылается на таблицу share_sitemap. По этому параметру можно выяснить полный путь к разделу, в котором находится данный продукт, т.е. /shop/имя-раздела/имя-подраздела/.../
pt_id - ссылается на таблицу shop_producttypes. По этому параметру можно выяснить тип товара.
producer_id - ИД производителя, ссылается на таблицу shop_producers. По этому параметру можно выяснить производителя товара.
product_code - код продукта. Редактируется в админке магазина.
product_segment - Сегмент URI продукта
product_photo_img - ссылка на фотографию
product_thumb_img - ссылка на маленькую картинку
ps_id - ИД статуса продукта, ссылается на таблицу shop_productstatuses, можно узнать статус данного продукта.

Вторая таблица - shop_ProductExternalProperties:
product_code - код продукта
product_price - цена
product_count - количество на складе

curr_id - ИД валюты, в которой определена цена, ссылается на таблицу shop_currency.

Ну и некоторые таблицы в БД сайта оканчиваются на _translation - из названия понятно, что они содержат строковые значения (название продукта, описание....) на разных языках (русский, украинский, английский).

Ты когда наполнял свой инет-магазин продуктами - у тебя код продукта в инет-магазине такой же, как и в 1С? Если да, то для того, чтобы синхронизировать 1с с инет-магазином, нужен csv-файл всего из трех колонок - код продукта, цена, количество на складе. Ячейки БД, которые должны быть затронуты, я выделил жирным.

Отредактированно mario (09/03/2008 23:18)

Неактивен

 

#11 09/03/2008 23:26

Pavka
Administrator
Откуда: Киев
Зарегистрирован: 10/12/2007
Сообщений: 21
Вебсайт

Re: Добавление информации из файлов .CSV формата.

Даже и добавить нечего
все так и есть smile

Неактивен

 

#12 15/05/2008 20:50

offchar
Сведущий
Откуда: Владикавказ
Зарегистрирован: 20/02/2008
Сообщений: 92
Вебсайт

Re: Добавление информации из файлов .CSV формата.

Приветствую)

Дабы нарушить затянувшееся на форуме молчание и не дать угаснуть сообществу (Паш, про шаблоны напишу обязательно wink ) = предлагаю помочь отдельно взятому мне smile

Мы сделали-таки сайт, о котором шла речь в этой теме. Вбили через базу названия, а потом — вручную описания 2500 товаров, и теперь идет речь об обновлении цен и количества товаров через .csv.

В данном случае функциональность компонента PriceLoader.class.php устроила бы полностью. Excel Reader я поставил и движок его видит (не выдает больше ошибок связанных с этим дополнением). Пример загружаемого прайса тут.

В .csv файле 3 поля, вида

1;400.00;123
2;100.00;122

И так далее, где первый столбец — product_code, второй product_price и третий product_count соответственно.

Ошибка прежняя, is not readable.
Паш, давай разберем? А то жалко, компонент уже есть и вроде даже работает. Может я что-то не так делаю.

Неактивен

 

#13 15/05/2008 23:53

Pavka
Administrator
Откуда: Киев
Зарегистрирован: 10/12/2007
Сообщений: 21
Вебсайт

Re: Добавление информации из файлов .CSV формата.

Честно скажу
что PriceLoader - это не универсальный компонент
мы его каждый раз переписываем под конкретный случай
Да и давно не использовали
Ну, попробуем
1.Это не csv файл должен быть - а настощий екселевский отсюда наверное ошибка is not readable
в нем  - должны быть три колонки
код продукта
цена
количество
2.Для твоего случая нужно наверное вот так вот изменить код
вместо

Код:

for ($rowNum = 0; $rowNum < $rowCount; $rowNum++) {
                if (isset($data->sheets[0]['cells'][$rowNum])) {
                    $code = trim($data->sheets[0]['cells'][$rowNum][0]);
                    $price = $data->sheets[0]['cells'][$rowNum][1];
                    $productID = simplifyDBResult($this->dbh->select('shop_Products', array('product_id'), array('product_code'=>$code)), 'product_id', true);
                    if ($productID) {
                        $this->dbh->modify(QAL::INSERT , 'shop_ProductExternalProperties', array('product_code'=>$code, 'product_price'=>$price));
                        //$this->dbh->modify(QAL::UPDATE , 'shop_Products', array('product_is_available'=>1), array('product_id'=>$productID));
                    }
                }
            }

Сделать что то типа

Код:

for ($rowNum = 0; $rowNum < $rowCount; $rowNum++) {
                if (isset($data->sheets[0]['cells'][$rowNum])) {
                    $code = trim($data->sheets[0]['cells'][$rowNum][0]);
                    $price = $data->sheets[0]['cells'][$rowNum][1];
                    $count = $data->sheets[0]['cells'][$rowNum][2];
                    $productID = simplifyDBResult($this->dbh->select('shop_Products', array('product_id'), array('product_code'=>$code)), 'product_id', true);
                    if ($productID) {
                        $this->dbh->modify(QAL::INSERT , 'shop_ProductExternalProperties', array('product_code'=>$code, 'product_price'=>$price, 'product_count'=>$count));
                    }
                }
            }

100% уверенности что все сработает у меня  - нету sad
пиши о том что получилось

Неактивен

 

#14 16/05/2008 00:33

offchar
Сведущий
Откуда: Владикавказ
Зарегистрирован: 20/02/2008
Сообщений: 92
Вебсайт

Re: Добавление информации из файлов .CSV формата.

Громаднейшее спасибо, попробую утром на свежую голову smile

Неактивен

 

Board footer

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson