• Как прошить планшет bliss Pad R9020 с Андройд 4.0.3 до Андройд 12?

    iLLuzor
    @iLLuzor
    Java, Kotlin, Android Developer
    Никак. Без вариантов
    Ответ написан
    Комментировать
  • На чём разрабатывать для Аврора OS?

    irishmann
    @irishmann
    Научись пользоваться дебаггером
    Приложения для ОС Аврора пишутся на C++/Qt с использованием QML для описания интерфейса. Создание приложения осуществляется в IDE, основанной на Qt Creator, и практически совпадает с процессами создания приложений для множества настольных и мобильных платформ. Отличия связаны с тем, что сборка происходит в Build Engine, а запуск — в эмуляторе или на внешнем устройстве с ОС Аврора.

    https://community.omprussia.ru/documentation/softw...
    Ответ написан
    Комментировать
  • Сломается ли железо компьютера из за резкого отключения электроэнергии?

    @lonelymyp
    Хочу вылезти из минуса по карме.
    Железу пофиг, ибо обычное выключение через пуск это тоже самое что выдернуть из розетки, ничего магического там не происходит, просто пропадает питание.
    Единственный нюанс это жёсткие диски и файловая система, если отключить во время записи файла, может произойти сбой в ФС.
    Ответ написан
    Комментировать
  • Сломается ли железо компьютера из за резкого отключения электроэнергии?

    yakovlev_13
    @yakovlev_13
    Шаманство, экзорцизм и некромантия.
    Это больше проблема провинций с частным сектором, где при отключении происходят сильные скачки, которые жгут бытовую технику и электронику. И то это не частые случаи.
    Ответ написан
    Комментировать
  • Почему значение даты на php записывается задом на перёд, какие исторический предпосылки обусловили этот феномен?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Записывать дату в РНР можно практически в любом формате. Хоть 12/12/12
    А вот сравнивать значения можно только тогда, когда старшие разряды идут впереди младших. В частности, строки, содержащие дату, можно сравнивать и сортировать только в формате "задом наперёд". Что делает её очень удобной. Например при именовании папочек с фоточками на домашнем компе

    Ну и как правильно отмечено выше, здесь ничего не записывается, а просто выводится. То есть вопрос к тому, кто выводит.
    Ответ написан
    Комментировать
  • Что такое scope?

    @MrColdCoffee
    web
    SCOPE - значения разрешений на доступ приложения к различным сущностям Битрикс24
    Ответ написан
    Комментировать
  • Что такое "Трейс вызова метода"?

    dima9595
    @dima9595
    Junior PHP
    Грубо говоря, "трейс" - путь. "Трейс вызова метода" - путь до метода сквозь файлы и методы.

    Допустим, у вас есть файл /models/db/test.php, в котором есть метод test(); И вызывая этот метод будет показан путь к этому методу, от куда вызвался и куда вёл.
    Ответ написан
    Комментировать
  • Что такое "Трейс вызова метода"?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега PHP
    Последовательность вызова методов. Кто вызвал текущий метод, кто вызвал того, кто вызвал текущий метод и так далее.
    Ответ написан
    Комментировать
  • Как на php в битрикс24 установить права - только чтение, для контактов, конкретному пользователю?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Механика Битрикс24 сложнее чем вы описали.
    Дело в том что вы не назначаете конкретные права конкретному пользователю.

    Итак, с чего надо начать?
    В Битрикс есть пользователи, каждый пользователь наделен некоторым количеством "Access codes" (сокращенно AC, иногда они называются ролями, общими ролями, кодами доступа, пользовательскими кодами и т.п.). AC в частном случае если комбинация букв и цифр, например U1 - означает user ID:1, G2 - пользователь принадлежит к группе ID:2 и т.п.
    Один пользователь может обладать множеством таких аттрибутов.

    Битрикс24 это надстройка над платформой, основополагающем модулем, наряду с CRM является Интранет, который обеспечивает орг.структуру. Это добавляет новые код IU123, где IU - расшифровывается как Intranet User (сотрудник) ID:123 (т.е. пользователь с ID123, который находится в орг.структуре), D1 который расшифровывается как Department 1 (подразделение с ID:1, т.е. пользователь состоящий в подразделении ID:1) и DR1 (Department recurcive, вложенное подразделение в ID:1 или пользователь который состоит в орг.структуре и вложен в подразделение ID:1)

    Теперь поговорим про CRM.
    В CRM существуют права, например право на добавление сделок, право на чтение сделок, право на изменение контактов и т.п. У каждого права есть значени "Нет доступа", "Свои", "Своего отдела" и т.п. Комбинация прав называется Ролью (лучше говорить CRM Роль чтобы не путаться).
    Каждому Access code назначается своя роль.

    А пользователь соответственно получает максимально возможные значения прав из доступных ему.

    Т.е. предположим что вашей задачей является "Выдать роль ** сотруднику ID:1", тогда вам нужно обратиться к CCrmRole и использовать SetRelation($arRelation)
    Ответ написан
    Комментировать
  • Это стрелочная функция?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Нет, это не стрелочная функция.
    Здесь нет стрелок типа такой: =>
    Ответ написан
    Комментировать
  • Что такое [[Prototype]]: NodeList?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Комментировать
  • Объект Шредингера - почему нет объекта, если визуально данные есть, как в итоге эти данные получить?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега JavaScript
    document.querySelector('iframe.side-panel-iframe').contentWindow.document.querySelector('.your-selector')
    Ответ написан
    Комментировать
  • Какой новый аналог у события OnOrderNewSendEmail?

    @Drayde
    onSaleOrderStatusChangeSendEmail
    Ответ написан
    Комментировать
  • Как писать условие if если очень много значений для проверки, а нужно чтобы они за экран не залезали, не превращались в очень длинную строку?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    It depends.
    Абстрактных решений тут не будет, всё зависит от того, что это именно за условия.
    Из стандартных методов - упрощение логических выражений, вынесение условий в функции, замена проверок вида x == 1 || x == 2 || ... || x == n на [1, 2, ..., n].includes(x) и т.п.
    Ответ написан
    Комментировать
  • Как исправить ошибку Using $this when not in object context?

    Maksclub
    @Maksclub Куратор тега PHP
    maksfedorov.ru
    Ошибку выбивает из-за того, что вы обращаетесь к контексту объекта В СТАТИЧЕСКОМ МЕТОДЕ.
    Но статический методы вызывается БЕЗ СОЗДАНИЯ объекта (на то он и статический), то есть никакого контекста объекта нет (тк нет самого объекта), потому и нет в нем возможности обратиться к внутренностям объекта (которого, напомню, нет).
    Ответ написан
    1 комментарий
  • Как получить комментарии оставленные к задаче в Битрикс24?

    Комменты не хранятся в задаче. Они хранятся в форуме. Это по сути ветка обсуждения такая же как для обсуждения товаров например.
    Смотрите как реализован вывод в штатном шаблоне tasks.task.detail с помощью bitrix:forum.comments и копайте в эту сторону.
    Ответ написан
    1 комментарий
  • Почему не запускается функция при наступлении события?

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

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

    Теперь что у вас НЕ получилось.

    Для начала это сама подписка на событие.
    - Вы не правильно поняли ее аргументы
    - Вы использовали устаревшую надстройку для подписки.

    Начнем с обратного порядка: AddEventHandler это лишь обертка над \Bitrix\Main\EventManager::addEventHandlerCompatible поэтому мы будем использовать его.

    Для начала перепишем ваш код дословно на "новый лад":

    $eventManager = \Bitrix\Main\EventManager::getInstance();
    $eventManager->addEventHandlerCompatible(
    	'main',
    	'OnAfterUserAdd',
    	[
    		'AddUserToGroupChatsClass',
    		'AddUserToGroupChats'
    	],
    	$_SERVER["DOCUMENT_ROOT"] . "/local/php_interface/event_handlers/add_user_to_group_chats_class.php"
    );


    Оно выглядит лучше но по-прежнему не работает.

    Порядок аргументов addEventHandlerCompatible и AddEventHandler одинаковый и состоит из:

    - FROM_MODULE_ID - на какой модуль подписываемся
    - MESSAGE_ID - на какое событие подписываемся
    - CALLBACK - callback обработчик (будет вызван для )
    - SORT - порядок выполнения относительно других событий
    - FULL_PATH - путь к файлу

    Т.е. получается что у тебя нарушен порядок аргументов. Корректнее было бы так:
    $eventManager = \Bitrix\Main\EventManager::getInstance();
    $eventManager->addEventHandlerCompatible(
    	'main',
    	'OnAfterUserAdd',
    	[
    		'AddUserToGroupChatsClass',
    		'AddUserToGroupChats'
    	],
    	100,
    	$_SERVER["DOCUMENT_ROOT"] . "/local/php_interface/event_handlers/add_user_to_group_chats_class.php"
    );


    Теперь разберемся с самой подписной моделью: вы хотите использовать свой класс и выделить его в отдельный файл для удобства.
    Не будем поднимать вопросы по поводу нейминга, но совершенно не обязательно подключать дополнительный файл для события. Рекомендую почитать про spl_autoload и composer.
    Давайте воспользуемся нашей готовой разработкой init.php и разместим в init.php маленький автолоадер.

    Предположим что за добавление будет отвечать ваш класс AddUserToGroupChatsClass

    Ваш init.php:
    /**
     * - /local/php_interface/classes/{Path|raw}/{*|raw}.php
     * - /local/php_interface/classes/{Path|ucfirst,lowercase}/{*|ucfirst,lowercase}.php
     */
    spl_autoload_register(function($sClassName)
    {
    	$sClassFile = __DIR__.'/classes';
    
    	if ( file_exists($sClassFile.'/'.str_replace('\\', '/', $sClassName).'.php') )
    	{
    		require_once($sClassFile.'/'.str_replace('\\', '/', $sClassName).'.php');
    		return;
    	}
    
    	$arClass = explode('\\', strtolower($sClassName));
    	foreach($arClass as $sPath )
    	{
    	    $sClassFile .= '/'.ucfirst($sPath);
    	}
    	$sClassFile .= '.php';
    	if (file_exists($sClassFile))
    	{
    		require_once($sClassFile);
    	}
    });
    
    $eventManager = \Bitrix\Main\EventManager::getInstance();
    $eventManager->addEventHandlerCompatible(
    
    	'main',
    	'OnAfterUserAdd',
    	[
    		'AddUserToGroupChatsClass',
    		'AddUserToGroupChats'
    	]
    );


    Теперь нужно разметить ваш класс в файле: /local/php_interface/classes/AddUserToGroupChatsClass.php
    Заметьте - мы удалили сортировку (вам не важем порядок) и подключение файла - за это теперь отвечает автолоадер.

    Теперь поработаем с содержимым этого файла.
    Произведем косметические изменения:
    - уберем лишние отступы
    - добавим phpdoc

    Произведем функциональные изменения:
    - приведем файл к виду opentag -> namespace -> use -> class
    - добавим описание метода необходимые для вызова его в call_user_func_array
    - Пропишем корректные праметры к Debug::writeToFile методу

    <?php
    
    use \Bitrix\Main\Diag;
    
    class AddUserToGroupChatsClass
    {
    	/**
    	 * Handle main::OnAfterUserAdd event
    	 *     after add user to groups
    	 * @param array &$arFields User data
    	 * @return void
    	 */
    	public static function AddUserToGroupChats( &$arFields )
    	{		 
    		Diag\Debug::writeToFile(
    			[
    				'text'   => "Событие наступило",
    				'fields' => $arFields
    			],
    			date('d.m.Y'),
    			"AddUserToGroupChatsClass.log"
    		); 
    	}
    }


    В результате проделанной работы будет создан файл `AddUserToGroupChatsClass.log` (у меня bitrix env и $_SERVER['DOCUMENT_ROOT'] указывает на /home/bitrix/www, соответственно файл располагается по пути: /home/bitrix/www/AddUserToGroupChatsClass.log)

    С примерно таким содержимым:

    28.09.2021:
    Array
    (
        [text] => Событие наступило
        [fields] => Array
            (
                [TITLE] => 
                [NAME] => test1
                [LAST_NAME] => test1
                [SECOND_NAME] => test1
                [EMAIL] => test1@test1.test1
                [LOGIN] => test1@test1.test1
                [PERSONAL_PROFESSION] => 
                [PERSONAL_WWW] => 
                [PERSONAL_ICQ] => 
                [PERSONAL_GENDER] => 
                [PERSONAL_BIRTHDAY] => 
                [PERSONAL_PHONE] => 
                [PERSONAL_FAX] => 
                [PERSONAL_MOBILE] => 
                [PERSONAL_PAGER] => 
                [PERSONAL_STREET] => 
                [PERSONAL_MAILBOX] => 
                [PERSONAL_CITY] => 
                [PERSONAL_STATE] => 
                [PERSONAL_ZIP] => 
                [PERSONAL_COUNTRY] => 0
                [PERSONAL_NOTES] => 
                [WORK_COMPANY] => 
                [WORK_DEPARTMENT] => 
                [WORK_POSITION] => 
                [WORK_WWW] => 
                [WORK_PHONE] => 
                [WORK_FAX] => 
                [WORK_PAGER] => 
                [WORK_STREET] => 
                [WORK_MAILBOX] => 
                [WORK_CITY] => 
                [WORK_STATE] => 
                [WORK_ZIP] => 
                [WORK_COUNTRY] => 0
                [WORK_PROFILE] => 
                [WORK_NOTES] => 
                [AUTO_TIME_ZONE] => 
                [XML_ID] => 
                [PHONE_NUMBER] => 
                [PASSWORD_EXPIRED] => N
                [TIME_ZONE] => 
                [LID] => s1
                [LANGUAGE_ID] => 
                [ACTIVE] => Y
                [BLOCKED] => N
                [GROUP_ID] => Array
                    (
                        [0] => Array
                            (
                                [GROUP_ID] => 3
                                [DATE_ACTIVE_FROM] => 
                                [DATE_ACTIVE_TO] => 
                            )
    
                        [1] => Array
                            (
                                [GROUP_ID] => 12
                                [DATE_ACTIVE_FROM] => 
                                [DATE_ACTIVE_TO] => 
                            )
    
                        [2] => Array
                            (
                                [GROUP_ID] => 4
                                [DATE_ACTIVE_FROM] => 
                                [DATE_ACTIVE_TO] => 
                            )
    
                    )
    
                [ADMIN_NOTES] => 
                [PASSWORD] => $5$hjIX0a5X2ps0X6kFG1h5xXAt4elIW.typcRgt23xwX97xU.GgGt0i3HG1a2hwZtcYXwIR3Whg6sXwV.
                [CONFIRM_PASSWORD] => test1@test1.test1
                [UF_DEPARTMENT] => Array
                    (
                        [0] => 2
                    )
    
                [UF_PHONE_INNER] => 
                [UF_USER_CRM_ENTITY] => 
                [UF_INN] => 
                [UF_DISTRICT] => 
                [UF_SKYPE] => 
                [UF_TWITTER] => 
                [UF_FACEBOOK] => 
                [UF_LINKEDIN] => 
                [UF_XING] => 
                [UF_WEB_SITES] => 
                [UF_SKILLS] => 
                [UF_INTERESTS] => 
                [UF_EMPLOYMENT_DATE] => 
                [UF_SKYPE_LINK] => 
                [UF_ZOOM] => 
                [UF_TIMEMAN] => 
                [UF_TM_MAX_START] => 00:00
                [UF_TM_MIN_FINISH] => 00:00
                [UF_TM_MIN_DURATION] => 00:00
                [UF_TM_REPORT_REQ] => 
                [UF_TM_REPORT_TPL] => Array
                    (
                        [0] => 
                    )
    
                [UF_TM_FREE] => 
                [UF_TM_TIME] => 
                [UF_TM_DAY] => 
                [UF_TM_REPORT_DATE] => 
                [UF_REPORT_PERIOD] => 
                [UF_DELAY_TIME] => 
                [UF_LAST_REPORT_DATE] => 
                [UF_SETTING_DATE] => 
                [UF_TM_ALLOWED_DELTA] => 
                [CHECKWORD] => 433ddaf3c8a14fe75431252a2709b8
                [~CHECKWORD_TIME] => now()
                [ID] => 5
                [RESULT] => 5
            )
    )


    Итого на выходе у нас:
    - Подписка на событие (работает)
    - Автолоадер, который позволит подключать классы по мере использования (без необходимости прописывать явно)
    - Разделение логики между подпиской и обработчиком.

    Хорошо было бы углубиться в:
    - php классы (namespace, static, public, protected, private)
    - composer

    Надеюсь помог.
    Ответ написан
    Комментировать
  • Официальное оформление - в качестве плюшки это не странно?

    Jump
    @Jump
    Системный администратор со стажем.
    Официальное оформление — в качестве плюшки это не странно?
    Это маркетинг.
    Вот вы видите на витрине пять пачек молока разных производителей, вроде одинаковые, но на одной крупно написано - без хлора!
    Поскольку молоко с хлором никто не любит - берут его.

    Так же и здесь - пять разных вакансий, но на одной крупно написано - официальное трудоустройство.
    Ответ написан
    7 комментариев
  • Веб разработчик / веб программист в чем отличие?

    @FoxInSox
    Разработчик в 2.5 раза круче программиста.
    Ответ написан
    Комментировать
  • Где в настройках инфоблока посмотреть настройки размеров картинки которые выгружаются из 1С?

    Настройки инфоблока - Поля . Внизу будет "Детальная картинка" Также чуть выше "Картинка анонса", которую также можно отредактировать.
    Ответ написан
    Комментировать