Задать вопрос
  • Кто подключал онлайн-кассу в битрикс? Можно ли это сделать без обновления?

    gromdron
    @gromdron
    Работаю с Bitrix24
    Можно ли подключить онлайн кассы для старого Битрикса?
    Да, можно.

    Можно ли подключить онлайн кассы для старого Битрикса, не привлекая разработчика или иных специалистов?
    Нет, нельзя.

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

    gromdron
    @gromdron
    Работаю с Bitrix24
    Впринципе не сложно.

    Для начала Вы подписываетесь на событие OnAdminListDisplay модуля Main.
    Именно оно отвечает за действие ДО вывода любого списка элементов в административной панели (за исключением под-листов у инфоблоков и модуля производительности).
    На вход оно принимает лишь 1 параметр - экзепляр класса CAdminList (см. /bitrix/modules/main/interface/admin_list.php)

    Чтобы обрабатывать нужную таблицу, нужно ограничить выборку. Т.е. Ваш обработчик будет выглядеть как-то так:

    <?php
    AddEventHandler("main", "OnAdminListDisplay", "MyOnAdminContextMenuShow");
    function MyOnAdminContextMenuShow(&$oAdminList)
    {
        /**
         * $type - тип кода инфоблока, например news, events и т.д.
         * $iblock - идентификатор инфоблока
         * 
         * Если интересует каталог, то вместо tbl_iblock_list_ нужно использовать tbl_product_list_
         */
        if ( $oAdminList->table_id == "tbl_iblock_list_".md5($type.".".$iblock) )
        {
            // полезные действия
        }
    }
    ?>


    Собственно так, мы получаем возможность работать с выводом.
    Для более подробного пояснения лучше прочитать про заказные элементы в административной панели в документации: https://dev.1c-bitrix.ru/api_help/main/general/adm...

    Собственно добавим нужные нам данные для работы. Предположим, я хочу логгировать выделенные элементы на странице, тогда мой код будет выглядеть так:
    AddEventHandler("main", "OnAdminListDisplay", "MyOnAdminContextMenuShow");
    function MyOnAdminContextMenuShow(&$oAdminList)
    {
        /**
         * $type - тип кода инфоблока, например news, events и т.д.
         * $iblock - идентификатор инфоблока
         * 
         * Если интересует каталог, то вместо tbl_iblock_list_ нужно использовать tbl_product_list_
         */
        if ( $oAdminList->table_id == "tbl_iblock_list_".md5("structure.4") )
        {
        	$arActions = $oAdminList->arActions;
    
        	$arActions['alert'] = 'Ругаться!';
    
        	$oAdminList->AddGroupActionTable($arActions);
        }
    }
    
    AddEventHandler("main", "OnAfterEpilog", "iblockAlert");
    
    function iblockAlert()
    {
    	$oRequest = \Bitrix\Main\Application::getInstance()->getContext()->getRequest();
    
    	// Проверяем, что работает только в админке
    	if ( $oRequest->isAdminSection() )
    	{
    		if (
    			// Интересуют только интерактивные запросы
    			$oRequest->get('mode')=='frame'
    			// Где передана переменна IBLOCK_ID
    			&& $oRequest->get('IBLOCK_ID')==4
    			// Соответствующие нашему action
    			&& $oRequest->get('action')=='alert'
    			)
    		{
    			/**
    			 * Вот тут можно сделать что угодно
    			 * Можно получить выделенные ID
    			 * через $oRequest->get('ID')
    			 * Если он пуст, значит действие на всех элементах инфоблока
    			 */
    		}
    	}
    }


    На самом деле параметров гораздо больше - есть еще custom области, которые можно выводить, но суть та же. Если захотите добавить свое поле (я добавлял простой action), то лучше глянуть в исходники и там уже по аналогии разрбраться
    Ответ написан
    3 комментария
  • Почему array.length возвращает 0?

    gromdron
    @gromdron
    Работаю с Bitrix24
    Я использовал фрагмент кода и дополнил его (чтобы не ругался на неизвестные массивы). У меня получился фрагмент:

    all = {
    	"2017-08-10": 10,
    	"2017-08-11": 11,
    	"2017-08-12": 12,
    	"2017-08-13": 13,
    	"2017-08-14": 14
    };
    
    register = {
    	"2017-08-10": 10,
    	"2017-08-11": 11,
    	"2017-08-12": 12,
    	"2017-08-13": 13,
    	"2017-08-14": 14
    };
    
    percent = {
    	"2017-08-10": 10,
    	"2017-08-11": 11,
    	"2017-08-12": 12,
    	"2017-08-13": 13,
    	"2017-08-14": 14
    };
    
    result = ["2017-08-10","2017-08-11","2017-08-12","2017-08-13","2017-08-14"];
    compact = [];
    for (var i = 0; i < result.length; i++)
    {
    	compact.push([i+1,all[result[i]],register[result[i]], percent[result[i]] ]);
    }

    При выполнении указанных Вами комманд:
    console.log(Object.keys(compact).length)
    console.log(compact.length)


    В обох случаях возвращается 5.
    Что я делаю не так? и чем мой код отличается от Вашего?
    Ответ написан
    Комментировать
  • Как грамотней добавить лендинг на страницу 1с bitrix?

    gromdron
    @gromdron
    Работаю с Bitrix24
    Есть пряморукое, но сомнительное решение: поработать через urlrewriter

    Если, как было выяснено в комментариях,

    /akcii/ - базовая страница компонента
    /akcii/skidka/ - страница, где выводится список элементов из инфоблока с кодом "skidka"
    /akcii/nacenka/ - страница, где выводится список элементов из инфоблока с кодом "nacenka"

    Тогда в urlrewrite.php можно внести правило:

    array(
    "CONDITION" => "#^/akcii/skidka/\\?#",
    "RULE" => "",
    "ID" => "",
    "PATH" => "/beginners/skidka/index.php",
    ),

    И проконтролировать, чтобы оно было выше обработчика самого /akcii/
    Тогда должно сработать и по адресу /akcii/skidka/ показывать директорию лендинга
    Ответ написан
    Комментировать
  • Как настроить права доступа на группу пользователей?

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

    А вот с группой 1 будет интересный вопрос: Вам на событиях придется отлавливать добавление и изменение элемента инфоблока (я бы посоветовал принудительно ставить флаг активности в N состояние).

    Или у Вас проблемы с непосредственным написанием кода?
    Ответ написан
  • Как правильно начинать новый проект на битрикс?

    gromdron
    @gromdron
    Работаю с Bitrix24
    Если Вы работаете с 1С-Битрикс и вы делаете "шаблонки", то бОльшая часть всего уже есть.
    Вообще вопрос сильно отличается от содержания и не очень понятно что изначально вы имеете ввиду.
    Вы хотите узнать можно ли решить данный кейс без написания собственного кода (т.е. без написания компонентов, а только правками шаблона)? Да можно.
    Можно ли сделать какие-либо сложные вещи без написания кода? Зависит от того что именно. Многие решения уже сделаны, а реализация других потребует сильного или значительного изменения кода.

    Можете уточнить вопрос?
    Ответ написан
  • Как привязать сайт к учету?

    gromdron
    @gromdron
    Работаю с Bitrix24
    В меня конечно сейчас попытаются запустить камнем, но - 1С-Битрикс имеет штатную интеграцию + модули для о...

    Правда выйдет недешево и если 1С-ка пиленая придется попотеть, но в целом документация по обмену хорошая.
    Ответ написан
    Комментировать
  • Как надежно выполнить несколько запросов mysql (mysqli)?

    gromdron
    @gromdron
    Работаю с Bitrix24
    Ответ - нет. Функция mysqli_multi_query выполнит все запросы так, как если бы Вы использовали обычное query.
    К тому же, она вернет FALSE, только если ПЕРВОЕ выражение вызвало ошибку.

    Для реализации обхода, как Вам уже указали используйте Транзакции через begin_transaction
    Ответ написан
    Комментировать
  • Есть php скрипт, надо записать его в крон. как сделать?

    gromdron
    @gromdron
    Работаю с Bitrix24
    Для начала, ознакомьтесь с имеющийся документацией: https://dev.1c-bitrix.ru/learning/course/?COURSE_I...
    Внизу странице (по ссылке выше) есть код агента, исполняющегося под cron. Он подойдет.

    Первое на что нужно обратить внимание: константа SITE_ID. Если предполагается работа из админ панели, то это константа языка, иначе - константа сайта (лучше задать вручную)
    Второе: проверьте $_SERVER["DOCUMENT_ROOT"] (если у Вас bitrix vm то это скорее всего тот же путь)
    И третье - вместо echo в cli режиме лучше использовать: fwrite( STDOUT, 'Строка' );
    Ответ написан
    Комментировать
  • Ограничение просмотров через сессию или куки?

    gromdron
    @gromdron
    Работаю с Bitrix24
    Для ограничения просмотров наиболее подходящим образом будет:
    1) Разрешения просмотра только для зарегистрированных пользователей
    2) Хранение факта проссмотра в отдельной таблице.

    Почему?
    1) Сессия сбрасывается со временем
    2) Куки можно подделать
    3) Отображение истории просмотра можно потом выводить для "автора" резюме
    Ответ написан
    Комментировать
  • Что нужно сделать чтобы убрать дублирование h1 тайтла?

    gromdron
    @gromdron
    Работаю с Bitrix24
    Во-первых, в данный момент title и h1 у Вас различаются. Т.е. скорее всего Вы либо решили вопрос, либо "зашили" его в код страницы.
    Во-вторых, согласно документации и примечаниям, в месте вывода h1 вы можете прописать: $APPLICATION->ShowTitle(), а в title: $APPLICATION->ShowTitle(false)
    Тогда у Вас получить отложенный механизм и стандартный. (можете поменять местами как Вам нужно)
    Ответ написан
    Комментировать
  • Что лучше выбрать для интеграции интернет-магазина на 1С Битрикс с Amocrm и c Roistat?

    gromdron
    @gromdron
    Работаю с Bitrix24
    Прежде всего давайте разберемся зачем Вам это нужно и что это такое.

    Что такое '1С-Битрикс Управление сайтом (ред. "Малый Бизнес")' - это интернет магазин. Витрина товаров с их оформлением.
    Пользователь создает заказ, видит его в кабинете, оплачивает и ждет доставку. Может ознакомиться с ассортиментом и т.п.
    По факту в Вашем случае это поставщик данных для CRM.

    AmoCRM - это CRM система для ведения клиентской базы, отслеживания заказов, бонусных программ и прочего.

    Roistat - это система аналитики для бизнеса. Работает она на основе полученных из других источников данных.

    Соответственно, для корректной и полной работы Вам нужно сделать следующее:

    1) Интеграция Битрикса -> AmoCRM. Передавать данные маркера (см ниже), сделках, клиентах. (можно двухстороннюю)
    2) Интеграция AmoCRM -> Roistat (передача маркера, данных сделки, статусов и т.п.)
    3) Интеграция Битрикса -> Roistat (передача маркеров, отслеживание событий и аналитики)

    Только при такой интеграции у вас получиться:
    1) Полная картина в Roistat (вы сможете отследить покупателя от момента захода на сайт, до финальных покупок)
    2) Получить необходимые данные в CRM системе
    3) Не нарушить стандартных механизмов работы системы.
    Ответ написан
    Комментировать
  • Вопрос по ролям в mvc?

    gromdron
    @gromdron
    Работаю с Bitrix24
    Если рассматривать указанный выше код, то по паттерну MVC, тут есть только V и C.

    Код который является View:
    "You asked for blog entry {$id}."

    Код который является контроллером ( без view):

    $id = (int) $request->getAttribute('id');
    $response = new Zend\Diactoros\Response();
    $response->getBody()->write(  );
    return $response;


    По факту Model части тут нет.
    Ответ написан
    2 комментария
  • Где посмотреть файл XML, который импортировался c 1С (УТ11) в Битрикс?

    gromdron
    @gromdron
    Работаю с Bitrix24
    Если Вы выгружали пачкой сразу на сайт и больше выгрузок не делали, то смотрите в /upload/1c_exchange/ там будут и xml и картинки и все что нужно.
    Но только с последней выгрузки.
    Ответ написан
    Комментировать
  • Как сортировать по дату?

    gromdron
    @gromdron
    Работаю с Bitrix24
    Код в читаемом виде
    $sql = "SELECT
    			p.product_id,
    			(
    				SELECT AVG(rating) AS total 
    				FROM " . DB_PREFIX . "review r1 
    				WHERE r1.product_id = p.product_id AND r1.status = '1' 
    				GROUP BY r1.product_id
    			) AS rating,
    			(
    				SELECT price 
    				FROM " . DB_PREFIX . "product_discount pd2 
    				WHERE 
    					pd2.product_id = p.product_id 
    					AND pd2.customer_group_id = '" . (int)$this->config->get('config_customer_group_id') . "' 
    					AND pd2.quantity = '1' 
    					AND ((pd2.date_start = '0000-00-00' OR pd2.date_start < NOW()) AND (pd2.date_end = '0000-00-00' OR pd2.date_end > NOW())) 
    				ORDER BY pd2.priority ASC, pd2.price ASC LIMIT 1
    			) AS discount,
    			(
    				SELECT price 
    				FROM " . DB_PREFIX . "product_special ps 
    				WHERE 
    					ps.product_id = p.product_id 
    					AND ps.customer_group_id = '" . (int)$this->config->get('config_customer_group_id') . "' 
    					AND (
    						(ps.date_start = '0000-00-00' OR ps.date_start < NOW()) 
    						AND 
    						(ps.date_end = '0000-00-00' OR ps.date_end > NOW())
    					)
    				ORDER BY ps.priority ASC, ps.price ASC LIMIT 1
    			) AS special";


    И встает вопрос: а что такое дата продукта?
    Предположим, у вас в таблице p (или как она у вас, главное что p - таблица или alias), есть поле "created_at", которая и хранит ту самую "дату продукта"
    Тогда после запроса можно добавить:

    ORDER BY p.created_at DESC

    И тогда он будет выдавать те же данные, но сортированные по убыванию "даты продукта"
    Ответ написан
    Комментировать
  • Как найти фрагмент кода в Битрикс?

    gromdron
    @gromdron
    Работаю с Bitrix24
    Универсальный алгоритм поиска:

    1) Открываем urlrewrite.php, смотрим есть ли правило для данной страницы. Если есть - открываем страницу из правила, если нет - ищем физическую страницу
    2) Смотрим наличие кода компонентов на данной странице, проверяем включаемые области. Если проект тестовый, то можно по одному убирать компоненты, пока не найдете.
    Если убрали все компоненты, а надпись выводится, то идем дальше
    3) Открываем настройки сайта и смотрим какой шаблон выводится на данной странице. Открываем его по ssh (как header.php так и footer.php) смотрим компоненты, включаемые области, области с отложенными функциями (ShowViewContent)
    4) Если надпись все еще не выводится, смотрим события страницы

    Делая все 3 шага Вы сможете найти что угодно в Битриксе.
    Как пример, данная область может быть:
    1) Физическим тестом на странице
    2) Включаемой обастью подключаемой на странице
    3) Результатом работы компонента
    4) Отложенным результатом компонента
    5) Физическим текстом в шаблоне
    6) Результатом работы компонента в шаблоне
    7) Результатом работы отложенной функции в footer.php
    8) Результатом работы отложенной функции на событиях страницы
    Ответ написан
    2 комментария
  • Google PageSpeed показывает низкий коэффициент на оптимизированный сайт почему?

    gromdron
    @gromdron
    Работаю с Bitrix24
    Все просто: открываем https://developers.google.com/speed/pagespeed/insi...
    И смотрим.

    Навскидку:
    1) Переместить JS+CSS вниз страницы (есть опция)
    2) Оптимизировать изображения (фотошоп в помощь)
    3) Объединять css в один файл
    4) Поработайте с версткой, чтобы она проходила легче (может кое-где подчистить стоит, от лишних узлов)
    Ответ написан
  • Арендуем сервер, на нем стоит VM Bitrix, как можно найти и скачать резервные копии БД?

    gromdron
    @gromdron
    Работаю с Bitrix24
    В BitrixVM по-умолчанию не создаются резервные копии.
    Т.е. чтобы они были, нужно настроить автоматическое создание.
    Резеврная копия штатно создается двумя способами:
    1) Средствами bitrixVM
    2) Средствами битрикса (бекапится то что в настройках).

    Сделать резервную копию можно зайдя по пути: Настройки -> Настройки сайта -> Резервное копирование

    На всякий случай:
    https://dev.1c-bitrix.ru/learning/course/?COURSE_I...
    https://dev.1c-bitrix.ru/learning/course/?COURSE_I...
    Ответ написан
    Комментировать
  • Почему не отправляется сообщение на почту из формы заявки???

    gromdron
    @gromdron
    Работаю с Bitrix24
    Только сегодня уже отвечал на подобный вопрос
    Ответ написан
    Комментировать