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

Обработка адаптирована под конфигурацию "Торговля и склад 9.2".


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

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

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

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

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


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

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

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

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


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

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

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

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

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


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

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


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


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


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


Комплекс тестировался на релизе ТиС 7.70.986 и opencart 2.1.0.2 rs1.

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


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


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


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


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


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

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

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


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


4. Откройте обработку управления интернет-магазином (файл oc1c_77_tis_9.2.ert).


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


6. Перейдите на вкладку "Настройки".

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

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

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

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


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


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


Особенности обработки


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


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

Если Вы используете текстовый тип кода для справочника "Номенклатура", но готовы перейти на использование числового - обращайтесь на mail@oc1c.ru и

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

Если такой возможности у Вас по каким-либо причинам нет, обратите внимание на функцию "ЗаменитьПрефиксы(Код).

Составьте полный список используемых Вами префиксов и внесите соответствующие правки в функцию.

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

В настоящий момент обработка отбрасывает лидирующие нули от кода товара в 1С и использует результат в качестве поля product_id в соответствующих

таблицах БД сайта.

В ТиС 9.2 отсутствуют картинки товаров, поэтому они должны заливаться на сервер сайта вручную.

В БД сайта ссылка на картинку прописывается в виде data/Путь/123456.jpg или catalog/Путь/123456.jpg (в зависимости от версии opencart),

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

При необходимости эту схему можно изменить средствами 1С.


В поле model записывается код товара, поэтому на сайте можно осуществлять поиск по коду товара из 1С с отброшенными лидирующими нулями.

При необходимости можно изменить это, как требуется.

Обратите внимание на методы oc1c.UploadProduct и oc1c.Category.

В них передаются параметры, некоторые из которых закрыты т.н. "заглушками".

Например, в качестве мета-тегов используется просто наименование товара и т.п.

Производитель также закрыт заглушкой, т.к. в стандартной поставке ТиС 9.2 такое понятие отсутствует.

Вы легко можете адаптировать эти методы средствами 1С в соответствии с Вашими задачами.

Описание товара на сайте формируется из поля "Комментарий" на вкладке "Дополнительно" карточки товара.

Поддерживаются HTML-теги.


Для работы с импортом заказов нужно внести конфигурационные изменения путём замещения или объединения конфигураций из прилагающегося файла oc1c_77.md

в составе поставки комплекса.


Блок управление модулем "Рекомендуемые" временно деактивирован в связи с большим количеством отличий схемы его взаимодействия с БД сайта в зависимости от

версии opencart - универсальный механизм пока не разработан.

В случае, если кому-то очень нужно - оставляйте заявку с указанием Вашей версии opencart.


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


Планируемые улучшения


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


В будущем планируется улучшить функционал обработки.


В частности:


- работа по расписанию

- фильтры экспорта (учитывать остатки только на определённых складах, (не)выгружать товары с нулевой или пустой ценой или остатком 0, отсутствующей

  картинке, с пустым артикулом и т.п.

- экспорт свойств в качестве атрибутов

- механизм автоматического снятия товаров с публикации в случае нулевого остатка на складе

- универсализация блока управления модулем "Рекомендуемые"

- разработка метода для выгрузки опций, влияющих на конечную цену товара


и многое другое...

В общем, планируется к реализации весь функционал, который уже реализован для 1С 8.х УТ 10.3, УТ 11.2, Розница 2.1.

Пока не реализовано в связи с низким спросом на комплекс для ТиС 7.7 и относительно скромными пожеланиями заказчиков.

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

код обработки открытый, понятный и хорошо прокомментирован.


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


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


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


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


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


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

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


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

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