• Как в API Bitrix24 с помощью метода crm.deal.productrows.set привязать конкретную вариацию товара?

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


    Вариация это вид товара и у нее так же есть ID.
    Вам необходимо привязывя товар к сделке указать не ID товара, а именно ID вариации.
    Ответ написан
    Комментировать
  • Битрикс 24 коробка, причины отката сделки?

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

    Косвенно на наличие доработок указывает запись от безымянного лица в истории сделки - такое бывает если действие происходит без указания авторства и проверки прав, т.е. кодом.
    Ответ написан
    Комментировать
  • Как настроить push&pull WebSocket RTC на ВМ Битрикс 24 с обратным проксированием nginx?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Не занимайтесь ерундой - это все сложнее чем вам бы хотелось.
    Самый простой вариант - проксируйте как есть на bitrix env и пусть он занимается сертификатами и всем остальным.


    1. Надо ли пробрасывать с внешнего IP порты 1137, 1139? И куда пробрасывать на Nginx Revers Proxy или напрямую на Б24? (Пробовал и так и так, ничего не дало, никаких изменений).
    2. Если я пробрасываю порты 1137, 1139 на Nginx Revers Proxy надо ли мне их как-то в конфиге nginx дальше проксировать на ВМ Б24? Или пробросить на ВМ Б24 через iptables DNAT'ом?


    Эти порты, ровно как и порты 80* и 90* проксировать НЕ нужно.
    Да, это было необходимо ранее, когда использовался nginx-push-stream-module, но он устарел еще на версии битрикс эдак 18-й, а с версии 22 уже требуется Bitrix NodeJS v2 - да-да именно второй (был еще и первый как промежуточный).
    Он работает на двух технологиях - long polling и websocket, но главное - он работает по потому же порту что и HTTP/HTTPS, т.е. проксировать достаточно только их.


    3. Сертификат SSL у меня установлен на Nginx Revers Proxy (что видно из конфига), нужно ли при этом ещё один SSL сертификат устанавливать для ВМ Б24?


    Если вы хотите чтобы это корректно работало, то вам необходмо будет ЛИБО прокидывать на 443 -> 443 и безоговорочно доверять всему и ловить ошибки самого битрикса, либо дублировать сертификат на локальную машинку.

    Вот только этот сертификат придется устанавливать еще на:
    - nginx
    - apache (http-scale сервис)
    - push-service

    И если с первыми двумя еще как-то нормально, то по последнему документации вы не найдете.
    В противном случае вы можете получить интересные ошибки когда часть сообщений отправляемых в пул не будет попадать в пул из-за того что битрикс не будет доверять сам себе.
    Вы же не полезете в ядро выключать проверку сертификатов?

    Я попробую поискать наш reverse-proxy конфиг который мы используем для проброса.
    Ответ написан
  • Как зациклить получение данных через php в коробке Битркс24?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    В вашем коде несколько ошибок, которые вы никак не обрабатываете.

    Ошибка номер 1: права.
    Модуль задач не стандартный - он по-умолчанию включает права и права контролирует жестко. Если пользователь, на чей хит выпал запуск действия не имеет прав на задачу ID:6234, то в $arTask будет false и вы просто не зайдете в условие.
    Почитайте эту статью: https://maxyc.wordpress.com/2017/12/27/bitrix24-ta...

    Ошибка номер 2: неправильно написание кода.

    Посмотрите внимательно на фрагмент кода:
    $this->SetVariable(Variable1, $arTask["TITLE"]);

    У вас Variable1 с точки зрения php это контанта, но ее вы не задаете.
    По тексту я понимаю что вы хотите заполнить переменную бизнес-процесса с кодом Variable1 значением названия задачи.
    У вас это должно выглядеть так:
    $this->SetVariable("Variable1", $arTask["TITLE"]);

    Ошибка номер 3: вера в работу кода.

    Что случится, если внезапно этот код вызовет ошибку? Например какой-нибудь fatal?
    Ваш бизнес-процесс зависнет и перестанет выполняться - а вы даже не узнаете почему.
    Совет: оборачивайте ваш код в try-catch блок и в catch-блоке используйте запись в лог БП или хотя бы в файл.

    И я надеюсь что цикл у вас построен правильно, потому что 1 тысяча итераций - это его предел.
    Ответ написан
    Комментировать
  • Битрикс 24 облако как сложить значения во множественной переменной?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Дано:

    Сущность: Сделка.
    Поле: "Множественная сумма", тип Деньги, множественное
    Поле: "Sum", тип Деньги, единственное

    Задача: сделать БП который проитерируется по всем значениями из "Множественной суммы" и установит сумму значений в поле "Sum".
    Валюта - всегда рубли, любая другая валюта приравнивается к рублю по курсу 1к1, т.е. если будет указано 100руб и 5 долларов, результатом должно быть 105 рублей.

    Решение:
    1. Создаем БП с одной переменной - Объединенная сумма (compiledSum).
    2. Ставим итератор по значениям переменной
    3. Записываем в локальную переменную БП текущее значение + приведенное к числу значение из поля типа Деньги. Тип деньги это комплескный тип (т.е. его значение это <сумма>|<код валюты>, например "100|RUB"), и при приведении его к числу останется только числовая часть, т.е. 100.
    4. Далее в существующее поле записываем комплексное значение, которое получается из конкатенации строкового числа и фиксированной части "|RUB"

    Скриншоты настроек:
    63e9f0e80761a349049802.png
    63e9f0f9e5e75155868956.png
    63e9f102f2bc8729446390.png
    63e9f10bdc643089407860.png
    Ответ написан
    1 комментарий
  • Как убрать определенного сотрудника из списка новых сотрудников(intranet.structure.informer.new)?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Откройте админку: Контент - Орг.структура - История состояний

    И оттуда удалить интересующие вас события.
    Ответ написан
    Комментировать
  • Каким образом в CRM Битрикс24 (коробочный) можно получать системные события типа "При удалении сделки" (onCrmDealDelete)?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Документацию https://dev.1c-bitrix.ru/ уже несколько дней перелопачиваю,


    В официальной документации сказано про init.php, под подписки на события Есть так же куча неофициальных документаций и статей где и как размещать свой код.

    в какой из системных файлов дописать код выцепляющий нужные мне события


    Единого перечня событий нет, т.е. тут только гуглить и искать по системе.
    Ответ написан
    Комментировать
  • Как модифицировать подсказки при добавлении компании, контакта?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Прямой модификации там особо нет.
    Есть 2 варианта:
    1. Использовать REST-приложение и подписываться на события (пока не документированы).
    2. Подменить сервис адаптера поискового вывода (Bitrix\Crm\Search\Result\Adapter\CompanyAdapter) через service locator битрикса (работает где-то с 21-22 версии, я тестил на 22.500)

    63e210522c5f8963407481.png
    Ответ написан
    Комментировать
  • Пользовательское поле - тип Привязка к разделам инфоблоков - как вывести разделы в виде иерархии + поиск?

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


    Скорее всего на той коробке где смотрели была кастомизация стандартного вывода свойства и там уже допилен entity-selector.
    Это не включается галочкой.
    Ответ написан
    2 комментария
  • Почему в ./menu.sh в разделе Configure pool sites нет пункта Create new site?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Вы поставили bitrix env в режиме CRM установки, в то время как в документации все указано для "стоковой" виртуальной машины.

    Для начала вам нужно переключить ее в обычный режим:
    1. Вам нужно отредактировать файл /root/.bash_profile:

    Скорее всего там будет фраза:
    export BITRIX_ENV_TYPE=crm

    Ее нужно заменить на:
    export BITRIX_ENV_TYPE=general

    2. После чего при выполнении ~/menu.sh у вас откроется обычная панель
    Ответ написан
    3 комментария
  • БП - как возобновить завершенную задачу и приостановить дальнейшее выполнение БП?

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


    Нет. Самое простое - сделать REST приложение, которое умышленно создаст паузу и будет проверять не завершена ли задача и не заполнено ли нужное поле.
    Ответ написан
    Комментировать
  • Как массово настроить уведомления в настройках чата для всех пользователей?

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


    Штатно тако настройки нет, однако можно поискать аналоги (например это)
    Ответ написан
    1 комментарий
  • Можно ли в Битрикс24 из объекта &quot;Контакт&quot; выполнить поиск по элементам смарт-процесса?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Но как мне найти уже созданный элемент?


    На вкладке в сущности отображаются только привязанные к этой сущности элементы.
    Т.е. чтобы прикрепить к "Контакту" "Автомобиль", вам нужно зайти в список элементов "Автомобиль", найти нужный и отредактировать его установив в поле-связке нужный вам контакт.
    Штатный интрумент не подразумевает другого
    Ответ написан
    Комментировать
  • Где хранятся файлы приложения Битрикс 24 Маркет?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    День добрый! Есть коробка Битрикс 24. Подскажите путь где хранится установленное приложение из Битрикс24.Маркет ?


    Существует 2 типа приложений:
    - Встроенные (они находятся в папке apps и состоят из html/js/css)
    - Внешние

    Внешние приложения не находятся на вашем сервере - они находятся на сервере у разработчика.

    Однако! Контент этих приложений аналогичным образом может хранится как в инфоблоках на портале (в админке), так и на внешних серверах. Т.е. если у вас локальное приложение - то не обязательно оно все у вас, а если у вас внешнее приложение, то не обязательно оно хранит данные у себя.
    Ответ написан
    Комментировать
  • Как в БД обозначается тип свойства text/html?

    gromdron
    @gromdron
    Работаю с Bitrix24
    Для того чтобы создать свойство инфоблока типа "HTML/Текс" необходимо:
    1. Определить значение по-умолчанию.
    DEFAULT_VALUE - для данного случая будет сериализованный (serialize) ассоциативный массив php:

    [
    	"TEXT" => "",
    	"TYPE" => "HTML"
    ]

    В виде значения (то что будет сохранено в БД):
    a:2:{s:4:"TYPE";s:4:"TEXT";s:4:"TEXT";s:0:"";

    Для текста вместо HTML будет TEXT

    2. PROPERTY_TYPE = S
    Это означает что в базе данных будет хранится строка и поиск будет осуществляться как по строке.

    3. USER_TYPE (подтип свойства) = HTML
    Мы указываем что у нас не просто строковое значение, а строковое значение определенного типа

    4. Задаем в ключе USER_TYPE_SETTINGS дополнительные настройки для свойства.
    Подобно значению по-умолчанию это сериализованный (serialize) ассоциативный массив.
    По-умолчанию в нем только высота поля:

    [
    	"height" => 200
    ]

    В виде строки (что сохранится в базу данных):
    a:1:{s:6:"height";i:200;}
    Ответ написан
  • Bitrix24 Локальное приложение возвращает пустой массив, как фиксить?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Вы на настраивали рабочие отчеты: либо не имеете к ним доступ, либо они нигде не требуются, либо никто их не сдавал.

    Это поведение описано в документации к методу.


    Если возвращается пустой массив days, то сначала выставьте нужные опции, для доступа к отчету и сбору данных (необходимо быть администратором и на любой странице портала выполнить в консоли):

    BX.rest.callMethod('timeman.timecontrol.settings.set', {
        active: true,
        REPORT_SIMPLE_TYPE: 'all',
        REPORT_FULL_TYPE: 'all',
        report_request_type: 'user',
        report_request_users: [BX.message.USER_ID],
    }, function(result){
        if(result.error())
        {
            console.error(result.error().ex);
        }
        else
        {
            console.log(result.data());
        }
    });


    После этого откройте или закройте рабочий день, после этого в отчете для этого пользователя будут данные:
    BX.rest.callMethod('timeman.timecontrol.reports.get', {
        user_id: BX.message.USER_ID,
        year: 2019,
        month: 1,
        workday_hours: 8,
        idle_minutes: 15
    }).then(e => console.log(e))


    Ответ написан
    Комментировать
  • Что необходимо для работы контроллера в Bitrix?

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


    Есть несколько способов чтобы "Битрикс" (а на самом деле php) видел ваш класс:
    1. Ванильный php: класс должен быть подключен к выполнению явно через подключение файла в которым он описан
    2. Вандальный/Коробочный Б24: Класс должен располагаться где-угодно, но быть заргистрирован через автолоадер (здесь не важно что вы используете: composer, битриксовый или свое на базе spl_autoloader) в init.php
    3. Через модули.

    Если мы говорим о классическом bitrix framework то правильнее делать модуль.
    Причем в модуле есть 2 варианта его инициализации:
    1. Через "автолоадер" или прямое подключение в include.php ()
    2. Через `psr`-подобный загрузчик в папке lib (https://dev.1c-bitrix.ru/learning/course/index.php...)

    Иначе говоря:
    - Либо вы размещаете где хотите и подключаете его сами
    - Либо если вы работаете с модулем то положить его по psr4 в папочку `lib` вашего модуля.

    Как работает автозагрузчик?


    Если вы читали абзац выше, то поняли, что единого центразиованного загрузчика тут нет.
    Есть:
    1. Глобальный автозагрузчик из модулей (который загружает по psr4 из активных подключенных модулей)
    2. Локальный автозагрузчик модуля (для подключенного модуля)
    3. Кастомные загрузчики (тут кто во что горазд).

    Соответственно, если мы говорим про 1 и 2 типы загрузчиков, что сначала необходимо подключить модуль (`\CModule::IncludeModule` или `\Bitrix\Main\Loader`), а потом уже вызывать классы.
    Если вы попытаетесь вызывать классы, а до вас никто не подключил модуль, то вы получите фатал.

    Везде ли он работает?


    Последний абзац выше показывает что нет.

    Есть ли проблемы с версиями? Отличия ядер битрикса или ещё какой черной магии?


    Описания в зависимости от версии особо нет.
    Что касается проблем, то примерно до версии 18 psr-подобного загрузчика не было, потом он начал появляться и совершенствоваться.
    Если ориентироваться на последнюю версию Битрикс24, то проблемы если и есть, то только локального характера связанные с модульной структурой.
    Здесь могу посоветовать только проштудировать документацию и потыкаться самому. Универсальной формулы нет - документация тут скудная.

    Как настроить defaultNamespace и namespaces в .settings.php, чтобы всё заработало?


    Здесь нужно намного больше информации, например: как модуль используете, что сделали, что ожидаете и что работает не так как ожидали.
    Пока могу лишь ограничиться ответом "настроить согласно документации" (ха-ха, злая шутка, особо документации нет - нужно больше вводных данных см выше)

    Есть ли где-то полностью рабочий пример реализации своего класса, с описанием того где файлы и почему они там?


    Нет, такого нет.
    В Битриксе это можно получить только после изучения всех курсов/доков/экзаменов и с точки зрения практического опыта.
    Можно посмотреть уже готовые модули (что-то подобное можно найти на github, например https://github.com/alex-nzr/bitrix-example-boilerp... или https://github.com/zahalski/awz.ydelivery/tree/mas...)/
    Можно посмотреть как это делать без модулей https://bx24devbook.website.yandexcloud.net/index.html (тут скорее больше описания чем конкретные классы).

    Готового гайда как у симфони здесь увы нет.

    Какая именно должна быть ссылка для проверки роута?

    Что вы имеете ввиду? Проверки чем? Ссылка на что? Какого роута?
    Ответ написан
    1 комментарий
  • Как в битрикс24 приостановить выполнение активити в бизнес-процессе, а потом через какое то время 1 час или пару дней, продолжить выполнение?

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

    Если мы говорим про возможность останавливать какое-то уже сложившееся действие, то такая возможность отсутствует.
    Ответ написан
    Комментировать
  • Неожиданно перестал работать BitrixCRM 7.5 белый экран на входе на сайт и не показывает окно авторизации что делать?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Для начала научимся дебажить "белый экран":

    1. Вы видите "белый экран", а если посмотреть исходный код страницы, увидите ли вы php код?
    Если вы видите этот код - значит проверяйте параметр `short_open_tags` - он должен быть "on".

    2. Если кода не видно, но перед этим вы делали какой-либо `var_dump` (или `print_r` и т.п.) в коде.
    Удалите этот код и попробуйте еще раз.

    3. Если все произведенные выполнено, но вы по-прежнему видите белый экран, то нужно проверять логи php.
    Как это можно сделать?
    3.1 Можно в `.settings.php` включить отладку (debug=true)
    3.2 Можно в `.settings.php` настроить логгирование исключений (`debug` -> `log` и посмотреть куда сыпятся логи: чаще этот параметр не задан, но иногда он указывает на `/var/log/php/exception.log` либо на `bitrix/modules/error.log`). Открываем этот файл и смотрим что там не так
    Ответ написан
  • Как в коробочном Битрикс 24 открывать iframe задания бизнес процесса, сразу после его создания?

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


    Никак - это разный контекст.

    Начнем с понимания того как именно могут быть запущены бизнес-процессы?
    1. Через прямой запуск из публички веб-браузера
    2. Через косвенный запуск из публички (когда какое-то действие неявно вызывает запуск процесса)
    3. Через api (например в консоли сервера, cron/агенты и т.п.)
    4. Мобильное приложение (стоит особняком).

    Во всех этих случаях лично мне не понятно как, кому и где открывать попап.

    Обычно на такое есть 2 способа:
    1. Через асинхронный опросник в фиксированную точку.
    2. Через пуш-события

    Рассмотрим подробнее механизм работы каждого. "Асинхронный опросник" выполняет поиск заданий назначенных пользователю с определенной периодичностью и в случае если подобное задание найдено - делает рендер этого задания в определенную область.
    На этой технологии например работает модуль "Процессы в карточках CRM".

    Механизм "пуш-событий" требует немного больше навыков и работающий push.
    Здесь нет опросного механизма, а все действие завязано на "событиях назначения заданий бизнес-процессов", которые выбрасывают сообщние через websocket. Далее при получении сообщения уже понимается контекст работы приложения (десктоп/мобильное, потому что в cli-режиме никто события не слушает) и происходит отрисовка именно на js в нужном контексте (открывается попап или слайдер).

    Оба способа полный кастом, т.е. в стандарте для этого нет ничего.
    Ответ написан
    Комментировать