Руководство по использованию класса VatTable для работы с таблицей ставок НДС в Битрикс D7

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

Руководство по использованию класса VatTable в Битрикс D7

Цель класса `VatTable`

Класс `VatTable` предоставляет удобный интерфейс для взаимодействия с таблицей ставок НДС в базе данных. Он позволяет создавать, обновлять, удалять ставки НДС, а также выполнять различные запросы к данным через ORM.


Наследование и базовые методы

Класс `VatTable` наследует `Bitrix\Main\ORM\Data\DataManager` и имеет несколько полезных методов для работы с таблицей ставок НДС:

  1. `getMap()` — возвращает список полей для таблицы ставок НДС.
  2. `getTableName()` — возвращает название таблицы ставок НДС в базе данных.
  3. `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С-Битрикс. Он предоставляет удобные методы для добавления, обновления, удаления и выборки данных, а также позволяет интегрировать логику работы с НДС в решения на платформе Битрикс.

Теги:  VatTable, D7, НДС, ставки, ORM, Bitrix\Main\ORM\Data\DataManager

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

Модули и компоненты для «1С-Битрикс»

оценка производится на основе предоставленного Технического Задания

от 20 000 рублей
Разработка дополнительных модулей для 1С-Битрикс, расширение функционала, внедрение любых решений, требующихся для выполнения ваших бизнес-задач.

* стоимость зависит от конкретной задачи, ее объема и сложности выполняемых работ.

Разработка интернет-магазина с готовой версткой

от 4 недель

от 90 000 рублей

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

Аутсорсинг

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

договорная

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

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