Обмен данными – это процесс, при котором какие-то данные из входящего набора данных (например, из текстового документа) физически переносятся в какой-либо другой формат хранения данных, например, в базу данных
Иными словами, перенос данных – это процесс, после которого данные, уложенные в формат 1, переходят в хранение в виде формата 2. Например, данные из табличного формата, текстового документа, переходят в данные, хранимые в формате базы данных, или в формат XML и т.п.
Представление одних и тех же данных в Эксель или XML | Те же данные, уже находящиеся в БД ОпенКарт и выведенные для редактирования в панели администрирования |
Сущность данных – это однородные наборы данных, связанные по какому-либо семантическому признаку(ам). Например, товарные данные, данные о категориях вне зависимости от товаров, атрибуты или заказы и т.п.
Ключевой задачей при обмене данными между разными источниками является идентификация одних и тех же сущностей данных. Идентификация позволяет определить, куда назначаются те или иные данные, избежать дублирования одних и тех же сущностей данных, добавлять данные из разных источников в одну сущность данных, например, направлять разные данные в один и тот же товар, из разных файлов, находя такой товар по какому-либо идентификатору этого товара во входящих данных
Наиболее точным идентификатором тех или иных данных является автоинкрементный идентификатор той базы, куда назначаются данные. Например, при импорте товаров, наиболее точным идентификатором будет значение product_id. Однако ввиду того, что автоинкрементные идентификаторы сложно иметь сразу во входящих данных, в качестве идентификатора используют какой-то независимый от базы данных код, составной или чистый, произвольный артикул, модель или унифицированные, стандартизированные идентификаторы складских позиций такие как: EAN, JAN, UPC, GTIN и другие
Идентификация работает следующим образом. После того, как в той или иной колонке файла поставлена настройка, что в данной колонке файла находится идентификатор, а также после указания, в какой колонке базы данных искать его соответствие. Перед импортом каждой строки с данными, скрипт ищет уже существующие данные, которые имеют соответствие. Если их нет, то в зависимости от режима обмена, данные или добавляются, как новые, или происходит обновление уже имеющихся данных, или происходит пропуск таких данных, например, если обмен идет в режиме добавлять только новинки
1. Колонка файла, в которой содержится идентификатор | 2. Настройка идентификации на колонку файла, в которой содержится нужный идентификатор (подробнее о настройке в соответствующем разделе) |
3. После проверки наличия товаров с данным идентификатором, будет обнаружен товар (если есть), у которого в модели находится следующее значение |
В модуль импорта могут подаваться (в зависимости от версии) практически все распространённые источники с данными, в т.ч. архивированные в zip, или требующие стандартной авторизации по стандарту: RFC 7617
Подача того или иного источника рассмотрена в соответствующем разделе. Перед подачей файла или ссылки, ведущей на файл
Перед использованием того или иного источника с данными, нужно убедиться, что он представляет собой готовый файл, или файл, который начинает скачиваться по ссылке, если в качестве источника используется ссылка на файл.
Пример ссылки, которая ведет на файл для скачивания
Если файл расположен на сайте, и при вызове ссылки в браузере открывается не файл, а сайт (например, какой-то сайт Google Doc и т.п.), со ссылкой на скачивание, то такой сайт не может применяться в качестве источника. В этом случае, необходимо скачать файл, и подать файл, как файл.
Для упрощения работы с файлами, Вы можете копировать файл на собственный сайт, и подавать в модуль ссылку на файл на собственном сайте. Например, используя FTP, скопировать файл в папку image Вашего сайта, и передать в модуль ссылку типа: http://мой_сайт/image/file_csv.csv
При подаче файла в архиве, модуль извлекает первый файл внутри архива. Внутри архива не должно быть папок.
При использовании внешних данных, нужно приводить их к кодировке файловой системы и базы OpenCart. Кодировка базы и файлов OpenCart UTF-8. Если входящие данные поступают в какой-либо другой кодировке, то в модуле нужно установить кодировку входящих данных. После чего, при работе модуля данные будут конвертироваться в UTF-8.
Установка кодировки файла при импорте, или для экспорта в файл, если входящая или исходящая кодировка должна быть не в UTF-8 (настройка находится здесь при импорте или здесь при экспорте) |
Узнать кодировку файла можно в программе NOTEPAD++, в ней же сделать перекодирование файла в UTF-8. Более качественную работу с CSV обеспечивает программа OpenOffice Calc, которая уже при открывании файла позволяет выбрать кодировку и таким образом, про тому, что будет показано в окне предпросмотра можно выяснить, как кодировка у файла. В этой же программе можно перекодировать файл, сохранив его с нужными разделителями, и в нужно кодировке – UTF-8
Просмотр кодировки в NOTEPAD++ | Просмотр кодировки в OpenOffice Calc |
Убедиться, что данные перекодированы верно можно по отсутствию «крякозябров» в области вывода данных, как это показано на следующих примерах
Если данные нечитабельные, то кодировка неверная | Если данные читабельные, то кодировка верная |
Важно! В связи с тем, что в средствах php ограниченные возможности по конвертации, и во избежание потери данных, а также для снижения нагрузки на сервер, которая понадобится на дополнительное действие – перекодировку, рекомендуется подавать данные сразу в кодировке UTF-8
Формат CSV/DSV/TSV представляет собой – простой текстовый документ, посмотреть который можно в программах NOTEPAD++ или OpenOffice Calc.
Формат позволяет записывать данные в табличный вид, в котором в роли вертикальных ограничителей ячеек таблицы выступают т.н. разделители, а в роли новых строк таблицы – символ новой строки: \r\n
В случае, когда данные одной и той же ячейки идут в новых строках, но не являются новыми строками таблицы, такие данные ячейки дополнительно обертываются в т.н. ограничители текста
Листинг файла DSV с разделителем: | и ограничителем текстового значения в виде двойных кавычек: " В зеленый цвет показана область, которая будет восприниматься, как одна ячейка даже при том, что она разбита на строки. Так будет происходить из-за того, что область обернута в ограничитель (в данном случае двойные кавычки) | |
Вывод, приведенного выше файла в программе OpenOffice Calc. Зеленая область соответствует зеленой области примера выше |
Разделителем называют какой-нибудь символ, который позволяет программе, интерпретирующей данные, узнать, где заканчивается одна ячейка табличной записи одной и той же строки и начинается другая. В примере, ниже приведен листинг текстового документа DSV, с разделителем – вертикальная черта: |
Листинг данных в формате DSV с разделителем вертикальная черта: | |
Разделителем может быть любой символ, в единственном числе, например, точка с запятой. В этом случае, запись данных будет выглядеть следующим образом
Листинг данных в формате DSV с разделителем вертикальная черта: ; |
Если какие-либо данные отсутствуют в ячейке, то разделители идут друг за другом без символов
Листинг данных в формате DSV с разделителем точка с запятой: ; и пустыми ячейками |
Таким образом, два разделителя, которые идут друг за другом образуют пустую ячейку таблицы, если вывести файл в программе Эксель или OpenOffice Calc
Строки текстовых документов DSV разделяются символом новой строки. Такой символ образуется автоматически, если нажать на клавишу enter в программе notepad++. Символ новой строки относится к символам, не имеющим графического вывода и поэтому он не виден в текстовых документах
Включение видимости символов, не имеющих графического вывода в программе NODEPADE_++ |
В программе NOTEPAD++ можно увидеть такие символы, если выбрать соответствующий режим видимости
В примерах выше такой символ показан записью: \r\n, а в примере ниже, в программе NOTEPAD++ такой символ будет показан черными квадратами с вписанными в них буквами: CR LF
Если в файле DSV, есть символы новой строки, которые при этом должны находиться в одной ячейке, то такую ячейку оборачиваются слева и справа в символ: ограничитель текстовой ячейки
Листинг данных в формате DSV с разделителем точка с запятой, в программе NOTEPAD++ Символы новой строки показаны: CR LF |
Если в файле DSV, есть символы новой строки, повторяются символы разделителя или самого ограничителя, но которые при этом должны находиться в одной ячейке, то такую ячейку оборачиваются слева и справа в символ: ограничитель текстовой ячейки
Для чего нужен ограничитель ячеек, если ячейка и так ограничена разделителем (см. главу Разделитель)? Действительно, ограничитель нужен не всегда. Но нужен обязательно, если в текстовых данных встречается символ разделителя, или символ ограничителя, или есть новые строки, но такие строки не нужно интерпретировать программе, как новые строки таблицы, такие разделители не нужно использовать для деления на колонки.
Три основных случая, для чего нужен ограничитель, представлены в таблице ниже: когда в ячейке встречаются символы новой строки, но это не строки таблицы; когда в ячейке встречаются символы разделителя, но это не разделитель и когда встречается символ ограничителя, но это не ограничитель
В приведенном примере видно, что одна ячейка таблицы содержит и символы новой строки (показаны зеленым цветом), и символы ограничителя – двойные кавычки, показаны розовым, и символы разделителя – точка с запятой – показаны синим. Если не обернуть такие данные в разделитель – двойные кавычки (или любой другой), то данные не будут размещены в ячейках, как показано в листинге ниже в примере |
В примере видно, что ограничитель позволил программе взять данные внутри, как одну ячейку, а не создать новые строки таблицы или ошибочно создать колонки новые колонки |
Символ экранирование – это символ, который позволяет экранировать разделители, если в файле CSV/DSV/TSV не указан символ ограничителя. Данный символ, в виду более узкого применения практически не используется, но всё еще является обязательным при парсинге формата. Если по в файле импорта символ экранирования не известен, то укажите символ обратного слеша: \
Чтобы узнать, какой разделитель используется в том или ином файле, откройте его в программе NOTEPAD++, и визуально определите, какой символ используется в качестве разделения колонок. На указанном примере – это символ точка с запятой
Чтобы узнать, какой ограничитель текста используется в том или ином файле, откройте его в программе NOTEPAD++, и визуально найдите символы, которые находятся внутри разделителей, но не являются частью данных. На указанном примере – это символ двойные кавычки
Чтобы узнать кодировку данных в файле, откройте файл в программе NOTEPAD++ и найдите, какая именно кодировка будет отмечена галкой, как на примере
Валидность формата – это соответствие формата спецификации, а точнее – соответствие упаковки данных внутри формата тем ожиданиям, которые есть от указанных данных.
Проверку валидности форматов CSV/DSV/TSV лучше всего осуществлять в программе OpenOffice Calc. Достаточно открыть файл, указав разделитель, ограничитель и кодировку, и увидеть результат парсинга этой программы - проверить таблицу, которая появится после открытия файла
При открытии файла CSV/DSV/TSV в OpenOffice Calc укажите 3 параметра: кодировку файла, разделитель, и ограничитель текста (на примере называется разделителем текста) | |
После открытия, убедитесь, что данные файла выведены в табличном виде, и не перемешаны |
В модуле также можно проверить валидность данных. Если, в указанной в примере области данные выводятся без «кракозябров» - кодировка установлена верно. Также, если таблица соответствуют ожиданиям от упаковки, то есть все данные находятся в своих ячейках, в нужных колонках, то файл валидный. Если что-то не соответствует, то нужно открыть файл в NOTEPAD++ или OpenOffice Calc и исправить файл так, чтобы файл стал валидным
После открытия файла в модуле, на Шаге 2, появится кнопка "Результат проверки файла". Кнопка раскрывает область, в которой в табличной форме приведена первая и последняя строка файла с данными. Если таблица не "сломана", в файле нет критических ошибок в упаковке данных. Если данные читабельные, то кодировка установлена верно |
Кодировка файла – любая, из числа возможных в php на данный момент. Полный список кодировок можно уточнить по этой ссылке
Название колонок файла и последовательность может быть любой. Единственное требование состоит в том, что колонки должны иметь разные названия. То есть двух колонок с названием Цена, быть не должно, какая-то из колонок в этом случае должна быть названа Цена 2
В названиях колонок могут присутствовать любые символы, они могут быть на любом языке
Наличие названий колонок в файле обязательно
Формат XLS - это формат записи файла, разработанный компанией Майкрософт. Проверка данного формата, осуществляется в программе Эксель или OpenOffice Calc. Если в этой программе файл не открывается, или открывается с ошибками, то парсинг такого файла, скорее всего, приведет к ошибкам. При использовании файла эксель, важно привести его к виду, при котором в шапке документа, а также по его сторонам будут отсутствовать лишние строки и колонки.
Форматы XLSX, YML - это разновидности базового формата XML. Проверять валидность этих файлов можно, отрыв их в редакторах XML, или в программе Эксель. Файл в формате YML можно также проверить, открыв его в браузере.
Формат XML, в т.ч. XLSX, YML вне зависимости от конкретного вида верстки имеет ряд требованиям к данным внутри тегов и атрибутов тегов. Базовые требования, приведены в таблице ниже
Символ | Должен присутствовать в данных в следующем виде |
& | & |
< | < |
> | > |
' | ' |
" | " |
Формат XML также, как и CSV, DSV имеет кодировку. Кодировка файла XML указывается в первой строке файла, как это показано ниже. Работать с кодировкой нужно также, как и при работе с кодировками в файлах CSV/DSV
Пример первой строки XML файла, в которой сообщается о кодировке данных этого файла |
<?xml version="1.0" encoding="utf-8"?> |
Оперативная память, устанавливается на хостинге в каждом тарифном плане до определенного предела. Будьте внимательны, даже, если Вы покупаете хостинг с высокой ОЗУ, совсем не обязательно, что данный размер памяти уже включен. Очень часто память стоит по дефолту, и установка памяти, доступной для сайта по тарифу, должна производиться самостоятельно. Установка памяти, как правило, происходит добавлением в файл .htaccess директивы:
php_value memory_limit 1024М
Будьте также внимательны, если на хостинге используется какой-либо обратный прокси-сервер (например, NGINX) и другие параметры, то они могут сужать память на определенных аппаратных участках. Например, общая память хотя и может составлять 256М, на каком-либо участке её размер может быть установлен в районе 64М. Устранять такие несоответствия нужно, в ходе работы на конкретном хостинге, путем обращения в службу технической поддержки. Как правило, такие ошибки отмечаются в работе кодом 500 или 502, или вообще никак не отмечаться в логе сервера.
При расчете памяти нужно иметь ввиду следующее. Если физический размер файла 1Мб, то в ОЗУ такой файл будет присутствовать объектом, или массивом PHP. Размер файла может вырасти от 2 до 20 и даже 50 раз в зависимости от тех или иных настроек хостинга и характера данных в файле (кириллические символы занимают значительно больше ОЗУ, чем латиница). Таким образом, при работе с файлом размером 100Мб, Вам может понадобится ОЗУ, как минимум, 256Мб, но на практике, с учетом того, как настраивается большинство хостингов, и какого рода данные находятся в файлах, не менее 1024Мб, или даже 4-10Гб.
Приобретать большой объем памяти сразу не нужно. В модуле реализованы ряд средств, которые позволяют снизить объем потребления ОЗУ. Таким образом, если памяти будет не хватать, в этом случае, можно четко рассчитать необходимый объем ОЗУ с учетом конкретного хостинга, файла и данных в нем
Время работы скрипта – это количество времени в секундах, которое будет отводиться хостингом на работу скрипта php. Время на работу скрипта выставляется, как правило, в файле .htaccess директивой:
php_value max_execution_time 640
Недостаток времени на работу, приводит к принудительной остановки хостингом работы скрипта. Как правило, после остановки, сервер уведомляет об этом ошибкой 504
Если на хостинге используется какой-либо обратный прокси-сервер (например, NGINX) и другие некоторые параметры, то они могут сужать время работы скрипта на определенных аппаратных участках. Например, время хотя и может быть установлено в пределах 600 сек, на которых участках работы сайта остановка будет происходить через 30 сек, и даже менее. Приведение в соответствие времени в этих параметрах осуществляется через обращения к специалистам службы поддержки хостинга
При расчете времени при работе модуля нужно иметь ввиду следующее. Если параметр нормы импорта (сколько строк с данными проходить за один раз) будет большой, но при этом в файле будет много колонок с разными данными, то, время его обработки будет значительное
Чтобы этого времени хватало на обработку одной порции, при большом количестве данных, устанавливайте небольшую норму импорта. Если же данных в файле немного (2-3 колонки и т.п.), то норма импорта может устанавливаться в несколько раз больше.
При этом, если ОЗУ много, то минимальная норма может быть 1000 строк, а максимальная 5000 строк, и вся работа будет происходить всего за 30 сек. Но если ОЗУ немного, то минимальная норма импорта должна быть установлена в районе 50, максимальная в районе 200, и время не менее 30 сек.
При работе с большими файлами (от нескольких десятков тысяч строк) не рекомендуется использовать т.н. шаред тарифные планы хостингов, т.к. на таких тарифных планах, заявленные по тарифу ресурсы, одновременно относятся ко всем сайтам, которые присутствуют в определенном сегменте. Таким образом, ресурсы постоянно будут меняться в зависимости от того, какие ресурсы будут потребляться в данный момент времени другими сайтами. Для работы с большими файлами, и большим объемом данных, на хостингах существуют т.н. тарифы: виртуальные сервера, или отдельные выделенные сервера, где ресурсы потребляются только теми сайтами, которые установлены и работают на данном конкретном виртуальном или выделенном сервере
Подбор ресурсов осуществляется администратором сайта, в зависимости от поставленной им задачи и с учетом того объема данных, который планируется использовать при импортно-экспортных операциях сервера.
Наиболее затратными по времени является работ с изображениями тогда, когда они закачиваются со сторонних серверов, обрезаются модулем при импорте, экспорте. При этом нужно учитывать, что время ответа сервера, с которого забирается изображение, может варьировать от десятых долей секунды на ответ, до десятков и более секунд на один ответ (на одно изображение). Влиять на это время невозможно. И длительные ответы могут быть связаны с частыми обращениями на эти сервера в короткий период времени, как происходит, когда за одну секунду может прийти запрос на 100 картинок.
При работе с изображениями, время работы скрипта может составлять от 10 изображений в одну секунду до 0,10 изображений в секунду (1 изображение за 10 секунд) и более.
Приобретая то или иной решение, у Вас на руках должен быть архив с файлом. Внутри архива, в корне папки присутствует файл readme.txt или install_gid.txt. Ознакомьтесь с инструкцией, которая находится в данном файле. Как правило, для установки нужно скопировать содержимое папки upload, расположенной в архиве, нужной Вам версии ОпенКарта в корень сайта. После чего, найти модуль в модулях, и активировать его. Для версий 5 и выше нужная регистрация продукта, как это описано в той же инструкции
Установка новой версии, как правило, требует перезаписи файлов предыдущей. Все модули имеют обратную совместимость. То есть каждая новая версия хранит все настройки, которые были сделаны в предыдущей версии. По этому обновление всегда безопасно и не приведет к потери данных о настройках.
Если какое-либо решение потребует своих специфических действий, то такие действия будут описаны в разделе "Обновление на новую версию" в файле readme.txt или install_gid.txt. Если такой раздел отсутствуют, то обновление происходит путем перезаписывания файлов предыдущей версии на файлы той, которая устанавливается.
Регистрация модуля происходит согласно условиям приобретения. Алгоритм регистрации описан в файле архива модуля readme.txt или install_gid.txt в разделе Регистрация продукта. Если у Вас возникли сложности с регистрацией, пожалуйста, свяжитесь с нами для их устранения
Вниманию пользователей, у которых установлена версия, которая не приобреталась или ранее приобреталась, но покупатель неизвестен. Для данного случая, существует процедура льготного приобретения новой версии. Скидка на модуль по этой процедуре составляет 50%
Действие | Скриншет | Примечание |
1. Зайдите в модуль импорта anyCSV/XLS | Название модуля может отличаться в зависимости от версии или сборки модуля | |
2. Создайте новый профиль настроек или загрузите ранее сохраненный | ||
3. Установите Разделитель, Ограничитель, Символ экранирования, Кодировку в соответствии с файлом (если Вы планируете загрузить файл в формате XLS, XLSX, то менять значения в этих настройках необязательно) Как узнать Разделитель, Ограничитель, Кодировку файла, показано в соответствующих разделах этой инструкции | Количество доступных кодировок может отличаться в зависимости от версии модуля | |
4. Загрузите файл или скопируйте ссылку на нужный файл в поле "URL ссылка на файл". При использовании ссылки нужно обязательно указать протокол: http или https Файл может быть заархивирован в архив zip Если файл не загружается, пожалуйста, проделайте действия, описанные в разделе "Ошибки при загрузке файла или подаче ссылки" Если ссылка не загружается, проверьте ссылку, как это указано в разделе "Источники данных: файлы, ссылки на файлы на других сайтах, авторизация, файлы в архиве", или в разделе "Ошибки при загрузке файла или подаче ссылки" Если Вы импортируете файл в формате XLS, XLSX, также смотрите следующий раздел | ||
5. Выставите дополнительные настройки перед начало проверки файла:
|
При импорте данных в формате XLS, XLSX (файлы эксель), дополнительно проделайте следующие действия
Действие | Скриншет | Примечание |
1. Выберите "Включено" | ||
2. Укажите количество колонок файла, и строк, которые следует обрабатывать | У некоторых версия модуля этот функционал отсутствует |
Действие | Скриншет |
Нажмите на "Проверить файл и загрузить данные для сопоставления" |
Если проверка файла, настроенного на Шаге 1 прошла, и принципиально данные получены. То перед Вам появится представление шага 2.
Наверху будет доступна функция: "Результат проверки файла"
Нажмите на кнопку "Результат проверки файла, и проверьте правильность полученных данных
Удостоверьтесь, что количество строк соответствует количеству строк входящих данных Удостоверьтесь, что найдено правильное количество колонок | |
Проверьте таблицу: колонки таблицы должны совпадать с колонками, импортируемого файла, а данные ниже должны соответствовать данным в последней строке файла Если какие-то данные не соответствуют данным файла, убедитесь, что все предыдущие шаги, а в особенности выставление кодировки, разделителей и ограничителей, проделаны верно Если у Вас возникают ошибки, к данному шагу не удается выйти, подробнее об ошибках смотрите в разделе Ошибки |
После получения файла импорта, модуль выводит файл как этого показано на следующем рисунке
Справа на рисунке файл расположен в программе Эксель Слева, показано, как колонки файла представляются в модуле. Для удобства настроек, название колонок подается не горизонтально, а вертикально. Под каждым названием колонки присутствуют данные из файла, по которым можно удостовериться, что данные парсятся правильно |
Справа от каждой колонки находится выпадающий список "Что импортируется"
Выберите сущность данных, для которой предназначена та или иная колонка файла и данные в ней. Если в колонке содержатся какие-либо данные для товаров, то выберите "Импорт товаров" |
После того, как будет выбрана сущность данных из колонки "Что импортируется", справа появится функционал импорта, доступный для той или иной сущности данных.
Укажите настройки на каждую колонку файла
После появление настроек импорта сущности данных, сделайте настройку на каждую колонку |
Подробнее о настройках, будет показано в следующих главах
Подробнее о базовых целях идентификации описано в разделе "Идентификация данных при обмене одних и тех же сущностей (продуктов, категорий, и пр.)"
В данном разделе описан алгоритм выставления идентификатора, импортируемым данным о товарах. Файл, используемый для импорта можно посмотреть здесь
Действие | Скриншет |
1. Откройте файл импорта в какой-либо программе, и выясните в какой колонке находится идентификатор товаров в файле. На примере справа, эта колонка называется "Артикул" | |
2. После действий, описанных в Шаге 1 и появления представления для настроек, на против колонки "Артикул" выберите Импорт товара, а в появившемся в колонке "Настройка колонки", выберите пункт "Идентификатор..." | |
3. Выберите, по какой колонке базы данных таблицы товара, проверять это значение Если в колонке с идентификатором находится то, что у Вас на сайте находится в колонке Артикул, то выбирайте SKU, если Модель (Код товара) - то выбирайте MODEL, если Вы импортируете product_id, то выбирайте product_id и т.д. Если для идентификатора Вы используете кастомное поле, добавленное в таблицу товара, то оно также появится в списке, показанном справа Также возможна идентификация по названию товара, или главной картинки товара | |
4. Выбирайте "добавить в базу", если при импорте (первом, например) нужно не только проверять, но и заводить это значение, если товар будет добавляться впервые | |
5. Если нужно пропускать строки файла, у которых отсутствует идентификатор, выберите пункт, показанный справа | |
6. Указание идентификатора закончено. В примере справа, выбрано, что идентификатор из файла находится в колонке Код товара (Модель), и при импорте, нужно заводить это у товара, если ранее такого товара не было |
Если необходимо при импорте добавлять префикс слева или справа, а также идентифицировать товары с учетом какого-либо префикса, то выставите эти настройки в области Шаг 1, как это показано на примере: установлен префикс слева: suppl_1_. В результате при импорте в данные Код товара будет добавляться: suppl_1_X
Где X - это значение, которое будет поступать из файла, колонки Артикул, если рассматривать пример выше. А suppl_1_1 - это префикс, который будет поступать из данный настройки
Установка префикса идентификатору | |
В результате, при импорте для строки, где в колонке Артикул (если рассматривать пример выше) стоит значение: 1, будет найден товар или создан товар со следующим значением в поле Код товара |
У каждой колонки в базе данных есть тип данных и длина. Например, в качестве product_id могут быть использованы только целочисленные значения до 2147683648. Для полей модель, SKU, EAN и пр. могут использоваться текстовые значения, но у каждого поля также есть ограничение по длине от 32 до 64 символов. Если Вы используете длинные текстовые артикула, увеличьте допустимую длину нужных Вам колонок в базе данных, например, изменив тип данных на text, или просто установив вместо заданной длины, длину: 255 символов. Изменить тип данных у колонок той или иной таблицы можно через phpMyAdmin Вашего хостинга. При работе с базой данной, пожалуйста, делайте бекап базы средствами того же phpMyAdmin
Импорт условно можно разделить на два вида: прямой импорт данных "как есть" в файле, и функциональный импорт, когда при перемещении данных из ячеек их нужно, дополнительно переработать: математически, логически и т.п.
В данном разделе рассмотрены настройки прямого импорта данных "как есть". В следующем разделе рассмотрены настройки функционального импорта
Пример настройки приведен для файла, который можно посмотреть здесь
Действие | Скриншет |
1. Проделайте действия из Шага 1, установите идентификатор данным, если нужно, как это описано в разделе "Установка идентификатора". В данном примере, идентификатор не устанавливается для простоты понимания смысла прямого импорта. После появления представления Шага 2, у каждой колонки файла найдите нужное соответствие и укажите его в настройках колонки Например, у артикула нужно найти и выбрать "SKU" | |
2. У цены по акции, нужно найти и выбрать Цену из группы настроек Специальные или Акционные цены | |
3. У колонки Количество, нужно найти и выбрать Количество | |
4. Чтобы приступить к импорту, в рубрике "Параметры профиля настроек" выберите нужный режим обмена данными (т.к. идентификации в данном примере не требуется, на примере, выбрано Добавлять все данные, как новые"). А также выберите настройки в шаге 3 и для старта импорта, нажмите "Начать импорт данных". Вы увидите счетчик импорта, значит импорт начался успешно Подробнее о режимах обмена, и Шаге 3 смотрите в следующих разделах | |
5. По завершению импорта появится окно об успешном завершении |
Если перед импортом нужно произвести какое-то действие с какими-то товарами, которых нет в файле, но есть на сайте, используйте эту настройку
Например, можно выключить определенные товары, или обнулить остатки у товаров по условию
Цель | Вариант настройки | Скриншет |
Обнулить остатки у товаров, у которых в модели (коде товара) слева есть префикс OS- | 1. Войдите в область настроек первого шага 2. Найдите настройку "Обработка перед импортом (обнуление остатков, цен, выключение определенных товаров)" 3. В колонке "Найти нужные товары, если поле товара..." укажите "Модель", в колонке "Оператор" - укажите "Содержит слева", в колонке "Значение" укажите: OS- (указывать нужно без пробелов и лишних символов, обратите внимание, что запрос будет регистронезависимый, то есть OS- тоже самое, что os-) 4. В настройку: "Установить все остатки, соответствующих товаров перед импортом" укажите тот остаток, который должен быть установлен всем товаром, с префиксом OS- слева в каждой модели (коде товара), например: 0 5. После данной настройки, в ходе импорта у всех товаров, у которых в модели (коде товара) будет присутствовать слева префикс OS- в поле количество товара будет добавлен нуль. | |
Выключить товары, у которых в модели (коде товара) слева есть префикс OS2- и одновременно остаток больше нуля | 1. Войдите в область настроек первого шага 2. Найдите настройку "Обработка перед импортом (обнуление остатков, цен, выключение определенных товаров)" 3. В колонке "Найти нужные товары, если поле товара..." укажите "Модель", в колонке "Оператор" - укажите "Содержит слева", в колонке "Значение" укажите: OS2- (указывать нужно без пробелов и лишних символов, обратите внимание, что запрос будет регистронезависимый, то есть OS2- тоже самое, что os2-) 3. В колонке "Найти нужные товары, если поле товара...", ниже укажите "Количество", в колонке "Оператор" - укажите ">", в колонке "Значение" укажите: 0 4. В настройку: "Отключить все соответствующие товары перед импортом" укажите "Включено" 5. После данной настройки, в ходе импорта у всех товаров, у которых в модели (коде товара) будет присутствовать слева префикс OS2-, и одновременно количество больше нуля, статус будет изменен на 0, то есть товар будет выключен и не будет показываться во фронтенде магазина |
Если при импорте необходимо не импортировать справочник категорий в файле (если таковой импортируется), а нужно перенести товары в категории сайта, которые должны соответствовать категориям в файле, проделайте следующие действия
Обязательное условие маппинга: в одной из колонок файла должны находиться категории, которые представлены вложенностью через какой-либо разделитель (подробнее о настройке категорий, представленных в виде вложенности (пути) в одной ячейки, можно найти в соответствующем разделе справки
Действие | Скриншет |
1. Откройте файл импорта (или перейдите к Шагу 2 импорта), чтобы найти название колонки, в которой находятся категории, представленные вложенностью 2. Скопируйте это название в точности, и запомните какой разделитель используется: на примере разделить слеш: /, а название: Каталог_чистый | |
1. Перейдите в область настроек Шага 1, и в области "Сопоставление категорий файла и категорий сайта" в левой колонке "Название колонки в файле с категориями, заданными путем" вставьте, скопированное название колонки. В правой колонке "Разделитель категорий внутри пути" укажите разделитель вложенности. 2. Нажмите на кнопку "Проверить файл и загрузить данные для сопоставления" | |
1. Если всё сделано, а также в файле есть указанная колонка, разделитель соответствует тому, которым переложены названия категорий, то появится область: Сопоставление категорий файла XML и категорий сайта 2. Сопоставьте категории файла и категории сайта | |
1. Сохраните настройки, нажав на "Сохранить профиль настроек" внизу. Подробнее о вариантах сохранения профиля, и Шаге 3, смотрите в соответствующих разделах |
Важное дополнение: не сопоставленные категории, будут заведены на сайте при импорте, если не указана настройка, которая позволяет переносить товары таких категорий в какую-нибудь временную, например, "Неразобранные товары"
В данном разделе будут рассмотрены некоторые частые случаи оформления данных во входящих форматов, и показаны примеры настроек модуля
В данном примере будет рассматривать этот файл-пример в формате XLSX
При работе с изображениями, модуль позволяет:
Картинки в файле записаны, например: https://shop.ocext.com/image/catalog/ocext_logo.png https://shop.ocext.com/image/catalog/ocext_logo.png Ссылки на картинки ведут на другой сайт, ссылки указаны с разделителем между собой, разделитель - пробел (разделитель может быть любой) Необходимо:
| |
1. Выполните Шаг 1, после появления представления настроек Шага 2, на нужно колонке выберите: Импорт товара (или импорт производителя, опции, категории, если Вы планируете импортировать эти сущности данных), далее найдите настройку "Дополнительные изображения" | |
2. Установите следующие значения в настройки:
|
Важное дополнение: если Вы используете эту настройки, но не в каждой ячейке картинок несколько. То есть в некоторых ячейках всего одна картинка всё равно указывайте разделитель. Если разделитель неизвестен укажите любой символ
Картинки в файле записаны, например: catalog/ocext_logo.png, catalog/ocext_logo2.png Картинки уже скопированы на сайт, в папку image Необходимо:
| |
1. Выполните Шаг 1, после появления представления настроек Шага 2, на нужно колонке выберите: Импорт товара (или импорт производителя, опции, категории, если Вы планируете импортировать эти сущности данных), далее найдите настройку "Дополнительные изображения" | |
2. Установите следующие значения в настройки:
|
Важное дополнение: если Вы используете эту настройки, но не в каждой ячейке картинок несколько. То есть в некоторых ячейках всего одна картинка всё равно указывайте разделитель. Если разделитель неизвестен укажите любой символ
Ознакомьтесь с разделом Дополнительные настройки импорта, чтобы узнать дополнительные возможности при импорте изображений: если нужна обработка изображений, или использование более быстрых способов скачивания
Ознакомьтесь с данным разделом, если необходим не прямой поколоночный импорта данный о категориях, а:
В данном примере будет рассматривать этот файл-пример в формате XLSX
Категории в файле, например, идут вложнностью(ями) по колонкам, например: Каталог/Техника/Стиральные машины Необходимо:
| |
1. Проделайте Шаг 1, установите идентитификатор товару, как это описано в соответствующей главе, найдите колонку(и), в которой располагаются категории, заданные вложенностью, через разделитель и выберите настройку: Импорт товара, Категории вместе с путем | |
1. В появившемся окне настроек, укажите:
|
Важное дополнение: как уже было сказано, для привязки товаров нужно, чтобы в соседних колонках описывались товарные данные. В этом случае, будет создан товар и будут привязаны созданные категории
Для импорта категорий, без привязки в товарам, используйте импорт сущности данных: "Импорт категорий"
Категории в файле, например, идут по колонкам уровнями, например:
Необходимо:
| |||||||
1. Проделайте Шаг 1, установите идентитификатор товару, как это описано в соответствующей главе, найдите колонку(и), в которой располагаются категории, заданные по-колоночно, и у каждой такой колонки выберите настройку: Импорт товара, Названия категорий с глубиной размещения | |||||||
1. В появившемся окне настроек, укажите:
| |||||||
1. Если необходимо подвесить категорию к какой-то уже имеющейся на сайта, то в позиции Родительская категория укажите такую категорию |
Помимо приведенных выше, есть и другие возможности импорта категорий, например:
Ознакомьтесь с данным разделом, если необходимо импортировать товару:
В данном примере будет рассматривать этот файл-пример в формате XLSX
Вариант импорта продуктовых атрибутов | Скриншет |
1. Проделайте Шаг 1, найдите колонку в представлении Шага 2, в которой будет находится одно из приведенных ниже оформление значений для импорта атрибутов 2. Выберите Импорт товара, и далее найдите область разных настроек импорта продуктовых атрибутов "Значение атрибутов товара" | |
1. Если в колонках идут только значения атрибутов, выбирайте настройку TEXT 2. Для привязки значения атрибута товара, нужно дополнительно выбрать атрибут и группу. Данные элементы могут быть выбраны из уже заведенных на сайте или созданы из названий колонок На примере справа выбрано, чтобы атрибут был создан из названия колонки "Состояние", а группа атрибутов была из числа уже заведенных на сайте (Характеристики) | |
1. Если в колонках идут только атрибуты и значения атрибутов, выбирайте настройку "Значение атрибутов вместе с названием атрибутов" 2. Для привязки значения атрибута товара, нужно дополнительно выбрать группу. Группа может быть выбран из уже заведенных на сайте или создана из названия какой-либо колонки На примере справа выбрано, чтобы группа атрибутов была из числа уже заведенных на сайте (Характеристики) В ячейке может находиться, как одна пара: атрибут---значение, так и несколько пар через разделитель. Разделители могут быть любые | |
1. Если в колонках идут вместе и группы атрибутов, и атрибуты и значения атрибутов, то выбирайте настройку "Значение атрибутов вместе названием группы, названием атрибутов, и значениями" В ячейке может находиться, как одна пара: атрибут---значение, так и несколько пар через разделитель. Разделители могут быть любые |
При работе с товарными, модуль позволяет:
В данном примере будет рассматривать этот файл-пример в формате XLSX
Вариант оформления продуктовых опций в файле и настройки для варианта | Скриншет |
1. Проделайте Шаг 1, найдите колонку в представлении Шага 2, в которой будет находится одно из приведенных ниже оформлений товарных опций 2. Выберите Импорт товара, и найдите область различных способов импорта товарных опций "Опции товара" | |
1. Выбирайте микроразметку 1, если в ячейках или по колоночно находятся следующие способы представления опций: checkbox|Размер|XXL|0|57|1|+|10|-|20|+|0|http://site.ru/img/sizexxl.jpg|sizecolor001299|SKU-112998---checkbox|Размер|XX|0|80|1|+|10|-|20|+|0|http://site.ru/img/sizexxl.jpg|sizecolor001299|SKU-112998 Где:
| |
1. Выбирайте микроразметку 2, если в ячейках или по колоночно находятся следующие способы представления опций: Размер|XL|+|10|51|http://site.ru/img/sizexxl.jpg|checkbox|sizecolor001299|SKU-112998---Размер|L|+|10|151|http://site.ru/img/sizexxl.jpg|checkbox|sizecolor001299|SKU-112998 Где:
| |
1. Выбирайте микроразметку 3, если в ячейках или по колоночно находятся следующие способы представления опций: Зеленый-100;Красный-0-150-1;Синий-64--1-0;Фиолетовый-12; Где:
| |
1. Выбирайте "Название значение опции", если в ячейках или по колоночно находятся названия значений опции 2. При выборе этого пункта, укажите Опцию, к которой нужно относить данные значения из числа уже заведенных на сайте |
Настройки | Скриншет |
|
При передачи цен в опциях, акциях, товарах цена может быть дополнительно обработана. В частности может производиться:
Примеры работы с ценой | Скриншет |
Если на какую-либо колонку ставится настройка, которая предполагает наличие цены, то Вы увидите следующую настоечную область | |
На примере показано, что каждое значение цены в файле будет проверяться на его попадание в интервал, после чего, если значение попадает в интервал оно будет умножиться и к нему будет прибавляться абсолютное число | |
Для конвертации цен на базе внутренних курсов ОпенКарт, в соответствующем шаблоне импорта, в области настроек Шага 1 нужно выбрать:
|
Важное дополнение: на основе цены товары могут выключаться, также доступны действия с определенными товарами, например, обнуление цен или количеств при начале импорта. Смотрите об этом в разделе справки Действия с группой товара перед импортом
При передачи количества товара, количество (статус количества) может быть дополнительно обработан. В частности может производиться:
Примеры работы с количеством | Скриншет |
Если на колонку файла ставится настройка, что это количество, то Вы увидите следующую настоечную область | |
На примере справа показано, как настраивается интерпретация текстовых состояний склада в количество Если какое-либо слово будет отсутствовать в настройке, то количество будет передано из числа того, которое указывается в настройке "установить количество" |
Важное дополнение: на основе количества товары могут выключаться, также доступны действия с определенными товарами, например, обнуление цен или количеств при начале импорта. Смотрите об этом в разделе справки Действия с группой товара перед импортом
Настройка | Скриншет с областью дополнительных настроек импорта товаров |
Установить количество всем товарам - Настройка позволяет установить то или иное число всем товарам, которые будут импортироваться по файлу. Количество у других товаров в ОпенКарте не изменится Товар включен, если количество больше или равно (например, если нуль - все будут включены) - Настройка позволяет включить только те товары, у которых количество (после импорта, если передается или вообще) будет больше или равно заданному. Например, если нужны только товары, у которых больше нуля, то установите 1. Изменение статуса будет только у тех товаров, которые обновляются в рамках файла. Прочие товары на сайте трогаться не будут Публикация данных после импорта - устанавливает нужно ли включать товары, которые импортируются или обновляются по файлу Генерировать seo_url - включает генерацию сео урла по правилам транслитерации поисковиков, если в рамках импорта будут переноситься названия. Генерация делается один раз. Если у товара уже заведен какой-либо сео-урл, то он не будет изменен при следующих обновлениях Не импортировать товары без картинок - если в какой-либо колонке будет указано, что импортируются изображения, и если изображения не будут получены с удаленного сервера, или будут отсутствовать на сайте, то при включении этой настройки, импорт таких данных в целом по строке не произойдет Загрузка изображений при помощи CURL - если картинки не загружаются или загружаются медленно, попробуйте включить этот способ получения изображений с удаленных серверов Переименовать названия папок - если импортируются изображения, у которых кириллические или прочие нестандартные названия файлов или папок, Вы можете привести эти данные в соответствие со стандартом URL, но обратите внимание, что длина файла и папок вместе не должна превышать 255 символов, как установлено в базе данных ОпенКарт на колонках image. Если длина будет превышать, то картинки загрузятся, но в базе данных будет сохранен не весь путь и картинки не отобразится | |
Обрабатывать изображение - используйте любое из данных полей, чтобы обработать изображения при импорте: сделать пропорциональное уменьшение и/или обрезать часть изображения |
После завершения действий на Шаге 1, и Шаге 2, для начала импорта необходимо сохранить профиль настроек
Перед сохранением настроек, придумайте название этому профилю и разместите его в "Название профиля настроек"
Выберите нужный режим сохранения
Режимы сохранения профилей настроек | Скриншет |
Доступно 3 режима сохранения:
|
Выберите нужный режим обмена данными, который будет действовать в рамках переноса данных по данному профилю
Режимы обмена данными | Скриншет |
Доступно 4 режима обмена данными:
|
Описание возможностей | Скриншет |
1. Перед началом импорта установите нужные параметры:
|
Действие | Скриншет | Примечание |
1. Войдите в модуль, во вкладку "Экспорт (конструктор выгрузки)". Загрузите, ранее сохраненный профиль настроек или создайте новый 2. Укажите Разделитель, Ограничитель и Кодировку файла. При необходимости выгрузки в формате, который сразу читается в программе эксель, укажите настройки, как на скриншете | ||
1. В области настройки "Файл данных", укажите название файла, в который требуется писать результат экспорта. В этой же области приведена полная ссылка на указанный файл. Файл появится, если экспорт пройдет успешно | Функционал и возможности экспорта могут варьировать в зависимости от версии | |
1. Выберите нужный язык контента, валюты, если требуется конвертация при экспорте, а также магазин |
Настройка первого шага завершена
Действие | Скриншет | Примечание | ||||||
1. Нажмите на знак "+" (1), чтобы добавить колонку будущего файла 2. Присвойте название каждой колонке (2) 3. Выберите каждой колонке, какие данные должны передаваться (3, 4) | Функционал и возможности экспорта могут варьировать в зависимости от версии | |||||||
1. Укажите различные фильтры, чтобы отобрать данные для файла из числа импортируемых 2. Обратите внимание на две возможности записи, связанных данных. Связанные данные - это такие данных, которые у товара не в единичном количестве. Например, цена у товара хранится в одной ячейке таблицы, а скидочные цены - это множество цен, которые относятся к одному и тому же товары. У товара может быть множество атрибутов, опций, категорий, дополнительных картинок.
| Функционал и возможности экспорта могут варьировать в зависимости от версии | |||||||
1. Сохраните, чтобы начать экспорт и сделать это в следующий раз по уже сохраненным настройкам 2. Не используйте сохранение, если Вам нужно выгрузить данные только сейчас 3. Установите с какой строки данных начать запись и количество строк, которые собирать за один раз, в зависимости от доступного на Вашем хостинге ресурса | ||||||||
После нажатия на кнопку экспорт данных, Вы увидите счетчик. Дождитесь окончания процесса. Если процесс не двигается длительное время, попробуйте уменьшить размер порции, а также ознакомьтесь с разделом Ошибки, Зависания и причины, и способы их устранения Файл экспорта Вы можете проверить еще до окончания процесса по ссылке, которую Вы задали на шаге 1, т.к. файл пишется порциями и это не помешает процессу в целом, но позволит увидеть результат еще до окончания |
При необходимости Вы можете автоматизировать те действия, которые производит модуль при клике на кнопку Начать импорт (в разделе Импорт данных) или кнопку Начать экспорт (в разделе Экспорт данных). По существу, автоматизация сводит с к тому, что вместо ручного нажатия и ожидания окончания процесс, пуск процессов происходит специальной защищенной ссылкой.
Ссылку можно запускать в браузере, или поставить её в планировщик хостинга для запуска процесса (ссылки) в автоматическом режиме с нужной периодичностью
Действие | Скриншет |
1. Войдите в таб "Настройки автоимпорта, автоэкспорта" 2. В позиции "Профиль настроек" выберите профиль настроек, действия по которому необходимо автоматизировать 3. В позицию "Защита ссылки - любое число или латинские символы. Без пробелов. Желательно от 6 до 12 символов" укажите защитный код, который защитит пуск процесс от несанкционированного запуска 4. В позиции статус выберите "Включить" 5. Нажмите "Сохранить"Сохранить профиль настроек" | |
После проделывания шагов выше появится 2 ссылки: одна, при пуске в браузере или через планировщик хостинга будет запускать импорт по соответствующему профилю, а другая экспорт по соответствующему профилю |
Ссылку, созданную, как это описано в предыдущем разделе, можно запускать в браузере, но также автоматизировать процесс, путем постановки задания на запуск ссылки в определенное время. На хостингах за такого рода автоматизацию отвечают т.н. планировщики. Наиболее популярным планировщиком является CRON. Узнайте, как автоматизировать работу с его помощью из данной справки. Однако точные параметры создания заданий на CRONe Вашего хостинга могут быть выяснены только в службе поддержки Вашего хостинга
Вариант задачи на CRON для ссылки | Средство запуска |
* * * * * curl --request GET 'ССЫЛКА_СКОПИРОВАННАЯ_ИЗ_МОДУЛЯ' * - задайте время запуска: первая звездочка минуты - от 0 до 60, вторая - часы от 0 до 23, далее: 1-31 (дни недели), 1-12 (месяцы), 0-6 (дни недели). Например, если необходимо запускать ссылку каждое утро понедельника в 10 часов, то вместо звездочек нужно указать: * 10 * * 1 curl --request GET - команда. На хостингах команды могут различаться, и список доступных команд может быть ограничен. Оставьте приведенную в примере команду без изменений, и если она "не пойдет", то обратитесь на хостинг за уточнением синтаксиса для ссылки в целом. '' - одинарные кавычки, в которых нужно указать ссылку ССЫЛКА_СКОПИРОВАННАЯ_ИЗ_МОДУЛЯ - ссылка, которую нужно скопировать из модуля (об этом рассказывается в разделе "Создание ссылки для автоматизации") | CURL |
* * * * * wget -O - -q -t 1 'ССЫЛКА_СКОПИРОВАННАЯ_ИЗ_МОДУЛЯ' * - задайте время запуска: первая звездочка минуты - от 0 до 60, вторая - часы от 0 до 23, далее: 1-31 (дни недели), 1-12 (месяцы), 0-6 (дни недели). Например, если необходимо запускать ссылку каждое утро понедельника в 10 часов, то вместо звездочек нужно указать: * 10 * * 1 wget -O - -q -t 1 - команда. На хостингах команды могут различаться, и список доступных команд может быть ограничен. Оставьте приведенную в примере команду без изменений, и если она "не пойдет", то обратитесь на хостинг за уточнением синтаксиса для ссылки в целом. '' - одинарные кавычки, в которых нужно указать ссылку ССЫЛКА_СКОПИРОВАННАЯ_ИЗ_МОДУЛЯ - ссылка, которую нужно скопировать из модуля (об этом рассказывается в разделе "Создание ссылки для автоматизации") | WGET |
Если количество данных много, то рекомендуется добавлять в ссылку параметр --max-redirect=1000, итоговая ссылка в этом случае будет выглядеть: * * * * * --max-redirect=10000 curl --request GET 'ССЫЛКА_СКОПИРОВАННАЯ_ИЗ_МОДУЛЯ'
Данный параметр разрешает пускать ссылку до 1000 раз. Это может понадобится, если, например, нужно обработать 1000 строк, а в позиции количество данных за один проход установлено 100. То есть нужно будет пустить ссылку 10000/100 = 100 раз
Не запускайте ссылку слишком часто. Данные должны успеть обработаться до следующего запуска полного запуска.
Большое количество данных требует от хостинга значительных аппаратных затрат, что может сказаться на работе сайта в целом
Для автоматизации используйте простые наборы операций: обновление остатков, цен. На самом деле, никто не даст гарантий, что входящие данные от поставщика не будут перемешаны или испорчены. По этому процессы добавления новинок, или обновления всех данных лучше делать в ручном режиме, под визуальным контролем процесса в целом
Для автоматизации используйте жесткие режим обмена: обновлять только имеющиеся данные. Это позволит более уверенно контролировать обмен.
Желательно делать бекап базы, как можно чаще, чтобы не потерять данные из-за различных непредвиденных отклонений во входящих данных
К этой группе ошибок относятся такие остановки в работе модуля, которые связаны с превышением лимитов по тарифу хостинга, или прочими случаями, когда в логе сервера сообщается проблема, требующая устранения в параметрах сервера.
Лог сервера - это файл, который ведется сервером отдельно от лога ОпенКарта, который доступен внутри панели администрирования ОпенКарта. Где расположен лог сервера нужно уточнять у специалистов службы поддержки хостинга
Ошибка | Вариант решения |
500 internal server error (внутренняя ошибка сервера) | В логе сервера найти информацию о том, что является причиной появления данной ошибки Некоторые частые причины описаны ниже |
500 internal server error: allowed memory size 134217728... Выделенной памяти ОЗУ, размером 128М недостаточно (цифра 128М, а точнее конкретное значение Вашего хостинга, можно получить, путем деления указанной в ошибке цифры на 1024 2 раза: 134217728/1024/1024 = 128) | 1. Увеличить ОЗУ по тарифу 2. Снизить размер количество строк при обмене (импорте, экспорте) 3. Уменьшить размеры файлов импорта до размеров, чтобы работа с ними не выходила за лимиты по тарифу хостинга |
500 internal server error: Fatal error | По данному типу ошибок, если из текста ошибки нет ясности, что её вызывает, Вам необходимо обратиться в нашу службу поддержки |
Остановка сервера и упоминание max_queries_per_hour, или max_connections_per_hour и т.п. | Данная ошибка, а также некоторые другие, с упоминанием базы данных и ограничений на количество обращений к базе данных во временной период, устраняется в параметрах сервера В параметрах, которые лимитируют количество обращений к базе данных во временной интервал должно быть поставлено такое, чтобы его хватило на обработку данных, с учетом их объема в указанный временной интервал. Если в файле 100 строк, и нужно завести дополнительно 200 тыс. связанных данных в таблицы базы этих данных, то в данном параметре должна стоять цифра, которая может рассчитываться так: 100 тыс. на проверку каждой сущности данных + 100 тыс. на импорт основных данных + 200 тыс. на импорт связанных данных, итого: не менее 400 тыс. в час. |
Остановка сервера и упоминание max_redirects | При использовании автообновления ссылкой, сервер не завершил работу, т.к. в данном параметре стоит число разрешенных пусков методов самого себя ниже, чем это требуется для завершения Расчет необходимого значения может быть произведен следующим образом: например, у файла 10000 строк, количество строк для одного прохода установлено 500. Соответственно в параметре: max_redirects должно быть установлено число, равное: 10000/500 = 20 Как правило, по умолчанию этот параметр на сервере равен 100 |
504 gateway time-out - сервер остановил работу из-за превышения допустимого времени работы скрипта по тарифу или из-за ограничения в параметре | Как правило, устраняется в файле .htaccess директивой: php_value max_execution_time 640 Где 640 - это число, которые Вы должны поставить исходя из максимум на своем хостинге. Число означает, что скрипту разрешено работать в пределах нормы 640 сек. Если изменение этого параметра вызывает 500-ую ошибку, или не влияет на время, его всё так же недостаточно и меньше, чем Вы указываете, то на хостинге есть более приоритетные параметры, которые не позволяют самостоятельно устанавливать эти значения. Обратитесь в службу поддержки хостинга, чтобы узнать, как увеличить время работы скрипта в max_execution_time |
504 gateway time-out nginx/1.10 | По данному типу ошибок, если из текста ошибки нет ясности, что её вызывает, Вам необходимо обратиться в нашу службу поддержки |
503 service unavailable | Данная ошибка, в контексте функционала актуальных версий модуля, не должна появляться. Для её устранения, во-первых, нужно перейти на версию модуля от 5-ой и выше. Если ошибка всё еще есть, то данная ошибка может быть связана с отсутствие поддержки со стороны хостинга, асинхронной работы сайта. А именно требование со стороны хостинга, чтобы данные поступали на сайт сразу без возможности подгружать AJAX'ом нужные функциональные контейнеры по мере работы с настройками |
502 bad gateway | Данная ошибка может возникать в связи с очень широким спектром превышений по лимитам хостинга. Как правило, такой ошибкой накрывается какое-либо превышение, о котором хостинг не может сделать уточнение. Узнать конкретную причину этой ошибки можно через специалистов службы поддержки хостинга |
Ошибка | Вариант решения |
При загрузке файла, появляется окно: Неправильный тип файла | 1. Войдите на страницу настройки магазина, вкладку Сервер 2. В закладке Сервер 3. В позицию: Разрешенные типы файлов добавьте строчку: csv 4. В позицию: Разрешенные типы файлов добавьте строчку: xls 5. В позицию: Разрешенные типы файлов добавьте строчку: xlsx 6. В позицию: Разрешенные типы файлов добавьте строчку: xml 7. В позицию: Разрешенные типы файлов добавьте строчку: yml 8. В позицию Разрешенные MIME типы добавьте новую строку: application/vnd.ms-excel 9. В ту же позицию - Разрешенные MIME типы, добавьте еще одну строку: csv/text 10. В ту же позицию - Разрешенные MIME типы, добавьте еще одну строку: text/csv 11. В ту же позицию - Разрешенные MIME типы, добавьте еще одну строку: application/vnd.ms-excel 12. В ту же позицию - Разрешенные MIME типы, добавьте еще одну строку: application/x-msexcel 13. В ту же позицию - Разрешенные MIME типы, добавьте еще одну строку: application/x-excel 14. В ту же позицию - Разрешенные MIME типы, добавьте еще одну строку: application/vnd.ms-excel 15. В ту же позицию - Разрешенные MIME типы, добавьте еще одну строку: application/excel 16. В ту же позицию - Разрешенные MIME типы, добавьте еще одну строку: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet 17. В позицию Разрешенные MIME типы добавьте новую строку: text/xml 18. В позицию Разрешенные MIME типы добавьте новую строку: text/yml 19. Нажмите Сохранить |
При загрузке файла, файл не появляется | 1. Возможно размер файла больше, чем разрешенный размер файла для файлов, загружаемых на хостинг. Узнать, как увеличить допустимый размер файла на хостинге, можно через специалистов службы поддержки хостинга 2. Возможно на папках сайта, как правило (если в config.php не была установлена другая папка), на папке system/storage/download/ выставлены права, которые не позволяют загружать файлы в эту папку |
При подаче файла ссылкой, я не вижу табличного представления данных, а вижу, примерно следующее: | 1. Неправильно выставлены разделители, или ограничители текстовых данных. Уточните какой разделитель и ограничитель, как это описано в соответствующих главах. Установите эти значения в настройке на Шаге 1, как это описано в соответствующих разделах 2. Возможно по ссылке поступает не файл. Даже, если при вызове ссылки через браузер, Вы получаете файл, на удаленном сервере может стоять защита на получение файлов по ссылке, если это делает не пользователь в браузере. Если при вызове ссылки файл начинает скачиваться (или открываться), а при подаче в модуле этого не происходит, уточните у поставщика требования к скачиваыемым по ссылкам файлам. Возможно Вам потребуется задать авторизацию. Если при вызове ссылки в браузере скачивания не начинается, Вы видите какой-то сайт, то данная ссылка не может подаваться, т.к. ведет не на файл, а на сайт - html документ. |
При загрузки файла или ссылки XLS, XLSX я не вижу табличного представления, а вижу примерно следующее: | 1. Вы не включили опцию "Загружается файл ЭКСЕЛЬ" 2. Не смотря на расширение файла XLS, XLSX, файл не представляет собой файл эксель. Чтобы убедиться, что файл действительно является эксель-файлом, откройте его в программе Эксель. Если при открытии Вы не получите окно, о том, что файл содержит проблемы, то обратитесь в нашу службу поддержки, чтобы помочь загрузить этот файл. Если же при открытии файла в экселе Вы получаете такое сообщение - что файл содержит какие-либо проблемы, то тем не менее откройте его в Эксель и пересохраните его из программы Эксель. После чего подайте этот файл в модуль |
Ошибка | Вариант решения |
Изображения не загружаются, но настройка "Картинка в виде ссылки (если поле содержит ссылку на картинку вместе с сайтом)" включена | 1. Если Вы загружаете несколько изображений, упакованных через разделитель, убедитесь, что разделитель путей в модуле установлен в соответствии с тем, которым переложены пути изображений в файле 2. Откройте, передаваемое изображение в браузере и убедитесь, что к нему есть доступ со стороны браузера - открыть должно именно изображение - не сайт 3. Откройте лог ОпенКарта, если в нем идут ошибки: file_get_contents timeout, file_get_contents 403 forbidden и т.п., то удаленный сервер перестал отдавать картинки Вашему сайту. В дополнительных настройках импорта, включите загрузку изображений с помощью CURL, если это не поможет, то нужно изменить ссылки на изображения, т.к. удаленный сервер "отказывается" передавать картинки в любом случае |
Изображения не появляются | 1. Если импорт изображений идет путями на сайте, убедитесь, что в файле находятся пути и картинки, которые уже есть на сайте. Для этого нужно вызвать страницу сайта и добавить к ней: мойсайт.ком/image/тут_путь_и_картинка_из_файла 2. Если выбран режим изменения названий папок и картинок, например, чтобы устранить названия папок и картинок, созданные не по стандарту (кириллические со спецсимволами), то возможно итоговый путь и файл стали длиннее 255 символов. Именно такое количество символом установлено по умолчанию в базе данных ОпенКарта на поле image в таблицах product_image, product. Измените тип этого поля на text или или уменьшите длину итоговых картинок и путей |
После кроппинга изображения постоянно уменьшаются | Если в дополнительных настройках импорта включена дополнительная обработка изображений, и опция "При скачивании картинок, обновлять картинки на этом сайте, если они уже скачивались. Если выключено, то картинки не будут скачиваться второй раз, ранее загруженная картинка останется не перезаписанной" - Выключите эту опцию, в этом случае, при импорте картинки, которые уже заливались на сайт, не будут дополнительно обрабатываться |
Ошибка | Вариант решения |
Дублируются сущности данных (товары, категории, производители) при импорте этих сущностей данных | 1. Неправильно указан идентификатор, или не указан вовсе, или у каждого товара, категории, или производителя свой идентификатор в строках. Ознакомьтесь с разделами в Общей информации, и в инструкции по тому, как выставлять идентификатор. Важно, чтобы у всех тех строк файла, которые должны быть объединены в одну сущность данных, должно присутствовать одно и то же значение, которое выбрано в качестве идентификатора. Так называемый один и тот же group_id 2. Неправильно указан режим импорте на Шаге 3. При выборе режима импорта "Добавить все данные, как новые". При данном режиме идентификаторы игнорируются, и все данные, при каждом импорте, добавляются, как новые. Включите более подходящий режим импорта |
Дублируются, связанные данные (атрибуты, значения опций, дополнительные изображения, категории, акции) внутри одного и того же товара или другой сущности данных | 1. Включите режим обновления, который позволяет удалять все аналогичные данные у соответствующего товара и т.п. При импорте в этом режиме, сначала очищаются все связанные данные, а данные, которые идут в файле, заходят, как новые. 2. Проверьте настройки и микроразметку, если данные как-то упакованы в ячейке |
Ошибка | Вариант решения |
При запуске ссылки автоимпорта или автоэкспорта через CRON возникает сообщение: exited with return code 3 | 1. Возьмите ссылку, которую ставите на CRON в одиночные кавычки, например: wget --max-redirect=100000 'мой_сайт/index.php?route=extension/feed/odmpro_update_csv_link&token=1111' 2. Если п. 1 не привел к результату, уточните у специалистов хостинга синтаксис передачи урла с GET параметрами на CRON, как это возможно на Вашем хостинге |
7. Программы для работы с CSV/DSV/XLS, если нужно скорректировать данные в файлах импорта
Для создания файлов CSV,DSV или файлов в формате XLS, XML, для предварительной проверки или дополнения файлов данными, Вам могут понадобиться программы, приведенные в этом разделе
Программа | Возможности | Где скачать |
OpenOffice Calc (распространяется бесплатно) | Бесплатный аналог программы Excel с расширенными возможностями по работе с файлами CSV/DSV/TSV Позволяет создавать CSV/DSV/XLS/XLSX в табличной форме и делать экспорт, импорт файла в любой кодировке, с любыми разделителями, и любыми ограничителями полей | Скачать |
NotePad++ (распространяется бесплатно) | Текстовый редактор, с синтаксической подсветкой Просмотр файлов XML, CSV, DSV и их редактирование этих файлов, как текстовых документов Перекодирование файлов в любых кодировки | Скачать |