Задать вопрос
  • Почему не загружается тип инфоблока?

    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 комментария
  • Как решить ошибку загрузки картинки на Bitrix?

    gromdron
    @gromdron
    Работаю с Bitrix24
    Проверьте значение константы BX_TEMPORARY_FILES_DIRECTORY - там содержится пусть к временному каталогу для хранения файлов.
    Он должен существовать и к нему должен (его владелец bitrix, группа bitrix, права 0775).
    Ответ написан
  • Как в Битрикс через SQL запрос, нескольким товарам записать свойство?

    gromdron
    @gromdron
    Работаю с Bitrix24
    TLDR; Делайте в цикле по элементам изменение свойства.

    не должно быть сложно!


    Вообще-то образно говоря - никак.
    Можно написать конкретное решение под вашу структуру, но уместить это в запрос нет (минимум процедура).

    Дело в том, что в зависимости от типа инфоблока у вас может быть хранение значений свойства либо в одной таблице либо в отдельных.
    В случае если запись в одной таблице, то нужно будет сначала искать ID свойства, а уже потом выполнять обновление у нескольких элементов и добавление у элементов где этого свойства нет.

    В случае хранение в отдельной таблице алгоритм почти такой же, за исключением того что искать нужно не значение свойства, а запись элемента в таблице при учете что это не множественные свойства.
    Ответ написан
    Комментировать
  • Ворнинг Alternate page with proper canonical tag по AMP страницам, но почему этих страниц нету в вкладке AMP?

    gromdron
    @gromdron
    Работаю с Bitrix24
    А вы выполнили рекомендации относительно текущей страницы?
    Подробнее по ссылке: https://amp.dev/documentation/guides-and-tutorials...
    Ответ написан
  • Можно ли работать с Bitrix CMS имея опыт работы только с другими фреймворками (Yii2, Lumen...)?

    gromdron
    @gromdron
    Работаю с Bitrix24
    Добрый день.

    С вашего позволения, начну по порядку отвечать на ваши вопросы
    Интересуют отличия CMS Bitrix и работы с ним, от работы с фреймворками

    Кардинальные различия.
    Начиная с архитектурного подхода (роутинг смешанный, основан на физических файлах + urlrewrite) и заканчивая парадигмой системы (она нацелена на конечного пользователя, а не на разработчика).

    Есть желание доработать сайт на Битрикс CMS, но никогда раньше с ним не работал.

    Сейчас многие набегут и скажут не делать этого, но для расширения кругозора задача хорошая, но начать стоит именно с изучения документации.
    Если для laravel ты можешь почитать пару статей и примеров и что-то сделать, то для битрикс пока ты не изучишь и не получишь сертификаты, ничего кроме высера ты сделать не сможешь, а если не хочешь читать и учиться, то стоит ли делать высер?

    Отличия в плане архитектуры приложения, ограничений лицензии (он же платный), документации по API для плагинов с понятными примерами...

    Да платная, но 30 дней (а по факту ~45 дней), полностью для тебя все фишки продукта.
    Документация по большей части есть, но как только начинаешь копать глубже, то сразу она исчезает.
    Плагины сторонних разработчиков часто недокументированы и внятных примеров нет.
    По битриксу нормально описаны только инфоблоки и интернет-магазин, но не все аспекты.

    Слышал у них есть какой-то свой CDN который якобы многократно ускоряет сайты (когда-то видел один сайт с их CDN, как-то не впечатлило, у бесплатного Cloudflare вероятно побыстрее будет). Если это правда, как эффективно его использовать?

    Да есть, но из-за наплыва пользователей он понижает скорость работы продукта.
    Лучше не использовать или использовать, но свой.

    Нужно ли получать жёлтый листок от 1C для работы с их CMS как фрилансер, или это только в 1C: Предприятие?

    Для того чтобы работать как фрилансер ничего не нужно - берешь и работаешь.
    В лучшем случае нужно пройти сертификацию + 2 очных экзамена. Научишься понимать систему и много типовых запросов на лендинги и странички будут делаться автоматом.
    Ответ написан
  • Каким образом в Битриксе назначать стоимость доставок при синхронизации?

    gromdron
    @gromdron
    Работаю с Bitrix24
    Давайте разберем чуть подробнее ваш фрагмент кода и представим гипотетическую ситуацию: у вас на сайте создана 1 отгрузка, а после обмена из вашей системы прилетает 2 новые отгрузки, вместо 1 существовавшей.

    Начнем с того что в:
    // создаём отгрузки
    $shipmentCollection = $orderBx->getShipmentCollection();


    Вы получаете коллекцию отгрузок. Коллекция отгрузок представляет из себя набор, состоящий из системной отгрузки + созданных системой или пользователем.
    При обработке существующего заказа с одной отгрузкой вам вернется коллекция (объект) с содержимым в 2 отгрузки: системная + ваша.

    Далее, вы производите итерацию по пришедшим отгрузкам
    foreach (importJson['Shipments'] as $importOrderShipment)

    Т.е. получается вам пришло 2 отгрузки и соответственно вы 2 раза зайдете в ваш цикл.

    Фрагмент:
    $shipment = $shipmentCollection->createItem();
    Создаст еще одну отгрузку. Иными словами после выполнения фрагмента в коллекции отгрузок у вас будет уже 4 отгрузки: системная, исходная (которая была на сайте), а так же две новых отгрузки, которые вы создали при итерировании по импортируемым отгрузкам.

    В данном случае у вас есть несколько вариантов развития событий:
    1) Вы можете очищать коллекцию отгрузок и создавать новые. Событий на изменение заказа у вас будет большое количество, но тем не менее это даст вам больше прозрачности в вашем процессе (не говоря уже о простоте реализации).

    2) Добавить маркер и по нему обновлять существующие отгрузки - менять стоимость тип и т.п.
    Это будет сложнее, но при этом чище с точки зрения событий в системе.

    P.S. И насколько я помню, цена доставки PRICE_DELIVERY из order это вроде как сумма PRICE_DELIVERY (?CUSTOM_PRICE_DELIVERY) из всех не системных отгрузок, так что задавать его бесполезно.
    Ответ написан
    1 комментарий
  • Как избежать неправильной типизации данных при работе с ORM?

    gromdron
    @gromdron
    Работаю с Bitrix24
    Если сделать dump basketItem, то все поля будут типа string


    Правильно. Это ограничение вызванное не bitrix framework, а драйвером для работы с СУБД. В базе храняться реальные значения, а вот mysqli возвращает string-результаты.
    Т.е. в битрикс они такими уже приходят из СУБД.

    Объекты эту проблему решают приводя результаты к нужным типами, а raw-значения так и остаются string'ами.

    Если хотите, то можете в $rsBasketItems->fetch() передать класс-наследника \Bitrix\Main\Text\Converter и его может encode будет применен к каждому значению и вы получите сразу нужные вам поля, но если сделать это нужно в одном месте, то проще будет конечно же в цикле пробежаться и привести самостоятельно.
    Ответ написан
    1 комментарий
  • Как использовать D7 для работы с местоположениями?

    gromdron
    @gromdron
    Работаю с Bitrix24
    Как-то можно используя возможности D7 извлечь допданные сразу, в том же запросе, где извлекаются данные по локациям?


    Используя runtime-секцию, ты можешь обьявить вычисляемое поле типа reference и вытаскивать данные, но неизвестно как себя поведет при этом запрос (могут появиться дубли).

    Будет нечто выглядящее так:

    $res = \Bitrix\Sale\Location\LocationTable::getList([
    	'filter' => [
    		'=ID' => intval($id),
    		'=CHILDREN.NAME.LANGUAGE_ID' => 'ru',
    	],
    	'select' => [
    		'_ID' => 'CHILDREN.ID',
    		'CODE' => 'CHILDREN.CODE',
    		'DEPTH_LEVEL' => 'CHILDREN.DEPTH_LEVEL',
    		'LATITUDE' => 'CHILDREN.LATITUDE',
    		'LONGITUDE' => 'CHILDREN.LONGITUDE',
    		'NAME_RU' => 'CHILDREN.NAME.NAME',
    		'TYPE_CODE' => 'CHILDREN.TYPE.CODE',
    
    		'UF_XML_ID' => 'LOCODES.UF_XML_ID',
    		'UF_LOCATION_ID' => 'LOCODES.UF_LOCATION_ID',
    	],
    	'runtime' => [
    		new \Bitrix\Main\Entity\ReferenceField(
    			'LOCODES',
    			$this->locodes_data_class,
    			['=this.ID' => 'ref.UF_LOCATION_ID'],
    			['join_type' => 'LEFT']
    		)
    	],
    	'order' => [
    		'CHILDREN.NAME.NAME' => 'ASC'
    	]
    ]);
    Ответ написан
  • Меняется путь к изображению?

    gromdron
    @gromdron
    Работаю с Bitrix24
    Но спустя какое-то время (через пару часов/дней), все картинки 404, и в файлах их нет, пути меняются.


    Когда вы загружаете избражение, определяется его путь, каждый раз когда вы обновляете изображение, то его путь меняется.
    Например: выгружаете каталог из 1С со всей номенклатурой каждые 2 часа, значит каждые 2 часа путь к изображению будет меняться
    Ответ написан
    Комментировать
  • Bitrix ORM: Как реализовать импорт в инфоблок нескольких тысяч элементов?

    gromdron
    @gromdron
    Работаю с Bitrix24
    Но ведь почему-то разработчики Битрикса решили от него отказаться?


    Они не "решили отказаться", они его архитектурно еще не сделали. Элементы инфоблоков это не только запись в таблице это еще и свойства, которые могут хранится в двух вариантах, так что это вовсе не так просто.

    Выходит нужно использовать старый CIBlockElement::Add() без вариантов?

    Если хотите атомарно и без нарушений логики - да.
    По факту, если у вас простая запись, т.е. без свойств, то можно подглядеть что он делает и выполнить по аналогии. Будет в целом почти равнозначно для импорта.

    Есть какой-то аналог Batch Processing от Doctrine?

    Аналогов нет, но и операция не такая уж частая. Есть потребность в таких объемах - обычно либо это сторонние каталоги (цены, наличие, свойства и т.п.) и тут без CIblockElement::add не обойтись, либо своя таблица (а там уже что хочешь, хоть sql)
    Ответ написан
    4 комментария
  • Правильно ли я пониманию, что архитектура "битрикс управление сайтом" несколько кривая?

    gromdron
    @gromdron
    Работаю с Bitrix24
    Если смотреть на вещи реальнее скорее это ошибка в документации. По сути архитектура битрикса это не MVC, это некий набор из конкретных архитектур и стоит рассматривать их независимо. Если говорить о Компонентах, Моделях и Шаблонах, то битрикс скорее это MVVM модель, где компонент - ViewModel, шаблон это View, а Model это фундаментальная часть данных без бизнес-логики.

    Означает ли это что данная архитектура кривая? Нет, вовсе не означает. Просто она реализует совершенно иной подход, который чужд многим разработчикам из мира фреймворков и моно-проекта.
    Ответ написан
    Комментировать
  • Офомление документа, как настроить в сделках, документ с 2 таблицами?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Можно ли так сделать ?


    Нет. Механизм для такого не предназначен.
    Возможно вы сделаете бизнес-процесс по формированию документа, в таком случае, возможно, это частично можно реализовать.
    Ответ написан
    Комментировать
  • Как настроить отправку почты из Битрикс24 (коробка)?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Sep 23 08:56:09 host=smtp.yandex.ru tls=on auth=on user=bitrix@worldenergy24.ru from=bitrix@worldenergy24.ru recipients=2425415@mail.ru smtpstatus=554 smtpmsg='554 5.7.0 Failed to authorize the sender 1569203769-ugAFKZGMj1-u9dmm4ss 1569203769-Z1L1XGzWjv-u8IuwSWY' errormsg='the server did not accept the mail' exitcode=EX_UNAVAILABLE.


    Ошибка в логе пишет: яндекс не принимает ваше сообщение, по причине того что не может авторизовать вас как отправителя.
    Скорее всего: у вас подключена почта xxx@yyy.ru, которая возможно находиться в Яндекс.Коннект (или ранее Яндекс.ПДД), а пользователь пытается отправить ее как zzz@yyy.ru и сервер яндекса недоумевает: почему xxx@yyy.ru хочет отправить письмо представившись zzz@yyy.ru.

    Для подобной фишки у google на платной версии G Suite есть опция relay для аккаунта, насколько я знаю, в яндексе вроде как нет возможности производить отправку от другого аккаунта.

    Я бы на вашем месте уточнил у Яндекса наличие такой возможности (может уже есть) и в случае если нет - добавил в sendmail_path параметр -f, что означало бы: от кого бы не производилась отправка в битриксе, пусть письмо всегда формируется и отправляется от xxx@yyy.ru. Вы избежите этой ошибки и письма будут отправляться, но увы части механик вы лишитесь.
    Ответ написан
    Комментировать
  • Как сохранить картинку через CCrmDeal->update?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    ередаю id картинки, полученной через CFile->SaveFile

    Вам нужно передавать туда не id, а массив полученный через CFile::MakeFileArray, т.к. все методы работают именно с этим массивом.
    Ответ написан
    Комментировать
  • Как автоматически изменить статус Сделки при завершении задачи?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    При завершении активности в Битриксе (карточка Сделки или Лида, не суть) - нужно автоматом изменить статус данной Сделки.


    Вы можете сделать следующее: создать Бизнес-процесс, который будет создавать задачу и после завершения в самом бизнес-процессе проверять - если она завершена менять статус сделки.

    Единственное - задачи придется ставить из бизнес-процесса, но с другой стороны это даст вам стандартизированные процессы.
    Ответ написан
    Комментировать
  • Как можно выгрузить из коробки Битрикс данные сделок и лидов в формате json?

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


    Есть ли API для получения списка лидов, сделок и т.п.? Да, есть
    Есть ли выгружающее API? Нет.

    Либо проще сразу писать sql запрос, получать массив и уже работать с ним ?

    Длинный получиться запрос, ведь только чтобы выгрузить задачу без комментариев, но в треками времени, историей, пользователями потребуется минимум 5 таблиц использовать, а в CRM это еще больше.
    Ответ написан
    Комментировать
  • Где лежат PDF-файлы формируемые стандартным генератором документов Битрикс?

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


    Нет, так как можно подключить только логические диски пользователей и/или других сущностей.
    Физические пути вы никогда не получите.
    Ответ написан
  • Возможно ли интегрировать Битрикс24 в Android приложение?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Т.е. работа с CRM ?

    Не обязательно, возможно это и другие инструменты (например задачи, группы, или другие свойственные для конкретного клиента).

    Возможно ли это реализовать

    Безусловно возможно, ведь Битрикс24 для своего приложения так же частично использует свое же api

    Дополнительно могу сказать следующее: стоит уточнить зачем. Дело в том, что у Битрикс24 есть свое приложение и если он не хочет его использовать, значит на то есть причина. Возможно у него стоит коробочная версия и возможности стандартного приложения не подходят, а в таком случае backend часть уже можно поставить под вопрос и возможно даже прогнуть клиента написать api под вас.
    Ответ написан
  • Как передавать данные в Битрикс 24?

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

    Под формулировкой "Дальше нам эти данные get-запросом нужно передать клиенту, чтобы
    он их привязал к своей 1С." может скрываться:

    1) Помимо roistat, вашего сервера, Битрикс24 у него есть так же 1С куда необходимо занести данные. В таком случае вам необходимо будет узнать есть ли у вашего клиента специалист по 1С и уже с ним обговорить этот момент

    2) Так же возможно клиент подразумевает что 1С это продукт 1С-Битрикс24, то есть сам Битрикс24 и ничего никуда передавать не нужно.
    Ответ написан
    Комментировать