• Как вы делаете бекап портала большого объема?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Это сильно зависит от целевой потребности, от архитектуры используемого Битрикс24, от навыков системного администратора. Надо сказать что 500ГБ это не большой портал.

    Если предположить что у вас один сервер, на котором находится и файлы и базы данных и сама система то мы обычно поступаем так:

    1. Бекап базы данных снимать через Percona XtraBackup.
    Можно использовать mysqldump с разными опциями производительности, но тут уже зависит от разных обстоятельств.

    2. Файловая часть.
    Тут зависит от способа ведения разработки и других требований.
    В самом простом случае: просто tar'ом в архив и отправка на сервер бекапов
    Если места не очень много: rsync на удаленный сервер as is

    Если есть разработка то снимается 2 бекапа: ядро (все кроме папки upload) и файлы (только upload).
    Методы те же.

    Т.е. по факту разработчикам отдается дамп базы и ядро, а пользовательские файлы не передаются.
    Если есть git с внешним репозиторием, то можно снимать вообще 2 бекапа: ядро (только папка bitrix) и файлы (только папка upload)

    Иногда используется сокращенный бекап: средствами системы формируется бекап без поискового индекса и папки upload и хранится он в облаке б24, а файлы в файловом хранилище (AWS S3-совместимое хранилище, например Yandex.Object Storage).

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

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Нужно больше контекста.

    Я сейчас поставил вот такой код в PHP консоль:
    AddEventHandler("crm", "OnBeforeCrmLeadAdd", "CheckOnBeforeCrmLeadAdd");
    AddEventHandler("crm", "OnAfterCrmLeadAdd", "CheckOnBeforeCrmLeadAdd");
    AddEventHandler("crm", "OnAfterExternalCrmLeadAdd", "CheckOnBeforeCrmLeadAdd");
    
    function CheckOnBeforeCrmLeadAdd(&$arFields) {
    file_put_contents($_SERVER["DOCUMENT_ROOT"]."/log_lead.log",print_r($arFields,true)."\n",FILE_APPEND);
    }
    
    \Bitrix\Main\Loader::IncludeModule('crm');
    
    $obLead = new \CCrmLead(false);
    $ID = $obLead->Add(
    	$leadfields = ['TITLE'=>'test'],
    	true,
    	array("REGISTER_SONET_EVENT" => true, "DISABLE_USER_FIELD_CHECK" => true)
    );


    Файл создался.

    Проверь права на папку куда записываешь файл и проверь подключен ли модуль crm на странице.
    Ответ написан
    Комментировать
  • Как добиться отображения Чатов в мобильном приложении Битрикс аналогично приложению Битрикс24?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Вам нужно не открывать iframe в чаты, а разработать код, который будет делать то же самое.
    Т.е. это не какая-то галочка или другой шаблон компонента, а уже более нативная разработка.
    Ответ написан
    Комментировать
  • Как получить id лида созданного через плагин WooCommerce(Интеграция wooCommerce с bitrix)?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    вопрос в том, как можно получить id созданного лида


    Замените вызов архаичного метода с логином и паролем на вебхук crm.lead.add
    В результате вызова он вернет вам идентификатор созданного лида, который вы сможете использовать для заполнения товарных позиций
    Ответ написан
    1 комментарий
  • Как отобразить файлы на физическом диске в диске Битрикс24?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Подскажите, пожалуйста, можно ли создать на диске Битрикс24 папку, в котором отобразятся физические файлы с подключенного диска?


    Нельзя.
    Архитектурно программным продуктом не заложена такая возможность.
    Ответ написан
    Комментировать
  • Как проверить будет ли день рождения в определенный период?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Как вариант, пытался от system:now отнять дату рождения с помощью datediff с параметром '%y' чтобы вычислить разницу в годах, а потом прибавить к дате рождения и сравнить с датами заселения и выселения.


    Создаете 2 переменные:
    - День рождения (дата)
    - Разница в годах (число)

    Первым делом вычисляете разницу (datediff с параметром y) между текущей датой и датой рождения и записываете результат в "Разница в годах". Именно в числовое поле, а не в дату - иначе будет результат 1970 год.
    Вторым - устанавливаете "День рождения" как результат dateadd между "Дата рождения" и разницей в годах.
    Третьим - сравниваете :)

    Можно ли использовать substr с переменной типа "дата"?


    Нельзя, однако поле типа "Дата" можно привести к строке и тогда можно.
    Ответ написан
    Комментировать
  • Как сопоставить параметры в CRM при интеграции через входящий вебхук?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Добавляется пустой лид, как сделать, чтобы данные добавлялись в соответствующие поля?


    В документации (https://dev.1c-bitrix.ru/rest_help/crm/leads/crm_l...) сказано что метод crm.lead.add принимает 2 параметра: fields и params.
    Вы НЕ передаете эти параметры, но передаете параметры NAME и PHONE.

    Отсюда можно сказать что ваш запрос должен выглядеть так:

    bitrix.site.ru/rest/107/dklsaubnbfsdfsfanh3a/crm.lead.add.json?fields[NAME]=111111&fields[PHONE]=1111111111111

    Однако я не рекомендую передавать параметры напрямую в query string, а использовать вместо этого payload часть вашего запроса.

    Как ее использовать?
    1. Выполняете не GET, а POST запросы
    2. В Content-type заголовке передаете application/json
    3. В payload-части передаете json.
    Ответ написан
    Комментировать
  • Даст ли освоение Битрикс24 преимущества Laravel фрилансеру?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    TLDR: Если вы рассматриваете Битрикс24 (облако) и свои приложения - флаг вам в руки. Если хотите взять коробку и отпилить у нее фронтент - лучше откажитесь от этой затеи.

    давать возмоность клиенту интегрировать свой портал с Б24 и использовать Б24 в качестве даже админки.


    Когда вы говорите про использование Б24 в качестве админки вы очень сильно заблуждаетесь. Битрикс24 это не 1С-Битрикс: Управление сайтом, а ваше утверждение растет из архаичных "Возьмем БУС, оставим админку, публичку напишем на ХХХ" (которые были довольно распространены чисто относительно БУСа лет эдак 5-10 назад), однако в Б24 публичка играет не менее важную роль чем админка (например классической админки для модуля СРМ просто нет). Сама по себе идея использовать Laravel не для отдельный частей а для "фронта в целом" довольно утопична.
    Это не будет легкой прогулкой по документации, с примерами и понятным маршрутом.

    То есть появится возможность зарабатывать и на настройке Битрикс 24, и на продаже коробок, и на настройке интеграции с сайтом и на разработке самого сайта.


    А вот это уже довольно хороший контекст.
    Если вы изучите REST API Битрикс24, научитесь писать приложения для самого Битрикс24, то ваша ценность как компании только вырастет.
    Вы действительно получите возможность И заработать на создании сайта И заработать на интеграции с Битри24 И продаже облачных/коробочных лицензий И на настройке Битрикс24.
    Но вот точно не стоит связываться с разработкой сложных и нестандартных механик коробки, которые невозможно выполнить без кастомизации кода. Там опыт Laravel будет только мешать.
    Ответ написан
  • Как вызывать методы rest api Bitrix24 коробки из блока php-кода в бизнес-процессе?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Как вызывать методы rest api Bitrix24 коробки из блока php-кода в бизнес-процессе?


    Методы REST API изложены в https://dev.1c-bitrix.ru/rest_help/
    Через REST вы не можете вызвать нативное API.

    Или как например выполните те же действия через методы классов https://dev.1c-bitrix.ru/api_help/crm/index.php

    Основы разработки вы можете начать постигать здесь: https://dev.1c-bitrix.ru/learning/course/index.php...
    Ответ написан
    Комментировать
  • Как сделать адаптивную темную тему на сайте?

    gromdron
    @gromdron
    Работаю с Bitrix24
    1. Разрабатываете сайт
    1.1 Делаете светлую тему
    1.2 Делаете темную тему

    2. Делайте таким образом, чтобы авторизованный пользователь в настройках пользователь мог выбрать тему.
    2.1 Делаете селектор
    2.2 Модифицируете код вашего сайта чтобы он на основании авторизации пользователя подменял тему.

    3. Если хотите чтобы и у неавторизированных пользователей была такая возможность, то сохраняйте тему в cookie и при заходе на сайт в код п. 2.2 добавляете проверку cookie.

    Какой пункт осветить подробнее?
    Ответ написан
    3 комментария
  • PHP Fatal error: Uncaught TypeError: array_rand(): Argument #1 ($array) must be of type array, string given in?

    gromdron
    @gromdron
    Работаю с Bitrix24
    Метод array_rand принимает первым аргументом массив, а вы передаете в него строку.

    Возможно вам бы смогли подсказать как именно модифицировать код, если бы вы сказали что он должен делать.
    Ответ написан
  • Возникла проблема при попытке войти на свой сервер битрикс при помощи десктопного приложения. Выдает сообщение "несовместимый сервер?". Что делать?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    • Какой версии Битрикс24?
    • Когда обновляли последний раз? Обновляли до последней стабильной или бета? Прошло ли обновление успешно?
    • Нет ли кастомизаций? Или сторонних разработок/модулей?


    Можете выложить на pastebin содержимое следующих файлов:
    /home/bitrix/www/desktop_app/login/helper.php
    /home/bitrix/www/desktop_app/login/index.php
    /home/bitrix/www/bitrix/modules/intranet/lib/util.php


    Предполагаю что произошло одно из нескольких вариантов:
    - Некорректно сконфигурирован веб-сервис (и настройки php)
    - Модификация ядра или программного кода
    Ответ написан
  • Битрикс облако, не работает свое действие через приложение?

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

    Как проверить? Откройте без wifi со своего мобильного эту ссылку (по моб.интернету). Если откроется - работать можно. Нет - значит нужно делать иначе.

    Вот тут очень хорошо про это написано: https://qna.habr.com/q/228439
    Ответ написан
    Комментировать
  • BX.SidePanel.Instance.open - Uncaught ReferenceError: BX is not defined. Как подключить класс?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Окей.

    0. Для начала проверить версию своего Битрикс24.
    В идеале она должна быть последняя, но точно не ниже 20.

    1. Это можно делать только на странице где подключено ядро.
    Причем код можно замещать как непосредственно в файле где подключается, так и в подключаемых файлах на этой странице.
    Что такое страница: https://dev.1c-bitrix.ru/api_help/main/general/pag...

    2. Для того чтобы это можно было использовать, на странице должна быть подключена библиотека
    \Bitrix\Main\UI\Extension::load(['sidepanel']);

    Судя по ошибке, которую я вижу у тебя либо не соблюден пункт 1 (не ядра вообще), либо твой скрипт отрабатывает до того как подключается библиотека.

    P.S. Я надеюсь ты речь ведешь про коробочную версию, потому как если ты делаешь REST-приложение (на твоем сервере находящееся), то тебе сюда: https://dev.1c-bitrix.ru/rest_help/js_library/addi...
    Ответ написан
    Комментировать
  • Как определить событие JS b и решить ошибку Uncaught Error: The toolbar instance with the same 'id' already exists?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    После обновления мы добавили файл result_modifier.php в темплейт crm.entity.details немного видоизменив из предыдущего итерфейса. Нужные табы добавились


    Этот компонент больше не нужно модифицировать.
    Вкладки можно добавлять на событии: https://dev.1c-bitrix.ru/api_d7/bitrix/crm/systemc...
    Это наиболее превильный путь

    При клике по табу грид с данными открывается, но возникла проблема следующего рода.


    Все верно - просто способ который раньше использовали не подходит для новой карточки.

    Начнем с того что вы поймете как работает новая карточка. Когда пользователь открывает детальную страницу, открывается карточка, но физически загружаются только 3 части: первая страница, страница товаров и общий макет, который является обработчиком вкладок. Когда вы нажимаете на вкладку происходит запрос который подгружает данные этой вкладки на страницу и отображает ее пользователю.
    Если вы в своем компоненте обрабатывается POST-запрос, например форму, то сделав отправку вы обнаружите что ваш компонент не загружен (и как следствие не обработал POST-запрос), а вам выводится первая страница.

    Теперь про работу грида.
    Для того чтобы принемить настройки, грид использует POST-запрос. Если параметры куда нужно отправлять POST запрос не переданы, то этот запрос будет направлен на ту же страницу, которая сейчас открыта. Т.е. понимаете, что вы не передали url, соответственно у вас происходит ситуация выше - отправляется POST запрос на страницу, где вашего компонента с гридом нет. Отсюда он не может получить ответ и его поведение такое какое вы видите.

    Как это счастье побороть?

    1. Создать физическую страницу, на которой разместите компонент.
    2. На этой странице у компонента грида задайте параметры OPTIONS_HANDLER_URL и BACKEND_URL
    3. Используйте события, чтобы добавить страницу из п.1 в таб.
    Ответ написан
    4 комментария
  • Как перенести поле из сделки в счет (или как копировать данные)?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Хочу создать бизнес процесс, который будет переносить данные из поля типа "Дата"


    Пока на счетах нет бизнес-процессов, то единственным корректным способом остается обработчик события и API.
    Что в облаке, что в коробке алгоритм тот же:
    - Подписываемся на событие создания счета (либо onCrmInvoiceAdd (для старых), либо onCrmDynamicItemAdd (для новых, помните про ограничения)
    - Получаем счет, находим привязанную сделку.
    - Достаем поля сделки
    - Обновляем счет
    Ответ написан
    Комментировать
  • Как в живой ленте создать новость только для руководителей отделов?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Самый простой способ: создать "Рабочую группу" с названием "Руководители отделов" и вручную включить всех руководителей туда.
    Тогда сообщения можно адресовать на рабочую группу.
    Ответ написан
    Комментировать
  • Как сделать поля с автоматическими разделителями для СНИЛС и кадастрового номера?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Вобщем - пробел : должны проставляться автоматом


    В облаке это возможно только если сделать свой тип поля. https://dev.1c-bitrix.ru/rest_help/application_emb...
    В коробке это сделать сложнее: подписаться на событие отрисовки страницы, определить что эта страница - карточка сделки CRM, подключить свою js библиотеку. В своей js библиотеке подписаться на страницу и проверить что активируется нужное поле, а потом наложить masked input https://dev.1c-bitrix.ru/api_help/js_lib/js-library.php
    Ответ написан
    1 комментарий
  • Как на php в битрикс24 установить права - только чтение, для контактов, конкретному пользователю?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Механика Битрикс24 сложнее чем вы описали.
    Дело в том что вы не назначаете конкретные права конкретному пользователю.

    Итак, с чего надо начать?
    В Битрикс есть пользователи, каждый пользователь наделен некоторым количеством "Access codes" (сокращенно AC, иногда они называются ролями, общими ролями, кодами доступа, пользовательскими кодами и т.п.). AC в частном случае если комбинация букв и цифр, например U1 - означает user ID:1, G2 - пользователь принадлежит к группе ID:2 и т.п.
    Один пользователь может обладать множеством таких аттрибутов.

    Битрикс24 это надстройка над платформой, основополагающем модулем, наряду с CRM является Интранет, который обеспечивает орг.структуру. Это добавляет новые код IU123, где IU - расшифровывается как Intranet User (сотрудник) ID:123 (т.е. пользователь с ID123, который находится в орг.структуре), D1 который расшифровывается как Department 1 (подразделение с ID:1, т.е. пользователь состоящий в подразделении ID:1) и DR1 (Department recurcive, вложенное подразделение в ID:1 или пользователь который состоит в орг.структуре и вложен в подразделение ID:1)

    Теперь поговорим про CRM.
    В CRM существуют права, например право на добавление сделок, право на чтение сделок, право на изменение контактов и т.п. У каждого права есть значени "Нет доступа", "Свои", "Своего отдела" и т.п. Комбинация прав называется Ролью (лучше говорить CRM Роль чтобы не путаться).
    Каждому Access code назначается своя роль.

    А пользователь соответственно получает максимально возможные значения прав из доступных ему.

    Т.е. предположим что вашей задачей является "Выдать роль ** сотруднику ID:1", тогда вам нужно обратиться к CCrmRole и использовать SetRelation($arRelation)
    Ответ написан
    Комментировать
  • В какой таблице базы данных Битрикс24 можно найти текст отчетов пользователей?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    В какой таблице базы данных Битрикс24 можно найти текст отчетов пользователей?


    В таблице: b_timeman_reports
    Ответ написан
    1 комментарий