Задать вопрос
  • Как убрать фильтр по цене в каталоге битрикс?

    gromdron
    @gromdron
    Работаю с Bitrix24
    Вырезав в коде.
    Насколько я помню, единственный параметр который нельзя убрать - это ползунок цены.
    Ответ написан
    Комментировать
  • Как удалить домен в яндекс.коннект?

    @donlordhan
    https://yandex.ru/support/connect/troubleshooting....

    Теперь в нашем сервисе есть возможность самостоятельно удалить домен, даже если он единственный в Вашей организации.

    Если Вы хотите удалить свой домен из Яндекс.Коннект, пожалуйста, сделайте следующее:

    1. Перейдите в раздел Профиль организации
    2. Нажмите значок ... (три точки в правом верхнем углу профиля Вашей организации )
    3. Выберите пункт "Удалить организацию".

    Это получится сделать, если:

    1. Делать это из внешнего аккаунта администратора вида login@yandex.ru
    2. На домене нет ящиков пользователей (общий ящик организации вида all@domain.com удалится автоматически при удалении организации)
    3. На домене никогда не были подключены платные сервисы в Яндекс.Коннект (Трекер или Расширенный тариф)
    Ответ написан
    Комментировать
  • Git: объясните «на пальцах» разницу между rebase и cherry-pick?

    @Nkly777
    git chery-pick - ты забираешь комиты из одной ветки в другую, это бывает полезно когда изменения сделаные другим разработчиком в его ветке, прямо сейчас нужны тебе в твоей ветке, и что бы не писать этот код заново, ты забираешь его комит себе в ветку

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

    git merge - обычно используется когда у вас 2 и более master ветки (к примеру master и prototype) в этих ветках очень много комитов (и rebase здесь не подходит) и обчно через пару недель, maintainer репозитория наработки из prototype ветки "сливает" в master ветку по средствам этого самого git merge

    P.S. Что бы легче предствить разницу между git merge и git rebase. Представь что merge как собачка на молнии у одежды - "сшивает" комиты по дате их создания.
    В то время как git rebase как пожарная лестница - при применении твои коммиты крепится на конец родительской ветки

    git merge используйте для мержа фич и фиксов в master ветку (как и делает это Github)
    а git rebase используется для своей ветку в которой вы работаете над фичей что бы забрать последние изменения с master ветку (для этого есть очень удобная команда `git pull --rebase origin master`, аналог 3х команд (`git checkout master; git pull origin master; git checkout mybrach; git rebase master`)
    Ответ написан
    2 комментария
  • Git: объясните «на пальцах» разницу между rebase и cherry-pick?

    Все красиво объяснил Nkly777, только в блоке PS merge с rebase перепутаны.
    Добавлю картинок.

    git rebase devel - собачка на молнии - "сшивает" коммиты по дате их создания
    (ветка devel "растворяется" в основной ветке)
    518b8dbce1cd4f96b30de9782ae38fcd.png
    git merge devel - пожарная лестница, все коммиты ветки devel крепятся в конец, образуется пересечение
    (devel остается отдельной веткой, к которой можно вернуться)
    1ba8186d879d46ff85ea7c1e192328e2.png
    git chery-pick idea - забрать коммиты из ветки idea
    2717e3091f644ef2954aa2de4514f446.png
    Ответ написан
    2 комментария
  • Как сделать сложный getList запрос в 1С-Битрикс?

    Примерно так, если нужны поля инфоблока:

    use Bitrix\Main\Application;
    use Bitrix\Highloadblock\HighloadBlockTable;
    use Bitrix\Main\Loader;
    
    Loader::includeModule('highloadblock');
    Loader::includeModule('iblock');
    
    $hlBlockId = 2;
    
    $hlblock = HighloadBlockTable::getById($hlBlockId)->fetch();
    
    /** @var \Bitrix\Main\Entity\Base $entity */
    $entity = HighloadBlockTable::compileEntity($hlblock);
    
    /** @var \Bitrix\Main\Entity\DataManager $dataClass */
    $dataClass = $entity->getDataClass();
    
    Application::getConnection()->startTracker();
    
    $result = $dataClass::getList([
        'select' => array(
            'UF_ELEMENT_ID',
            'NAME' => 'ELEMENT.NAME',
            'CODE' => 'ELEMENT.CODE',
            'DETAIL_PICTURE' => 'ELEMENT.DETAIL_PICTURE',
        ),
        'runtime' => array(
            'ELEMENT' => array(
                'data_type' => '\Bitrix\Iblock\ElementTable',
                'reference' => array(
                    '=this.UF_ELEMENT_ID' => 'ref.ID'
                ),
                'join_type' => 'inner'
            ),
        ),
        'limit' => 10,
    ]);
    
    // Можно смотреть сформированный запрос
    echo '<pre>', $result->getTrackerQuery()->getSql(), '</pre>';
    
    while ($row = $result->fetch()) {
        echo '<pre>';print_r($row);echo '</pre>';
    }


    Со свойства чуть сложнее.

    P.S. некоторые примеры с использованием ORM D7
    Ответ написан
    2 комментария
  • Как настроить ntlm авторизацию в bitrix24?

    gromdron
    @gromdron
    Работаю с Bitrix24
    Для начала нужно убедиться в следующем:
    1) Пользователь от которого Вы пытаетесь зайти на портал существует в системе.
    2) Стоит галочка "Проверять авторизацию на всех доменах" (часто забывают - а без нее бардак)

    Затем необходмо настроить браузер (причем лучше IE, так как хром подтянет настройки с него):
    1) У кого-то сайт нужно добавить в доверенные, а у кого-то в местные сайты (работает по-разному, слишком тонкая настройка)
    2) Убедитесь что адрес сайта вписан верно (!)

    Для диагностики можете добавить вывод $_SERVER на страницу login чтобы при вводе правильных данных с 8891 (в окошке), Вы могли посмотреть - что отдал браузер (может он логин иначе отдает).
    Ответ написан
    5 комментариев
  • Bitrix своя цена для товара в корзине CUSTOM_PRICE?

    gromdron
    @gromdron
    Работаю с Bitrix24
    1) Проверьте настройки складского учета и что-то я не вижу класса провайдера при создании товара. Вы его передаете? Проверьте актуальные данные тут - https://dev.1c-bitrix.ru/community/blogs/vws/about...
    2) А в paymentCollection после изменения цены все норм?
    Ответ написан
    Комментировать
  • Зачем в хромиум-браузерах включили прерывистое подчеркивание текста и как его отключить?

    kreotech
    @kreotech
    Абстрактно-ориентированный программист
    Пример: https://jsfiddle.net/kreoTech/3Lro6kma/4/

    Не проверял работоспособность в разных браузерах, но в chrome(v64) работает

    UPD:
    Используемое свойство css: text-decoration-skip-ink

    Возможно получится получить эффект и от этого свойства: text-decoration-skip

    Для установки на разных сайтах можно попробовать это расширение - User CSS или другое со схожим функционалом.

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

    @TimurBaiguzhaev
    Backend Golang Developer
    Помните, как родители заставляли вас играть на фортепиано или учить стихи?.. Так вот, Абстрактные классы также как и многие родители вовсе и знать не знают зачем ребенку-потомку это будет нужно, и как он это будет использовать, но уверены, что так НАДО! Т.е. такие классы содержат абстрактные методы, которые являют собой объявление метода без самой реализации, как фантик без конфетки, тем самым обязывая потомка, этот метод реализовать. Как и в жизни, где родители нередко перекладывают на детей свои нереализованные мечты…

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


    Источник : habrahabr.ru

    Abstract classes in JavaScript
    Ответ написан
    Комментировать
  • Как добиться одинаковой высоты блоков с одним индетификатором?

    @ambrazhey
    Начинающий верстальщик
    Для начала НЕ ДОЛЖНО быть одинаковых id, так как он обязан быть уникальным
    Ответ написан
    2 комментария
  • Что такое и зачем нужен новый тип данный Symbol в ES15?

    sfi0zy
    @sfi0zy Куратор тега JavaScript
    Creative frontend developer
    Что такое

    Новый тип данных symbol - это попытка ввести уникальные идентификаторы. Все крутится вокруг функции Symbol. Это не конструктор в полном смысле слова, с new ее использовать не получится. Это скорее маленькая фабрика. Она просто возвращает новый символ каждый раз. Это важно. Каждый раз новый. В качестве аргумента можно передать строку, но она используется только для отладки.
    Symbol() === Symbol() // false

    Что такое глобальный символ? Какой еще реестр?

    Есть Symbol.for(), это еще один метод, который не просто возвращает символ, но и сохраняет информацию о том, для какого параметра он создавался. Внешне логика работы напоминает хеширование - для разных параметров символы получаются разные, а для одинаковых - одинаковые.
    Symbol.for('my-string') === Symbol.for('my-string') // true
    Symbol.for('my-string') === Symbol.for('another-string') // false


    Зачем это надо?

    Применение этого типа данных - предмет для споров. Большая часть кейсов из интернета - это попытки поиспользовать новую фишку только ради того, чтобы ее поиспользовать. Самые популярные и практически применимые варианты:
    • В качестве ключа для доступа к свойству объекта. Грубо говоря вместо obj[key] использовать obj[some-magic-unique-key]. Позволяет избежать коллизии этих самых ключей если вы расширяете существующий объект из сторонней библиотеки. На практике встречается не очень часто, особенно в небольших проектах, но по всей видимости это - причина появления символов в языке.
    • Некоторая иллюзия приватных свойств. Символы по-своему работают с циклами и многими методами, связанными со свойствами объекта, становясь невидимыми для них. В результате можно разделить "все свойства с обычными ключами" и "все свойства с ключами-символами". А еще можно запутать код до безобразия.
    • Также, пользуясь предыдущей мыслью, можно сделать что-то вроде метаданных для любого объекта, которые опять же не сломают существующий код, но могут быть использованы для хранения какой-то информации и мередачи ее между отдельными модулями. Штука довольно интересная.
    Ответ написан
    Комментировать
  • Как опубликовать сообщение в группе с помощью API?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Чтобы отправить сообщение в живую ленту нужно еще более изощренный метод.

    Подключаем модуль Соц.сети:
    CModule::IncludeModule("socialnetwork");

    Чтобы отправить сообщение в ленту, нужно чтобы существовал пост, который будет отправлен в ленту, поэтому создаем сначала пост:

    $arFields = array(
     "TITLE" => "Заголовок записи",
     "DETAIL_TEXT" => "Тело сообщения",
     "BLOG_ID" => 1, //ID отправителя
     "AUTHOR_ID" => 1, //ID блога, в котором будет запись
     "DATE_PUBLISH" => '11.02.2014 09:08', // дада
     "PUBLISH_STATUS" => BLOG_PUBLISH_STATUS_PUBLISH, // Читаем в API
     "ENABLE_TRACKBACK" => 'N',
     "ENABLE_COMMENTS" => 'Y'
    );


    При успешном добавлении ($ID = CBlogPost::Add($arFields);) получим ID blogPost записи

    Затем необходимо отправить это сообщение в ленту, для нам нужен фрагмент кода (заменить соответствующим образом):

    $arEvent = array (
    	'EVENT_ID'     => 'blog_post',
    	'=LOG_DATE'    => 'now()',
    	'TITLE_TEMPLATE' => '#USER_NAME# добавил(а) сообщение "#TITLE#" в блог',
    	'TITLE'    => "Заголовок записи",
    	'MESSAGE'  => "Текст записи",
    	'TEXT_MESSAGE'  => "Текст записи",
    	'MODULE_ID'     => 'blog',
    	'CALLBACK_FUNC' => false,
    	'SOURCE_ID'     => $ID,
    	'ENABLE_COMMENTS'  => 'Y',
    	'RATING_TYPE_ID'   => 'BLOG_POST',
    	'RATING_ENTITY_ID' => $newID,
    	'ENTITY_TYPE' => 'U',
    	'ENTITY_ID'   => '1',
    	'USER_ID'     => '1',
    	'URL' => '/company/personal/user/1/blog/'.$ID.'/',
    );


    Создаём запись в ленте через: CSocNetLog::Add, на выходе получаем eventID (в случае успеха)

    Если все прошло хорошо, то выставляем права на пост (в премере отправляем ВСЕМ ПОЛЬЗОВАТЕЛЯМ G3)

    // Выдает права
    CSocNetLogRights::Add ( $eventID, array ("G3") );
    // Отправляет уведомление о новом сообщении
    CSocNetLog::SendEvent ( $eventID, 'SONET_NEW_EVENT' );


    Радуемся =)

    Все параметры получаются по средствам GetList например.
    Ответ написан
    4 комментария
  • Как в bitrix сделать редактирование в визуальном редакторе определенного (контентного) блока?

    Вынесите редактируемый текст во включаемую область и пусть контентщик её отдельно правит:

    $APPLICATION->IncludeComponent('bitrix:main.include','',
        [
            'AREA_FILE_SHOW' => 'file',
            'PATH' => 'путь до файла с включаемой областью',
            'EDIT_TEMPLATE' => ''
        ],
        false
    );
    Ответ написан
    Комментировать
  • Сайт для тех.поддержки с системой тикетов, на чём сделать?

    Maksclub
    @Maksclub Куратор тега Веб-разработка
    maksfedorov.ru
    Трелло, оно идеально!
    Под клиента доску завел и все... в каждую впустил клиента и он пишет на лиисте тикеты, ты их расскидываешь уже...
    5a17e65f1efa6344042602.jpeg
    Если нужно управлять с несколькими досками, то вот написал статью:
    Фильтрация задач по спискам или доскам в Trello

    ....................................


    Youtrack
    От команды Jetbrains (Phpstorm которая сделала)
    Есть русский язык конечно, крутой дизайн

    Вот например доска (правда на англ)
    https://youtrack.jetbrains.com/issues/WI

    Написана на Java, но легко очень ставится... нужно правда более 1Гб оперативки, но есть примеры, где заводят ее на хостинге с 512Мб оперативки на Digital Ocean
    Ответ написан
    Комментировать
  • Как сделать композит на битриксе?

    gromdron
    @gromdron
    Работаю с Bitrix24
    В учебных курсах, есть прекрасная статья про отладку композита.
    Если Вы откроете файл: /home/s/new/new.beget.tech/public_html/bitrix/html_pages/new.beget.tech/patients/o-nas/index@/page.html.delete.1509433132.4885, то скорее всего увидите кто именно на данной странице голосовал против композита.
    Ответ написан
    Комментировать
  • Как перебрать все пары в строке?

    qork
    @qork
    { background: #F00B42 }
    Тут либо negative lookahead (выбираешь тире) /-(?![a-z])/
    https://regex101.com/r/czLHsu/1/

    Либо таким способом: /\d+(-[a-z]+)?/
    https://regex101.com/r/lEEC52/1
    Ответ написан
    4 комментария
  • Как сверстать подобный блок?

    @Adikjoro
    Hexagon избитый дизайн. Уже и не удивишь им никого. Начинай изучать SVG. Там создание многоугольных форм это 2+2. Вот небольшой курс по основам SVG
    Если нормально разогнаться и JS подучить, то можно создать сайты типа этих:
    Waaark
    Cédric Pereira
    Humaan
    LOCUS SOLUS
    Ответ написан
    Комментировать
  • Как в Bitrix проверить есть ли у товара подарки?

    Я как то писал метод, который по id товара возвращает массив id подарков. Можете воспользоваться:
    use Bitrix\Sale\Compatible\DiscountCompatibility;
    use Bitrix\Sale\Basket;
    use Bitrix\Sale\Discount\Gift;
    use Bitrix\Sale\Fuser;
    
    class DiscountsHelper
    {
        /**
         * Возвращает массив id всех доступных подарков для товара
         *
         * @param int $productId - идентификатор товара
         * @return array - массив с id подарков для товара
         */
        public static function getGiftIds($productId)
        {
            $giftProductIds = [];
    
            if (!$productId) {
                return $giftProductIds;
            }
    
            DiscountCompatibility::stopUsageCompatible();
    
            $giftManager = Gift\Manager::getInstance();
    
            $potentialBuy = [
                'ID'                     => $productId,
                'MODULE'                 => 'catalog',
                'PRODUCT_PROVIDER_CLASS' => 'CCatalogProductProvider',
                'QUANTITY'               => 1,
            ];
    
            $basket = Basket::loadItemsForFUser(Fuser::getId(), SITE_ID);
            
            $basketPseudo = $basket->copy();
    
            foreach ($basketPseudo as $basketItem) {
                $basketItem->delete();
            }
    
            $collections = $giftManager->getCollectionsByProduct($basketPseudo, $potentialBuy);
    
            foreach ($collections as $collection) {
                /** @var \Bitrix\Sale\Discount\Gift\Gift $gift */
                foreach ($collection as $gift) {
                    $giftProductIds[] = $gift->getProductId();
                }
            }
    
            DiscountCompatibility::revertUsageCompatible();
    
            return $giftProductIds;
        }
    }


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

    alexfilus
    @alexfilus
    Senior backend developer
    https://yadi.sk/i/a59pfaGq3MtEJi
    судя по этому надо в массив параметров, передать в ключ FILE id файла в системе, либо массив id.
    Ответ написан
    2 комментария
  • Как ускорить вёрстку?

    @taki154
    Для быстрой и оперативной верстки использую gulp с плагинами и препроцессорными плюшками:

    - jade (сейчас больше известен как pug) - html-шаблонизатор, синтаксис простой и понятный, поддерживает циклы, инклюды, примеси, переменные, условия и пр. использую как препроцессор и из него генерирую статичные страницы, верстаю в нем.
    - less - тут даже говорить нечего, любой css-препроцессор для разработки и скорости при умелом использовании подойдет лучше писанины на нативном css;
    - далее, до кучи всякие автопрефиксеры, минификаторы, лайврелоды, браузерсинк и прочее.

    ВАЖНО:
    если вы никогда не работали в среде npm, для легкого и понятного старта вы можете воспользоваться сервисом quenchjs.com, который сделает всю грязную работу за вас. Там есть конфигуратор, выбираете что надо и качаете архив. Ставите себе node.js, и дальше в папке, куда распаковали архив из командной строки- npm install. После того, как все пакеты будут установлены, перезапускаете в этой же папке терминал и пишите волшебную команду "gulp". И будет вам счастье. Это если совсем в двух словах. Поверьте, все это перевернет ваш опыт верстальщика и поднимет скиллы на новый уровень! Дерзайте! :)
    Ответ написан
    2 комментария