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

    gromdron
    @gromdron
    Работаю с Bitrix24
    Если вы прописали в php_interface/init.php (а не в конкретный сайт), при этом если он не перекрывается другим init.php то все должно работать с точки зрения подключения классов.

    Однако метод агента должен возвращать строку - либо php-код (полное название функции) следующего агента, либо ничего - у вас же дальше будет "eval("агент");" что вызовет ошибку php.

    Смотрите логи httpd и php
    Ответ написан
  • Как не создавать элемент через событие?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Событие "onCrmDynamicItemAdd" используется исключительно для REST и срабатывает после создания элемента смарт-процесса. Т.е. отменить в этот момент вы ничего не можете.

    Для кастомизации смарт-процессов на коробке вы должны использовать дополнительные Действия, перекрывая фабрику смарт-процесса.
    Ответ написан
    Комментировать
  • Как работать с объектом ORM в методе обработчике класса описания сущности?

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

    Можно сделать работу обработчиков в паре, для получения воспользоваться объектом.

    Для вдохновения можно использовать код:
    use \Bitrix\Main\ORM\Event;
    
    class DeleteHandler
    {
        static $queue = [];
    
        public static function beforeDelete(Event $event)
        {
            // Получаем объект
            $item = $event->getParameter('object');
    
            // Запрашиваем из БД `FILE_ID`
            $item->fill('FILE_ID');
    
            // Пишем в "стек" удаляемый файл
            static::$queue[ $event->getParameter('ID') ] = (int) $item->get('FILE_ID');
        }
    
        public static function afterDelete(Event $event)
        {
            if (
                in_array($event->getParameter('ID'), static::$queue )
                && static::$queue[$event->getParameter('ID')]>0
            )
            {
                \CFile::Delete(static::$queue[$event->getParameter('ID')]);
    
                unset(static::$queue[$event->getParameter('ID')]);
            }
        }
    }
    Ответ написан
    Комментировать
  • Как убрать поле "комментарий" в заданиях бп?

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

    Для того чтобы убрать или контролировать его появление необходима кастомизация шаблона bitrix:bizproc.task
    Ответ написан
    1 комментарий
  • Бизнес процесс и кастомные поля список. Как забрать выбранные значения из поля?

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

    Получить значение глобальной переменной можно многими путями, например через парсинг:

    $globalVarAsdasd = $this->ParseValue('{'.'{Переменные глобальные: asdasd}}');


    Взято из книжки
    Ответ написан
    1 комментарий
  • Как настроить отправку писем в битрикс24 (коробка)?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Скорее всего вы пытаетесь настроить отправку из модуля "Почта", а штатно она отправляется через системную. Обычно smtp relay на почтовых серверах запрещен (или стоит денег).

    Для избежания этой проблемы можно:
    1. Перейти на локальные smtp настройки.
    2. Забить все конфигурациии в msmtp и написать код распределения. На этой технологии кстати работают многие решения по отправке писем.

    Рекомендую вариант 1.
    Ответ написан
  • Как сделать превью pdf документа?

    gromdron
    @gromdron
    Работаю с Bitrix24
    Вопрос такой: как сделать превью пдф документа?


    Через любую программу, которая позволяет конвертировать PDF в изображение, например convert, pdftoppm

    Подобные ответы легко ищутся в интернете:
    https://stackoverflow.com/questions/43085889/how-t...

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


    Все просто - клиент загружает PDF, вы сохраняете его в инфоблок и пока не сформирован preview выводите какую-нибудь заглушку с изображением файла-расширения.
    На событии добавления регистрируете агент, который принимает ID элемента, а внутри проводит конвертацию и сохраняет preview изображения.
    Ответ написан
    Комментировать
  • Как в Битрикс 24 поставить задачу при изменении поля?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Если у вас абстрактный вопрос "как отслеживать изменение полей", то лучше чем ответил belc не будет.
    Суть подхода такая: вы делаете еще Н полей (по 1 на каждое отслеживаемое поле) и при изменении/создании копируете туда старые значения.
    Делаете БП на изменение и проверяете старые значения, сравнивая с текущими - если есть разница то делаете что нужно.
    Подход самый НЕ оптимальный и самый НЕ гибкий.

    Обычно следует изменить подход к проектированию и разделить бизнес-процесс на две группы: первая относится к процессу, т.е. определить жизненный цикл сделки и необходимые шаги для ее реализации, а вторая - это подпроцессы которые должны выполняться при определенных условиях.
    Соответственно у вас будут условия перехода сделки по стадиям (это жизненный цикл), переходя по которым вы будете проверять условия которые регулируются подпроцессами.

    Ситуации когда в середине пути координально изменяются состав работ быть вообще не должно никогда.
    Т.е. если вы вдруг строили мост, а потом занялись проектированием космического корабля - то у вас ошибка в реализации и этого нельзя делать. Нужно отменять эту сделку и создавать новую - чтобы потом разобраться как же так произошел просчет с оценке.
    Ответ написан
    Комментировать
  • Почему подзадачи не отображаются в скраме?

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


    Подзадача отображается на скрам доске в спринте.
    Что такое задача? Это то что нужно сделать.
    Что такое подзадача? Это часть которую нужно сделать для выполнения основной задачи.

    Отсюда получается - в беклоге отображаются только родительские задачи.
    В спринте отображаются и родительские и их дочерние.

    Наглядная иллюстрация:
    65a52c7914156062433796.png
    65a52c74ad383760659904.png
    Ответ написан
  • Как установить АСПРО Максимум на коробочном портале Битрикс 24 на отдельный домен?

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

    2. При создании отдельного сайта с ядром и БД Б24, когда сайт создаётся в папке /home/bitrix/ext_www/папка сайта и создания там символических ссылок на папки /home/bitrix/www/bitrix и /home/bitrix/www/upload, в момент перехода на URL сайта, происходит переадресация на главную страницу Б24(((


    Вам нужно корректно заполнить следующие моменты:
    1. Нужно указать распространение авторизации на все домены
    2. НЕ прописываете адрес сайта у crm в настройках сайта
    3. Указать корректные пути в сайтам
    4. Повысить сортировку сайта ИМ выше CRM
    Ответ написан
  • Как удалить элемент множественного поля Email в Bitrix24?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Работать с таблицей значений мультиполей для записи/изменения или удаления напрямую нельзя.

    Используйте методы CCrmLead или CCrmContact.

    Например для контакта (взято отсюда):
    $contactFields = [
        "FM"       => [
            "PHONE" => [
                // Телефон с ID 3567 будет изменен
                "3567" => [
                    "VALUE"      => '+78889996644',
                    "VALUE_TYPE" => "WORK",
                ],
                // Телефон в ID 1234 будет удален
                "1234" => [
                    "VALUE"      => '',
                    "VALUE_TYPE" => "HOME",
                ]
            ],
        ],
    ];
    
    $contactEntity = new \CCrmContact(false);
    
    $isUpdateSuccess = $contactEntity->Update($contactId);


    А вот как раз 3567 и 1234 вы можете получить либо через GetList той же сущности, либо через FieldMultiTable.
    Ответ написан
    Комментировать
  • Можно ли использовать Bitrix Framework без Bitrix CMS? Как начать?

    gromdron
    @gromdron
    Работаю с Bitrix24
    TLDR: Никак.

    Давно читал что Битрикс CMS -- это продукт, построенный на Bitrix Framework. Как и Битрикс 24. И по идее, можно построить на нём свой собственный продукт. Использовать без CMS или любого готового решения или продукта.


    Да, есть Bitrix Framework, но это не фреймворк в общепринятом виде, а именно каркас проприетарной системы который непрерывно связан с CMS (точнее обмазан вокруг).

    Есть ядро продукта (которое состоит из модулей main, fileman, ui, rest и сайта-админки), так вот Framework это часть модуля main который обеспечивает работоспособность системы.
    Ответ написан
    Комментировать
  • Как загрузить папку в Б24?

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


    Здесь вы уперлись в ваш собственный лимит и решили перейти на более "простой" как вам показалось вариант.
    Нет, лучше не использовать эластичные диски, а выделять квоту явно и прогнозировать ее рост.
    Сотни гб - это объем который пугает вашу организацию (или вас), но у нас на некоторых проектах расчет идет в ТБ.

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


    Здесь вы упираетесь в организацию файлов - любая ФС будет тормозить при большом количестве файлов в одной директории. Диск битрикса24 не исключение - каталогизируйте ваши данные. Старайтесь не допускать более 500 объектов в директории.

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


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

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Штатно такой возможности нет. Интеграция Битрикс24 <-> БУС подразумевает что интегрируется стандартный Б24 и стандартный БУС без допилов.
    Ответ написан
    Комментировать
  • Как сделать pdf файл для скачивания из элемента битрикс?

    gromdron
    @gromdron
    Работаю с Bitrix24
    CFile::MakeFileArray

    MakeFileArray принимает параметром физический файл который будет, т.е. сначала вам нужно создать корректный pdf файл и положить его куда-нибудь в tmp директорию, а оттуда сохранить.

    А у вас судя по всему render() отрисовывается в контексте текущей страницы, где уже выведен хедер и от этого файл битый.
    Ответ написан
    Комментировать
  • ЧПУ на Битрикс через urlrewrite?

    gromdron
    @gromdron
    Работаю с Bitrix24
    Вот прям вот так на стандартных компонентах вряд ли получиться.
    Дело в том что у вас конфликт с SEF. С одной стороны вы скорее всего в SEF указали что путь к детальной странице у вас выглядит как: #SECTION_CODE_PATH#/#ELEMENT_ID# и в таком случае ваша фраза "brands" воспринимается как символьный код одного из разделов.

    Я бы порекомендовал собрать свой комплексный компонент, который бы работал со следующими ЧПУ:
    /catalog/brands/#BRAND_CODE#/ - деталка конкретного бренда
    /catalog/brands/ - список брендов
    /catalog/item/#ELEMET_CODE#/ - деталка конкретного элемента
    /catalog/section/#SECTION_CODE_PATH#/ - отображение списка элементов в разделе
    /catalog/ - отображение списка разделов.

    А уже в качестве простых компонентов (в составе комплексного) использовать штатные компоненты битрикса.
    Ответ написан
  • Bitrix 24 как добавить редактирование своего поля?

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

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

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

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


    Синхронизация почты работает в двух вариантах - на агенте (Bitrix\Mail\Helper::syncMailboxAgent(***);) и на таймере (напрямую через \Bitrix\Mail\Helper\Mailbox\MailboxSyncManager).

    В агенты штатно вынесен только syncMailboxAgent (с периодом в 1 сутки), но он имеет ограничения на запуск поэтому при большом количестве почтовых ящиков и длительных ответах начинаются тормоза.

    Никакой инструкции нет, поэтому сначала можно попробовать уменьшить период запуска (скажем каждые несколько часов).
    Ответ написан
  • Как записать данные с xml в лог в Битриксе?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Есть ли быстрый способ решить эту проблему?


    Чтобы был "быстрый" способ, нужно хотя бы иметь "2 способа" решения, а вы даже проблему (т.е. собственно почему происходит деактивация) не локализовали.

    Как посмотреть пользователей которые пришли во время обмена с AD?


    Таких логов не ведется, но можно подписаться на событие OnLdapUserFields модуля ldap и посмотреть какие приходят данные во время обмена.

    Как записать в лог всех пользователей которые есть в xml с 1с?


    Если мы говорим про штатный импорт, то файл последнего импорта находится в `/upload/1c_intranet/`
    Судя по тому что вы привели код - у вас кастомный импорт и здесь вам нужно обратиться к разработчикам.

    Что касается вашей проблемы, я кажется знаю ее корень: изменение пользователей из 1С.
    В механизме сихнронизации битрикса происходит оперирование тремя датами:
    - Дата последней синхронизации в Битрикс24
    - Дата последнего изменения сотрудника в Битрикс24
    - Дата последнего изменения учетки в AD

    Синхронизация происходит при трех ключевых условиях:
    1. LDAP Query вернул учетку.
    2. Изменение учетке в AD (либо в Б24) произошли ПОСЛЕ последней успешной синхронизации.
    3. Учетка не должна входить в "неимпортируемые группы"

    Соответственно типовые ошибки:
    1. Рассинхрон времени (например по какой-то причине время на сервере Б24 бежит впереди времени AD).
    2. Шаманство с датами (иногда учетки отключают задним числом)
    3. Неправильные условия (ldap query с активностью)
    4. После увольнению учетку добавляют в группу, которая в Б24 помечена как несинхронизируемая
    Ответ написан
    Комментировать
  • Возможно ли передать статус "брошенная корзина" с сайта на битриксе в crm битрикс 24?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Если вы говорите про независимую установку на БУС и облачному Битрикс24 - то нет.
    Если мы говорим про CRM+ИМ то можно.
    Если мы говорим про собственную интеграцию - то можно.
    Ответ написан
    Комментировать