Ответы пользователя по тегу 1С-Битрикс
  • Как правильно создать фасетный велосипед?

    gromdron
    @gromdron
    Работаю с Bitrix24
    Ваше решение вполне имеет место быть, а грабли будут те же самые, что и в Битриксе - перестроение кеша.
    Например у Вас добавилось поле, а это значит, что Вам нужно перестраивать кеш (т.е. удалять и заново строить), а на работающем сайте это занимает прилично времени.
    К тому же, для ускорения Вам придется либо исключить некоторые поля, либо дублировать записи из множественных списков, но с этим частично может помочь разгрузка базы.

    На ум приходят две мысли:
    - при mysql 5.7+ можно проверить как поведет себя json поля (чтобы не пересобирать каждый раз схему, а просто переписывать значения)
    - попробовать вынести куда-нибудь на mongodb это решение (дописывать поля там, не пересобирая).

    Но в целом, Ваш вариант вполне подходит (за исключением того, что вариант с перестроением кеша нужно все-таки проработать).
    Ответ написан
    Комментировать
  • Как применить функцию по изменению товара перед тем как положить его в корзину?

    gromdron
    @gromdron
    Работаю с Bitrix24
    Можно и не использовать эту функцию.
    До 15.5.0 (на старом каталоге), есть события добавления - OnBeforeBasketAdd или OnBasketAdd
    После 15.5.0 (на новом каталоге), есть события добавления/изменения - OnSaleBasketItemEntitySaved

    Как работают события, описано в документации
    Ответ написан
    Комментировать
  • Почему падает MySQL во время установки Bitrix?

    gromdron
    @gromdron
    Работаю с Bitrix24
    Все верно - это не ошибка Битрикса, а ошибка сервера.

    Получить "ERROR 1030 (HY000) at line 18723: Got error 168 from storage engine", можно несколькими способами.
    Наиболее распространенные:
    1) Нехватает места на хостинге (Хостинг жадный и дал Вам всего 2ГБ на Битрикс, а рекомендуется для чистой установки не меньше 10ГБ)
    2) Вы уперлись в количество одновременно открытых файлов.

    В любом случае, точную ошибку может дать только log СУБД.
    Ответ написан
    4 комментария
  • Битрикс состав заказа, версия 15.0?

    gromdron
    @gromdron
    Работаю с Bitrix24
    Допустимые методы изменения формы заказа появились с версии 16.0.33.
    Без обновления платформы, все что вы сотворите с карточкой заказа пропадет.
    Ответ написан
    Комментировать
  • Как вывести из свойств "должность" и "компанию"?

    gromdron
    @gromdron
    Работаю с Bitrix24
    Изучайте параметры компонента bitrix:news.
    Обратите внимание на LIST_PROPERTY_CODE.
    В шаблоне компонента посмотрите на $arResult
    Ответ написан
  • Почему может не работать SEF в компоненте "bitrix:news"?

    gromdron
    @gromdron
    Работаю с Bitrix24
    "PATH" => "/page/index.php/",


    "PATH" => "/page/index.php",

    А вообще - откройте в визуальном редакторе настройки компонента и просто сохраните (сохранив страницу). Он сам откорректирует правила в urlrewrite
    Ответ написан
    2 комментария
  • Битрикс - как Реализовать возможность администратору сайта указывать текст в блоке ПОЛЕЗНАЯ ИНФОРМАЦИЯ без необходимости редактироваться исходный код?

    gromdron
    @gromdron
    Работаю с Bitrix24
    ОМГ!
    Вы же читать умеете?? Давайте порассуждаем о задании и прочитаем его.
    • Задание решить с помощью включаемых областей.

    Значит нужно использовать компонент bitrix:main.include и никак иначе.
    Возможно придется писать дополнительный код.
    • Реализовать возможность администратору сайта указывать текст в блоке Полезная информация без необходимости редактироваться исходный код.

    Окей, значит дополнительного кода писать не нужно, а значит все можно решить компонентом bitrix:main.include + шаблон
    • Должна быть возможность указывать разный текст для разных разделов сайта.

    Разделов? Ага, значит смотрим параметры компонента (https://dev.1c-bitrix.ru/user_help/components/sluz...
    AREA_FILE_SHOW: sect
    AREA_FILE_RECURSIVE: Y
    • Верстка, реализующая «каркас» блока, не должна быть в файле, который содержит редактируемый администратором текст. Это позволит минимизировать возможность «поломки» шаблона сайта.

    А раз bitrix:main.include подключает файл в шаблоне компонента, значит нам нужно кастомизировать шаблон компонента, а не тупо его вставить

    Что получается в итоге:
    1) В шаблоне сайта размещаем компонент bitrix:main.include, настраиваем его на работу с разделами
    2) В корне размещаем sect.php файл, в котором пишем "Лучший выбор мебели в нашей компании!", таким образом мы удовлетворили первое решение
    3) В разделе /company/ создаем sect.php файл в котором пишем "Надежный поставщик на все времена."
    4) После создания и размещения в режиме редактирования нажимаем копировать шаблон компонента и вносим изменения:
    - Если файла нет или область пуста (надеюсь на php-вы же сможете это сделать) - не выводить область
    - Если она есть - выводить в шаблоне

    Читайте внимательно документацию! Смотрите видео курсов.
    *Экзамен проверят ВАШИ знания, а не мои*
    Ответ написан
    Комментировать
  • 1C-Битрикс. Как получить название склада по ID склада?

    gromdron
    @gromdron
    Работаю с Bitrix24
    Наверное самый простой способ это подключить модуль Каталога и воспользоваться соответствующим DataMapper:

    use \Bitrix\Catalog;
    
    $arStore = Catalog\StoreTable::getRow([
    	'select' => ['TITLE'],
    	'filter' => [
    		'ID' => $iStoreId,
    	]
    ]);
    if ( $arStore )
    {
    	// В $arStore['TITLE'] название
    }
    else
    {
    	// Склад не найден
    }
    Ответ написан
    4 комментария
  • Каким событием (хуком) можно отловить отправку AJAX-формы с сайта на Bitrix?

    gromdron
    @gromdron
    Работаю с Bitrix24
    Никак.
    То есть Вы не можете отловить отправку всех форм на бек-энде, потому что каждая форма это по факту не единый запрос на какой-то адрес, а обычный POST/GET в iframe на тот же адресс.
    То есть, как это работает:
    1) На JS вы выполняете отправку формы (триггерите данную функцию)
    2) Функция создает невидимый iframe и задает target формы на данный iframe
    3) Этот iframe отправляется, а результат который возвращается из него, заменяется в контейнере формы

    Единственное что вы можете сделать - это на JS: подвесится на все формы на submit событие (стандартный для JS) или на битриксовое onAjaxSuccess (когда форма уже отправлена, а результат получен).
    Можно конечно в init.php ловить все GET/POST запросы, но это уже дикость.

    P.S. Правьте компонент, а не костыли вставляйте
    Ответ написан
    2 комментария
  • Как и куда встроить прослушивание событий в 1С-Битрикс для их обработки и дальнейшей передачи в удаленные сервисы?

    gromdron
    @gromdron
    Работаю с Bitrix24
    Вообще, исчерпывающую информацию на этот вопрос дает официальная документация по файлу init.php.

    Обработчики событий лучше группировать в одном файле и тщательно аннотировать где они используются и какая задача перед ними стоит.


    Про способы организации кода это довольно узкая тематика.
    Если Вы 100% уверены, что они еще пригодятся на других проектах (и у Вас уже есть подобные заказы), то предпочтительнее делать модуль.
    Если это хардкорная интеграция только для существующего проекта, то init.php(*).

    Мы, например, придерживаемся последнего варианта:
    1) В директории /local/php_interface/ создаем следующие файлы:

    - init.php (Содержит подключение других файлов + автолоадер)
    - constants.php (Содержит только константы, актуальные для данного проекта)
    - events.php (содержит подписки на события, но логика их обработки не находится в этом файле)

    2) В директории /local/php_interface/classes/ по PSR размещаем класс для проекта.

    Например:

    init.php:
    /**
     * - /local/classes/{Path|raw}/{*|raw}.php
     * - /local/classes/{Path|ucfirst,lowercase}/{*|ucfirst,lowercase}.php
     */
    spl_autoload_register(function($sClassName)
    {
    
    	$sClassFile = __DIR__.'/classes';
    
    	if ( file_exists($sClassFile.'/'.str_replace('\\', '/', $sClassName).'.php') )
    	{
    		require_once($sClassFile.'/'.str_replace('\\', '/', $sClassName).'.php');
    	}
    
    	$arClass = explode('\\', strtolower($sClassName));
    	foreach($arClass as $sPath )
    	{
    	    $sClassFile .= '/'.ucfirst($sPath);
    	}
    	$sClassFile .= '.php';
    	if (file_exists($sClassFile))
    	{
    		require_once($sClassFile);
    	}
    });
    
    /**
     * File with event handlers
     */
    require_once(__DIR__.'/events.php');


    events.php:
    $eventManager = \Bitrix\Main\EventManager::getInstance();
    
    /**
     * For new core of bitrix use
     *     $eventManager->addEventHandler( #module#, #handler#, [#namespace#, #function#]);
     * 
     * For old core of bitrix use
     *     $eventManager->addEventHandlerCompatible( #module#, #handler#, [#namespace#, #function#]);
     */
    
    $eventManager->addEventHandlerCompatible("module", "event", ['\\Project\\Module\\Event\\Handler', 'onEvent']);
    Ответ написан
    Комментировать
  • Как в битриксе проверить на пустоту ShowMeta('')?

    gromdron
    @gromdron
    Работаю с Bitrix24
    Для начала поймите, что в момент вызова ShowMeta у Вас нет данных о том, что они заполнены. То есть проверять там на пустоту НЕЛЬЯ!

    Ознакомьтесь со следующей документацией:
    1) Механизм отложенных функций
    2) Порядок выполнения страницы

    После ознакомления, Вы поймете, что действовать именно так как Вы хотите не получиться. НО!
    Можно написать свою отложенную функцию со свойственной ей поведением и получить желаемый результат.
    Ответ написан
  • Как починить создание бекапов в битрикс?

    gromdron
    @gromdron
    Работаю с Bitrix24
    В один из прекрасных дней перестал делаться бекап битрикса - точней делается бекап только sql -www.site.ru_20180309_051402_full_c8dd87.sql.


    Скорее всего были отредактированы настройки регулярного резервного копирования. Проверьте настройки и способ запуска.

    Проблема номер 2 - не могу зайти в админку. Просто рефрешится страница с логином. Обновлял, сбрасывал кеш, заходил под разными ip - не заходит.


    А что пишет? Уверены ли Вы что он должен иметь доступ? Это пользователь с ID:1 или другой? Пробовали ли Вы зайти под админом (пользователь с ID:1)
    Ответ написан
    Комментировать
  • БИТРИКС. Вопросы к экзамену. Верхнее меню сайта - как реализовать поддержку стиля отображения пункта меню?

    gromdron
    @gromdron
    Работаю с Bitrix24
    Вы невнимательно прочитали курс.
    Меню в битриксе состоит из 5 частей - название пункта, ссылки, дополнительных ссылок (для подсветки), параметров ссылки и условия отображения.

    Подробнее прочитать можно тут: https://dev.1c-bitrix.ru/learning/course/?COURSE_I...

    Кейс который Вас спрашивают целиком и полностью описан в документации: https://dev.1c-bitrix.ru/learning/course/?COURSE_I...
    Ответ написан
    Комментировать
  • Битрикс: экзамен 1. Как реализовать различное отображение информации в шапке в зависимости от времени?

    gromdron
    @gromdron
    Работаю с Bitrix24
    Мне, как человеку, сдававшему этот экзамен и работающему с 1С-Битрикс более 5 лет неизвестно про функцию определяющее рабочее время.

    Как я бы прочитал требования под это задание: необходимо определить рабочее ли сейчас время на сервере средствами php и средствами битрикса подключить отображаемую область с телефоном или email (2 включаемых области).

    На мой взгляд, имеется ввиду, что подключать эту верстку нужно не через include/require, а через компонент/встроенную функцию подключения. Именно это и проверяется.
    Ответ написан
    Комментировать
  • Как вывести описание категорий в Bitrix?

    gromdron
    @gromdron
    Работаю с Bitrix24
    чтобы вывести на страницу продукции название и описание?


    Если у Вас компонент каталога - смотрите в параметрах каталога поля которые нужно доставать.
    Если они есть, доставайте и редактируйте вывод раздела.

    Если нет, на result_modifier.php доставайте по ID раздела и выводите
    Ответ написан
    Комментировать
  • Как убрать в выборе списка городов слово "Другой"?

    gromdron
    @gromdron
    Работаю с Bitrix24
    Есть подозрение, что у Вас произошла дозагрузка справочника без очистки.

    Сделайте резервную копию и произведите импорт местоположений с отмеченной опцией "Удалить все существующие местоположения"
    Ответ написан
    2 комментария
  • Подходит ли Битрикс для доски объявлений?

    gromdron
    @gromdron
    Работаю с Bitrix24
    Если мы говорим про абстрактную доску обьявлений (или сферического коня в вакууме), то да, подходит.

    А уже дальше, когда начнете смотреть на параметры поймете что и как.
    Например при бюджете в 500 рублей Битрикс Вам не подойдет (там один хостинг в год обойдется не меньше 5 тысяч, я уже не говорю о плате за саму систему).

    Сейчас можно дать только 2 обоснования:
    1) Целевые (есть ли деньги на покупку системы, сервера под нее и ожидаемую нагрузку и разработчиков)
    2) Силовые (есть ли разработчики способные грамотно сделать эту самую доску, так как из коробки под доску объявлений там почти ничего нет)

    Если на оба ответ - да, то подходит.
    Если сомневаетесь то лучше возьмите что-нибудь специализированное (там шансов промахнуться будет меньше)
    Ответ написан
  • Bitrix один инфоблок для всех информационных материалов?

    gromdron
    @gromdron
    Работаю с Bitrix24
    Не стоит так делать. Крайне не рекомендуется

    Как минимум Вы потеряете:
    1) Производительность. Считать на странице куда именно зашел пользователь и выбирать нужное и строить обойдется дороже чем получить и вывести в уже известном шаблоне
    2) Юзабилити. Контент-менеджер не сможет редактировать из публички и админки ваш треш, так как все по факту будет в одной карточке и понять какие именно поля нужны будет очень и очень сложно
    3) Поиск. Он ничего не знает о вашем супер-пупер компоненте и либо вы будете писать собственные механики и индексаторы, либо не будете использовать поиск. Все пути отображаемые в поиске берутся из настроек инфоблока, а не из страницы где это все расположено (и не из свойства элемента, а именно из настроек этого общего инфоблока)

    Вы получите:
    1) Кусок г...на который нормально редактировать можно только из 1С
    2) Очень дорогой и неоптимизированный компонент, который можно будет настраивать (и тяжело кастомизировать)

    P.S. И конечно кроме автора никто не сможет поддерживать этот компонент.
    P.S.2. У нас в компании за такое руки принудительно об стол выпрямляют))
    Ответ написан
    Комментировать
  • Можно ли использовать Битрикс как headless CMS?

    gromdron
    @gromdron
    Работаю с Bitrix24
    С выходом нового d7 подхода к построению компонентов (так-называемые Engine\Controller) вы сможете использовать любой фронт-энд и довольно просто вызывать методы вашего компонента.

    Например: у вас есть компонент reviews в пространстве имет colobot.
    Соответственно у него есть action: getList (function getListAction).
    Для того чтобы отправить запрос и получить ответ можно будет использовать конструкцию вроде:

    BX.ajax.runComponentAction('colobot:reviews::getList',{
    	// .. параметры которые будут отправлены в метод getListAction
    	// компонента reviews в пространстве имен colobot
    }).then(function(){
    	// .. полезные действия
    });


    Но как уже указали коллеги Выше - можно, но API придется писать самим (в БУСе его пока нет)
    Ответ написан
    Комментировать
  • Почему 1С Сайт ЖКХ не принимает форму квитанции?

    gromdron
    @gromdron
    Работаю с Bitrix24
    Вы используете тиражное решение от компании 1С-Рарус. Не уверен что кто-то настолько разбирался в данном решении.

    Попробуйте обратиться в техническую поддержку компании:
    +7 (495) 777-25-43, +7 (836) 249-46-89
    e-mail: otr@rarus.ru
    Ответ написан
    Комментировать