Оновлення властивостей інфоблоку, Олексій Валєєв
У процесі розробки часто доводиться програмно оновлювати значення властивостей елементів інфоблоку. Під катом невелика шпаргалка по api-функцій для вирішення цього завдання і форматів даних, що передаються в них.
Api-функції
Оновити властивості можна за допомогою 4 функцій: CIBlockElement::Update — оновлення полів та властивостей елемента CIBlockElement::SetPropertyValueCode — оновлення однієї властивості CIBlockElement::SetPropertyValues — оновлення однієї або всіх властивостей CIBlockElement: :SetPropertyValuesEx — оновлення довільної кількості властивостей елемента
Для більшості випадків найзручнішою є функція SetPropertyValuesEx. Саме її я і використовуватиму як приклад, описуючи формат $value для одиночних, множинних і властивостей з описом.
Рядок, прив'язка до файлу на сервері
Для якості "Прив'язка до файлу на сервері" як значення передається шлях від кореня сайту, існування файлу не перевіряється.
Число, прив'язка до елементів, прив'язка до розділів, прив'язка до користувача
При оновленні властивості типу «Число» не перевіряється значення і можна записати будь-який рядок. Для інших типів передається id відповідного об'єкта та перевіряється його існування.
Як значення необхідно передавати id варіант списку. Коректність даних перевіряється, якщо не встановлено параметр DoNotValidateLists під час виклику функції.
Дату потрібно передавати у форматі "dd.mm.yyyy hh:mm:ss". Валідації даних немає і запишеться будь-який рядок, але при спробі зберегти елемент через адмінку відбудеться помилка "Неправильний формат Дати/Часу".
У масиві обов'язково має бути елемент із ключем «TYPE» і значенням html\text .
При множинізначенні потрібно заповнювати DESCRIPTION, у разі одиночного можна передавати.
Прив'язка до картки Google Maps, прив'язка до Яндекс.Карти
Значенням є координати точки через кому.