Все настройки импорта можно сконфигурировать в одном PHP коде
Основные поля
Что бы заполнить основные данные используйте следующий код
$stock->value('--- Поле ---' , '--- Значение ---');
Доступные поля
parent
- Категория объекта (Идентификатор категории)
supervisor
- Ответственный (Идентификатор сотрудника , если несколько то массив идентификаторов). Для продвинутой работы с ответственными можно использовать специальный метод
name
- Название объекта
object_id
- уникальный идентификатор объекта (Используется для импортов только новые, и новые + обновление уже импортированных) Можно не использовать, но тогда возможно только импорт всех объектов.
Дополнительные поля
Что бы заполнить доп. поля используйте следующий код
$stock->ext('--- id доп. поля ---' , '--- Значение ---');
для некоторых полей необходимо передавать специфически данные
гео точка array(x => lat , y => lng )
файл (ссылка на файл или массив ссылок)
Поле выбора да нет (1 - да , 0 - нет)
Действия с полями в режиме "Новые + изменения"
При обновлении объектов в CRM при импорте можно оставить без изменения нужные поля объекта
$stock->synhignore(/* название совйства : 'name' или id доп свойства */ , /* flag (true - не менять свойство , false - менять) (если параметр не указан вернет текущее состояние) */)
(supervisor) Ответственный
Для поиска и добавления ответсвенного.
Для получения текущего значения
$stock->supervisor();
Для поиска и прикрепления ответственных к объекту
$stock->supervisor($search_string , $index);
$search_string
- Строка поиска (ФИ(О) или телефон сотрудника)
$index
- Индекс найденного сотрудника
false - Все найденные сотрудники
0 - Первый найденный сотрудник
-1 - Последний найденный сотрудник
1+ - Индекс найденного сотрудника
Поля в xml
Доступ к полям осуществляется следующим кодом
$object_node->get(/* путь до поля в XML например : 'property' */)
Возвращается объект у которого есть след методы
get
- Получить массив со всеми данными (Тк по пути может быть несколько значений , например фото), можно передать индекс , например get(0)
- Вернет первое значение , get(1)
- Вернет второе значение и т. д. , можно использовать get(-1)
что бы получить последнее значение
eq
- Сравнить значения в xml с другим значением например
if ($object_node->get('property')->eq('test')) { /*Код будет выполнен если в xml по пути property хотя бы одно значение равно test*/}
if ($object_node->get('property')->eq('Test' , true)) { /*Код выполнится*/}if ($object_node->get('property')->eq('test' , true)) { /*Код не выполнится*/}
one_of
- Проверка на совпадение с несколькими значениями, похож на метод eq
. Например
if ($object_node->get('property')->one_of('test' , 'test2' , 'test3')) { /*Код будет выполнен если в xml по пути property хотябы одно значение равно test или test2 или test3*/}
Так же первым параметром можно передать true , что укажет методу что проверку нужно проводить регистрозависимую, например в поле property у нас Test
if ($object_node->get('property')->one_of('test' , 'test2' , 'test3')) { /*Код выполнится*/}if ($object_node->get('property')->one_of(true , 'test' , 'test2' , 'test3')) { /*Код не выполнится*/}
Пример кода
$stock_parent = false;$stock_type = false;if ($object_node->get('Category')->one_of('Квартиры','Комнаты')) { $stock_type = 1; $stock_parent = 3;} else if ($object_node->get('Category')->one_of('Дома, дачи, коттеджи','Земельные участки')) { $stock_type = 3; $stock_parent = 8;}if ($stock_parent) { $stock->value('parent' , $stock_parent); $stock->value('object_id' , $object_node->get('Id')->get()); if ($x = $object_node->get('Latitude')->get(-1)) { if ($y = $object_node->get('Longitude')->get(-1)) { $stock->ext(487 , array('x' => $x , 'y' => $y)); } }} else { $stock->ignore = true;}