Розробка класів на D7 API для 1С-Бітрікс — сучасний підхід

Ми впроваджуємо D7 API в проекти на Бітрікс, створюючи класи з неймспейсами замість глобальних функцій, об'єкти Result замість bool та рядків помилок, і використовуємо Application як точку входу замість глобальних змінних. Такий код не ламається при оновленні, легко тестується та перевикористовуєтьс
Послуги, які ми пропонуємо
Показано 1 з 1Усі 1626 послуг
Розробка класів на D7 API для 1С-Бітрікс — сучасний підхід
Середній
~1-2 тижні

Наші компетенції:

Часті запитання

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1454
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Розробка веб-сайту для компанії ФІКСПЕР
    1018
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Розробка на базі Бітрікс, Бітрікс24, 1С для компанії Development of an Online
    760
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    879
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    803
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    1162

Ми впроваджуємо D7 API в проекти на Бітрікс, створюючи класи з неймспейсами замість глобальних функцій, об'єкти Result замість bool та рядків помилок, і використовуємо Application як точку входу замість глобальних змінних. Такий код не ламається при оновленні, легко тестується та перевикористовується. Наш досвід: понад 5 років роботи з Бітрікс, понад 30 проектів з повним переходом на D7. Оцінимо ваш проект — пишіть!

Проблеми, які вирішуємо

Типові болі: застарілий код на CModule та $_POST ламається при оновленнях, неможливо покрити тестами, помилки губляться (return false без контексту), а кеш інвалідується лише за часом. D7 API вирішує це через строгу типізацію, винятки та тегований кеш. В результаті кількість помилок у продакшені знижується в 2–3 рази, а час на деплой нового функціоналу скорочується на 40%.

Чому варто перейти на D7 API?

Перехід на D7 API — це не мода, а необхідність для проектів, які живуть довше року. Замість CIBlockElement::GetList() з купою параметрів ви отримуєте ORM-запити з ланцюжками методів. Замість $_POST['field'] — об'єкт Request з типізованим доступом. Ваш код стає передбачуваним і документованим. Порівняємо обсяг legacy-коду та D7: на 1000 рядків legacy припадає приблизно 800 рядків D7, але при цьому D7-код на 60% легше підтримувати.

Як ми розробляємо класи на D7

Візьмемо реальний кейс: інтернет-магазин на Бітрікс з 50 000 товарів. Старий код кошика працював через CSaleBasket::Add і розмазаний по шаблонах. Ми переписали його на сервісний клас BasketService з D7:

namespace MyProject\Services; use Bitrix\Main\Result; use Bitrix\Main\Error; use Bitrix\Sale\Basket; class BasketService { public function __construct( private readonly int $userId ) {} public function addItem(int $productId, int $quantity): Result { $result = new Result(); $basket = Basket::loadItemsForUser($this->userId); if (!$basket) { $result->addError(new Error('Не вдалося завантажити кошик', 'BASKET_LOAD_FAIL')); return $result; } $item = $basket->createItem('catalog', $productId); $item->setFields(['QUANTITY' => $quantity]); $saveResult = $basket->save(); if (!$saveResult->isSuccess()) { $result->addErrors($saveResult->getErrors()); } return $result; } } 

Тепер кошик повністю покритий юніт-тестами, а при оновленні Бітрікс достатньо замінити один клас, а не переписувати всі шаблони. Це скоротило час на оновлення з 3 днів до 2 годин.

Як D7 API покращує кешування?

Теговане кешування — одна з сильних сторін D7. Замість глобального скидання кешу за часом ви інвалідуєте лише ті дані, які змінилися. Наприклад, при оновленні ціни товару скидається кеш саме цього товару, а не всього каталогу. Це знижує навантаження на базу даних на 30–50%.

Архітектурні патерни: фабрики та репозиторії

Для складної логіки ми використовуємо фабрики (Factory) для створення об'єктів та репозиторії (Repository) для роботи зі сховищем. Наприклад, фабрика замовлень створює екземпляри Order із попередньо заповненими залежностями, а репозиторій товарів інкапсулює ORM-запити з тегованим кешем. Такий підхід дозволяє ізолювати бізнес-логіку від інфраструктури та легко підміняти реалізації при тестуванні.

Наш процес роботи

  1. Аудит поточного коду — виявляємо місця, де використовується legacy API.
  2. Проектуємо архітектуру — визначаємо сервіси, репозиторії, фабрики.
  3. Реалізуємо класи — пишемо код з Result, Application, тегованим кешем.
  4. Пишемо юніт-тести — покриваємо критичні сценарії.
  5. Інтеграція та деплой — замінюємо старі модулі частинами, зберігаючи зворотну сумісність.
Детальніше про принципи розробки Кожен сервісний клас має бути вузькоспрямованим і відповідати за одну бізнес-операцію. Ми використовуємо впровадження залежностей через конструктор, а не через глобальні функції. Це робить код тестованим і замінним.

Що входить у розробку

  • Повний набір D7-класів (сервіси, репозиторії, фабрики, об'єкти Result)
  • Документація по API в PHPDoc
  • Юніт-тести (за запитом)
  • Адаптація існуючого коду для роботи з новими класами
  • Інструкції з встановлення та підтримки

Порівняння D7 API з Legacy API

Критерій Legacy API D7 API
Обробка помилок return false Result з масивом помилок
Типізація Змішана (mixed) Строга (PHP 8.1+)
Тестованість Низька (глобальні функції) Висока (залежності через DI)
Кешування Час життя Тегована інвалідація
Оновлення Бітрікс Часто ламається Сумісно з новими версіями

Терміни

Завдання Термін
Набір сервісних класів для окремої функціональності (5–10 класів) 1–2 тижні
Повна сервісна прошарка для модуля (репозиторії, сервіси, фабрики, об'єкти Result) 3–5 тижнів
Написання юніт-тестів для готових класів +30–50% до термінів розробки

Код на D7 API живе довго. Його можна оновлювати частинами, тестувати та перевикористовувати. Замовте розробку D7-класів під ключ — оцінимо проект за 1 день. Гарантуємо сумісність з останніми версіями Бітрікс.

Детальніше про D7 API читайте в офіційній документації та у Wikipedia про неймспейси PHP.

Зв'яжіться з нами для консультації — допоможемо з міграцією на D7. Отримайте комерційну пропозицію та оцінку вартості протягом дня.