1c-Битрикс, плохо или хорошо для разработчика?

Хочу высказать наболевшую мысль. С битриксом я работаю уже 4-ый год, и все бы хорошо, но, есть одна большая проблема, для меня по крайне мере. Так все время приходится работать именно с этой CMS, мало того что становится просто скучно, но и еще идет деградации как разработчика.

Я каждый раз радуюсь когда приходится решать какие-то не стандартные задачи, это подстегивает и пинает мозги. Надоел GetList и $arResult. Хочется чего-то новенького….

1c-Битрикс, работаем с агентами [bitrix api]

Для новичков так сказать, про агенты.

Что такое агенты в битриксе?

— Это функция которая будет запущена в определенное время, поддерживает периодичность запуска.

Если вам нужно динамически добавлять агентов, то есть для это API. Если вам просто нужно прикрутить один или два агента то прошу под кат, там по шагам разберемся с этим вопросом.

Continue reading

Установка Adobe AIR Ubuntu 9.10 64x

1. Качаем бинарник с http://get.adobe.com/ru/air/
2. Размешаем файл AdobeAIRInstaller.bin в папке пользователя, например home/user/AdobeAIRInstaller.bin
3. Открываем терминал
4. chmod +x AdobeAIRInstaller.bin
5. sudo ./AdobeAIRInstaller.bin

6. ВАЖНО!

$ sudo cp /usr/lib/libadobecertstore.so /usr/lib32

Класс для сортировки массива, usort [php]

Пример реализации выборки из нескольких инфоблоков с постраничной навигацией и сортировкой.

Задача:

1) Выбрать список элементов из нескольких инфоблоков в таблицу;

2) Иметь возможность сортировки элементов;

3) Должна работать постраничная навигация

Итак этот пример можно использовать при небольшом кол-ве выбираемых элементов, думаю максимум до 100, естественно с кэшированием.

