• Какой стек выбрать если я хочу разработать интернет-сервис по аналогии с Авито?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Бизнес успех таких сетей как VK, Facebook слабо связан со стеком. Они все стартовали с PHP но просто
    очень умно кешировали контент и децентрализовывали. Поэтому в первую очередь важен скилл
    специалистов которые будут видеть узкие места в системе и сумеют быстро их пофиксить.

    Популярность.

    Я-бы не брал в расчет вообще. Сервисы yahoo в свое время создавались на Lisp, а это был вообще
    нигде не популярный язык.
    Ответ написан
    3 комментария
  • Какой стек выбрать если я хочу разработать интернет-сервис по аналогии с Авито?

    @Everything_is_bad
    Любой из этих, плюс куча других, выбирай в который лучше умеешь или для которого тебе проще найти исполнителей
    Ответ написан
    3 комментария
  • Как разработать свой веб-сервис?

    @AlexVWill
    1. Можно ли что то подобное сделать при помощи конструкторов приложений?

    нет
    2.Достаточно ли будет обычного хостинга? Или нужно будет арендовать VDS и все разворачивать самому?
    достаточно обычного хостинга, потом если объем трафика и загрузки будет расти можно и сервер под это дело

    Может есть готовые решения?
    нет, всеравно надо все допиливать руками

    3. Сколько примерно будет стоить разработать такой сервис? (с минимально необходимым набором функций)
    10 тыс евро
    4. Подскажите пожалуйста Телеграм чаты, где можно связаться с разработчиками таких сервисов
    во флиланс обратись на хабре
    Ответ написан
    Комментировать
  • Как разработать свой веб-сервис?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Принципиально доски объявлений примитивны и их может написать на WordPress за пару-тройку вечеров студент и запустить на самом дешёвом хостинге. Сложным является способность обрабатывать большие нагрузки. Именно это качество системы требует особых подходов, мудрёной архитектуры, сложных технологий, дорогой инфраструктуры. Причём для хайлоада нет ни готовых решений, ни простых рецептов разработки такового решения. Каждая такая система разрабатывается группой опытных специалистов индивидуально под нюансы конкретной задачи. Соответственно и цена решения будет от нуля до практически бесконечности.
    Ответ написан
    3 комментария
  • Пользовательское поле - тип Привязка к разделам инфоблоков - как вывести разделы в виде иерархии + поиск?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Подскажите, что я делаю не так? Может какую галку не поставил в Админке? (настройки инфоблока)


    Скорее всего на той коробке где смотрели была кастомизация стандартного вывода свойства и там уже допилен entity-selector.
    Это не включается галочкой.
    Ответ написан
    2 комментария
  • Как массово настроить уведомления в настройках чата для всех пользователей?

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


    Штатно тако настройки нет, однако можно поискать аналоги (например это)
    Ответ написан
    1 комментарий
  • Как возобновить закрытую задачу через БП активити PHP код?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Я набросал фрагмент кода, который поможет в подобной модификации.
    Кстати, в $updateData есть и другие ключи помимо ERRORS которые могут заполнить необходимые доп.объекты.

    use \Bitrix\Main,
    	\Bitrix\Tasks
    	;
    
    /**
     * Оборачиваем наш код в try-catch потому что мы не хотим
     * чтобы упавшее действие подвесело нам ход бизнес-процесса.
     *
     * Обращаю внимание: в catch блоке ловим именно Throwable, а не Exception.
     */
    try
    {
    	/**
    	 * Подключаем модуль Задачи (tasks) через requireModule
    	 * он в случае отсутствия модуля выкинет нам Exception
    	 */
    	Main\Loader::requireModule('tasks');
    
    	/**
    	 * Лучше избегать магических подстановок в c использованием фигурных скобок
    	 * Если там по какой-то причине будет экранирующий символ это больно ударит по системе
    	 *
    	 * Для этого используем 2 хака:
    	 * 1. Используем ParseValue метод, который из подобного синтаксиса достанет значение
    	 * 2. Чтобы мы сами не попали в автозамену регулярок разделим выражение так, чтобы мы 
    	 * не прошли по маске
    	 *
    	 * Ну и само-собой выражения на русском не парсятся, поэтому придется использовать 
    	 * старые выражения из технических полей.
    	 */
    	$actionUserId = (int) mb_substr(
    		$this->ParseValue("{"."=Document:AssigneById}"),
    		5
    	);
    
    	if ( empty($actionUserId) )
    	{
    		throw new \Exception("Employee identifier is empty!");
    	}
    
    	$taskId = (int) $this->ParseValue("{"."=Template:TaskId}");
    
    	if ( empty($taskId) )
    	{
    		throw new \Exception("Task identifier is empty!");
    	}
    
    	/**
    	 * Воспользуемся недокументированной функцией по обновлению задачи
    	 * В целом она дает то же самое - т.е. меняет статус, но дополнительно
    	 * метод вызывает необходимые push-уведомления, записи в логи, очистки 
    	 * кешей и т.п.
    	 */
    	$updateData = Tasks\Manager\Task::update(
    		$actionUserId,
    		$taskId,
    		[
    			'STATUS' => \CTasks::STATE_PENDING
    		]
    	);
    
    	if ( $updateData['ERRORS']->checkHasErrors() )
    	{
    		throw new \Exception( $updateData['ERRORS']->getMessages() );	
    	}
    
    	/* Сигнализируем что все ок */
    	$this->WriteToTrackingService(
    		"Task renewed",
    		0,
    		\CBPTrackingType::Custom
    	);
    }
    catch( \Throwable $e )
    {
    	/* Если что-то поймали - запишем в лог */
    	$this->WriteToTrackingService(
    		sprintf(
    			"Error '%s' in file %s on line %i",
    			$e->getMessage(),
    			$e->getFile(),
    			$e->getLine(),
    		),
    		0,
    		\CBPTrackingType::Error
    	);
    }
    Ответ написан
    1 комментарий
  • Битрикс24 с чем интегрируется?

    alexgp13
    @alexgp13
    Руководитель ИТ-проектов
    Любой вариант правильный, зависит от Ваших задач.

    В общем случае, наверное, правильнее взять УТ за основу и интеграции делать через нее. Опять же, неизвестно, доработанная ли у Вас УТ или типовая.
    Ответ написан
    Комментировать
  • Как сделать поля с автоматическими разделителями для СНИЛС и кадастрового номера?

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


    В облаке это возможно только если сделать свой тип поля. https://dev.1c-bitrix.ru/rest_help/application_emb...
    В коробке это сделать сложнее: подписаться на событие отрисовки страницы, определить что эта страница - карточка сделки CRM, подключить свою js библиотеку. В своей js библиотеке подписаться на страницу и проверить что активируется нужное поле, а потом наложить masked input https://dev.1c-bitrix.ru/api_help/js_lib/js-library.php
    Ответ написан
    1 комментарий
  • Сайт на WP + Contact Form 7 + Битрикс24 - не передаётся поле тип "список"?

    Ramapriya
    @Ramapriya
    Добрый день.

    1. Используйте вебхуки - если кто-то перехватит ваши авторизационные данные, то сможет попасть на портал. Вебхук такой возможности не даст - он вернёт в json-формате только ту информацию, на которую ему дали права + права пользователя на портале (т.е. через вебхук нельзя будет удалить все лиды, если у пользователя нет прав на удаление).
    2. Используйте класс CRest - он существенно упрощает передачу данных в Б24
    3. Для записи значения в списочное поле вам нужно получить id значения (посмотреть список полей и значений лида можно с помощью метода crm.lead.userfield.list) и передавать в параметрах этот id


    Примерный код:

    // settings.php
    define('C_REST_WEB_HOOK_URL','https://rest-api.bitrix24.com/rest/1/doutwqkjxgc3mgc1/');//url on creat Webhook
    
    //ваш код
    $postData = [
    'TITLE' => 'Заявка с сайта', // Установить значение свое значение
    'NAME' => $firstName,
    'PHONE_WORK' => $myphone,
    'COMMENTS' => $userFieldEnumValueId // id значения списочного поля
    ];
    
    $lead = CRest::call('crm.lead.add', ['fields' => $postData]);
    
    return $lead['result'] ?? [$lead['error'], $lead['error_description'];
    Ответ написан
    5 комментариев