Комплекс предназначен для управления содержимым интернет-магазина opencart из 1С 8.x

Без использования PHP.

Текст обработки 1С специально написан и прокомментирован таким образом, чтобы даже новичок в программировании 1С легко в нём разобрался.

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

Например, автоматическую выгрузку товара при его сохранении или коррекцию остатков по товару в случае его продажи/перемещения/поступления,

изменение цены при переоценке и т.п.


Важной особенностью технологии является прямые чтение/запись в базу данных MySQL сайта, без использования PHP.

Никаких файлов на сайт закачивать, и, тем более, заменять не нужно.

Обмен данными 1С с сайтом можно производить в любое время, вне зависимости от количества посетителей и их активности,

без потери производительности сайта.

Кроме того, реализована работа по расписанию, так что комплекс может работать "постепенно", закачивая только изменения.


ВНИМАНИЕ! Обработка 1С пока что работает исключительно в режиме обычного приложения.

Рекомендуем завести отдельного пользователя 1С для работы с сайтом.

В режиме Конфигуратора в меню "Администрирование" - пункт "Пользователи", выбираете нужного, вкладка "Прочие" и в нижней части выбор режима запуска

заменить "Авто" на "Обычное приложение".


Можно работать с оптовыми ценами.

Если создать группу покупателей с id = 3, то покупатели этой группы увидят оптовую и перечёркнутую розничную цену.

Выполнено в виде бессрочной акции для группы покупателей с id = 3.

id группы оптовых покупателей можно посмотреть в БД сайта (например, с помощью PHPMyAdmin) в таблице customer_group_description

в поле customer_group_id. Там же можно скорректировать id.


Комплекс вносит в БД сайта данные (наименование, описание и т.п.) на двух языках (id = 1 и id = 2, обычно это русский и английский).

Для двуязычных сайтов нужно понимать, где 1С должна брать тексты на втором языке.

##########################################################################################################################################################


Работа с картинками


##########################################################################################################################################################

Для корректного отображения картинок товара на сайте необходимо и достаточно выполнение двух условий:

1. Картинка должна лежать в определённой папке (например: 'image/catalog/kartinki') и называться КодТовара.jpg для основной картинки и КодТовара_1.jpg, КодТовара_2.jpg и т.п. для дополнительных. 

2. В базе данных MySQL сайта должны содержаться корректные пути относительно папки image из корня сайта. Например: 'catalog/kartinki/КодТовара.jpg'.
Информация об основных картинках хранится в таблице product, о дополнительных - в таблице product_image.
Нужно в настройках обработки указывать путь без имён файлов и крайних слэшей. Например: 'catalog/kartinki'.

Необходимо создать специального пользователя FTP (это делается в панели управления хостингом) для работы с 1С и назначить ему папку с картинками в качестве домашней директории, а также проследить, чтобы он обладал всеми необходимыми правами для работы в этой папке.


Если Вы получили сообщение об ошибке типа:

"Не удалось установить соединение FTP с заданными параметрами: {ВнешняяОбработка.oc1c.Форма.Форма.Форма(***)}: Ошибка при вызове метода контекста (УстановитьТекущийКаталог): Ошибка аутентификации при доступе к ресурсу:  **************** Access denied to remote resource"

то либо скачайте обновлённую версию обработки для Вашей конфигурации, либо проследите, что в коде обработки переменной "ПутьФТП" присваивается пустое значение, а строки, содержащие текст "УстановитьТекущийКаталог" закомментированы или отсутствуют.


 ##########################################################################################################################################################


Дополнительная информация


##########################################################################################################################################################

При вызове метода "oc1c.Category" посмотрите на код:


ЧислоСтолбцов = 1;

meta_title = "";

meta_descr = "";

meta_description = "";

meta_keyword = "";

seo_title =  "";

seo_h1 =  "";


Число столбцов - это количество столбцов в выводе категорий в главном меню.

Остальное - мета-теги.

Все любят по-разному их заполнять, и здесь Вы можете проставить значения, как Вам нравится.

В том числе можно подставлять вышеприведённые переменные (наименование и проч.).


Если Вы используете префиксы в кодах справочника "Номенклатура", обратите внимание на

функцию "ЗаменитьПрефиксы". Там типизированные префиксы заменяются на соответствующие цифры

для обеспечения гарантированной уникальности товара при экспорте.


##########################################################################################################################################################


Совместимость


##########################################################################################################################################################


Обработка 1С написана на платформе 8.3.

Внешняя компонента совместима с любыми версиями opencart, начиная с 1.5.4.1


##########################################################################################################################################################


Порядок установки


##########################################################################################################################################################


1. Разархивируйте файл в локальную директорию на сервере 1С, например: C:\oc1c\


2. Запустите командную строку (cmd.exe) от имени Администратора.

   Наберите: "regsvr32 БукваДиска:\ПутьКудаСкачали\oc1с.dll" и нажмите enter.

   После сообщения об успешной регистрации внешней компоненты cmd можно закрыть.


3. Запустите 1С.


4. Откройте обработку управления интернет-магазином (файл oc1с_***.epf).


5. Следуйте инструкциям системы для активации лицензии.


