Jump to content

  • You cannot start a new topic
  • You cannot reply to this topic

Запретить Все Товары Без Изображений Rate Topic   - - - - -

 
  • marsx3
  • Advanced Member
  • Trial users
  • Join Date: 20-Jul 14
  • 122 posts

Posted 20 March 2015 - 12:45 PM #1

Здравствуйте коллеги. Хотелось бы понять есть ли какой то способ запретить все товары без изображений, у нас после синхронизации с 1С 14 000 товаров, из них только 1000 с изображениями, хотелось бы скрыть все без изображения. Это может быть SQL query.

 
  • dbazhenov
  • Senior Member
  • Authorized Reseller
  • Join Date: 15-May 12
  • 6446 posts

Posted 20 March 2015 - 12:47 PM #2

Здравствуйте коллеги. Хотелось бы понять есть ли какой то способ запретить все товары без изображений, у нас после синхронизации с 1С 14 000 товаров, из них только 1000 с изображениями, хотелось бы скрыть все без изображения. Это может быть SQL query.


Экспорт в CSV полей Product code, Status, Detailed image . Задавайте статус D тем у кого пустая картинка . Импорт назад.

Можно скрипт написать, но это нужно писать.

 
  • marsx3
  • Advanced Member
  • Trial users
  • Join Date: 20-Jul 14
  • 122 posts

Posted 20 March 2015 - 12:57 PM #3

Понял, спасибо. А как то через базу данных по типу как
UPDATE cscart_products SET status = 'D' WHERE images < 0; нет такого варианта?

 
  • dbazhenov
  • Senior Member
  • Authorized Reseller
  • Join Date: 15-May 12
  • 6446 posts

Posted 20 March 2015 - 01:04 PM #4

Понял, спасибо. А как то через базу данных по типу как
UPDATE cscart_products SET status = 'D' WHERE images < 0; нет такого варианта?


Данные о картинках хранятся в таблице cscart_images_links

Нужен JOIN и выборка , смотрите здесь:
https://www.google.r...2F3074;1024;806

 
  • marsx3
  • Advanced Member
  • Trial users
  • Join Date: 20-Jul 14
  • 122 posts

Posted 02 April 2015 - 04:28 PM #5

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

<?php

/* Введите свои данные */
$login  = 'ваш_логин';
$pass   = 'пароль';
$dbname = 'имя_базы';
mysql_connect('хост', $login, $pass);


mysql_select_db($dbname);

/* Запрещает товары без картинок */

$res = mysql_query('
UPDATE `cscart_products` AS `p`
    LEFT JOIN `cscart_images_links` AS `i` ON (`p`.`product_id` = `i`.`object_id` AND `i`.`object_type` = "product")
SET p.status = "D"
    WHERE i.object_id IS NULL');
if ($res === false)
    die(__LINE__ . ' ' . print_r(mysql_error(), true));

/* Запрещает товары чье количество на складе < 5 */

$res = mysql_query('UPDATE cscart_products SET status = "D" WHERE amount < 5');
if ($res === false)
    die(__LINE__ . ' ' . print_r(mysql_error(), true));
print date('y-m-d H:i:s') . ' converted successfully' . PHP_EOL; ?>


 
  • dbazhenov
  • Senior Member
  • Authorized Reseller
  • Join Date: 15-May 12
  • 6446 posts

Posted 03 April 2015 - 06:18 AM #6

У меня к вам два предложения:
1. Мы можем сделать настройку для модуля 1С : "Загружать только товары с изображениями". Соответственно, товары без картинок даже обрабатываться не будут, ускорится загрузка.
2. Я могу привести ваш скрипт под правила CS-Cart. Точнее сделать инструкцию: Как создать любой скрипт используя возможности CS-Cart .

Как вы на это смотрите?

 
  • Alecomp
  • Senior Member
  • Trial users
  • Join Date: 13-Jul 12
  • 342 posts

Posted 04 April 2015 - 07:09 AM #7

Даниил, приветствую.
Так же не помешает опция, чтобы не обрабатывались товары с 0 ценой. По какой то причине через отборы в 1с у нас не получается настроить выгрузку товаров с ценой не равной 0.

 
  • dbazhenov
  • Senior Member
  • Authorized Reseller
  • Join Date: 15-May 12
  • 6446 posts

Posted 04 April 2015 - 08:59 AM #8

Даниил, приветствую.
Так же не помешает опция, чтобы не обрабатывались товары с 0 ценой. По какой то причине через отборы в 1с у нас не получается настроить выгрузку товаров с ценой не равной 0.


Там такая движуха, что товары создаются из одного файла (import.xml), а цены обновляются из другого (offer.xml).

В любом случае напишите предложения в HelpDesk, мы рассмотрим.

 
  • marsx3
  • Advanced Member
  • Trial users
  • Join Date: 20-Jul 14
  • 122 posts

Posted 04 April 2015 - 11:50 AM #9

Здравствуйте, по поводу вашего предложения, со скриптом делайте что хотите, он общий, что касается остального:
1. Такая настройка была бы хорошо, но не в нашем случае, так как картинки вставляются только в cs-cart.
2. Это было бы хорошо, думаю многим пригодилось бы, мало ли что захочется поменять.
3. Что реально надо сделать, так это дробить выполнение скрипта синхронизации, в нашем случае пришлось сделать timeout 900 сек. в апаче, тогда как в среднем на хостингах 300 сек. Например что бы товары делились на порции 3000-5000 за раз (или выставляется вручную, 0 без ограничений и далее как кому надо, дробить или нет). Это позволит не иметь проблем на хостинга которые сложно или невозможно менять.

Вот с чем у нас реально беда, это с акциоными ценами, дело в том что только на сайте на многие товары есть акция, она выставляется вручную в cs-cart, но синхронизация каждый раз ее перезаписывает, так как в 1С нет акционной цены, она существует только в cs-cart, так как только в cs-cart эта акция существует. Было бы хорошо иметь галочку, которая отключала бы синхронизацию цены, для тех товаров у которых рекомендованная цена выше базовой. Сейчас мы выходим из этого положения импортируя каждый раз после синхронизации CSV файл с акционными ценами на товары, не сложно, но как то неакуратно : )

 
  • Alecomp
  • Senior Member
  • Trial users
  • Join Date: 13-Jul 12
  • 342 posts

