Изменение API синхронизации с 1С
1C Хук (1C Hook) - это PHP функция, которая перехватывает на себя выполнение заводских функций PHPShop API 1C синхронизации, дающая возможность "на лету" перехватывать данные и видоизменять их вывод, добавлять новые возможности, управлять настройками API.
Дизайн Хуки применимы только к функции 1С-Синронизации и к папке /1cManager/
.
Добавления произвольного поля в 1С-выгрузку
Для выгрузки дополнительной информации в интернет-магазин необходимо в режиме выгрузки товаров в запущенном 1С-обработчике перейти на вкладку "Дополнительные параметры" и добавить в таблицу определение выгружаемого значения, где:
Наименование - произвольное представление значения;
Выражение - произвольное выражение на языке 1С, по которому может быть вычислено значение.
Например, для заполнения на сайте значения "Старая цена" и при наличии в 1С типа цен "Маркетинговая" достаточно указать выражение как на скриншоте.
1С Хуки доступны только для 1С версий 8.2 и 8.3.
Файл-приемщик 1С хука
На стороне сайта нужно создать файл-приемщик 1С хука, в котором закладывается PHP часть учета нового поля.
Позиционировании активации в функции
Хуки 1С синхронизации располагаются в папке 1cManager/hook/
Для быстрого включения/выключения хука нужно поставить знак решетки #
перед в его имени, пример:
#hook.php; - выключен
hook.php; - включен
Пример файла для выгрузки старой цены
Функции хука
Список функций
mod_option() - функция, задающая общие параметры файла загрузчика номенклатуры. Строкой
$GLOBALS['option']['sort'] = 18;
мы переносим идентификатор колонки характеристики на одну вправо, используя 17 колонку под свои нужды. Структура транспортного CSV файла обмена четко упорядоченная и каждому столбцу относится тот или иной параметр в базе 1С (наименование, цена и т.д.). Начиная с 17 столбца идет динамическое указание характеристик без четких границ по длине. Этим и пользуется система 1С-хуков, сдвигая колонки характеристик вправо, освобождая колонки для учета дополнительных колонок в выгрузке.mod_update() - функция, выполняющаяся для каждого товара (строки CSV) при обновлении его данных, это происходит когда товар найдет в БД магазина по артикулу.
mod_insert() - функция, выполняющаяся для каждого товара (строки CSV) при создании нового товара.
mod_end_load() - функция, выполняющаяся в конце обработки всего файла.
Аргументы функций
$CsvToArray
- массив данных строки(товара), образованный при разборе строки на составляющие, разделенные ; По ключу массива можно получить доступ к любым данным. В нашем случаи$CsvToArray[17]
будет иметь значение новой цены.$class_name
- имя перехваченного класса$func_name
- имя перехваченного метода
Возврат значений
Функции должны возвращать часть SQL запроса на добавление/редактирование элемента. В нашем случаи, это строка return "price_n='". $CsvToArray[17] . "', ";
, добавляющая учет параметра price_n
, отвечающего за старую цену товара.
Предустановленные хуки
В папке 1cManager/hook/
содержатся следующие хуки:
addfiles.php
- выгрузка прикрепленных к товарам файловaddoldprice.php
- выгрузка старой ценыjson.php
- выгрузка дополнительных полей товаров в формате JSONoption.php
- выгрузка дополнительных полей товаров для модуля Product Optionbarcode.php
- выгрузка штрихкода для модулей Ozon.Seller и Яндекс.Маркет
База 1С-хуков
Выгрузка штрихкода из УТ 11
Активируем модули Ozon.Seller и Яндекс.Маркет.
Выражение отбора для 1С
В настройках 1С УТ 11.3 обработчика в дополнительные параметрах добавляем поле с именем Штрихкод
и следующем содержанием:
В настройках 1С УТ 11.4 обработчика в дополнительные параметрах добавляем поле с именем Штрихкод
и следующем содержанием:
Файл-приемщик на сайте
В папке 1cManager/hook/
следует переименовать файл #barcode.php в barcode.php
Выгрузка файлов товара
Если в 1С в товаре прикреплены дополнительные файлы (инструкции, сертификаты и т.д.), то можно их выгрузить на сайт и так же прикрепить к товару.
Настройка в 1С
В настройках 1С обработчика в основных настройках выгрузки товара ставим галочку выгружать прочие присоединенные файлы
.
Файл-приемщик на сайте
В папке 1cManager/hook/
следует переименовать файл #addfiles.php в addfiles.php
Last updated