среда, 1 июня 2016 г.

Создание инфоблока "экзамены" . 1С Битрикс API

- Инфоблок "Расписание экзаменов" 
- Свойства для элементов этого инфоблока: 
- "Аудитория" тип целое число 
- "Преподаватель" тип строка 
- и 5 элеметов этого инфоблока с заполнеными полями: 
- Название (стандартное поле инфоблока) 
- Аудитория
- Преподаватель 
- Дата начала (стандартное поле инфоблока) 

__________________________________________



<?php

CModule::IncludeModule("iblock");

$ib = new CIBlock;

$IBLOCK_TYPE = "newb"; //тип инфоблока

$SITE_ID = "s1"; //сайт


// Настройка доступа

$arAccess = array(

"2" => "R", // Все пользователи

);

if ($contentGroupId) $arAccess[$contentGroupId] = "X"; // Полный доступ

if ($editorGroupId) $arAccess[$editorGroupId] = "W"; // Запись

if ($ownerGroupId) $arAccess[$ownerGroupId] = "X"; // Полный доступ


$arFields = Array(

"ACTIVE" => "Y",

"NAME" => "Расписание экзаменов",

"CODE" => "tm",

"IBLOCK_TYPE_ID" => $IBLOCK_TYPE,

"SITE_ID" => $SITE_ID,

"SORT" => "5",

"GROUP_ID" => $arAccess, // Права доступа

"FIELDS" => array(


// Символьный код разделов

"SECTION_CODE" => array(

"IS_REQUIRED" => "Y",

"DEFAULT_VALUE" => array(

"UNIQUE" => "Y",

"TRANSLITERATION" => "Y",

"TRANS_LEN" => "30",

"TRANS_CASE" => "L",

"TRANS_SPACE" => "-",

"TRANS_OTHER" => "-",

"TRANS_EAT" => "Y",

"USE_GOOGLE" => "N",

),

),

"DETAIL_TEXT_TYPE" => array( // Тип детального описания

"DEFAULT_VALUE" => "html",

),

"SECTION_DESCRIPTION_TYPE" => array(

"DEFAULT_VALUE" => "html",

),

"IBLOCK_SECTION" => array( // Привязка к разделам обязательноа

"IS_REQUIRED" => "N",

),

"LOG_SECTION_ADD" => array("IS_REQUIRED" => "Y"), // Журналирование

"LOG_SECTION_EDIT" => array("IS_REQUIRED" => "Y"),

"LOG_SECTION_DELETE" => array("IS_REQUIRED" => "Y"),

"LOG_ELEMENT_ADD" => array("IS_REQUIRED" => "Y"),

"LOG_ELEMENT_EDIT" => array("IS_REQUIRED" => "Y"),

"LOG_ELEMENT_DELETE" => array("IS_REQUIRED" => "Y"),

),


// Шаблоны страниц

"LIST_PAGE_URL" => "#SITE_DIR#/tm/",

"SECTION_PAGE_URL" => "#SITE_DIR#/tm/#SECTION_CODE#/",

"DETAIL_PAGE_URL" => "#SITE_DIR#/tm/#SECTION_CODE#/#ELEMENT_CODE#/",


"INDEX_SECTION" => "Y", // Индексировать разделы для модуля поиска

"INDEX_ELEMENT" => "Y", // Индексировать элементы для модуля поиска


"VERSION" => 1, // Хранение элементов в общей таблице


"SECTION_PROPERTY" => "Y", // Разделы каталога имеют свои свойства (нужно для модуля интернет-магазина)

);


$ID = $ib->Add($arFields);

if ($ID > 0)

{

echo "инфоблок успешно создан";

}

else

{

echo "ошибка создания инфоблока";

return false;

}



$propid1=0;

$propid2=0;


// Определяем, есть ли у инфоблока свойства

$dbProperties = CIBlockProperty::GetList(array(), array("IBLOCK_ID"=>$ID));

if ($dbProperties->SelectedRowsCount() <= 0)

{

$ibp = new CIBlockProperty;


$arFields = Array(

"NAME" => "Аудитория",

"ACTIVE" => "Y",

"SORT" => -777, // Сортировка

"CODE" => "Number",

"PROPERTY_TYPE" => "N", //


"IBLOCK_ID" => $ID

);

$propId = $ibp->Add($arFields);

if ($propId > 0)

{

$arFields["ID"] = $propId;

$propid1=$propId;

$arCommonProps[$arFields["CODE"]] = $arFields;

echo "&mdash; Добавлено свойство ".$arFields["NAME"]."<br />";

}

else

echo "&mdash; Ошибка добавления свойства ".$arFields["NAME"]."<br />";




/* сео-свойства */

$arFields = Array(

"NAME" => "Преподаватель",

"ACTIVE" => "Y",

"SORT" => -777,

"CODE" => "Name",

"PROPERTY_TYPE" => "S", // Строка


"IBLOCK_ID" => $ID,


);

$propId = $ibp->Add($arFields);

if ($propId > 0)

{

$arFields["ID"] = $propId;

$propid2=$propId;

$arCommonProps[$arFields["CODE"]] = $arFields;

echo "&mdash; Добавлено свойство ".$arFields["NAME"]."<br />";

}

else

echo "Ошибка добавления свойства ".$arFields["NAME"]."<br />";

}

else

echo "Для данного инфоблока уже существуют свойства<br />";




$el = new CIBlockElement;

for($i=0;$i<5;$i++){

$PROP = array();

$PROP[$propid1] = "Преподаватель".$i; //

$PROP[$propid2] = "Аудитория".$i;

$date = "31.05.2016 ".$i.":32:00";

$stmp = MakeTimeStamp($date, "DD.MM.YYYY HH:MI:SS");


$arLoadProductArray = Array(

"MODIFIED_BY" => $USER->GetID(), // элемент изменен текущим пользователем

"IBLOCK_SECTION_ID" => false, // элемент лежит в корне раздела

"IBLOCK_ID" => $ID,

"PROPERTY_VALUES"=> $PROP,

"NAME" => "Предмет #".$i,

"ACTIVE" => "Y", // активен

"PREVIEW_TEXT" => "текст для предмета #".$i,

"DETAIL_TEXT" => "текст для детального просмотра элементa #".$i,

"ACTIVE_FROM" => $date,

"START_DATE"=> $date,

"DATE_ACTIVE_FROM"=>$date

);


if($PRODUCT_ID = $el->Add($arLoadProductArray))

echo "New ID: ".$PRODUCT_ID;


else

echo "Error: ".$el->LAST_ERROR;

}

?>

Обратная польская запись

Reverse Polish notation

Обратная польская нотация (ОПН) 
описание на вики

код PHP


<?php function polish($input){
$input=str_replace(" ","",$input);
for($i=0;$i<strlen($input);$i++){
 if(is_numeric($input[$i])){
  $stack[]=$input[$i];
  }
 else {
   $n2 = array_pop($stack);
   $n1 = array_pop($stack);
   switch($input[$i]) {
    case '+': $result = $n1 + $n2; break;
    case '-': $result = $n1 - $n2; break;
    case '*': $result = $n1 * $n2; break;
    case '/': $result = $n1 / $n2; break;
    default: echo "Ощибка ввода!\n";
   }
   array_push($stack,$result);
  }
 }
 return array_pop($stack);
}

echo polish("5 8 3 + *");?>