0 Пользователей и 1 Гость просматривают эту тему.
  • 19 Ответов
  • 6241 Просмотров
*

era

  • Администратор
  • 1587
  • 390 / 5
  • В туалете лучше быть пользователем, чем админом.
Полный импорт данных
« : 26.10.2006, 13:22:28 »
Не разбирался до этого с VM, да вот пришлось и по этому "родился" вопрос:
Можно-ли сделать "полный" импорт данных, т.е. и производителей через один CSV файл?
Сейчас, на сколько я понял, для этого должена быть заполнена таблица manufacturer и при импорте подставляется только идентификатор из этой таблицы.

Впринципе я на половину написал, что-бы при импорте проверялось поле CSV mf_name, если оно есть в файле, то проверяется есть-ли в таблице производителей это название, если есть, то берётся id из таблицы производителей и подставляется в поле CSV manufacturer_id, если нету, то добавляет производителя в таблицу и получает его id и опять-же подставляется в поле CSV manufacturer_id.

Какие у кого мысли есть по этому поводу? Если есть уже решение, то научите и не придётся мне тогда его дописывать.
*

Sedoy

  • Давно я тут
  • 900
  • 87 / 10
  • Интересно,в какой кодировке пишут врачи?
Re: Полный импорт данных
« Ответ #1 : 26.10.2006, 16:18:30 »
я не слышал о таком решении, а стандартно ты уже и сам знаешь
может tug что либо знает, либо на оф. форуме поискать
в любом случае делай, глядишь и нас побалуешь :)

только вот проверка по названию мне не совсем понятна
насколько точно оно должно совпадать? то есть если в VM прописано "Microsoft" а девушка манагер тебе выдала список и там "Майкрософт" то тогда что? добавит новго производителя? похоже что так
по идее должен быть выгружен из VM список производителей: имя и id и сравниться с предпологаемым файлом импорта и те что не совпадут должны закачатся дополнительно как ты описывал
или не так?
« Последнее редактирование: 26.10.2006, 16:26:32 от Sedoy »
Что б правильно задать вопрос - нужно знать на него ответ!
FAQ по Joomla!
Где скачать шаблоны Joomla Статьи и обзоры Желаю Вам здоровья в личной жизни - живите долго и часто :)
*

era

  • Администратор
  • 1587
  • 390 / 5
  • В туалете лучше быть пользователем, чем админом.
