Паттерн Repository в 1С: примеры и подводные камни

Паттерн Repository — один из ключевых инструментов, который помогает разработчикам 1С разделять бизнес-логику и доступ к данным. Этот подход широко используется в классическом .NET и Java, а в 1С он становится актуальным при построении сложных прикладных решений: ERP, документооборот, интеграции с CRM.

В статье мы разберём:

  • что такое Repository в контексте 1С,
  • как его реализовать,
  • примеры кода,
  • подводные камни,
  • и как использовать этот подход в реальных проектах в России и Казахстане.

Что такое Repository и зачем он нужен

Repository — это прослойка между предметной областью (Domain) и хранилищем данных (обычно база SQL, но в случае 1С — это объекты платформы).

Задача репозитория — скрыть детали хранения и предоставить чистый интерфейс для работы с данными.

Пример на пальцах

  • Без Repository: модуль документа напрямую делает запросы к базе.
  • С Repository: документ обращается к объекту-репозиторию, а тот уже сам решает, как получить данные (через Запрос, ВыборкуИзРегистр или API).

Структура Repository в 1С

Обычно реализация включает:

  1. Интерфейс — контракт методов (НайтиПоКоду, Сохранить, Удалить).
  2. Класс-репозиторий — реализует интерфейс.
  3. Domain-логика — использует репозиторий, не зная, как именно данные хранятся.

Пример реализации Repository в 1С

Создадим репозиторий для работы с клиентами.

Интерфейс (условно)

Интерфейс IКлиентыRepository
    Функция НайтиПоИНН(ИНН) Экспорт;
    Процедура Сохранить(Клиент) Экспорт;
КонецИнтерфейса

Реализация

ОбщийМодуль КлиентыRepository

Функция НайтиПоИНН(ИНН) Экспорт
    Запрос = Новый Запрос(
        "ВЫБРАТЬ 
         | Клиенты.Ссылка,
         | Клиенты.Наименование
         |ИЗ Справочник.Клиенты КАК Клиенты
         |ГДЕ Клиенты.ИНН = &ИНН");
    Запрос.УстановитьПараметр("ИНН", ИНН);
    Результат = Запрос.Выполнить().Выбрать();
    Если Результат.Следующий() Тогда
        Возврат Результат.Ссылка;
    КонецЕсли;
    Возврат Неопределено;
КонецФункции

Процедура Сохранить(Клиент) Экспорт
    НовыйКлиент = Справочники.Клиенты.СоздатьЭлемент();
    НовыйКлиент.Наименование = Клиент.Наименование;
    НовыйКлиент.ИНН = Клиент.ИНН;
    НовыйКлиент.Записать();
КонецПроцедуры

Использование в бизнес-логике

Клиент = Новый Структура("Наименование,ИНН", "ООО Ромашка", "7701234567");
КлиентыRepository.Сохранить(Клиент);

Найденный = КлиентыRepository.НайтиПоИНН("7701234567");
Если Найденный <> Неопределено Тогда
    Сообщить("Клиент найден: " + Найденный.Наименование);
КонецЕсли;

Таблица: плюсы и минусы Repository в 1С

ПреимуществоНедостаток
Чистая архитектура: бизнес-код не зависит от БДУвеличение количества модулей
Легче тестировать: можно подменять репозиторииДля маленьких проектов избыточно
Упрощает миграцию и интеграцииТребует дисциплины команды
Код становится понятнее новым разработчикамОшибки проектирования приводят к дублированию

Подводные камни внедрения в 1С

  1. Смешивание слоёв
    Репозиторий не должен заниматься бизнес-логикой — только доступом к данным.
  2. Избыточность
    Для простых справочников и документов избыточно создавать репозитории.
  3. Отсутствие интерфейсов в платформе
    В 1С нет строгих интерфейсов, поэтому чаще используют общие модули и соглашения по именованию.
  4. Трудности с обновлением типовых конфигураций
    Если внедрять Repository в нетиповую доработку, нужно учитывать совместимость с обновлениями.

Где полезен Repository

  • Крупный ритейл: интеграции 1С:УТ с e-commerce (Bitrix, InSales, Shopify).
  • Промышленные предприятия: 1С:ERP с несколькими базами данных.
  • Медицина и образование: хранение карточек пациентов и студентов в разных подсистемах.
  • Финансы: работа с большими объёмами транзакций, где нужна чёткая прослойка.

Паттерн Repository в 1С помогает сделать архитектуру более гибкой и поддерживаемой. Но использовать его стоит там, где система действительно сложная. В небольших проектах проще оставить доступ к данным напрямую.

Главный совет: не перегружайте архитектуру, но и не бойтесь внедрять современные практики — 1С отлично их поддерживает.

Вам также могут понравиться эти