Блог разработчика 1С-Битрикс

Руководство по работе с классом \Bitrix\Catalog\MeasureRatioTable в рамках D7

MeasureRatioTable – это класс из модуля catalog, предназначенный для работы с таблицей коэффициентов единиц измерения товаров в 1С-Битрикс. Он является наследником класса \Bitrix\Main\ORM\Data\DataManager (а до версии 18.0.2 модуля Main – класса \Bitrix\Main\Entity\DataManager).

Руководство по работе с классом \Bitrix\Catalog\MeasureRatioTable

В данном руководстве мы рассмотрим:

  1. Цепочку наследования.
  2. Основные методы класса и их назначение.
  3. Поля таблицы единиц измерения товаров.
  4. Пример кода выборки данных с помощью getList.

1. Цепочка наследования

Как уже упоминалось, класс MeasureRatioTable наследуется от \Bitrix\Main\ORM\Data\DataManager. До релиза 18.0.2, когда в ядре произошли изменения, подобные классы наследовались от \Bitrix\Main\Entity\DataManager. Благодаря этому наследованию мы можем пользоваться всей функциональностью ORM 1С-Битрикс (D7) для работы с данными:

\Bitrix\Catalog\MeasureRatioTable
        ↳ \Bitrix\Main\ORM\Data\DataManager
    

2. Основные методы класса

В документации к \Bitrix\Catalog\MeasureRatioTable описано несколько ключевых методов:

  1. getCurrentRatio (с версии 15.5.8) Возвращает массив коэффициентов единиц измерения для списка товаров. Пригодится, если нужно массово получить данные по нескольким товарам за один запрос.
  2. getMap (с версии 15.5.8) Возвращает описание (карту) структуры таблицы: какие поля есть, их тип, обязательность и т.д. На практике getMap используется внутри самого ORM и редко вызывается вручную, но при необходимости вы можете расширять или переопределять карту.
  3. getTableName (с версии 15.5.8) Возвращает имя таблицы в базе данных, с которой работает данный класс. Как правило, если вы планируете использовать этот метод, вы уже точно знаете, с какой таблицей взаимодействуете. Однако иногда он полезен для динамических запросов, генерации SQL и т. д.

3. Поля таблицы единиц измерения товаров

Таблица единиц измерения товаров в модуле catalog имеет следующие основные поля:

Поле Описание Тип Обязательно
ID Идентификатор записи Int Да
PRODUCT_ID Идентификатор товара Int Да
RATIO Коэффициент единицы измерения Double Да

Описание полей отображается в методе getMap класса. Вы можете обращаться к ним через ORM, используя привычные методы выборки (getList, getRow, fetchAll и т. д.).

4. Пример выборки данных

Ниже приведён пример выборки первых 10 записей о коэффициентах единиц измерения, отсортированных по полю PRODUCT_ID в обратном порядке. В данном случае данные сразу приводятся к массиву для удобства вывода.

<?php
\Bitrix\Main\Loader::includeModule('catalog');

// Одной строкой
$data = \Bitrix\Catalog\MeasureRatioTable::getList([
   'order' => ['PRODUCT_ID' => 'desc'],
   'limit' => 10
])->fetchAll();

echo '<pre>' . print_r($data, true) . '</pre>';

Пояснения к коду

  1. Подключаем модуль catalog с помощью \Bitrix\Main\Loader::includeModule('catalog');. Без этого класс MeasureRatioTable будет недоступен.
  2. Используем метод getList, передавая ему параметры:
    • order – задаёт порядок сортировки. В примере сортировка идёт по полю PRODUCT_ID в порядке убывания (desc).
    • limit – указывает лимит выборки, в данном случае 10 записей.
  3. Метод fetchAll() возвращает массив всех записей, выбранных по заданным условиям.
  4. Выводим результат на экран с помощью print_r.

Дополнительные рекомендации

  1. Используйте метод getCurrentRatio, если нужно быстро получить коэффициенты единиц измерения сразу по целому списку ID товаров. Это может быть удобнее, чем писать собственный запрос через getList.
  2. Обработка полученных данных. После выборки вы можете легко изменять, фильтровать или использовать данные для расчётов и последующего сохранения в другие таблицы. При этом помните о необходимости валидировать данные (например, что RATIO не может быть равным 0).
  3. Расширение класса. При необходимости вы можете создавать свой собственный класс, наследующий MeasureRatioTable, чтобы переопределить некоторые методы (например, добавить кастомную валидацию или логику при сохранении).
  4. Соблюдайте версионность. Учитывайте, что методы getCurrentRatio, getMap и getTableName доступны, начиная с версии модуля catalog 15.5.8. Убедитесь, что у вас установлен модуль нужной версии.

Заключение

Работа с классом \Bitrix\Catalog\MeasureRatioTable в D7 позволяет удобно управлять таблицей коэффициентов единиц измерения товаров. Вы можете быстро получать и обрабатывать данные, используя понятные методы getList, getMap, getTableName и более специализированный метод getCurrentRatio. Благодаря наследованию от \Bitrix\Main\ORM\Data\DataManager доступен весь спектр возможностей ORM фреймворка 1С-Битрикс, начиная от простой выборки данных и заканчивая расширенными фильтрами, сортировкой и группировками.

Надеемся, что это руководство поможет вам эффективно применять MeasureRatioTable в ваших проектах на 1С-Битрикс!

Теги:  руководство, D7


Стоимость услуг по разработке и сопровождению сайтов на 1C-Битрикс

Аутсорсинг

готов помочь, если нет времени

договорная

Могу взять на себя работы по full-stack на основе готовой верстки

* если нет верстки, то возможность верстать с Figma в режиме редактора

Разработка корпоративного сайта

от 7 дней

от 40 000 рублей

Разработка сайта без системы оплаты заказов через корзину

* стоимость зависит от наличия верстки, использования готового решения и т.д.

Интернет-магазин на готовом решении

от 7 дней

от 40 000 рублей
запуск сайта в максимально короткие сроки

* указана минимальная стоимость. Стоимость выбранной лицензии «1С-Битрикс» оплачивается отдельно.