Re: Полный импорт данных
« Ответ #2 : 27.10.2006, 08:45:37 »
VM версии 1.0.7
Для автоматического импорта фирм-изготовителей требуется сделать следующее:
1.   в админке VM в конфигурации импорта данных (управление VM -> Товары -> Использовать загрузку CSV, закладка “Конфигурация”) добавить новое поле:
•   Название поля - “mf_name”
•   Значение по-умолчанию – “” (пусто)
•   Обязательное поле? - Нет
2.   в файле “administrator\components\com_virtuemart\classes\ps_csv.php” в строке 30 есть список полей, которые не участвуют в запросах:
Код
var $dont_use_in_query = Array( "product_sku", "product_name", "product_price", "category_path", "manufacturer_id", "attributes", "attribute_values" );
Добавляем в конец этого массива только что придуманное нами поле:
Код
var $dont_use_in_query = Array( "product_sku", "product_name", "product_price", "category_path", "manufacturer_id", "attributes", "attribute_values", "mf_name" );
3.   В этом-же файле перед строкой 154 (“// Check for Manufacturer ID and set to 1 if omitted”) добавляем следующий код:
Код
		// Проверяем, если нету производителя, то создаём его
if( !empty($data[$csv_fields["mf_name"]["ordering"]-1])) {
$q = "SELECT manufacturer_id FROM #__{vm}_manufacturer WHERE mf_name='".$data[$csv_fields["mf_name"]["ordering"]-1]."'";
$dbu->query( $q );
$dbu->next_record();
$data[$csv_fields["manufacturer_id"]["ordering"]-1] = 0;
$data[$csv_fields["manufacturer_id"]["ordering"]-1] = $dbu->f("manufacturer_id");
If ( $data[$csv_fields["manufacturer_id"]["ordering"]-1] == 0 ) {
$dbu->query( "INSERT INTO #__{vm}_manufacturer (mf_name, mf_email, mf_desc, mf_category_id, mf_url) VALUES ('".$data[$csv_fields["mf_name"]["ordering"]-1]."', '', '', 1, '' ) ");

$q = "SELECT manufacturer_id FROM #__{vm}_manufacturer WHERE mf_name='".$data[$csv_fields["mf_name"]["ordering"]-1]."'";
$dbu->query( $q );
$dbu->next_record();
$data[$csv_fields["manufacturer_id"]["ordering"]-1] = 0;
$data[$csv_fields["manufacturer_id"]["ordering"]-1] = $dbu->f("manufacturer_id");
If ( $data[$csv_fields["manufacturer_id"]["ordering"]-1] == 0 ) {
$d['message'] .= "Ошибка при импортировании в справочник производителей!<br />";
            $this_error = "Ошибка при импортировании в справочник производителей!<br />";
};
};
};

Всё, теперь магазин работает как я хочу что-бы он работал (и на мой взгляд так на много правильнее). Теперь, если не пустое поле  mf_name, у нас проверяется есть-ли такой производитель. Если такой производитель есть, то автоматом подставляется его идентификатор к товару, если-же нет его, то он добавляется в базу производителей и также его идентификатор подставляется к товару.

Подсказка по отладке магазина:
   Иногда полезно посмотреть чем там занимается VM и какие запросы выполняет, но при включенном режиме отладки в Joomla, запросы от VM не обрабатываются :(
Поэтому можно в файлике “administrator\components\com_virtuemart\classes\ps_database.php” в строке 68 добавить код:
Код
echo $this->_sql.'<br />';

что-бы функция setQuery выглядела так:
Код
	function setQuery( $sql ) {
$vm_prefix = "{vm}";

$this->_sql = str_replace( $vm_prefix, VM_TABLEPREFIX, $sql );
echo $this->_sql.'<br />';
$this->_database->setQuery( $this->_sql );
$this->_query_set = true;
}
И теперь мы сможем лицезреть на экране какие запросы выполняются в VM.


Версии файлов:
•   @version $Id: ps_csv.php,v 1.7.2.3 2006/03/28 19:40:15 soeren_nb Exp $
•   @version $Id: ps_database.php,v 1.9.2.4 2006/04/21 17:05:17 soeren_nb Exp $

----------------------------------------------------------------------------------

только вот проверка по названию мне не совсем понятна
насколько точно оно должно совпадать?
На 100% должно совпадать.

то есть если в VM прописано "Microsoft" а девушка манагер тебе выдала список и там "Майкрософт" то тогда что? добавит новго производителя?
Да именно так и будет. И вопрос тогда будет к девушке, какога фига она так написала, разве не так?
Единственное что можно предусмотреть, это например так называемые алиасы. Т.е. ты в базу алиасов добавляешь что Майкрософт = Microsoft, тогда при импорте можно будет проверить алиасы и добавить уже не как "Майкрософт" а как "Microsoft" и это будет впринципе круто, но заморачиваться мне с этим не охота.

Следующее с чем мне видимо придётся замарачиваться, дак это с удалением позиций, которые не были в загруженом CSV. И скорее всего придётся ещё придумать такую приблуду, как привязку позиции к файлу CSV, т.е. скорее всего придётся загружать позиции из разных источников, т.е. от фирмы 1, от фирмы 2 и т.д.
Что-бы в итоге получилось при загрузке CSV от фирмы 1 что-бы обновились/добавились все позиции из CSV а те позиции которые остались в базе старые, что-бы не висели мёртвым грузом. Но я думаю что там тоже делов на час-два. И может быть кто-нить видел такую штуку что-бы мне опять не писать этого?

---------------------------------------------------------

Да и файлик изменённый я прикрепляю здесь.

[вложение удалено Администратором]
*

Sedoy

  • Давно я тут
  • 900
  • 87 / 10
  • Интересно,в какой кодировке пишут врачи?
Re: Полный импорт данных
« Ответ #3 : 27.10.2006, 09:49:21 »
сенкс за работу :)
>Да именно так и будет. И вопрос тогда будет к девушке, какога фига она так написала, разве не так?
нет, не так
в любой конторе защита от дурака - "твоя" обязанность, т.е. кодера - админа и т.д.
ты должен предусмотреть бизнес (тех)- процесс так что б таких вещей не было
я тебе не зря описал что должно быть как минимум выгрузка и сравнение баз - т.е. источники формирования файлов экспорт - импорт должны быть "синхронизированны" по ключевым моментам (полям)

>Следующее с чем мне видимо придётся замарачиваться, дак это с удалением позиций, которые не были в загруженом CSV
этот вопрос уже здесь обсуждался и даже было выложено решение, посмотри в разделе, я же как найду выложу ссылу - кста вопрос тоже спорный, в той теме я описывал ситуации когда нельзя удалять карточку товара только потому что его нет в CSV

>И скорее всего придётся ещё придумать такую приблуду, как привязку позиции к файлу CSV, т.е. скорее всего придётся загружать позиции из разных источников, т.е. от фирмы 1, от фирмы 2 и т.д.
это я не понял, разжуй поподробнее плиз, лучше на практическом примере бинеспроцесса

ps _http://joomlaforum.ru/index.php/topic,6736.msg39286/topicseen.html#msg39286 - вот ссыла что говорил
« Последнее редактирование: 27.10.2006, 10:03:11 от Sedoy »
Что б правильно задать вопрос - нужно знать на него ответ!
FAQ по Joomla!
Где скачать шаблоны Joomla Статьи и обзоры Желаю Вам здоровья в личной жизни - живите долго и часто :)
*

