.
19 февраля 2013

Битрикс — конвертация Веб Форм

posted in Bitrix |

Итак, исходная задача — перенести блок «Вопрос-Ответ» на платформу Битрикс с имеющимися данными.
Для работы с таким типом данных я выбрал компонент «Веб-Формы», наиболее подходящий, с моей точки зрения, для реализации задачи.
Так же, дабы не изобретать велосипеда, решил погуглить и как результат — статья о создании системы «Вопрос-Ответ» на «Веб-Формах» в 6-ти частях — 100% попадание. Как хорошо, что есть на свете интернет :)
Поискал ещё в маркете готовое бесплатное решение — но не нашел, хотя говорят они есть и много.

Сделал всё по инструкции и ... о чудо — заработало с первого раза :)

Далее сваял небольшой парсер нужного мне материала, далее вроде как всё просто — пихаем его в Битрикс средствами API.
Но, тут всё же нашлось пару неприятных моментов:

1. Обращаю внимание на массив значений ответов — form_text_1, form_text_2, form_textarea_3 — названия переменных строятся из места положения на форме и типе даннах.
2. Форму и статус меняем уже после создания результата CFormResult::Add

		// ID веб-формы
		$FORM_ID = 1;

		// массив значений ответов
		$arValues = array (
		    "form_text_1"	=> $ar['user_name'],
		    "form_text_2"	=> $ar['user_mail'],
		    "form_textarea_3"	=> $ar['quest'],
		);

		// создадим новый результат
		if ($RESULT_ID = CFormResult::Add($FORM_ID, $arValues))	{
		    echo "Результат #".$RESULT_ID." успешно создан";

                    	//Обновляем поле наш ответ у результата веб-формы с id=RESULT_ID
			$FIELD_SID = "our_answer"; // символьный идентификатор вопроса
                	CFormResult::SetField($RESULT_ID, $FIELD_SID, $ar['answer']);
			//обновляем статус веб формы на ОТВЕТ
                	$STATUS_ID = $QA["ID_STATUS_A"]; // ID статуса "Опубликовано"
                	CFormResult::SetStatus($RESULT_ID, $STATUS_ID);
		}
		else	{
		    global $strError;
		    echo $strError;
		}

3. Для приведения в порядок даты создания 'DATE_CREATE', к сожалению API не помог и пришлось напрямую «долбить» в БД, приведу кусочек кода

   ......
   $query = "UPDATE `b_form_result` SET `DATE_CREATE` = '".$f['year']."-".$f['month']."-".$f['day']." 12:00:00' WHERE `b_form_result`.`ID` =".$f['resid'].";"
   ......

Собственно, всё.
Надеюсь статейка кому-то да сгодиться.

Яндекс.Метрика