Posted 04 April 2015 - 05:15 PM #10

3. Что реально надо сделать, так это дробить выполнение скрипта синхронизации, в нашем случае пришлось сделать timeout 900 сек. в апаче, тогда как в среднем на хостингах 300 сек. Например что бы товары делились на порции 3000-5000 за раз (или выставляется вручную, 0 без ограничений и далее как кому надо, дробить или нет). Это позволит не иметь проблем на хостинга которые сложно или невозможно менять.

Подскажите что это за таймаут? Nginx у вас есть?

Вот с чем у нас реально беда, это с акциоными ценами, дело в том что только на сайте на многие товары есть акция, она выставляется вручную в cs-cart, но синхронизация каждый раз ее перезаписывает, так как в 1С нет акционной цены, она существует только в cs-cart, так как только в cs-cart эта акция существует. Было бы хорошо иметь галочку, которая отключала бы синхронизацию цены, для тех товаров у которых рекомендованная цена выше базовой. Сейчас мы выходим из этого положения импортируя каждый раз после синхронизации CSV файл с акционными ценами на товары, не сложно, но как то неакуратно : )

Убирайте такие товары из выгрузки 1с с помощью отборов в узле обмена- Номенклатура - Не равно или Не в списке.

 
  • marsx3
  • Advanced Member
  • Trial users
  • Join Date: 20-Jul 14
  • 122 posts

Posted 06 April 2015 - 12:39 PM #11

Подскажите что это за таймаут? Nginx у вас есть?


На хостинге, где паче 1.3 + nginx 1.2:
Timeout 900.

На нашем сервере где апач 2.4.х надо было выставить:
FcgidBusyTimeout 900

Кроме того в php.ini на всякий случай:
default_socket_timeout=900
max_input_time=900
max_execution_time=900

И только после этого шаманства проходит синхронизация, иначе по истечении определенного срока по умолчанию (на всех серверах разный 30-300 сек) скрипт отваливается, и выдает ошибку 500 или 520 - в зависимости от сервера.

Убирайте такие товары из выгрузки 1с с помощью отборов в узле обмена- Номенклатура

В нашем случае лучше импортировать в cs-cart правильные цены, иначе по выбранный товарам не будет синхронизации количества на складе. Кроме того каждый раз надо перенастраивать в 1С синхронизацию, добавить товар, убавить товар, гемор, в идеале все таки галочку - не синхронизировать поле БАЗОВАЯ ЦЕНА для товаров где БАЗОВАЯ ЦЕНА < РЕКОМЕНДУЕМОЙ ЦЕНЫ, другими словами для акцизных товаров, вот это было бы радикальным и правильным решением : )

 
  • dbazhenov
  • Senior Member
  • Authorized Reseller
  • Join Date: 15-May 12
  • 6446 posts

Posted 06 April 2015 - 12:52 PM #12

В нашем случае лучше импортировать в cs-cart правильные цены, иначе по выбранный товарам не будет синхронизации количества на складе. Кроме того каждый раз надо перенастраивать в 1С синхронизацию, добавить товар, убавить товар, гемор, в идеале все таки галочку - не синхронизировать поле БАЗОВАЯ ЦЕНА для товаров где БАЗОВАЯ ЦЕНА < РЕКОМЕНДУЕМОЙ ЦЕНЫ, другими словами для акцизных товаров, вот это было бы радикальным и правильным решением : )


Без обращения в тех. поддержку я не могу помочь. Напишите, вас соединят со специалистом по 1С, он посмотрит.

Напишите какая проверка нужна, он добавит, если это не сложно.

 
  • marsx3
  • Advanced Member
  • Trial users
  • Join Date: 20-Jul 14
  • 122 posts

Posted 06 April 2015 - 02:20 PM #13

Оки, так и сделаю, у нас (в Латвии) Пасха сегодня, не то что бы отмечаю, но работать лень : )

 
  • wonderer22
  • Advanced Member
  • Trial users
  • Join Date: 01-Jul 15
  • 85 posts

Posted 18 July 2016 - 08:41 AM #14

Инструкция на просторах нашего форума появилась/нет? Кто знает?

 

У меня к вам два предложения:
1. Мы можем сделать настройку для модуля 1С : "Загружать только товары с изображениями". Соответственно, товары без картинок даже обрабатываться не будут, ускорится загрузка.
2. Я могу привести ваш скрипт под правила CS-Cart. Точнее сделать инструкцию: Как создать любой скрипт используя возможности CS-Cart .

Как вы на это смотрите?