era

  • Администратор
  • 1587
  • 390 / 5
  • В туалете лучше быть пользователем, чем админом.
Re: Полный импорт данных
« Ответ #4 : 27.10.2006, 13:18:51 »
это я не понял, разжуй поподробнее плиз, лучше на практическом примере бинеспроцесса

Ну напрмер я получаю CSV файлы с номенклатурой от 3-ёх производителей, при этом производитель 1 обновляет его 2-а раза в неделю, производитель 2 обновзяет его раз в 2-е недели, а производитель 3 обновляет каждый день.

Дак что-бы при импорте товаров от производителя 3 не удалились товары от производителей 1 и 2.
*

Sedoy

  • Давно я тут
  • 900
  • 87 / 10
  • Интересно,в какой кодировке пишут врачи?
Re: Полный импорт данных
« Ответ #5 : 27.10.2006, 15:58:24 »
понятно
только это не верно по моему, ты тему по ссыле читал?
там это обсуждалось, товар должен удаляться только если с ним прекращаешь работать, в противном случае его нужно просто снимать с публикации
а для удаления товара нужно придумывать какой то иной импорт CSV по которому и будет удаляться
Что б правильно задать вопрос - нужно знать на него ответ!
FAQ по Joomla!
Где скачать шаблоны Joomla Статьи и обзоры Желаю Вам здоровья в личной жизни - живите долго и часто :)
*

era

  • Администратор
  • 1587
  • 390 / 5
  • В туалете лучше быть пользователем, чем админом.
Re: Полный импорт данных
« Ответ #6 : 27.10.2006, 16:01:16 »
Да я уже прочёл тока-что и буду всё-таки снимать с публикации, с учётом, опять-же, файла загрузки. т.е. что-бы все не снялись с публикации.
*

Sedoy

  • Давно я тут
  • 900
  • 87 / 10
  • Интересно,в какой кодировке пишут врачи?
Re: Полный импорт данных
« Ответ #7 : 27.10.2006, 16:05:52 »
да, судя по всему это пока лучшее решение
ты будешь как делать - если товара нет в CSV то он снимается?
хотя лучше бы предусмотреть вариант с пометкой на снятие, т.е. если признак у товара в CSV стоит то снимать иначе нет, а если добавить и еще один признак на удаление то вообще сказка была бы :)
Что б правильно задать вопрос - нужно знать на него ответ!
FAQ по Joomla!
Где скачать шаблоны Joomla Статьи и обзоры Желаю Вам здоровья в личной жизни - живите долго и часто :)
*

era

  • Администратор
  • 1587
  • 390 / 5
  • В туалете лучше быть пользователем, чем админом.
Re: Полный импорт данных
« Ответ #8 : 30.10.2006, 13:25:05 »
всмысле если через CSV пришёл товар с пометкой "на удаление", то если он есть в базе то он удаляется?
Впринципе это не проблемма сделать, интерисует как ты себе это представляешь?
Опиши поподробнее, что-бы я подумал и в твою сторону мышления.
*

Sedoy

  • Давно я тут
  • 900
  • 87 / 10
  • Интересно,в какой кодировке пишут врачи?
Re: Полный импорт данных
« Ответ #9 : 30.10.2006, 14:26:06 »
а никак не представляю :)
просто желаю так :)
а поскольку при импорте вряд ли есть возможность провести удаление (хотя как у тебя - в твоем варианте- будут удаляться те товары которых нет в файле импорта, каким инструментом?), то в этом случае после импорта у товара должен появиться признак "помечен на удаление", затем накладываем фильтр по полю и скопом удаляем ненужный товар - все это относится только товару который действительно не нужен, с ним не будут больше работать, и по нему не нужна статистика которая хранится в VM

есть еще один вопрос который мне не совсем нравиться или понятен - это закачка картинок мал+бол
при импорте указывется имя файла картинки, то есть предпологается что они уже закачены в базу и осталось их подтянуть - двойная работа какая то
мало того что их нужно преобразовать в 2 размера, потом закачать по ftp в соответствующие папки, да еще и манагер должен знать какая картинка (имя файла) к какому товару относиться
в идеале весь полный импорт должен все ключать, но это мечта :)

кста еще насчет удаления - ты знаешь как в торг. БД храниться карточка товара? опишу на всякий случай - карточку невозможно удалить до тех пор пока на ней есть остатки или же если по ней было хоть какое то движение за весь период самой базы - и это правильно
в разрезе VM это конечно не нужно, но все же :)
Что б правильно задать вопрос - нужно знать на него ответ!
FAQ по Joomla!
Где скачать шаблоны Joomla Статьи и обзоры Желаю Вам здоровья в личной жизни - живите долго и часто :)
*