Первым делом нужно выбрать все данные в ассоциативный массив, например вот такой:

 [ITEAM] => Array
        (
            [0] => Array
                (
                    [CITY_NAME] => value
                    [CITY_DETAIL_URL] => value
                    [OBJECT_NAME] => value
                    [OBJECT_ID] => 2487
                    [DATE_CREATE] => 02.07.2006
                    [STATUS] => Y
                    [PAID_STATUS] => Y
                    [DATEIL_OBJECT_URL] => value
                )

            [1] => Array
                (
                    [CITY_NAME] => value
                    [CITY_DETAIL_URL] => value
                    [OBJECT_NAME] => value
                    [OBJECT_ID] => 2489
                    [DATE_CREATE] => 02.07.2006
                    [STATUS] => Y
                    [PAID_STATUS] => N
                    [DATEIL_OBJECT_URL] => value
                )

Continue reading

Ajax и IE7: Ошибка c00ce56e и как ее исправить, в Bitrix не исключение…

Ошибка эта возникает, когда сервер передает IE неизвестную кодировку. То есть, возможна ситуация, когда на одном сервере ваш скрипт будет работать нормально, а на другом —  возникнет подобная ошибка.

То есть, передается, как правило — «utf8» а по стандарту должно «utf-8«. То есть, на этот раз Internet Explorer ведет себя вполне корректно (хотя, мог бы и простить, как делает FireFox, например), а гнилые помидоры — тому, кто настраивал web-сервер.

Как исправить? Варианта два:

  1. Поправить настройки Apache
  2. B самом начале серверного скрипта Ajax принудительно указать кодировку: header(‘Content-type: text/html; charset=utf-8’);

Поскольку, мы можем не знать настроек сервера, где будет работать наш скрипт, указание данного заголовка header(‘Content-type: text/html; charset=utf-8’);, я считаю, обязательно.

В битриксе это ошибка возникает допустим при обращение аяксом к компоненте в которой подключается js, без js все работает. Так что или выносим js из компонента или пользуемся советами выше.

решение нашли тут

Инфоблоки +, события [bitrix api]

Хочу предостеречь от очень каверзной особенности работы с расширенными инфоблоками у Битрикса, так называемыми Инфоблоками +.

Если вы используете обработчик на редактирование элемента OnBeforeIBlockElementUpdate, и изменяете в нем хоть одно свойство, то вам нужно указать в массиве параметров все свойства этого элемента. Иначе  они будут затерты.

Это происходит только на инфоблоках + и не с включенным документооборотом для этого инфоблока. Все дело в массиве PROPERTY_VALUES, в котором вы меняете значение какого-то свойства. Подвох в том что вы не используете метод $el->Update($ID, $arParams) в самом обработчике, и это ошибка трудно уловима, по сути обработчик переопределяет   $arParams[‘PROPERTY_VALUES’], по этому в нем будет только ваше изменение из обработчика. В этом случае, если вы будете использовать $el->Update($ID, $arParams) к этому инфоблоку в другом месте, свойства будут сбрасываться.

События хорошая штука, но нужно внимательнее сними работать, ими не стоит злоупотреблять.

Описания кодов состояния HTTP

1xx — Информационные коды

100 Продолжать, Continue
101 Переключение протоколов, Switching Protocols

2xx — Успешные коды

200 ОК
201 Создан, Created
202 Принято, Accepted
203 Не авторская информация, Non-Authoritative Information
204 Нет содержимого, No Content
205 Сбросить содержимое, Reset Content
206 Частичное содержимое, Partial Content

3xx — Коды перенаправления

300 Множественный выбор, Multiple Choices
301 Постоянно перенесен, Moved Permanently
302 Временно перемещен, Moved Temporarily
303 Смотреть другой, See Other
304 Не модифицирован, Not Modified
305 Используйте прокси-сервер, Use Proxy

4xx — Коды ошибок клиента

400 Испорченный Запрос, Bad Request
401 Несанкционированно, Unauthorized
402 Требуется оплата, Payment Required
403 Запрещено, Forbidden
404 Не найден, Not Found
405 Метод не дозволен, Method Not Allowed
406 Не приемлем, Not Acceptable
407 Требуется установление подлинности через прокси-сервер, Proxy Authentication Required
408 Истекло время ожидания запроса, Request Timeout
409 Конфликт, Conflict
410 Удален, Gone
411 Требуется длина, Length Required
412 Предусловие неверно, Precondition Failed
413 Объект запроса слишком большой, Request Entity Too Large
414 URI запроса слишком длинный, Request-URI Too Long
415 Неподдерживаемый медиа тип, Unsupported Media Type

5xx — Коды ошибок сервера

500 Внутренняя ошибка сервера, Internal Server Error
501 Не реализовано, Not Implemented
502 Ошибка шлюза, Bad Gateway
503 Сервис недоступен, Service Unavailable
504 Истекло время ожидания от шлюза, Gateway Timeout
505 Не поддерживаемая версия HTTP, HTTP Version Not Supported

Битрикс AJAX [bitrix-ajax-api]

Почему-то многие не охотно используют битриксовую библиотеку аякса, почти всегда делая предпочтения в сторону Jquery или других js библиотек. Не сомненно что Jquery очень не плохая библиотека и отлично работает с ajax, но чтобы свободно разрабатывать сайты не 1с-Битрикс надо знать родное API.

Пост для новичков, думаю будет полезно. Рассматриваем только ajax-овую часть библиотеки, ее основу.

Continue reading

Битрикс ЧПУ, готовим символьный код элемента [bitrix api]

Итак вот вам маленький пример, снипет, как можно легко подготавливать добавляемые элементы для поддержки ЧПУ в Битриксе.

Вообще считаю что это должно быть по умолчанию. Т.е. выставляться в настройках инфоблока просто галочкой, так как это займет для разработчиков БУС примерно 1 час.

Пока этого нет, будем делать сами. Итак сейчас в стандартном функционале множества компонент добавили ЧПУ по полю CODE элемента. Это хорошее поле и удобно с ним работать, да и именно для этого оно видимо и предназначено, хотя можно использовать и просто свойства да и пользовательские свойства тоже.

Итак задача :

1. Нужно название элемента переводить в траслит и добавлять его в поле CODE.

2. Это нужно делать автоматически.
Continue reading