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

В данном руководстве мы рассмотрим:
- Цепочку наследования.
- Основные методы класса и их назначение.
- Поля таблицы единиц измерения товаров.
- Пример кода выборки данных с помощью
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 описано несколько ключевых методов:
getCurrentRatio(с версии 15.5.8) Возвращает массив коэффициентов единиц измерения для списка товаров. Пригодится, если нужно массово получить данные по нескольким товарам за один запрос.getMap(с версии 15.5.8) Возвращает описание (карту) структуры таблицы: какие поля есть, их тип, обязательность и т.д. На практикеgetMapиспользуется внутри самого ORM и редко вызывается вручную, но при необходимости вы можете расширять или переопределять карту.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>';
Пояснения к коду
- Подключаем модуль
catalogс помощью\Bitrix\Main\Loader::includeModule('catalog');. Без этого классMeasureRatioTableбудет недоступен. - Используем метод
getList, передавая ему параметры:order– задаёт порядок сортировки. В примере сортировка идёт по полюPRODUCT_IDв порядке убывания (desc).limit– указывает лимит выборки, в данном случае 10 записей.
- Метод
fetchAll()возвращает массив всех записей, выбранных по заданным условиям. - Выводим результат на экран с помощью
print_r.
Дополнительные рекомендации
- Используйте метод
getCurrentRatio, если нужно быстро получить коэффициенты единиц измерения сразу по целому списку ID товаров. Это может быть удобнее, чем писать собственный запрос черезgetList. - Обработка полученных данных. После выборки вы можете легко изменять, фильтровать или использовать данные для расчётов и последующего сохранения в другие таблицы. При этом помните о необходимости валидировать данные (например, что
RATIOне может быть равным 0). - Расширение класса. При необходимости вы можете создавать свой собственный класс, наследующий
MeasureRatioTable, чтобы переопределить некоторые методы (например, добавить кастомную валидацию или логику при сохранении). - Соблюдайте версионность. Учитывайте, что методы
getCurrentRatio,getMapиgetTableNameдоступны, начиная с версии модуля catalog 15.5.8. Убедитесь, что у вас установлен модуль нужной версии.
Заключение
Работа с классом \Bitrix\Catalog\MeasureRatioTable в D7 позволяет удобно управлять таблицей коэффициентов единиц измерения товаров. Вы можете быстро получать и обрабатывать данные, используя понятные методы getList, getMap, getTableName и более специализированный метод getCurrentRatio. Благодаря наследованию от \Bitrix\Main\ORM\Data\DataManager доступен весь спектр возможностей ORM фреймворка 1С-Битрикс, начиная от простой выборки данных и заканчивая расширенными фильтрами, сортировкой и группировками.
Надеемся, что это руководство поможет вам эффективно применять MeasureRatioTable в ваших проектах на 1С-Битрикс!