По итогу в $propValues - пусто. Почему так? ID свойств корректные. ID элемента инфоблока - тоже корректный. Значения у свойств заданы.
Но если я пробую делать точно такой же запрос - но у элемента инфоблока, у которого свойства хранятся в общей таблице - то всё корректно работает. Подскажите, как правильно составить запрос?
Не могу задать символьный код для группы пользователей
Есть группа пользователей, которой я хочу задать символьный код - но почему то когда я добавляю этот символьный код, и жму кнопку "Соранить" - система выдаёт мне ошибку "Обновление политик безопасности и доступа для главных администраторов запрещено."
Подскажите - как это лечится? Первый раз сталкиваюсь с тем, что группе пользователей нельзя задать символьный код.
Подскажите пожалуйста, как можно составить запрос к таблице, используя ORM Bitrix, чтобы вытащить иерархическую структуру данных?
Вот сама таблица комментариев (на скриншоте):
news_id = Id новости, к оторой относится комментарий
parent_id = родительский комментарий
author = автор комментария
content = текст самого комментария
created_at = дата и время, когда был добавлен комментарий
Хочу сделать такой запрос, чтоб можно было получить иерархическую структуру комментариев, начиная с самого верхнего комментария, и заканчивая всеми вложенными комментариями. Глубина вложенности - условно бесконечная, но пусть будет 10.
Сейчас есть запрос для получения комментариев первого уровня вложенности - то есть тех, у которых нет родительских комментариев к новости:
Знаю, что как то рекурсивно можно получить всё дерево комментариев, например к новости №29, но вот как - пока не понятно.
Вызов - тут получаю только верхнеуровеневые комментарии, без дочерних:
Код
$items = Actions::getItems(29, 3, 0, 0, 0);
А тут получаю только те комментарии, у которых родительское ID=1, и без дочерних:
Код
$childItems = Actions::getChildComments(1);
Actions - класс для работы с моей произвольной таблицей
Подскажите, как составить запрос так, чтоб можно было вытащить сразу всю структуру комментариев, от самого верхнего уровня вложенности, до самого нижнего, у которого уже нет дочерних?
Компонент нормально отрабатывает. Выводит на страницу результат A+B
На странице разместил вот такой код:
Код
<?php
require_once($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/prolog_before.php');
$APPLICATION->ShowHead();
CJSCore::Init(array("fx"));
?>
<sc ript>
// делаем ajax запрос в компонент custom:testcomponent к методу myTestAction()
var request = BX.ajax.runComponentAction('custom:testcomponent', 'myTest', {
mode: 'class',
data: {
param1: 'My_param1_value',
param2: 'My_param2_value',
param3: 'developer',
sessid: BX.message('bitrix_sessid')
}
});
// промис в который прийдет ответ
request.then(function (response) {
console.log(response);
});
</sc ript>
<?require_once($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/epilog_after.php');?>
Но если в браузере эту страницу открыть, то в консоли Google Chrome появляется ошибка:
Код
Uncaught (in promise):
Push & Pull server is disabled
Я понимаю что у меня нигде модуль Push & Pull не работает. Сервер локальный - OpenServer 6.4.6 Но мне и не нужен этот модуль, я просто хочу понять как работает runComponentAction. Отработает ли мой метод из class.php и выведет ли он мне корректный результат в консоль, вот и всё. Потом тоже самое хочу попробовать и с ajax.php компонента
Подскажите, как вылечить ошибку Push & Pull server is disabled ?
Столкнулся с такой проблемой. Стоит VirtualBox-7.2.4-170995-Win На ней был образ виртуальной машины Битрикс (9.0.6 CentOS) - всё коректно работало . Но я захотел добавить ещё один проект, и чтобы он также работал бы используя эту операционую систему. С помощью консольного меню добавил новый сайт, загрузил в корень нового проекта резервную копию и начал делать восстановление проекта, используя restoer.php.
Но дело в том, что VMBitrix 9.0.6 имеет объём жесткого диска всего в 50Гб, и система при восстановлении проекта сказала мне, что свободного места нет.
Я раньше, на другом ноутбуке уже расширял место VMBitrix вот по этой инструкции:
Дошёл до пункта выключения swap. Выполнил в консоли BitrixVM команду
Код
swapoff -v /dev/sda3
Далее попробовал выполнить команду
Код
cat /etc/fstab
Но не получилось. Ругался на пути, что нет такого пути. Дальше я эту процедуру приорстановил. Полностью удалил образ BitrixVM, и решил накатить его заново, чистый образ, чтобы восстановить хотябы первый свой проект. Импортировал чистый BitrixVM, запустил его, но у меня теперь просто чёрный экран, и вообще ничего не отображается.
Пробовал удалить VirtualBox и ставить заново - не помогло.
Подскажите, в чём может быть причина? Что я не так делаю? Как снова заставить работать BitrixVM ?
Добрый день. Столкнулся с такой проблемой. Скриптом bitrixsetup.php поставил себе локально Битрикс24 CRM. Окружение: OpenServer 6.5.6 PHP: 8.3.26 СУБД: MySQL 8.4
Во время установки никаких проблем не было.
По окончании установки решил перейти в раздел CRM:
А мне почему то 404 ошибку браузер отдаёт. Подскажите, как это лечится? Никаких правок не делал. Установка свежая, с официального сайта битрикс
Хочу с помощью вебхука создать новую задачу в Битрикс24.
При создании нового входящего вебхука указал метод task.item.add. Знаю что в документации написано что этот метод устарел, и что нужно использовать tasks.task.add Но в списке для выбора был только метод task.item.add поэтому его и использовал.
В строке "Настройка прав" указал Задачи (task). Сохранил.
Потом скопировал ссылку "Вебхук для вызова rest api" и вставил её в браузер, и нажал Enter. Браузер мне ответил:
Код
{
"error": "ERROR_METHOD_NOT_FOUND",
"error_description": "Method not found!"
}
Скопировал ссылку URL, в которой на конце json, вставил в браузер, он мне выдал:
Код
{
"error": "ERROR_CORE",
"error_description": "TASKS_ERROR_EXCEPTION_#256; Param #0 (arNewTaskData) expected by method ctaskitem::add(), but not given.; 256/TE/WRONG_ARGUMENTS\u003Cbr\u003E"
}
Подскажите, что я делаю не так? Как создать новую задачу, используя вебхук? Версия Битрикс24: 25.750.0
Подскажите пожалуйста. Столкнулся с такой проблемой: В CRM Битрикс24 в сделке нужно сделать так:
Если какое то определенное поле в данной конкретной сделке после её сохранения заполнено - то часть других полей нужно скрывать. Вариант отловить событие изменения сделки и скрыть нужные поля - не рабочий, т.к. во всех других сделках аналогичные поля также скроются, а нужно, чтобы этот механизм работал для конкретной сделки.
Я хочу сделать вот как: найти компонент, который отвечает на вывод верстки пользовательских полей, и уже в шаблоне этого компонента стилями или ещё как, просто не отображать те пользовательские поля, которые нужно скрыть в данной конкретной сделке.
Например: Если в текущей сделке НЕ заполнено поле "Результат общения с клиентом" - то нужно в текущей сделке скрыть поля «Дата назначенной встречи», «Точка продаж» и «Причина отказа».
Нашёл компонент, который отвечает за вывод карточки сделки в popup-окне.
на странице crm/deal/index.php размещён вызов компонента bitrix:crm.deal
В компоненте bitrix:crm.deal есть файл details.php. В нём вызов компонента bitrix:crm.entity.details.frame
В компоненте bitrix:crm.entity.details.frame в шаблоне вызов компонента bitrix:ui.sidepanel.wrapper - сюда в качестве параметра POPUP_COMPONENT_NAME передаётся значение
bitrix:crm.deal.details
Далее смотрю компонент bitrix:crm.deal.details. У него в шаблоне вызывается компонент bitrix:crm.entity.details
В шаблоне bitrix:crm.entity.details вызывается компонент bitrix:crm.entity.editor В шаблоне bitrix:crm.entity.editor и происходит вывод верстки карточки сделки. Но проблема в том - что там очень много JS-кода, и разобраться в нём тяжело.
Подскажите, может у кого-то была похожая задача - точечно скрывать поля сделки в зависимости от того, заполнено какое-то другое поле этой сделки, или нет.
Никакие другие варианты, кроме как править верстку - я пока не придумал, а поля нужно скрывать точечно - не для всех сделок, а у каждой конкретной сделки смотреть - если заполнено поле "Результат общения с клиентом" - то поля «Дата назначенной встречи», «Точка продаж» и «Причина отказа» - отображать. А если поле "Результат общения с клиентом" НЕ заполнено - то поля «Дата назначенной встречи», «Точка продаж» и «Причина отказа» - скрывать.
Исходный шаблон располагался в папке bitrix/templates/bitrix24
Если скопированный шаблон разместить в папке local/templates/bitrix24 - то проблема уходит - и шаблон подтягивается из папки local. Но вот если скопированный шаблон разместить в папке local/templates/custom - то шаблон применится, но стили почему то слетят.
Столкнулся с такой проблемой: хотел кастомизировать верстку некоторых компонентов bitrix24.
Скопировал в админке в разделе "Шаблоны сайта" нужный мне шаблон. Потом переместил его в папку local. Потом в админке указал - что нужно использовать мой, скопированный шаблон.
Но, после того, как я обновил страницу со сделками, я увидел, что скопированный шаблон применился - но стили у него почему то другие. Часть верстку вообще слетела. И в целом - я хотел, чтобы по визуальной части никаких изменений не было. Мне просто нужна полная копия шаблона, который лежал в папке bitrix, чтобы я мог свои эксперименты делать уже на копии, но нет - почему то стили слетели. Можете подсказать - в чём проблема?
Шаблон с синим оформлением - исходный. Его я и копировал. Шаблон, где на фоне цветы - после применения скопированного шаблона в папку local.
Начал для инфоблоков делать, в админке в списке типов начал отображаться мой тип, но вот когда хочу добавить новый тип поля для CRM - он там в списке не отображается. Я так думаю, что нужно какой то похожий обработчик написать, но только для модуля CRM, подскажите, есть где-нибудь описание того, как это можно сделать?
Подскажите, кто-нибудь пробовал разрабатывать кастомные типы свойств для инфоблоков?
Хочу сделать кастомное свойство типа "Таблица". Строками такой таблицы были бы значения свойств элементов привязанного инфоблока
Например мы хоти в карточке сделки CRM системы Битрикс24 вывести свойство типа "Таблица". В настройках свойства (в админке или в публичной части) указываем привязку к инфоблоку. И потом уже, когда пользователь привязывает элементы другого инфоблока - это свойство бы красиво отображало эти привязанные элементы в виде строк таблицы, например вот так:
NAME
DESCRIPTION
COLOR
SIZE
Элемент_1
Описание_1
Синий
45
Элемент_2
Описание_2
Черный
41
Тут мы привязали 2 элемента инфоблока, и отобразили их поля и свойства в виде строк в таблице
Подскажите, где можно подробно почитать, как это можно было бы реализовать. Нашёл вот тут статью: - но не помогло. Да и в комментариях пишут тоже что описание не очень.
Пока что я только понял что нужно написать обработчик события OnIBlockPropertyBuildList в своём классе, и правильно реализовать несколько методов, для отображения моего кастомного типа свойства в админке и публичной части.
API для работы со свойствами товаров торгового каталога
Подскажите пожалуйста, каким образом, используя API Битрикс можно проставить галочку "Показывать на странице редактирования элемента" у свойства товара?
Делаю скрипт, который проходится по элементам инфоблока. Инфоблок является торговым каталогом. Скрипт проходится по товаром, и смотрит, какие свойства заполнены, а какие нет.
Выявляет общие свойства, и задаёт эти свойства разделам этого инфоблока. Пример вот тут:
Предположим, что я нашёл, что у меня свойсво PRICE общее для всех разделов, то есть у всех товаров этого инфоблока свойство PRICE заполнено.
Соответственно мне нужно в настройках торгового каталога в свойствах товаров у свойства PRICE проставить галочку "Показывать на странице редактирования элемента". Руками я конечно это могу сделать, но подскажите, есть ли API для того, чтобы это можно было сделать кодом?
Есть такая задача - во время установки модуля, нужно чтоб на страницах сайта, перед элементов с id="header" вставлялся бы код вызова компонента моего модуля.
Нужно именно не руками его разместить в header.php шаблона, а чтоб динамически, при установке модуля, модуль бы искал DOM-узел с id="header" и перед ним вставлял бы код вызова моего компонента, и чтоб компонент отрабатывал бы.
Сам компонент просто выводит текст из настроек модуля.
Первое что пришло в голову - написать в своём модуле обработчик события OnEpilog. Вот код обработчика:
Код
public static function OnEpilogHandler()
{
global $APPLICATION;
$APPLICATION->AddHeadScript('/bitrix/js/my.notify/script.js');
}
Решил попробовать развернуть резервную копию проекта БУС 25.600.0 на BitrixVM 9.0-6-CentOSStream9-VirtualBox Сама резервная копия встала нормально, но заметил, что при запуске виртуальной машины появляются предупреждения:
Код
Warning: Deprecated Hardware is detected: x86_64-v2:GenuineIntel: Intel(R) Core(TM) i7-6500U CPU @ 2.50Ghz will not be maintained in a future major release and may be disabled
Код
Warning: Spectre v2 mitigation leaves CPU vulnerable to RETBleed attacks, data leaks possible!
Код
Invalid DMI field header.
Warning: Unmaintained driver is detected: e1000
Подскажите, насколько критичны эти предупреждения? Или пора уже думать о покупке нового железа?
Вообще в целом заметил, что развернутый из резервной копии проект на VMBitrix тормозит, что на 9.0-6 тормозит, что на 9.0.0 тормозит. Причину выясняю.
Думал что на VMBitrix тут летать всё локально будет, но нет...
Помогите пожалуйста с проблемой: на детальной странице товара есть вкладка "Отзывы". В этой вкладке размещён компонент
bitrix:catalog.comments
Внутри шаблона этого компонента, в файле component_epilog.php размещён вызов компонента bitrix:blog.post.comment с кастомным шаблоном. Проблема в том, что в форме, которую отображает этот шаблон, есть звезды - для того, чтоб пользователь мог поставить оценку товару. При наводке курсора на звезду - она окрашивается в желтый цвет, как и должно быть. Я кликаю по звезде, чтобы зафиксировать свой выбор, например хочу поставить 4 звезды. Кликаю на 4-ю звезду слева, потом увожу курсор, и мои 4 заполненные, желтые звезды снова становятся белыми - как будто я ничего и не выбирал. Сколько ни кликай, а оценка не сохраняется. Соответственно я и отзыв оставить не могу, т.к. оценка не заполнена.
Смотрел файлы ajax.php, script.php компонента bitrix:blog.post.comment - никаких обработчиков onclick, mousemove, mouseover, mouseout я там не нашёл.
Помогите пожалуйста. Подскажите, куда копать?
В консоли вот такие ошибки выходят:
Код
Uncaught ReferenceError: JCCatalogProductSubscribe is not defined
Понимаю, что ругается на то, что такого объекта нет, но как мне это поможет, и самое главное, как это исправить, я пока не знаю.
Посмотреть сам баг можно тут:
Вкладка "Отзывы", там есть зеленая кнопка "Оставить отзыв". При клике на эту кнопку, отобразится форма, где можно выбрать оценку товару - в виде звезд. Вот с этими звездами и проблема.
Столкнулся с такой проблемой. Есть 2 сервера. На обоих развернута Б24
Но на одной из них нормально работает веб-мессенджер, а на другой - вообще не работает.
Вот скриншоты раздела /online/ сервера, на котором веб-мессенджер не работает. Консоль Google Chrome отдаёт ошибки
1.
Код
Uncaught TypeError: BX.onGlobalCustomEvent is not a function
at Object.draw (core_planner.js?17373322103206:78:5)
at online/:742:12
at online/:745:3
2.
Код
Uncaught TypeError: Cannot read properties of undefined (reading 'isDesktop')
at ItemsController.updateCounters (items-controller.js:505:19)
at Menu.updateCounters (menu.js:1440:29)
at online/:1651:64
На ошибку №1 я не обращаю внимания, т.к. на сервере где веб-мессенджер работает эта ошибка тоже есть, но даже с ней мессенджер работает. А вот ошибка №2 есть только на сервере, где мессенджер не работает.
Подскажите, где искать решение? Посмотрел я в items-controller.js:505:19
там идёт вот такой кусок js-кода:
Код
if (DesktopApi.isDesktop())
{
DesktopApi.setBrowserIconBadge(visibleValue);
}
Подскажите пожалуйста, каки образом в битриксе я могу из обработчика события вызвать вот такое вот окошко, и передать в него произвольный текст, а не текст исключения?
Настроена интеграция со сторонней системой, и если из сторонней системы пришло сообщение о том, что трудозатрата уже согласована - то в битриксе в обработчике нужно отменить правку этой записи и вывести пользователю сообщение об этом.