• Ошибка при запуске телеграм бота aiogram. Как исправить?

    @KonstantinDigital
    from aiogram.client.bot import DefaultBotProperties

    async def main() -> None:
    bot = Bot(TOKEN, default=DefaultBotProperties(parse_mode=ParseMode.HTML))

    Теперь так нужно делать.
    Ответ написан
    3 комментария
  • Как в Бизнес-процессе записать, получить в блоке PHP-код значение глобальной переменной?

    @Nentra Автор вопроса
    В итоге вот это помогло

    Boris, [22.11.2021 0:56]
    [В ответ на Andrey DEV(Джейс) ↑]
    /*
     * Комментарии к изменению глобальных переменных через БП PHP блок
     * Если указывать из БП глобальную переменную с _ будет ошибка исполнения (просто флоу до конца не дойдет, без каких то ошибок в логи)
     * Если \Bitrix\Bizproc\Workflow\Type\GlobalVar::getById возвращает пустоту, значит глобальная переменная в недопуступом имени
     * Если в \Bitrix\Bizproc\Workflow\Type\GlobalVar::upsert отдать что-то недопустимое, будет ошибка без логов
     * Если создать произвольный массив типа $var['idGlobVar'] = ['Name'=>'Имя глобальной переменной','Description'=>'','Type'=>bool,'Required'=>'','Multiple'=>'','Options'=>'','Default'=>'Y'];
     *   а после скормить этот массив в \Bitrix\Bizproc\Workflow\Type\GlobalVar::upsert то создастся ещё одна глобальная переменная idGlobVar несмотря на то, что она уже будет (да, две переменные будут, с одинаковыми идентификаторами)
     * Изменение значения происходит через изменение Default параметра
    */
    
    $var = \Bitrix\Bizproc\Workflow\Type\GlobalVar::getById('orderVacancy');
    $var['Default'] = 'Y';
    if($var)
    {
      \Bitrix\Bizproc\Workflow\Type\GlobalVar::upsert('orderVacancy', $var);
    }
    Ответ написан
    1 комментарий
  • Как кастомизировать интерфейс Битрикс24?

    ReaverJS
    @ReaverJS
    Привет!

    можно ли сделать встраивание только с помощью JS, чтобы обойтись статичным локальным приложением?

    Правильно ли я понял что локальное - имеется в виду хостинга у вас нет?
    В документации Битрикс написано следующее:
    Важно: Следствием вышеуказанных пунктов является то, что механизм встраивания доступен только для серверных приложений!

    Так что... можно!

    1) Закидываем в архив zip наше приложение (или только index.html)
    2) Регистрируем приложение в битрикс (разработчикам > готовые сценарии > локальное приложение)
    Настраиваем права (обязательно, placements)
    3) Теперь ваше приложение можно открыть в битриксе. Заходим в Разработчикам > интеграции, ищем наше приложение и через контекстное меню жмем "Перейти к приложению"
    Нам надо посмотреть куда его закинул Битрикс. Можно через дев тулзы найти iFrame с нашим приложением и скопировать адрес.
    4) Осталось зарегистрировать место встраивания.
    Тут несколько вариантов.

    Вариант 1. Открываем входящие вебхуки, кидаем запрос на bind (можно просто открыть в браузере).
    https://dev.1c-bitrix.ru/rest_help/application_emb...
    {{url вебхука, который вам выдали}}/placement.bind?PLACEMENT=TASK_VIEW_TAB&HANDLER={{адрес из шага 3}}&TITLE={{My awesome APP}}


    Вариант 2. В нашем же приложении с помощью JS-библиотеки Б24 - регаем обработчик методом BX24.callMethod. Там же можно сразу указать HANDLER как текущий url iFrame-а.

    Вариант 3. Берем мои файлы index.html и placements.js, добавляем к ним страницу, которую надо отображать (к примеру my-awesome-page.html). Архивируем это все и на шаге 1 - заливаем этот архив.
    Тогда в приложении будет открываться уже моя страница. На ней 3 кнопки - зарегать плейсмент, удалить плейсмент, вывести в консоль список текущих плейсментов.
    Жмем "добавить" - указываем PLACEMENT (код места встраивания), HANDLER (адрес страницы которую надо встроить - т.е. адрес iFrame-а + /my-awesome-page.html), TITLE.
    Код (html - index.html, js - placements.js) В CODEPEN - не работает! Только при запуске из-под Битрикс24:

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

    5) Готово. Идем проверять.
    Ответ написан
    5 комментариев
  • Как избавиться от кеша js и css в битрикс?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Если отбросить все очевидные факторы, то я вижу 2 предположения:

    1) Ты редактируешь не те стили.
    Если мы говорим про Битрикс24, то например шаблон компонента search.title нужно искать по пути

    /bitrix/templates/bitrix24/components/bitrix/search.title/.default


    Однако при наличии папки local и шаблона bitrix24 в нем, этот файл следует искать либо в

    /local/templates/bitrix24/components/bitrix/search.title/.default


    Либо в случае наличия шаблона .default в

    /local/templates/.default/components/bitrix/search.title/.default


    Либо дефолтно в:

    /bitrix/components/bitrix/search.title/templates/.default


    при этом сама папка /bitrix/templates/bitrix24/components/bitrix/search.title/.default будет существовать.
    Подробнее в документации: https://dev.1c-bitrix.ru/learning/course/index.php...

    2) В системе включена опция "Подключать минифицированные версии"
    Допустим в шаблоне есть
    style.css
    style.min.css
    style.map.css

    Ты правишь style.css, соответственно при наличии включенной опции это не даст результата, т.к. будет подключаться style.min.css и style.map.css

    Других вариантов чтобы числа после знака вопросов не изменились мне придумать сложно.
    Ответ написан
    2 комментария
  • Существует ли расширение для браузера позволяющее оставлять заметки для веб страницы?

    @MrPeso4ko
    Полагаю, что уже неактуально, но я нашёл для себя расширение Note Anywhere
    Ответ написан
    Комментировать
  • Ошибка при git push?

    v_decadence
    @v_decadence
    Ошибка из-за того, что Git по умолчанию не разрешает обновлять текущую ветку не bare-хранилища посредством push.

    На сервере либо инициализируем хранилище так:
    git init --bare
    Это создаст хранилище без рабочей копии (bare хранилище)

    Либо задаём в конфиге хранилища:
    [receive]
    denyCurrentBranch = ignore (или warn)
    Чтобы можно было пушить в текущую ветку не bare хранилища.

    Второй способ не рекомендуется, так как может привести к конфликтному состоянию рабочей копии.

    Если на сервере должна быть рабочая копия, то только второй способ либо сделать bare-хранилище, куда пушить с клиента (оно будет точкой синхронизации), а в месте, где нужна рабочая копия, склонировать первое хранилище и периодически из него делать pull.

    Bare-хранилище
    Ответ написан
    6 комментариев
  • Как правильно выполнить требуемый SQL запрос после обновления битрикс?

    vitvayti
    @vitvayti
    Битрикс-программист
    Здравствуйте.

    В этом же сообщении на зелёном фоне:
    Для улучшения производительности инфоблоков необходимо создать индекс create index ix_iblock_element_prop_val on b_iblock_element_property(VALUE(50), IBLOCK_PROPERTY_ID, IBLOCK_ELEMENT_ID) в SQL консоли(ссылка на консоль)


    SQL можно найти в разделе:
    Настройки / Инструменты / SQL запрос
    Ответ написан
    Комментировать
  • Как сформировать новую сделку через входящий вебхук в определенную воронку?

    @lucsieus Автор вопроса
    начинающий самурай
    Нашел решение всего то вместо 'STAGE_ID' надо прописать 'CATEGORY_ID' => '12'(этот ID можно найти в URL сделки).
    Ответ написан
    Комментировать
  • Возможно ли заполнять тип поля «выпадающий список» в лиде, поступающей из формы на сайте информацией?

    ReaverJS
    @ReaverJS
    Битрикс вставляет форму прямо в ваш dom, так что проблем с манипуляциями нет.
    В коде ниже - автоматически заполняется поле Компания, спустя 1 секунду (когда уже 100% отрендерится форма).
    Можно сделать более красиво, к примеру, через mutation observer.
    И еще - битрикс не дает названия полям, так что придется составлять селектор до элемента руками.
    Ответ написан
    7 комментариев
  • Как взять первые 5 элементов в каждой категории?

    ReaverJS
    @ReaverJS
    Что то вроде:
    StackOverflow
    let articlesGroups = articles.reduce((articles, item) => {
      let article = (articles[item.category] || []);
      article.push(item);
      articles[item.category] = article;
      return articles;
    }, {});

    Дальше уже обходите articlesGroups - 2-я циклами. Внешний - обходит группы, внутренний - статьи. Во внутреннем как раз ставите ограничение на 5 статей.
    Ответ написан
    Комментировать
  • Как вы ведете проекты с Git (Bitrix)?

    s_panteleev
    @s_panteleev
    25 yo, Yaroslavl
    во-первых, никаких миграций

    Как вариант, использовать – https://github.com/worksolutions/bitrix-reduce-mig...

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

    Мы PhpStorm'у скармливаем это (Languages&Frameworks => PHP => Include Path) – https://github.com/Prominado-ru/bxApiDocs . Проблему разных версий не решает, но пока проблем с этим не было)

    Весь код проекта только в /local/
    Ответ написан
    Комментировать
  • Почему не разворачивается локальное серверное приложение в Bitrix24?

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

    Как работает приложение?
    - Битрикс сделает проверку на доступ к соответствующему адресу. Будет проверяться корректный резолв.
    - Битрикс перенаправит вас на специальную страницу где в iframe откроется приложение. Т.е. если приложение лежит то 127.0.0.1 будет учитываться относительно вашего ПК, а не сервера.
    - Будут произведены действия по установке и после BX.installFinish вам откроется index-страница вашего приложения.

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

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

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Это очень геморройно.

    Допустим формат даты у нас такой: d.m.Y H:i:s (что по русски: 22.01.2018 18:07:20)

    На ум приходит следующая конструкция:

    1) Объявляем переменную monthNumber (которая будет содержать номер месяца)
    2) Объявляем переменную monthName (которая будет содержать читаемый месяц)

    Создаем блок изменения переменной и записываем в monthNumber значение{{=substr({=System:Now},3,2)}}
    Что будет означать: что от текущего времени ({=System:Now}), начиная с 3 символа (третий символ - точка) мы возьмем 2.
    Тогда в monthNumber будет число: 01.

    Далее ставим условие и 12 раз повторяем. Если monthNumber=1, то - блок изменения переменной monthName в Январь (ну и так 12 раз).
    Ответ написан
    Комментировать
  • Классификация почтовых серверов?

    alekciy
    @alekciy
    Вёбных дел мастер
    Крайне рекомендую postfix, тем более для изучения есть очень хороший перевод на русский по данному серверу: Postfix. Подробное руководство

    Несмотря на то, что поначалу меня смущало, что он разбит на ряд независимых по сути программ (в отличие от того же exim), т.е. в top нет единого процесса «почтовый сервер», но ознакомившись с ним более детально, особенно с архитектурой пришел к выводу, что это идеальный почтовик. Поэтому лично для себя давно уже вопрос выбора почтовика не возникает.
    Ответ написан
    3 комментария
  • Как добавить строку в файлы linux скриптом?

    @abcd0x00
    sed -i -s '$a text' *.txt

    Пример
    [guest@localhost t]$ ls
    file1.txt  file2.txt  file3.txt
    [guest@localhost t]$ 
    [guest@localhost t]$ cat file1.txt 
    a
    [guest@localhost t]$ cat file2.txt 
    b
    [guest@localhost t]$ cat file3.txt 
    c
    [guest@localhost t]$ 
    [guest@localhost t]$ sed -i -s '$a text' *.txt
    [guest@localhost t]$ 
    [guest@localhost t]$ cat file1.txt 
    a
    text
    [guest@localhost t]$ cat file2.txt 
    b
    text
    [guest@localhost t]$ cat file3.txt 
    c
    text
    [guest@localhost t]$

    Ответ написан
    1 комментарий
  • Как обеспечать доступ к лицензиям HASP из других подсетей?

    Sergey-S-Kovalev
    @Sergey-S-Kovalev
    Sysadmins team leader
    В оснастке "Администрирование серверов 1С Предприятия" в свойствах нужной базы, следует выставить значение пункта "Разрешить выдачу лицензий сервером 1С: Предприятия" в положение "Да"
    Ответ написан
    1 комментарий
  • Как массово отредактировать записи в Битрикс24 (облако)?

    bitrix24info
    @bitrix24info
    Эксперт Битрикс24
    Добрый день!
    Вопрос был задан давно, но так как периодически получаю такие же вопросы от клиентов, объясню логику.

    Создается 2 бизнес-процесса, пускай первый start, второй - work.

    В start мы создаем список - множественную переменную. В эту переменную загружаем id сделок, которые требуется отредактировать.
    Далее добавляем итератор (перебирает значения множественных переменных) в действиях(активити), добавляем запуск бизнес-процесса, и id сущности, для которой нужно запустить бизнес-процесс, выставляем значение итератора и выбираем шаблон процесса work. Каждый раз в круге итератора в значении будет id следующей сделки.

    Тем самым, мы запустим по всем сделкам бизнес-процесс(work), который сделает нужные изменения.

    Кстати, самый простой способ получить id сделок (если их не много), выгрузив сделки в csv, скопировать и вставить в переменную бизнес-процесса.
    Ответ написан
    4 комментария
  • PHP → Вывод массива в таблицу

    powder96
    @powder96
    Написал две функции, которые могут вам пригодится: одна для вычисления ширины таблицы (глубины массива) — чтобы можно было правильно нарубить таблицу на строки, и вторая для вычисления высоты произвольной ячейки — чтобы можно было выставить rowspan. Все функции рекурсивные.

    // красивооформленный массив см. в моем дополнении к вопросу
    $input = array('bmw'=>array('x3'=>array('black','white','...'=>array('...'),'other'=>
    array('something','something')),'x5'=>array('black','white','...'=>array('...'))),'audi'=>
    array('...'=>array('...'=>array('...'))));
    
    echo' Table dimensions: ' . arrayVizualize_tableWidth($input) . ' x ' . arrayVizualize_tableHeight($input);
    echo '<br />';
    echo '<b>bmw</b> rowspan is: ' . arrayVizualize_tableHeight($input['bmw']);
    
    function arrayVizualize_tableWidth($array, $currDepth = 1) {
    	$maximalDepth = $currDepth;
    	foreach($array as $element)
    		if(is_array($element)) {
    			$elementDepth = arrayVizualize_tableWidth($element, $currDepth + 1);
    			if($elementDepth > $maximalDepth)
    				$maximalDepth = $elementDepth;
    		}
    		
    	return $maximalDepth;
    }
    
    function arrayVizualize_tableHeight($array) {
    	if(!is_array($array))
    		return 1;
    
    	$height = 0;
    	foreach($array as $element) {
    		if(is_array($element))
    			$height += arrayVizualize_tableHeight($element);
    		else
    			++$height;
    	}
    	
    	return $height;
    }
    
    Ответ написан
    Комментировать
  • Самый простой и быстрый способ отправить webhook из cmd?

    @yellowmew
    Cloud infrastructure, monitoring engineer. SRE
    в 90% более-менее современных версиях Windows есть powershell
    в скрипте пишете
    powershell.exe "invoke-webrequest 'https://url' - usebasicparsing"
    Для указания хидеров или данных которые будете передавать - читайте хелп по коммандлету
    Сразу предупреждаю (вы не указали версию ОС) :
    1. при первом старте может появиться окно IE с инициализацией профиля (в старых версиях posh)
    2. https может не сработать если не укажете конкретную реализацию TLS которую использовать. Или вообще не сработать если, например, вас .net 3.5 в системе а целевой сайт использует минимальную версию tls 1.2

    Встроенным методом - только powershell. Но вы имеете шанс столкнуться с чудесами, я вас предупредил.
    Альтернативно - просто скачайте curl
    Ответ написан
    4 комментария