Продолжаем тему архитектуры и сегодня раскроем понятие чистой архитектуры в 1С (по Робе... — 18 марта 2026 г. в 16:12:49.557
Продолжаем тему архитектуры и сегодня раскроем понятие чистой архитектуры в 1С (по Роберту Мартину) Смысл: архитектура — это способ управлять изменениями. Главный закон: зависимости направлены внутрь, к бизнес-правилам.Слои (снаружи → внутрь) Frameworks & Drivers → Interface Adapters → Use Cases → Entities 🧱 Entities (Сущности) — «о чём говорит бизнес вне компьютера» Что это: устойчивые правила и инварианты, которые директор по продажам понимает без разговоров про таблицы и формы. Это плоская структура + чистые функции модуля, который создает/валидирует/изменяет структуру и тем самым заставляет инварианты выполняться. Живут дольше UI/БД. Примеры инвариантов: 👉 Количество ≥ 0 (целое для штучных товаров) 👉 Сумма = Цена × Количество (округление по правилу X) 👉 Нельзя отгрузить больше доступного остатка Не путать с use case-правилами: ❌ «Не проводить заказ при долге > кредитного лимита» ❌ «Скидка > 15% требует утверждения» В 1С размещение: Общие модули. Только чистые функции и простые типы/структуры Запрещено: обращения к формам, ролям, Запрос, ДокументОбъект. 🎛 Use Cases (Бизнес-логика) — «как приложение выполняет операцию» Роль: оркестрация шагов одной операции, использование Entities и портов. Пример: Оформить заказ, Начислить бонусы Не делает: не открывает формы, не пишет в БД напрямую, не знает про роли/сеанс. Вход/выход: DTO — плоские Структура / Соответствие / Массив (без ссылок на формы, ДокументОбъект, регистры, метаданные). В 1С размещение: Общие модули Важно: use case определяет контракты портов; реализация — в адаптерах. 🔌 Interface Adapters (Адаптеры)— мосты между миром и ядром Здесь живут: 👉 Controller: UI/HTTP → входной DTO use case 👉 Presenter: ответ use case → данные для формы/HTTP 👉 Реализации портов: Запрос, работа с ДокументОбъект/регистрами, HTTP, JSON 🟡 Маппинги: DTO ↔️ платформенные типы/объекты Чего нет: бизнес-правил и сценарной оркестрации (они в Use Cases). В 1С размещение: Общие/прикладные модули — там, где уместно. 🖼 Frameworks & Drivers — формы, платформа, внешние системы Роль: доставить ввод/вывод, без бизнес-логики. Что кладём: 👉 Обработчики команд формы, HTTP-эндпоинты, регламентные задания 👉 Обработчики событий: ПередЗаписью, ОбработкаПроведения и тп 👉 Сбор и первичная UI-валидация (обязательность, формат, маски) Чего не кладём: Запросы, ДокументОбъект.Записать(), работу с регистрами — это в Interface Adapters. На слайдах показал сквозной пример: «Оформить заказ» 👉 Чат для общения и обжудения 👈

