В данном руководстве мы рассмотрим работу с классом `VatTable`, который используется для работы с таблицей ставок НДС в системе 1С-Битрикс на платформе D7. Класс является частью модуля Catalog и наследуется от `Bitrix\Main\ORM\Data\DataManager`.

Цель класса `VatTable`
Класс `VatTable` предоставляет удобный интерфейс для взаимодействия с таблицей ставок НДС в базе данных. Он позволяет создавать, обновлять, удалять ставки НДС, а также выполнять различные запросы к данным через ORM.
Наследование и базовые методы
Класс `VatTable` наследует `Bitrix\Main\ORM\Data\DataManager` и имеет несколько полезных методов для работы с таблицей ставок НДС:
- `getMap()` — возвращает список полей для таблицы ставок НДС.
- `getTableName()` — возвращает название таблицы ставок НДС в базе данных.
- `validateName()` — возвращает валидатор для поля `NAME` (название ставки НДС).
Эти методы доступны начиная с версии 15.0.2.
Поля таблицы ставок НДС
Таблица ставок НДС содержит следующие поля:
- ID — Код ставки НДС (тип: `Int`, обязательное).
- TIMESTAMP_X — Дата и время последнего изменения ставки НДС (тип: `Datetime`, обязательное).
- ACTIVE — Признак активности ставки (тип: `Char(1)`, обязательное).
- C_SORT — Индекс сортировки ставки НДС (тип: `Int`, обязательное).
- NAME — Название ставки НДС (тип: `Varchar(50)`, обязательное).
- RATE — Величина ставки НДС (тип: `Decimal(18,2)`, обязательное).
Примеры использования класса `VatTable`
1. Получение данных из инфоблока
Для того чтобы получить информацию о ставке НДС, связанной с определённым инфоблоком, можно использовать следующий код:
function getIblockCatalogVat(int $ibid)
{
global $DB;
$results = $DB->Query("SELECT i.`VAT_ID`, v.`NAME`, v.`RATE`, v.`ACTIVE` FROM `b_catalog_iblock` as i JOIN `b_catalog_vat` as v ON v.`ID` = i.`VAT_ID` WHERE i.`IBLOCK_ID` =" . $ibid);
$row = $results->Fetch();
return $row;
}
2. Добавление ставки НДС с проверкой
Для добавления новой ставки НДС в таблицу с проверкой ошибок используется следующий код:
$result = \Bitrix\Catalog\VatTable::add([
'NAME' => 'НДС Тест',
'RATE' => 4
]);
if (!$result->isSuccess()) {
print_r($result->getErrorMessages());
}
3. Изменение ставки НДС
Для изменения существующего значения, например, для обновления индекса сортировки, можно использовать метод `update`:
$data = \Bitrix\Catalog\VatTable::update(1, [
'SORT' => 50
]);
4. Выборка всех данных
Для получения всех ставок НДС из базы данных можно использовать метод `getList`:
$data = \Bitrix\Catalog\VatTable::getList()->fetchAll();
echo '' . print_r($data, 1) . '
';
5. Удаление ставки НДС по ID
Для удаления ставки НДС с определённым ID используется метод `delete`:
\Bitrix\Catalog\VatTable::delete(3);
Методы класса `VatTable`
1. Метод `getMap()`
Метод `getMap` возвращает описание полей таблицы ставок НДС. Пример его использования:
$fields = \Bitrix\Catalog\VatTable::getMap();
echo '' . print_r($fields, 1) . '
';
2. Метод `getTableName()`
Метод `getTableName` возвращает имя таблицы ставок НДС в базе данных. Пример:
$tableName = \Bitrix\Catalog\VatTable::getTableName();
echo $tableName; // Выведет 'b_catalog_vat'
3. Метод `validateName()`
Метод `validateName` возвращает валидатор для поля `NAME` (название ставки НДС). Пример его использования:
$validators = \Bitrix\Catalog\VatTable::validateName();
Пример кода из файла `bitrix/modules/catalog/lib/vat.php`
Внутри класса `VatTable` находится основной код, описывающий таблицу и логику работы с НДС. В файле реализованы все методы, которые позволяют взаимодействовать с данными о ставках НДС.
Пример структуры класса:
class VatTable extends ORM\Data\DataManager
{
public static function getTableName(): string
{
return 'b_catalog_vat';
}
public static function getMap(): array
{
return [
'ID' => new ORM\Fields\IntegerField('ID', [
'primary' => true,
'autocomplete' => true,
'title' => Loc::getMessage('VAT_ENTITY_ID_FIELD'),
]),
// другие поля
];
}
public static function onBeforeAdd(ORM\Event $event): ORM\EventResult
{
// обработчик перед добавлением
}
public static function getActiveVatIdByRate(float $rate, bool $create = false): ?int
{
// возвращает ID активной ставки НДС
}
}
Заключение
Класс `VatTable` является мощным инструментом для работы с таблицей ставок НДС в 1С-Битрикс. Он предоставляет удобные методы для добавления, обновления, удаления и выборки данных, а также позволяет интегрировать логику работы с НДС в решения на платформе Битрикс.