era

  • Администратор
  • 1587
  • 390 / 5
  • В туалете лучше быть пользователем, чем админом.
Re: Полный импорт данных
« Ответ #10 : 30.10.2006, 14:37:50 »
а поскольку при импорте вряд ли есть возможность провести удаление

Не вопрос, можно и удалить без проблем.

Ладно надо будет подумать над этим...
*

Sedoy

  • Давно я тут
  • 900
  • 87 / 10
  • Интересно,в какой кодировке пишут врачи?
Re: Полный импорт данных
« Ответ #11 : 30.10.2006, 14:40:42 »
ок
и еще немаловажная вещь - это вопрос последующих обновлений, т.е. если все эти доработки будут связаны с правкой кода, то наверняка это все будет актуально только для текущего релиза, после обновления на очередную версию - опять хакать придется, я так думаю :)
« Последнее редактирование: 30.10.2006, 14:47:06 от Sedoy »
Что б правильно задать вопрос - нужно знать на него ответ!
FAQ по Joomla!
Где скачать шаблоны Joomla Статьи и обзоры Желаю Вам здоровья в личной жизни - живите долго и часто :)
*

era

  • Администратор
  • 1587
  • 390 / 5
  • В туалете лучше быть пользователем, чем админом.
Re: Полный импорт данных
« Ответ #12 : 30.10.2006, 14:53:03 »
ну естественно, но если всё по шагам документировать по челевечески, то с выходом послед. версии изменение кода будет занимать 10-15 минут.
*

Sedoy

  • Давно я тут
  • 900
  • 87 / 10
  • Интересно,в какой кодировке пишут врачи?
Re: Полный импорт данных
« Ответ #13 : 30.10.2006, 14:56:21 »
это понятно :)
Что б правильно задать вопрос - нужно знать на него ответ!
FAQ по Joomla!
Где скачать шаблоны Joomla Статьи и обзоры Желаю Вам здоровья в личной жизни - живите долго и часто :)
*

Sedoy

  • Давно я тут
  • 900
  • 87 / 10
  • Интересно,в какой кодировке пишут врачи?
Re: Полный импорт данных
« Ответ #14 : 09.11.2006, 12:05:07 »
era, как успехи? 
Что б правильно задать вопрос - нужно знать на него ответ!
FAQ по Joomla!
Где скачать шаблоны Joomla Статьи и обзоры Желаю Вам здоровья в личной жизни - живите долго и часто :)
*

era

  • Администратор
  • 1587
  • 390 / 5
  • В туалете лучше быть пользователем, чем админом.
Re: Полный импорт данных
« Ответ #15 : 09.11.2006, 12:11:50 »
Сейчас отошёл слегка от этого, но на этой неделе должён вернуться к этой теме.
Сейчас делаю для чё-вото магазинчика приём тоже из 1C. Почти закончил.
*

Sedoy

  • Давно я тут
  • 900
  • 87 / 10
  • Интересно,в какой кодировке пишут врачи?
Re: Полный импорт данных
« Ответ #16 : 09.11.2006, 12:18:11 »
не теряйся по теме - отпишись плз :)
Что б правильно задать вопрос - нужно знать на него ответ!
FAQ по Joomla!
Где скачать шаблоны Joomla Статьи и обзоры Желаю Вам здоровья в личной жизни - живите долго и часто :)
*

era

  • Администратор
  • 1587
  • 390 / 5
  • В туалете лучше быть пользователем, чем админом.

Re: Полный импорт данных
« Ответ #18 : 11.04.2007, 13:54:37 »
и потерялся. уже полгода прошло...
*

era

  • Администратор
  • 1587
  • 390 / 5
  • В туалете лучше быть пользователем, чем админом.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Импорт из CSV товаров с типами и свойствами из

Автор Gruz

Ответов: 499
Просмотров: 133559
Последний ответ 23.02.2017, 15:15:42
от orchanin
импорт товаров в YML Яндекс маркет

Автор zmeyx

Ответов: 5
Просмотров: 7826
Последний ответ 14.07.2016, 18:34:28
от Berzerker
Общие вопросы по j1.5.26+vm1.1.9+импорт из 1С

Автор alexzhimuk

Ответов: 2
Просмотров: 815
Последний ответ 06.05.2016, 15:28:04
от alexzhimuk
CSVI импорт экспорт

Автор Vasja555

Ответов: 0
Просмотров: 988
Последний ответ 05.02.2015, 15:40:45
от Vasja555
Описание полей таблиц в базе данных VirtueMart

Автор EmDmAl

Ответов: 39
Просмотров: 34282
Последний ответ 30.01.2015, 16:15:38
от nick71