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С-Битрикс!