КодАвтоматизации
185 subscribers
155 photos
15 videos
36 links
Знаем об автоматизации всё.
Руководитель отдела продаж @automation_code_dev
Download Telegram
Сравнение методов получения элементов инфоблока в 1С-Битрикс

В 1С-Битрикс разработчики часто сталкиваются с задачей получения данных из инфоблоков. Существует несколько способов это сделать, и в данной статье мы рассмотрим два метода: использование класса ElementRykTable и метода CIBlockElement::GetList. Оба подхода имеют свои особенности и могут быть выбраны в зависимости от конкретной задачи и требований к производительности.

Метод 1: ElementInfoblockTable::getList

$elements = \Bitrix\Iblock\Elements\ElementInfoblockTable::getList([
'select' => ['ID', 'NAME', 'CODE', 'PREVIEW_TEXT', 'PREVIEW_PICTURE'],
'filter' => ['=ACTIVE' => 'Y'],
'cache' => [
'ttl' => 3600
]
])->fetchAll();


Этот метод представляет собой современный подход к работе с данными в 1С-Битрикс. Он использует ORM (Object-Relational Mapping), что позволяет разработчикам писать код более декларативно и понятно.

Преимущества:

Читаемость и поддерживаемость: Код выглядит более структурированным и понятным, что упрощает его поддержку.

Кэширование: Встроенные механизмы кэширования позволяют эффективно управлять данными и уменьшать нагрузку на базу данных.

Меньше строк кода: С помощью этого метода можно быстро получить массив данных с необходимыми полями.

Недостатки:

Сложность для новичков: ORM может быть сложнее для понимания, особенно для разработчиков, которые привыкли к "старым" методам работы.
Нужен опыт работы с ORM: Чтобы эффективно использовать этот подход, необходимо знание специфики работы ORM.

Метод 2: CIBlockElement::GetList

$arSelect = Array("ID", "NAME", "DATE_ACTIVE_FROM");
$arFilter = Array("IBLOCK_ID"=>IntVal($yvalue), "ACTIVE_DATE"=>"Y", "ACTIVE"=>"Y");
$res = CIBlockElement::GetList(Array(), $arFilter, false, Array("nPageSize"=>50), $arSelect);
while($ob = $res->GetNextElement())
{
$arFields = $ob->GetFields();
print_r($arFields);
}


Этот метод является более классическим и широко используется в проектах на 1С-Битрикс. Он основан на вызове статического метода GetList, который позволяет извлекать данные из инфоблоков.

Преимущества:

Широкая известность: Этот метод хорошо известен и часто используется, что делает его понятным для многих разработчиков.
Гибкость: Позволяет легко настраивать выборку данных и добавлять дополнительные условия фильтрации.

Недостатки:

Меньшая читаемость: Код может быть менее понятным, особенно при добавлении большого количества условий фильтрации и выборки.
Отсутствие встроенного кэширования: Разработчикам необходимо самостоятельно реализовывать механизмы кэширования, если это требуется.

Заключение

Выбор метода получения элементов инфоблока в 1С-Битрикс зависит от конкретных условий задачи. Если нужна высокая производительность и читаемость кода, стоит обратить внимание на ORM и метод ElementInfoblockTable::getList. Если же требуется гибкость и простота, то метод CIBlockElement::GetList останется отличным выбором.

Каждый из методов имеет свои сильные и слабые стороны, и, в конечном итоге, правильный выбор будет зависеть от требований вашего проекта и предпочтений команды разработчиков.
#php
#1сбитрикс
#код
👍3🔥2
Продолжаем восхищаться новым дизайном 1С:Предприятие 8.5💓

Подробнее почитать можно тут

 #1c
#автоматизация
#битрикс
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3
Media is too big
VIEW IN TELEGRAM
🟢Кейс. AURORA - продажа яхт.

Итальянская компания Aurora уже более 15 лет занимается продажей широкого спектра судов. Так же они являются эксклюзивными представителями многих брендов.

🟠aurora-yacht.com

