Все настройки импорта можно сконфигурировать в одном PHP коде
Основные поля
Что бы заполнить основные данные используйте следующий код
$stock->value('--- Поле ---' , '--- Значение ---');
Доступные поля
parent - Категория объекта (Идентефикатор категории)
supervisor - Ответственный (Идентификатор сотрудника , если несколько то массив идентификаторов). Для продвинутой работы с ответственными можно использовать специальный метод
name - Название объекта
object_id - уникальный идентификатор объекта (Используется для импортов только новые, и новые + обновление уже импортированных) Можно не использовать, но тогда возможно только импорт всех объектов.
Дополнительные поля
Что бы заполнить доп. поля используйте следующий код
$stock->ext('--- id доп. поля ---' , '--- Значение ---');
для некоторых полей необходимо передавать специфически данные
геоточка array(x => :lat: , y => :lng:)
файл (ссылка на файл или массив ссылок)
Поле выбора да нет (1 - да , 0 - нет)
Адресные поля
Вы так же можете быстро прикрепить адресные поля используя специальный метод
$stock->address( /* полный адрес объекта */ );
Внимание! Данные метод необходимо вызывать только после установки основного свойства parent. А так же в нужном типе объекта должны быть настроены адресные поля
Если адресных полей несколько в типе объектов - то можно указать в какой имеено набор производить импорт данных. Для этого необходимо указать вторым аргументом куда производить импорт данных.
current - В текущий (основной) набор полей
all - Во все наборы полей
id поля - ID доп. поля (карта) к которму прикреплены адресные поля
Действия с полями в режиме “Новые + изменения”
При обновлении объектов в 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;
}
