Задать вопрос
  • Как в DealTable::getList включить проверку прав CRM?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Вы неверно трактуете исходную точку.

    DataMapper'ы это низкоуровневая прослойка между данными и вашим кодом. Там не должно быть никакой проверки прав и соответственно ее там нет.

    Для получения списка сделок с правами и сохранением обратной совместимости вы обязаны использовать методы:
    CCrmDeal::GetList($arOrder = Array('DATE_CREATE' => 'DESC'), $arFilter = Array(), $arSelect = Array(), $nPageTop = false)
    CCrmDeal::GetListEx($arOrder = array(), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array(), $arOptions = array())


    Официально нового API (как принято говорить D7) для CRM нет.
    Ответ написан
    Комментировать
  • Не подгружаются стили и скрипты в слайдере Битрикс?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Для вывода своего компонента используйте bitrix:ui.sidepanel.wrapper

    Ваша ошибка следует из того, что вы не знаете как именно работает слайдер в режите iframe
    Ответ написан
    Комментировать
  • Не добавляется пункт меню в профиле пользователя Битрикс24?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Когда готовили новую карточку пользователя (sidebar) механизм непосредственно выводящий ссылки в верхнее меню был изменен в связи с чем эта механика перестала работать.

    Можете присоединиться к коллективному тикету (2623832) и писать что вам тоже нужна эта механика.
    Для этого напишите ваше сообщение в техподдерку и укажите что подобная проблема поднималась уже поднималась (номер тикета в helpdesk битрикса).
    Ответ написан
  • Как сделать редирект в другой каталог?

    gromdron
    @gromdron
    Работаю с Bitrix24
    nginx тут вам особо не поможет: пересматривайте подключение скриптов на странице.
    ЕСЛИ скрипты подключены по относительному пути и начинаются с символа слеш (/src.js), то такие пути будут искаться от корня сайта, а не вашей директории.
    Конечно можно попробовать использовать тег base, но он тут вряд ли поможет.
    Ответ написан
  • Как в битрикс бизнес Создать скидку только для неавторизованных пользователей.?

    gromdron
    @gromdron
    Работаю с Bitrix24
    У блоке "Дополнительные условия" в подмножестве "Пользователи" выбрать пункт "Группа".
    Переключить режим из "состоит в группе(ах)" в "не состоит в группе(ах)".
    В списке групп отметить все, кроме "Все пользователи (в том числе неавторизованные) [2]".
    Неавторизированный пользователь будет состоять только в этой группе.
    Ответ написан
  • Как настроить чпу в Битрикс когда большая вложенность разделов?

    gromdron
    @gromdron
    Работаю с Bitrix24
    Вообще как уже сказал VicTHOR можете использовать такой параметр как SECTION_CODE_PATH (подробнее о ЧПУ вы можете почитать в документации)

    Что касается вашей структуры:
    Раздел1/Раздел2/Раздел3/Элемент


    Я бы не рекомендовал вам использовать данную структуру, так как при включении товара в несколько разделов у вас будет полный бардак с canonical-ссылками и дублями в каталоге.

    Используйте макет для разделов:
    /catalog/#SECTION_CODE_PATH#/
    И для элементов:
    /product/#ELEMENT_CODE#/

    Это позволит вам включать один товар в несколько разделов, но при этом не будет проблем ни с ЧПУ ни с canonical ни с поиском.
    Ответ написан
    Комментировать
  • Где находится в коде этот счётчик (коробочная версия)?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Перед началом: да, можно вывести счетчик, но если вы хотите сделать обновление данных через push-сервер нужно немного модифицировать шаблон меню.
    И под счетчиками, я понимаю стандартный механизм использующий API: CUserCounter (таблица b_user_counter)

    Чтобы вывести цифру нужно сделать следующее: при описании меню (.left.menu.php) в 3-й параметр пункта нужно добавить параметр counter_num.
    Array(
    	'Test menu',
    	"/test", 
    	Array(), 
    	Array(
    		'counter_num' => 7,
    	), 
    	"" 
    ),


    В данном случае 7 - цифра, которая будет отображаться около номера.
    Сам же счетчик можно наполнять данными откуда угодно.

    Однако если вы хотите добавить обновляемый через push-сервер счетчик то нужно добавить еще один параметр counter_id (это идентификатор стандартного счетчика битрикса):
    Array(
    	'Test menu',
    	"/test", 
    	Array(), 
    	Array(
    		"counter_id" => "test-counter-menu",
    		'counter_num' => 7,
    	), 
    	"" 
    ),


    Далее, в шаблоне компонента меню (/bitrix/templates/bitrix24/components/bitrix/menu/top_horizontal/template.php) нужно перед кодом:
    $items[] = $newItem;

    добавить:
    if ( isset($item["PARAMS"]["counter_id"]) )
    {
    	$newItem['COUNTER_ID'] = $item["PARAMS"]["counter_id"];
    }


    Теперь когда вы будете обновлять счетчик, он будет автоматически обновляться у пользователей.
    Ответ написан
    1 комментарий
  • Как сделать отчет в битрикс-24 с контактами?

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

    Для того чтобы получить данный отчет можно воспользоваться возможностью системы и расширить ее при помощи REST-методов или API коробочной версии
    Ответ написан
    Комментировать
  • Как создать лид + контакт, но чтобы лид не помечался как повторный?

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

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

    Для получения списка звонков можно воспользоваться методом voximplant.statistic.get
    Ответ написан
    Комментировать
  • При импорте пользователей из AD в Битрикс не импортируются пароли, что нужно сделать для импорта паролей?

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

    Алгоритм (без SSO) следующий:
    1) Пользователь открывает в браузере портал
    2) Портал проверяет наличие сохраненной действующей авторизации Если она есть то показывает ему портал. Если нет - форму входа
    3) Пользователь вводить логин и пароль
    4) Портал ищет пользователя по логину. Если тип пользователя внутренний, проводит проверку по логину и хранимому паролю. Если тип пользователя внешний (NTLM, соц.сети и т.п.) отдает логин и пароль контроллеру внешней авторизации.
    5) Если контроллер ответил разрешением, показывает пользователю портал.

    Таким образом при интеграции с AD пароль, находящийся в AD не попадает на портал
    Ответ написан
    Комментировать
  • Как интегрировать 2 Битрикса не перенося общих пользователей и БП, только отправлять задачи?

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

    С точки зрения решаемой задачи есть следующие способы ее достижения:

    В облачном битрикс24 Вы можете попробовать воспользоваться межпортальными задачами, т.е. если пользователи порталов будут внешними пользователями. В таком случае между двумя облачными порталами эта схема может сработать.

    В продукте Битрикс24 (коробочная версия) такие возможности не предусмотрены. То есть: вы не можете ставить межпортальные задачи если хотя бы один из порталов коробочный. Для реализации "шаринга" задач вы можете воспользоваться API, но с ограничениями:
    - В REST-апи нельзя передавать файлы и на одной из коробочных сторон придется поддерживать таблицы маппинга
    - Если мы говорим про php код то реализовать там можно вообще все, но механик придется реализовать достаточно большое количество.

    Мы пробовали сделать синхронизацию задач между коробкой и облаком, но ничего хорошего из этого не вышло. Слишком мало возможностей api и слишком много подводных камней и механик.
    Ответ написан
    4 комментария
  • Как настроить левое меню в коробке б24?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Кумуляционный ответ на вопрос.

    В каждом конкретном случае необходимо рассматривать код и настройки соответствующего портала.
    В общем и целом такая проблема может наблюдаться в следующих случаях:

    1) Пользователь не является сотрудником портала, но имеет доступ к сайту.
    Такое возникает, когда пользователя добавляют на портал, но он не учитывается как сотрудник.
    Нерадивые разработчики начинают выдавать права на чтение файлов и папок в битриксе и получается франкенштейн.

    Как лечить?
    - Поставить дефолтную коробку, посмотреть права и выставить аналогичные (не копировать)
    - Включить пользователей в соотвутствующие группы
    - Добавить пользователей в подразделения

    2) Проект дорабатывался или обновлялся со старых версий (до 16)
    Дело в том, что ранее механики левого меню отличались и в случае когда портал дорабатывался, код его может быть изменен.
    Как лечить? Проверить код меню-файлов

    3) Некорректные права на продукте и экстранет-пользователь
    Собственно это частный случай номера 1, кто-то поправил права или index.php страницу и пользователь не редиректится в экстранет.
    Соответственно пунктов меню не прибавляется и редиректа не происходит.
    Как лечить? Смотреть код страницы и права

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

    gromdron
    @gromdron
    Работаю с Bitrix24
    Другой способ есть и он довольно простой: вы пишете что сущность работает с свойствами и добавляете UF_* свойство типа файл (или файл на диске) и битрикс делает все за вас. Единственное есть несколько ограничений:

    - Поле называется с UF_ префиксом
    - Валидация согласно настройкам поля
    - Добавлять uf нужно отдельно
    Ответ написан
    1 комментарий
  • Как убрать блоки в sidebar?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    За отображение этих блоков отвечает компонент bitrix:intranet.bitrix24.banner расположенный на странице /stream/index.php

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

    gromdron
    @gromdron
    Работаю с Bitrix24
    boris tyrepharm, к сожалению вы не можете посмотреть "будущие" письма, так как такая генерация очень сложна.
    Но вы можете посмотреть существующее письмо в новом дизайне. К тому же - вы можете увидеть только как будет выглядеть ваше письмо, если его вывести в браузере, но это не одно и то же, как если оно пройдет через MTA и будет отображаться в Outlook/Thundebird/OWA и т.п.

    Например я хочу посмотреть как приблизительно(*) будет выглядеть сообщение с ID 336020 (в таблице b_event), после изменения дизайна в существующем шаблоне.
    use Bitrix\Main\Mail;
    
    /**
     * Get from b_event table
     * @var integer Existed event id
     */
    $displayedEventId = 336020;
    
    /**
     * List of site ids, for event theme generation
     * must be replaced by current site id in public
     * @var array
     */
    $arSites = [
    	's1'
    ];
    
    try
    {
    	/**
    	 * First, try to find event
    	 */
    	$arEvent = Mail\Internal\EventTable::getRow([
    		'filter' => [
    			'=ID' => $displayedEventId,
    		]
    	]);
    
    	if ( !$arEvent )
    	{
    		throw new \Exception('Event not found');
    	}
    
    	$arEvent['FIELDS'] = $arEvent['C_FIELDS'];
    
    	/**
    	 * Try to find all message templates for 
    	 * sites. In event handler we send for one letter
    	 * per site.
    	 */
    	$arEventMessageFilter = [
    		'=ACTIVE' => 'Y',
    		'=EVENT_NAME' => $arEvent["EVENT_NAME"],
    		'=EVENT_MESSAGE_SITE.SITE_ID' => $arSites,
    	];
    
    	$messageDb = Mail\Internal\EventMessageTable::getList([
    		'select' => ['ID'],
    		'filter' => $arEventMessageFilter,
    		'group' => ['ID']
    	]);
    
    	foreach ($messageDb as $arMessage)
    	{
    		$eventMessage = Mail\Internal\EventMessageTable::getRowById($arMessage['ID']);
    
    		$eventMessage['FILES'] = array();
    		$attachmentDb = Mail\Internal\EventMessageAttachmentTable::getList(array(
    			'select' => array('FILE_ID'),
    			'filter' => array('=EVENT_MESSAGE_ID' => $arMessage['ID']),
    		));
    		while($arAttachmentDb = $attachmentDb->fetch())
    		{
    			$eventMessage['FILE'][] = $arAttachmentDb['FILE_ID'];
    		}
    
    		$arFields = $arEvent['FIELDS'];
    
    		// get message object for send mail
    		$arMessageParams = array(
    			'EVENT' => $arEvent,
    			'FIELDS' => $arFields,
    			'MESSAGE' => $eventMessage,
    			'SITE' => $arSites,
    			'CHARSET' => $charset,
    		);
    		$message = Mail\EventMessageCompiler::createInstance($arMessageParams);
    		$message->compile();
    		echo $message->getMailBody();
    	}
    }
    catch( \Exception $e )
    {
    	var_dump($e);
    }
    Ответ написан
    Комментировать
  • Как через getlist вывести множественное свойство привязка к другим элементам инфоблока?

    gromdron
    @gromdron
    Работаю с Bitrix24
    Такое поведение встречается когда вы используете Инфоблоки вверсии 1 (хранение свойств в общей таблице) и запрашиваете множественное свойство.
    Чтобы исключить этот момент, можно изменить механику работы (первести их на версию 2), т.е. изменить расположение свойств в отдельной таблице.

    Это конечно накладывает определенные ограничения, но зато в getList'ах пропадут дубли элементов.
    См. документацию: https://dev.1c-bitrix.ru/learning/course/?COURSE_I...
    Ответ написан
    7 комментариев
  • Почему обработчик события не вызывается?

    gromdron
    @gromdron
    Работаю с Bitrix24
    Во первых, такие методы стоит помечать как static, чтобы не вызывать ошибки самого php.
    Во вторых, есть описание событий - https://dev.1c-bitrix.ru/api_d7/bitrix/sale/events... в которых сказано что обработчик события принимает 3 параметра.
    Ответ написан
  • Почему не загружается тип инфоблока?

    gromdron
    @gromdron
    Работаю с Bitrix24
    Выдает белый экран.


    Смотреть лог ошибок (error-log) веб-сервера
    Смотреть лог ошибок php
    Ответ написан
  • Как с помощью Bitrix24 API можно изменить колонку сделки в CRM?

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

    1) Как прочитать ответ из вайбера
    2) Как понять к какой сделке относится этот ответ (если он относится к сделке)
    3) Как изменить стадию сделки

    Отвечая на ваш вопрос "Как изменить стадию сделки", вы можете воспользоваться rest-методом crm.deal.update (для облака) или CCrmDeal::update (см аналогично для лида https://dev.1c-bitrix.ru/api_help/crm/example.php)
    Ответ написан
    2 комментария