• Как в битриксе при query join объединить вывод данных?

    AlexeyGfi
    @AlexeyGfi
    YouTube >>> Битриксоид из Колхоза
    Выборку делать не через fetch() а через getObject()
    Ответ написан
    Комментировать
  • Каким образом в Битриксе назначать стоимость доставок при синхронизации?

    AlexeyGfi
    @AlexeyGfi
    YouTube >>> Битриксоид из Колхоза
    Вы создаете отгрузки без проверки на существование. Это не стыкуется с «обновить данные в существующем заказе». К тому же в заказе всегда присутствует сисемная отгрузка, даже если отгрузка одна, в коллекции их фктически две.
    Ответ написан
  • Как в 1C Битрикс присвоить свои данные к пользователю?

    AlexeyGfi
    @AlexeyGfi
    YouTube >>> Битриксоид из Колхоза
    Вообще, если используется редакция с интернет-магазином и доставка груза основывается на конкретном заказе, у вас есть уже всё для формирования связки:
    заказ–служба доставки–трек-номер;
    заказ–покупатель–пользователь.

    Если нужно по какой-то причине пойти другим путём и всё-таки хранить привязку:
    Вариант 1: Завести пользовательское свойство пользователю, куда писать трек-номер;
    Вариант 2: Завести инфоблок или хайлоадблок, где хранить соответствия кода пользователя трек-номеру. Этот вариант продвинутее тем, что сопровождающие поля можно расширять (добавить дату занесения трек-номера, хранить лог, хранить комментарии или реакцию пользователя, статистику, ...)
    Ответ написан
    Комментировать
  • Как вывести товары, у которых изменилось доступное количество за последние две недели?

    AlexeyGfi
    @AlexeyGfi
    YouTube >>> Битриксоид из Колхоза
    Завести отдельное хранилище-лог, например хайлоадблок, куда сохранять показатель количества товара на складе при его изменении (отслеживать события товара). Выборка из этого хранилища с фильтром по дате даст нужные записи.
    Ответ написан
    Комментировать
  • Почему перестала работать функция смены пароля в Битрикс?

    AlexeyGfi
    @AlexeyGfi
    YouTube >>> Битриксоид из Колхоза
    В настройках сайта установлен ли правильный домен.
    В настройках главного модуля установить куки-префикс, отличный от стандартного (нельзя использовать внутри точки — только символы и подчёрк).
    Перенести хранение сессий в БД в проактивной защите.
    Посмотреть — может там в настройках модулей настройки с часовыми поясами какие-то особые.
    Проверить php-время на сервере и время базы данных (не редко сюрпризы там)

    ...ну или делать отладку, если ошибка железно воспроизводится.
    Ответ написан
  • Как перенести товар c opencart на 1-с битрикс?

    AlexeyGfi
    @AlexeyGfi
    YouTube >>> Битриксоид из Колхоза
    Штатного механизма подобного импорта действительно нет. Слишком много уникального под каждый случай.

    При чём, нужно сначала настроить систему с учётом всех технических моментов и нюансов (как то пример с карточкой аквариума, ассортимент, вариации...), с оттестированным отображением, выборкой, фильтрами и пониманием, что схема рабочая на каждом шаге, вплоть до оформления заказа (и выгрузки его во внешнюю систему, если такое нужно) и только потом писать парсер, заливающий прайс в подготовленную админку. То есть импорт — это как раз последний шаг перед открытием, а не первый.
    Ответ написан
    Комментировать
  • Есть уже готовый велосипед для случайной выборки из таблицы пользователей?

    AlexeyGfi
    @AlexeyGfi
    YouTube >>> Битриксоид из Колхоза
    Код выборки с референсом к группам пользователей

    $users= \Bitrix\Main\UserTable::getList(
    	[
    		'select' => [
    			'ID', 'ACTIVE', 'EMAIL',
    			'GROUP_ID' => 'GROUP.GROUP_ID',
    		],
    		'runtime' =>
    			[
    				new Bitrix\Main\Entity\ReferenceField(
    					'GROUP',
    					'\Bitrix\Main\UserGroupTable',
    					[ '=this.ID' => 'ref.USER_ID' ],
    					[ 'join_type' => 'LEFT' ]
    				),
    			],
    	]
    )->fetchAll();
    Ответ написан
    3 комментария
  • Почтовый шаблон битрикс не работает?

    AlexeyGfi
    @AlexeyGfi
    YouTube >>> Битриксоид из Колхоза
    Вот, какие ключи предусмотрены в системе для почтового события по смене статуса:
    $arFields = Array(
    	"ORDER_ID" => (...),
    	"ORDER_DATE" => (...),
    	"ORDER_STATUS" => (...),
    	"EMAIL" => (...),
    	"ORDER_DESCRIPTION" => (...),
    	"TEXT" => "",
    	"SALE_EMAIL" => (...)
    );


    Среди них нет данных по пользователю, соответственно сделать в лоб (прописав в шаблонах почтовых типов ключ #ORDER_USER#) не получится.

    Однако, при отправке почтового уведомления непосредственно про смену статуса среди прочих срабатывает событие
    OnOrderStatusSendEmail, которому одним из параметров передаются поля — указатель на $arFields:

    foreach(GetModuleEvents("sale", "OnOrderStatusSendEmail", true) as $arEvent)
    	if (ExecuteModuleEventEx($arEvent, Array($ID, &$eventName, &$arFields, $arOrder["STATUS_ID"]))===false)
    		$bSend = false;


    Вы можете подписаться на это событие и например поступить так:
    1. Добавляете в почтовый шаблон статуса ключ #ORDER_USER#
    2. При реакции на событие формируете нужное значение для #ORDER_USER# и дополняете ним $arFields

    Либо при перехвате события отправить свою версию почтового типа, из функции-реакции вернуть false и тогда пользователю уйдёт только письмо, сформированное вами.
    Ответ написан
    1 комментарий
  • Что за компонент и как его найти?

    AlexeyGfi
    @AlexeyGfi
    YouTube >>> Битриксоид из Колхоза
    >>> bitrix:main.include
    Отвечает за:
    • включаемые области: для страницы (AREA_FILE_SHOW == page) , раздела (AREA_FILE_SHOW == sect)
    • подключение файлов (AREA_FILE_SHOW == file)

    У вас случай с подключением файла.
    В файле компонента:
    /bitrix/components/bitrix/main.include/component.php
    отрабатывается else:
    5b374fd5b78c2342235218.png

    И раз папки include нет, выделенная строка даст $bFoundFile == false.
    А значит ничего не подключится в результате вызова компонента.

    Если же файл будет найден, вызовется шаблон компонента bitrix:main.include, а это просто инклуд:

    5b3750b40649f007782355.png
    Ответ написан
    2 комментария
  • Как добавить свойства товара в письмо клиенту при заказе?

    AlexeyGfi
    @AlexeyGfi
    YouTube >>> Битриксоид из Колхоза
    Читайте через новое ядро, D7.

    Навскидку:
    $order_obj=\Bitrix\Sale\Order::load( $order_id );
    $basket= $order_obj->getBasket();
    $basket_items=$basket->getBasketItems();
    
    /* @var \Bitrix\Sale\BasketItem $bi */
    foreach ( $basket_items as $bi ) {
    	$item_props= $bi->getPropertyCollection()->getPropertyValues();
    }
    Ответ написан
    7 комментариев
  • Как настроить экспорт через агенты в Битрикс?

    AlexeyGfi
    @AlexeyGfi
    YouTube >>> Битриксоид из Колхоза
    Туда хоть что-то попадает? Каждый раз «обрывается» в одном и том же месте?
    Ответ написан
  • Как сделать разные ядра битрикса на одном домене?

    AlexeyGfi
    @AlexeyGfi
    YouTube >>> Битриксоид из Колхоза
    Возможно так: создаём две разделённые папки, каждая из них содержит своё ядро.
    В nginx в настройках location делаем разделение по урлам, прописывая разные
    set $root_path ...
    в зависимости от запроса?
    Ответ написан
    5 комментариев
  • Как сделать вывод пользовательского поля с типом привязка к highloadblock?

    AlexeyGfi
    @AlexeyGfi
    YouTube >>> Битриксоид из Колхоза
    По идее, у вас при чтении раздела
    ["UF_POSITION_USER"]["VALUE"]хранит ID записи хайлоадблока.

    По нему нужно получить поле, которое хранит название должности.
    На скриншоте не видно, предположим оно хранится в UF_NAME.

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

    Если есть необходимость (много мест, где нужна должность), неплохо было бы организовать так, чтобы в системе хранился отдельный кеш, который хранит все должности, привязанные к ID (массив вида
    [1] => [ "UF_NAME" => "Лаборант-исследователь",
    [2] => [ "UF_NAME" => "Стажер-исследователь",

    ). И тогда просто по коду записи, из любого места проекта получали бы должность. И чтобы этот кеш хранился «вечно», а перетирался только если добавлена/отредактирована/удалена запись хайлоадблока
    Ответ написан
  • Как добавлять элементы в умный фильтр?

    AlexeyGfi
    @AlexeyGfi
    YouTube >>> Битриксоид из Колхоза
    Ответ написан
    Комментировать
  • Bitrix. Как добавить пункт в меню каталога с персональной ссылкой?

    AlexeyGfi
    @AlexeyGfi
    YouTube >>> Битриксоид из Колхоза
    1. У раздела заводим пользовательское свойство.

    В нём (на выбор, исходя из удобства) храним:
    • символьный код, заменяющий всё, что после /catalog/;
    • полный урл, который будет опубликован вместо урла /catalog/символьный_код/;
    • параметры запроса, например ?sort=z-a&avail=no или якорь для лендинга #buildings.

    2. В шаблоне вывода меню проверяем: если пользовательское свойство заполнено, — видоизменяем урл, публикуемый в пункте меню.
    Ответ написан
    Комментировать
  • Не отображается свойство в битриксе?

    AlexeyGfi
    @AlexeyGfi
    YouTube >>> Битриксоид из Колхоза
    Не последнем скриншоте нет кода, отвечающего за вывод этого свойства (да и вообще какого-нибудь из свойств).

    Там есть закомментированный print_r. Если его раскомментировать, свойство видно в дереве?
    Если нет — кеш чистили?
    Если чистили и нет, попробуйте не ovchinnokov:компонент, а стандартный, битриксовский.
    Ответ написан
    8 комментариев
  • Как сделать свойство "местоположение" в 3 отдельных списка?

    AlexeyGfi
    @AlexeyGfi
    YouTube >>> Битриксоид из Колхоза
    Если заглянуть в базу данных, Местоположения 2.0 — это фактически три таблицы.
    Буквально на днях разгребал всё для распаковки на D7 под задачу.

    Главный список — в таблице b_sale_location, которая фактически ОГРОМНАЯ куча местоположений, сваленных в одну кашу (страны, регионы, города, деревни и улицы).

    Главные узлы:
    --- Символьный код — колонка CODE. Если чистым запросом прочитать заказ и местоположение, мы нередко увидим не location_id, а location_code. Это не привязанный к почтовому индексу, строка вида "0000028023"

    --- Родительство (например, город относится к области) указывается в столбце PARENT_ID
    Он либо указан, либо ноль

    --- Тип узла (например, город это, область или страна) указывается в столбце TYPE_ID
    В таблице b_sale_loc_type - расшифровка в кодах:
    * 1 COUNTRY
    * 2 COUNTRY_DISTRICT
    * 3 REGION
    * 4 SUBREGION
    * 5 CITY
    * 6 VILLAGE
    * 7 STREET


    --- Глубина погружения (грубо говоря — ориентир, сколько родителей вверх) указана в столбце DEPTH_LEVEL (самый верхний узел в своей ветке имеет глубину == 1)

    =====
    В этой куче свой плюс: указав в заказе просто символьный код "00000705506" (CODE узла-улицы) мы тем самым, раскрутив цепочку вверх до DEPTH_LEVEL == 1 получаем абсолютно всё: от улицы до страны. Что в принципе и делается в текущей версии заказов.
    =====

    Теперь, когда есть вводная можете прикинуть её на свою задачу.

    Вам нужно три выборки:
    • первая — по узлам первого уровня ЛИБО соответствующим TYPE_ID (страна);
    • вторая — те регионы, кто родителем имеет выбранную страну (если погружаться на регион);
    • третья — те города, которые родителем имеют выбранный регион.

    Как-то так =)
    Ответ написан
    Комментировать
  • Как в Битрикс убрать верстку при редактирование страниц?

    AlexeyGfi
    @AlexeyGfi
    YouTube >>> Битриксоид из Колхоза
    На одном проекте менеджеры тоже постоянно контакты ломали: там и карта и отзывы и вёрстка хитрая с телефонами и адресами...

    Как вариант: всё, что должно быть отдано на редактирование вынести в инфоблок или хайлоадблок, пусть там редактируют, а на страницу не пускать.

    Если кодом, без базы данных, — включаемые области. То, что их будет целый список даже хорошо. Можно маску на доступе сделать, куда менеджер может заходить а куда нет.

    Пример содержимого файла .access.php (который отвечает за доступы внутри папки) — здесь перечень файлов-включаемых областей, которым пользователям из группы №6 дан исключительно доступ на чтение:
    <?
    $PERM["sect_contacts.php"]["6"]="R";
    $PERM["sect_map.php"]["6"]="R";
    ?>
    Ответ написан
    Комментировать
  • Белая страница битрикс?

    AlexeyGfi
    @AlexeyGfi
    YouTube >>> Битриксоид из Колхоза
    Если до Битрикса дошёл процесс, он пишет ошибки в файл
    /bitrix/modules/error.log

    Чтобы он это делал, в файле
    /bitrix/.settings.php
    нужно переменную [ "exception_handling" ][ "debug" ] установить в значение true
    Ответ написан
    Комментировать
  • Как сделать мультиязычный магазин под управлением bitrix?

    AlexeyGfi
    @AlexeyGfi
    YouTube >>> Битриксоид из Колхоза
    1. Каждая лицензия по-умолчанию содержит разрешение на два сайта, но вместо покупки доп лицензий, можно докупать сайты (+1 или безлим):
    https://www.1c-bitrix.ru/buy/cms.php#tab-sites-link

    Так вы будете все данные держать в одной админке.

    2. «Например чтобы в админке на одной странице было 5 полей (под каждый язык свое поле) И при заходе на сайта по геолокации битрикс показывает те поля, которые принадлежат этой геолокации»

    Можно и так. Тогда будет использована одна лицензия и один сайт.

    3. Можно гибрид из п.1 и п.2

    В общем, есть варианты, как видите =)
    Ответ написан