• Сколько можно отправить сообщений в телеграм боте?

    @Everything_is_bad
    В чем проблема открыть офсайт и прочитать про лимиты? https://core.telegram.org/bots/faq#broadcasting-to...
    для бота 30 в секунду, можно за star поднять до 1000 в сек.

    Может есть возможность отправить одно сообщение, но сразу на все собранные контакты?
    нет, хотя это делается по другому, зовешь всех в канал и там уже одним сообщением их оповещаешь
    Ответ написан
    Комментировать
  • Как в боте запретить вводить цифры при ответе на вопрос бота?

    @setupx
    Go & TS developer
    Такого функционала в самом телеграмме у ботов нет. Тут только один выход: требовать скрин "Как у других реализовано" скрин/видео, но я уверен, что это делается на стороне сервера
    Ответ написан
    Комментировать
  • Почему последовательный вызов работает, а в одну строку нет?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Для такой цепочки каждая функция должна возвращать $this.
    По неймингу - префиксы set и get, как правило используются для сеттеров и геттеров, то есть функций, устанавливающих и возвращающих значения свойств экземпляра. Использовать их для других целей, конечно, можно, но крайне не рекомендуется.
    Ответ написан
    1 комментарий
  • Как фильтровать товары?

    Замените
    >CATALOG_QUANTITY
    на
    QUANTITY

    Детали тут
    https://dev.1c-bitrix.ru/learning/course/index.php...
    Ответ написан
    Комментировать
  • Битрикс. Почему getPropertyCollection видит не все свойства?

    @Dropsen Автор вопроса
    учусь веб-разработке.
    Решение нашёл.
    Не знаю, возникнет ли у кого проблема такая, но план действий следующий:
    В новых версиях битрикса может быть глюк: в списке свойств заказа => привязка свойства => службы доставки не видно выделенных элементов. Нужно убедиться, что стоит всё, что нужно.
    Далее, привязка свойств и вызов товара должен быть ПОСЛЕ добавления отгрузки и $payment->setField('SUM', $order->getPrice()); (когда применяется этот метод, то произойдёт перестройка всех связанных объектов).

    После этих действий все свойства стали снова доступны.
    Ответ написан
    1 комментарий
  • Как добавить mysql на сервер?

    iAHTOH
    @iAHTOH
    Инженер ПНР АСУ ТП
    Рекомендую apt install mariadb-client-core-10.1
    Она ничего не сломает. Ну а далее настраивайте эту БД. Начните с создания пользователя и БД. Ну нее порт по умолчанию 3306
    Ответ написан
    1 комментарий
  • Как отфитровать заказы по свойству товаров?

    @PetrPo
    use Bitrix\Main\ORM\Fields\Relations\Reference;
    use Bitrix\Main\ORM\Query\Join;
    use Bitrix\Iblock\ElementPropertyTable;
    
    \Bitrix\Main\Loader::includeModule('sale');
    
    $propertyId = 1;
    
    $result = \Bitrix\Sale\Order::getList([
    	'filter' => ['PROPERTIES.IBLOCK_PROPERTY_ID' => $propertyId, '!PROPERTIES.VALUE' => false],
    	'select' => ['ID'],
    	'runtime' => [
    		new Reference(
    			'PROPERTIES', ElementPropertyTable::class,
    			Join::on('this.BASKET.PRODUCT_ID', 'ref.IBLOCK_ELEMENT_ID')
    		)
    	]
    ])->fetchAll();
    
    print_r($result);


    $propertyId свой укажи
    Ответ написан
    1 комментарий
  • Как из переменной получить значение, а не строку?

    Adamos
    @Adamos
    в $arParams['FIELD'] хранится строка = $arProduct

    Ищите выше по коду ошибку, которая это делает. Судя по приведенной строчке кода - это потерянная где-то кавычка.
    Ответ написан
  • Как в админке Битрикс - Заказы, разделить заказы по группе пользователей?

    winer
    @winer
    занимаюсь разработкой сайтов на 1c-bitrix
    Можно на событии OnSaleAdminOrderList добавить фильтр. Я привожу пример на основе групп пользователей розницы и оптовиков. Можно легко адаптировать под типы плательщика.

    В примере $getListParams это то что будет передано в запрос по OrderTable.

    <?php
    
    \Bitrix\Main\EventManager::getInstance()->addEventHandler( 
        'sale', 
        'OnSaleAdminOrderList', 
        'OnSaleAdminOrderListHandler'
    ); 
    
    
    function OnSaleAdminOrderListHandler(\Bitrix\Main\Event $event) 
    {
        $getListParams = $event->getParameters();
        $reailManagerGroupId = 1; //ID группы менеджеров розницы
        $wholesaleManagerGroupId = 2; //ID группы менеджеров оптовиков
        $optUserGroup = 3; //ID группы оптовых покупателей
        $reatilUserGroup = 4; //ID группы розничных покупателей
        global $USER;
    
        $userGroups = \CUser::GetUserGroup($USER);
        if (in_array($reailManagerGroupId, $userGroups)) {
            $getListParams["filter"]["USER_GROUP.GROUP_ID"] = $reatilUserGroup;
        } else if(in_array($wholesaleManagerGroupId, $userGroups)) {
            $getListParams["filter"]["USER_GROUP.GROUP_ID"] = $optUserGroup;
        }
    
    
        $result = new \Bitrix\Main\EventResult(\Bitrix\Main\EventResult::SUCCESS, $getListParams);
        return $result;
    }
    Ответ написан
    4 комментария
  • Почему не видит папку или файл?

    shambler81
    @shambler81 Куратор тега Linux
    создание бэкапа
    60be967c5f0f0182040362.png
    Структура бэкапов ( тут примонтирован FTP сервер через cifs)
    60be97a6eedb8875107169.png
    работает так если запускаешь скрипт то бэкапит все сайты со всеми базами исключает все что нужно. ( каждый сайт отдельно бэкапит свою базу) ну и отдельно каждый сайт.
    если через пробел указываеш сайт то scrypt.sh vasya.ru бэкапится только он, так же сразу заливается на фти с ограничением
    скорости и прогресс баром.
    и подчисткой локальных бэкапов
    Так же после бэкапа тебе выкидвыается прямая ссылочка на фтп архив.
    доп софт wput и pv его нужно доставить !

    #!/bin/sh
    # Пример пути до сайта /var/www/site.ru/web/
    SITEDIR="/home/bitrix/ext_www"                      # Папка до названия доменаов
    DBCONN="bitrix/php_interface/dbconn.php"            # Откуда читать настройки mysql
    FTPUSER="backup_ftp"                                # Логин FTP сервера
    FTPPASS="adfadsfasdfa safdw"                        # Пароль FTP
    FTPHOST="111.1.11.11    "                           # сервер FTP
    FTPDIR=""                                           # папка на FTP
    TMPDIR="/mnt/backup/site"                           # тут временный файл лежит до отправки
    TMPWPUTBASE="/mnt/backup"                            # wput подставит эту папку как базовую
    DATE=`date +"%Y-%m-%d"`                             # Формат даты в имени файла
    DATEYM=`date +%Y`/`date +%m`                        # Второй форматы даты
    LIST=${1:-`ls $SITEDIR | grep -E ".*\.\w{1,5}" | grep -v "restore.php" | grep -v "klondike.php"`} # Название сайта, тут выбор или аргумент или, регулярка  можно убрать только -L ;)
    
    mkdir -p $TMPDIR/$DATEYM # создаем  структ уру каталогов если их нет
    
    for ELEMENT in $LIST
        do
                    if [ ! -f /$SITEDIR/$ELEMENT/$DBCONN ];
                            then
                                echo " Файл $SITEDIR/$ELEMENT/$DBCONN не найден, сайт будет без БД!"
                            else
    # ищим какая база отностися к сайту сохраняем в переменные ее данные.
    DBLOGIN=$(/bin/php -r "include '${SITEDIR}/${ELEMENT}/${DBCONN}'; echo(\"{\$DBLogin}\");")
    DBNAME=$(/bin/php -r "include '${SITEDIR}/${ELEMENT}/${DBCONN}'; echo(\"{\$DBName}\");")
    DBPASS=$(/bin/php -r "include '${SITEDIR}/${ELEMENT}/${DBCONN}'; echo(\"{\$DBPassword}\");")
    DBHOST=$(/bin/php -r "include '${SITEDIR}/${ELEMENT}/${DBCONN}'; echo(\"{\$DBHost}\");")
    echo "Найдена BD $ELEMENT"
    echo ""
    echo "Login: $DBLOGIN"
    echo "DB   : $DBNAME"
    echo "Pass : $DBPASS"
    echo "Host : $DBHOST"
    echo ""
    echo "Дамп БД $DBNAME"
    
    #  бэкап базы только через эвал и эхо смогли экранировать все варианты спецсимволов в пароле
    eval "$(echo "mysqldump --no-tablespaces -u$DBLOGIN -p'$DBPASS' $DBNAME -h$DBHOST > $SITEDIR/$ELEMENT/$DBNAME\-$DATE.sql  && echo "Дамп БД $DBNAME будет сохранен в корне сайта"  ||  echo "Ошибка дампа базы данных " $DBNAME")"
    chown bitrix:bitrix $SITEDIR/$ELEMENT/$DBNAME\-$DATE.sql
                   fi
    
    echo "Считаем количество Файлов  на сайте"
    
    SIZE="$(find $SITEDIR/$ELEMENT/$WEB -not -path "$SITEDIR/$ELEMENT/bitrix/tmp/*" -not -path "$SITEDIR/$ELEMENT/bitrix/updates/*" -not -path "$SITEDIR/$ELEMENT/dev_logs/*" -not -path "$SITEDIR/$ELEMENT/upload/1c_import_light/logs/*" -not -path "$SITEDIR/$ELEMENT/upload/1c_import_light/total_errors/*" -not -path "$SITEDIR/$ELEMENT/.git/*" -not -path "$SITEDIR/$ELEMENT/bitrix/catalog_export/logs/*" -not -path "$SITEDIR/$ELEMENT/bitrix/backup/*" -not -path "$SITEDIR/$ELEMENT/bitrix/cache/*" -not -path "$SITEDIR/$ELEMENT/bitrix/managed_cache/*" -not -path "$SITEDIR/$ELEMENT/bitrix/stack_cache/*" -not -path "$SITEDIR/$ELEMENT/upload/resize_cache/*" -not -path "$SITEDIR/$ELEMENT/stats/*" | wc -l)" && echo " В архиве будет $SIZE файлов"
    
    echo "Архивируем сайт $ELEMENT прогресс не в килобайтах а в  количестве файлов"
    tar -cvpzf $TMPDIR/$DATEYM/$ELEMENT-$DATE.tar.gz --directory $SITEDIR/$ELEMENT/$WEB --ignore-failed-read --exclude='./bitrix/tmp' --exclude='./bitrix/updates'  --exclude='./dev_logs' --exclude='./upload/1c_import_light/logs' --exclude='./upload/1c_import_light/total_errors' --exclude='./.git' --exclude='./bitrix/catalog_export/logs'  --exclude='./bitrix/backup'  --exclude='./bitrix/cache' --exclude='./bitrix/managed_cache' --exclude='./bitrix/stack_cache' --exclude='./upload/resize_cache' --exclude='./stats' . | pv -s $SIZE -l > /dev/null
    
            rm -f $SITEDIR/$ELEMENT/$WEB/$DBNAME\-$DATE.sql # поскльку ложим на реальный сайт, ибо нормально добавить в архив не получитяс.
    
            echo "Сохраняем $ELEMENT на FTP"
            wput  --basename=$TMPWPUTBASE --limit-rate=6000K --timestamping  --remove-source-files --tries=2 $TMPDIR/$DATEYM/$ELEMENT-$DATE.tar.gz ftp://$FTPUSER:$FTPPASS@$FTPHOST$FTPDIR && echo "Архив залит успешно, временные файлы удалены"
    
    echo -en "\n\033[37;1;41m Ссылочка:\033[0m \e[1;4;36mwget ftp://$FTPUSER:$FTPPASS@$FTPHOST/site/$DATEYM/$ELEMENT-$DATE.tar.gz\e[0m\n\n" #ks05
    
      done
    
    rm -r $TMPDIR

    В скрипте не задействовано ядро битрикс ВМ дабы можно было его адаптировать на любые другие сервера. Для определения базы данных выполняется dbconn и его переменные используются для бэкапа.
    Ответ написан
    Комментировать
  • Bitrix как же на нем правильно разрабатывать?

    @ZardoZAntony
    программист, сис. админ
    Делают везде как бог на душу положит. Тоже много где работал по битриксу.

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

    Вообще все проблемы людей, которые любят собирать всё в один js и один css файл - незнание архитектуры той CMS, с которой он работает. Тем более почти всегда это тупо верстальщик, который не знает куда пойдет его верстка, да и знать не хочет. Использовать BX он так же не умеет, что в итоге приводит к тому, что куча его скриптов и форм являются неудобными в применнии, т.к. есть гораздо более удобные нативные вещи. Это особо касается корзины и чекаута.

    Но скажу по секрету - webpack так же можно настроить, что он будет генерить шаблоны компонентов в нужных папках с стилями и js, а общие стили генерить в общие css и js. А фронтендер может по прежнему работать со своим postcss и ejs. Но да, чтобы настроить скрипты нужен спец по битриксу.

    У меня был большой проект на оптимизации, где я избавлялся от такой сборки и раскидывал все по компонентам. Почему? А как вам css+js - 27 мегабайт? Потом он со временем слез с битрикса, т.к. уже достаточно разросся.

    Какой вывод? За работу со сложной CMS берутся люди, которые не имею необходимых знаний по работе с ней, вот и начинают ругать битрикс. Нечего на зеркало пенять...
    Ответ написан
    5 комментариев
  • Почему openserver блокирует доступ к папке /local/templates/.default/?

    v_decadence
    @v_decadence
    Потому что в шаблоне конфига nginx есть строчка

    location ~ /\. {deny all;}

    Что выдаёт 403 для всех URL, где есть последовательность слеша и точки. Предполагается, что скрытые файлы не должны быть доступны.
    Ответ написан
    3 комментария
  • Smpp отправка смс - как получить корректный ответ?

    roswell
    @roswell
    и швец, и жнец, и на дуде игрец
    Надобно установить значение напротив registered_delivery_flag хотя бы в единичку. Остальная кухня разобрана по косточкам тут, в пункте "2.6 Requesting notifications" на странице 20.
    Ответ написан
    Комментировать