6. Перейдите на вкладку "Параметры подключения к БД".

   Заполните поля хост, пользователь, пароль, имя Вашей базы данных и её префикс.

   Всё это смотрите в файле config.php в корне сайта (только поле "хост" может отличаться,

   в зависимости от Вашего случая подключения к базе данных сайта).

   Там же введите реквизиты FTP-доступа для экспорта картинок.

   Указанный пользователь должен обладать правами на запись в директорию с картинками на сервере магазина.

   Сохраните настройку формы, чтобы не вводить каждый раз эти поля.


7. Если у Вас веб-сервер на одной машине с 1С, то Вы уже можете управлять своим магазином.


##########################################################################################################################################################


Настройка доступа к базе данных сайта


##########################################################################################################################################################


Вариант 1: сайт находится на хостинге.


Некоторые хостинг-провайдеры разрешают прямое чтение и запись в БД MySQL сразу (например, 1gb.ru, reg.ru и большинство заграничных),

некоторые по запросу (например, masterhost.ru), некоторые не разрешают вовсе (например, nic.ru).

Если Ваш провайдер разрешает, настройте в панели управления хостингом доступ к Вашей БД.

Если Ваш сервер 1С имеет статический IP, то в целях безопасности желательно разрешить внешний доступ к БД только с этого адреса.

Если хостинг-провайдер не открывает прямой доступ на порт MySQL, то можно воспользоваться технологий SSH-туннелинга.

Вам следует уточнить реквизиты SSH-доступа к Вашему сайту и установить туннель с помощью SSH-клиента, например PuTTY (putty.org.ru).

Недостатком этого способа является то, что при проблемах с интернет-соединением сеанс обрывается и его часто приходится восстанавливать вручную.


Вариант 2: сайт находится на VDS/VPS. Этот вариант может быть быстрым, если на том же или "соседнем" VDS будет работать Ваша 1С.


Здесь у Вас свой собственный сервер Веб и СУБД, поэтому Вы можете множеством способов организовать доступ к базе данных,

в зависимости от Вашей операционной системы, требований к надёжности и скорости передачи данных.

Лучше всего открывать порт только для IP-адреса сервера 1С.

Можно настроить VPN.


Вариант 3: у Вас есть свой сервер. Самый быстрый вариант (до 100 товаров в секунду).


Если на одной машине иметь и 1С, и сервер СУБД, то скорость экспорта товаров на сайт ощутимо возрастает.

Наступает ситуация, когда скорость импорта/экспорта ограничивается уже не сетевыми каналами, а производительностью самой 1С.

Однако нужно понимать, что при ненадлежащей защите, сайт могут взломать злоумышленники и получить доступ к 1С.

А данные, содержащиеся в 1С, нередко очень ценны и конфиденциальны.

Идеальный с точки зрения скорости и надёжности передачи данных между 1С и сайтом вариант - размещение сервера 1С и веб-сервера

на двух разных машинах, но в одной локальной сети.

Также можно использовать виртуальные машины.


##########################################################################################################################################################


Ошибки


##########################################################################################################################################################


Иногда обработка выдаёт ошибку, содержащую текст: "MySQL server has gone away".

Тот же случай при использовании SSH-клиента (например, Putty), текст: "server unexpectedly closed network connection".

Обычно это происходит, когда сайт находится на хостинге или на неверно настроенном VDS.

Причины могут быть разные: тайм-аут, политика хостинг-провайдера, настройки MySQL-сервера и т.п.

Для того, чтобы решить эту проблему "локально", здесь и сейчас, достаточно перезапустить обработку 1С или нажать на кнопку "(Пере)подключиться к БД"

на вкладке "Параметры подключения к БД сайта". Однако проблема будет повторяться.

Для того, чтобы решить её "раз и навсегда", нужно разбираться в причинах и консультироваться с хостинг-провайдером.


В некоторых случаях пробему "MySQL server has gone away" можно решить увеличив таймаут ожидания активности в сеансе подключения к MySQL.

Для этого в коде обработки после вызова метода DBLogin (ПодключитьсяКБД) достаточно добавить следущие строки:


    Сообщить(oc1c.ВремяОжидания);

    oc1c.ВремяОжидания = 3600;


Первая строка даст Вам понять, какое таймаут ожидания активности установлен глобально для сервера MySQL хостинг-провайдером,

вторая - поможет установить желаемый таймаут для Вашего сеанса подключения к СУБД.


В любом случае причины возникновения этой проблемы лежат за пределами обработки 1С и библиотек dll.

Доказано, т.к. есть живой верно настроенный VDS с сервером 1С в 2000 км и всё работает, как часы, в режиме 24х7х365.


Если текст ошибки содержит "You have an error in your SQL syntax", скопируйте ВЕСЬ текст ошибки и пришлите на mail@oc1c.ru и support@oc1c.ru


##########################################################################################################################################################


Помощь в установке и настройке библиотеки, настройке доступа к БД, предложения по доработкам.


##########################################################################################################################################################


E-mail: mail@oc1c.ru, support@oc1c.ru


##########################################################################################################################################################

Демо-комплекс для ознакомления будет работать, но размещать в нескольких местах Вашего сайта ссылку на ресурс http://oc1c.ru

Для коммерческого использования комплекса приобретите лицензию.


Программа распространяется "как есть".

Автор не несёт ответственности за порчу или удаление критически важных данных пользователя, за убытки или недополученную прибыль.