Стоит ли использовать штатные методы OpenCart для изменения категорий и товаров при импорте из 1с?

Хотел использовать методы edit для сохранения категорий и товаров, но что-то напрягает код запросов с его DELETE - INSERT .

$this->db->query("UPDATE " ..... WHERE product_id = '" . (int)$product_id . "'");

	if (isset($data['image'])) {
		$this->db->query("UPDATE " . DB_PREFIX . "product SET image = '" . $this->db->escape($data['image']) . "' WHERE product_id = '" . (int)$product_id . "'");
		}

		$this->db->query("DELETE FROM " . DB_PREFIX . "product_description WHERE product_id = '" . (int)$product_id . "'");

		foreach ($data['product_description'] as $language_id => $value) {
			$this->db->query("INSERT INTO " . DB_PREFIX . "product_description .....);
		}

		$this->db->query("DELETE FROM " . DB_PREFIX . "product_to_store WHERE product_id = '" . (int)$product_id . "'");

		if (isset($data['product_store'])) {
			foreach ($data['product_store'] as $store_id) {
				$this->db->query("INSERT INTO " . DB_PREFIX . "product_to_store ......);
			}
		}

		$this->db->query("DELETE FROM " . DB_PREFIX . "product_attribute WHERE product_id = '" . (int)$product_id . "'");

		if (!empty($data['product_attribute'])) {
			foreach ($data['product_attribute'] as $product_attribute) {
				if ($product_attribute['attribute_id']) {
					foreach ($product_attribute['product_attribute_description'] as $language_id => $product_attribute_description) {
						$this->db->query("INSERT INTO " . DB_PREFIX . "product_attribute .......);
					}
				}
			}
		}


Обновляется только сам товар и изображение, остальное при каждой записи удалятся и добавляется заново. Для импорта это нормально если он может запускаться довольно часто?
  • Вопрос задан
  • 321 просмотр
Пригласить эксперта
Ответы на вопрос 2
@1011
Можно узнать, каким образом делаете импорт из 1с в опенкарт? через csv?
Ответ написан
gzhegow
@gzhegow
aka "ОбнимиБизнесмена"
Ты всегда можешь использовать любые методы импорта.
Но используя штатные методы есть вероятность что разработчики учли обновление нескольких таблиц базы, вместо одной, которая кажется очевидной.

Например, в Битриксе при добавлении элементов через админку или апи автоматически заполняется целая куча полей и если самому это вручную делать - можно уехать крышей.
В то же время АПИ битрикса не упрощает, а даже усложняет доступ к БД - твой код становится даже сложнее, чем писать SQL запрос. Поэтому все равно прибегаем к хитростям вида "запросить SQL-ом, закачать через Апи"

Касательно твоего примера мы наблюдаем в Опенкарте практически чистый SQL и потому нет разницы - будешь ты его импортировать через собственное подключение к бд, не забывая экранировать спецсимволы, или будешь использовать Опенкарт, который бесплатный, а значит ни за что не несет ответственности и вполне вероятно, что там такие проверки тоже не делаются, что делает потенциальную дыру для взлома.

Другой вопрос - разве в Интернет-магазине есть смысл что-нибудь ломать? По законодательству все оплаты обычно проходят через сервисы оплаты, где работают программисты, несущие ответственность и потому за обслуживание платятся бабки с каждой продажи.

Вопрос в том - хочешь ли ты быть виноватым в том, что кто-то унес все клиентские данные, или проще перекинуть это на другую компанию? Это вечная дилемма между учеными и бизнесменами. Одни хотят потестировать все и несмотря на ошибки - внести исправления, другие хотят никогда не быть виноватыми, и потому любой повод будут использовать чтобы поиметь с тебя денег.

И этому радостно подпевает голливуд, рассказывая, что из-за ученых злобные вирусы заражают человечество, поэтому в нашем мире лучше дескать вообще нихрена не делать, а только ждать пока само сделается. А оно, как ни странно, не сделается.

Присмотрись к своему заказчику. Если в нем нет ощущения, что нужно попробовать, прежде чем делать, а есть только "сделай мне и побыстрее" - я бы лучше ему спел песню про то, что надо покупать другие компании, пусть это будет его проблемой - иски, суды, чем твоей - что из-за тебя взломали сайт, а разве может быть иначе в их голове?

Бизнес в целом это всего три понятия:
1) деньги принадлежат хитрым, а не умным. Это разные вещи.
2) никогда не будь виноватым, твой авторитет и внешний вид важнее любой работы, которую никто не увидит, поэтому лучше не делай ничего, а всегда имей крайнего
3) если ты видишь, что кто-то упал, помоги ему сломать побольше конечностей, а всем расскажи, что "он же сам хотел упасть, а ты честно помог"

И это все достижимо только если самому не делать вообще ничего, а всегда иметь крайнего.

И понимая это, какими будут твои действия? С точки зрения логики - не работать на бизнес и на деньги. Но ведь это заставит тебя копать землю и растить для себя продукты, а значит бросить программирование... поэтому просто вливайся в колею и улыбайся, делая вид, что ты глупый и ничего не понимаешь.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Искра Екатеринбург
от 80 000 до 100 000 ₽
Art gorka Санкт-Петербург
от 60 000 ₽
от 40 000 до 60 000 ₽
19 апр. 2024, в 18:38
1500 руб./в час
19 апр. 2024, в 18:36
1500 руб./за проект
19 апр. 2024, в 18:36
30000 руб./за проект