Подробное описание процесса разработки тут

Если Вам нужна разработка сайта без ошибок и головной боли - рекомендуем написать нам @automation_code_dev

Будем рады сотрудничеству 💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥1
На нашем YouTube канале вышел курс Знакомство с 1С для новичков

Видео будет полезно для тех, кто никогда не работал с 1С, но хочет начать.

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

Так же для общего развития будет полезно 😎

Курс выложили и на отечественные платформы

🔤 Rutube
🔤 Дзен
Please open Telegram to view this post
VIEW IN TELEGRAM
👍32🔥2
Получение цены товара в 1С-Битрикс: D7 и традиционный подход

В 1С-Битрикс существует несколько подходов для работы с данными, включая получение цен товаров. В этой статье мы рассмотрим два способа получения цены товара по его ID: с использованием нового подхода D7 и традиционного метода.

1. Получение цены товара с помощью D7

С появлением архитектуры D7 в 1С-Битрикс разработчики получили возможность работать с данными более удобно и эффективно. Для работы с ценами товаров мы будем использовать класс \Bitrix\Catalog\Model\Price.

Пример кода:

<?php
use Bitrix\Main\Loader;
use Bitrix\Catalog\Model\Price;

// Подключаем необходимые модули
if (Loader::includeModule("catalog")) {
// Допустим, у нас есть ID товара
$itemId = $arItem['ITEM_ID'];

// Получаем базовую цену товара
$priceData = Price::getList([
'filter' => ['PRODUCT_ID' => $itemId],
'select' => ['ID', 'PRICE', 'CURRENCY'],
'limit' => 1,
])->fetch();

// Проверяем, была ли цена найдена
if ($priceData) {
// Выводим информацию о цене
echo "Цена товара с ID " . $itemId . " составляет: " . $priceData['PRICE'] . " " . $priceData['CURRENCY'];
} else {
echo "Цена товара не найдена.";
}
} else {
echo "Модуль каталога не подключен.";
}
?>


Пояснение:

Мы используем Loader::includeModule("catalog"), чтобы подключить модуль каталога.
С помощью Price::getList() получаем базовую цену товара по его ID, используя фильтр PRODUCT_ID.
Если цена найдена, выводим ее; если нет, выводим сообщение об отсутствии цены.

2. Получение цены товара с помощью традиционного подхода

Традиционный подход к получению цен в 1С-Битрикс основан на использовании класса CPrice. Этот метод был распространен до появления D7 и все еще широко используется.

Пример кода:

<?php
// Подключаем модуль каталога
CModule::IncludeModule("catalog");

// Допустим, у нас есть ID товара
$itemId = $arItem['ITEM_ID'];

// Получаем базовую цену товара
$price = CPrice::GetBasePrice($itemId);

// Проверяем, была ли цена найдена
if ($price) {
// Выводим информацию о цене
echo "Цена товара с ID " . $itemId . " составляет: " . $price['PRICE'] . " " . $price['CURRENCY'];
} else {
echo "Цена товара не найдена.";
}
?>


Пояснение:

Мы подключаем модуль каталога с помощью CModule::IncludeModule("catalog").
Метод CPrice::GetBasePrice($itemId) используется для получения базовой цены товара по его ID.
Если цена найдена, мы выводим ее; если нет, выводим сообщение о том, что цена не найдена.

Сравнение подходов:

Структура кода: Код на D7 более лаконичен и читабелен, благодаря использованию методов класса.
Гибкость: D7 позволяет легко расширять функционал и использовать другие возможности ORM.
Поддержка: Традиционный подход все еще поддерживается, но D7 является более современным решением.

Заключение

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

#php
#1сбитрикс
#код
👍41🔥1
🟢Новый пост

10 советов, которые спасут сайт от взлома? 🔤🔤

Сохрани, чтобы не потерять

Если Вам нужна разработка без головной боли - пишите @automation_code_dev

Будем рады сотрудничеству 💎

#разработка
#битрикс
#взломсайта
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥21