Адаптеры - реализация и применение шаблонов проектирования в 1С

19.06.20

Разработка - Инструментарий разработчика

Шаблоны проектирования "Стратегия" и "Адаптер", разделение кода на интерфейс и реализацию, изменение поведения на стадии выполнения, инкапсуляция алгоритмов, код функциональными блоками, точка написания тестов.

Скачать файлы

Наименование Файл Версия Размер
adapters-0.1.4.24.zip
.zip 910,94Kb
1
.zip 0.1.4.24 910,94Kb 1 Скачать

Зачем это надо.

Часто разработка ведется от бизнес-целей и единственной ценностью продукта признается величина и качество решения только задач бизнеса. А интерес к техническому совершенству и качественной архитектуре проходит мимо. Как итог получаем трудно и затратно модифицируемые, сложноподдерживаемые монолитные решения, не предполагающие повторного использования разработанного функционала. При помощи использования стандартных шаблонов проектирования кажется это можно значительно изменить. Необходимы инструменты применения.

Немного теории.

Выдержки из Вики

Шаблоны проектирования - повторяемая архитектурная конструкция, представляющая собой решение проблемы проектирования в рамках некоторого часто возникающего контекста

Стратегия - поведенческий шаблон проектирования, предназначенный для определения семейства алгоритмовинкапсуляции каждого из них и обеспечения их взаимозаменяемости.

Адаптер - структурный шаблон проектирования, предназначенный для организации использования функций объекта, недоступного для модификации, через специально созданный интерфейс. Другими словами — это структурный паттерн проектирования, который позволяет объектам с несовместимыми интерфейсами работать вместе.

Идея расширения.

Создаем управление выбора обработки реализации алгоритма (адаптера) в зависимости от функционального блока и контекста выполнения. 

Схема выполнения:

Схема расширения Адаптеры

Что дает применение.

В режиме клиента

  • Простую взаимозаменяемость алгоритмов в рамках функционального блока
  • Модульность системы

В режиме разработки

Как следствие разделения разработки на создание интерфейса и самой реализации

  • Простота поддержки и модификации, как следствие естественного разделения кода на отдельные функциональные блоки, выполняющие свои и только свои функции.
  • Возможность назначить разработку интерфейса, как ответственной части более компетентным сотрудникам. Отдельная реализация, выделенная в отдельную обработку поддается более простому контролю.
  • Естественным образом избавляемся от мегамодулей неясного назначения помеченных обычно "ОбщегоНазначения"
  • Точка разрыва для написания модульных тестов - после интерфейса, но до реализации
  • Повторное использования разработанного функционала - поскольку каждый функциональный блок должен делать только свое.

Техническая реализация.

Расширение для 1С версии >= 8.3.9, не требует изменений в конфигурации. Реализациями алгоритмов (адаптерами) могут быть как встроенные, так и внешние обработки.

Проект на Gitlab

Храним функциональные блоки как виды адаптеров, контексты выполнения как регионы использования. На основании переданных вида и региона возвращаем назначенную обработку реализации алгоритма, при отсутствии настройки для вида+региона возвращаем обработку реализации алгоритма по-умолчанию.

Приложена тестовая база с реализацией загрузки данных из разнородных источников для контрагентов

 
 Интерфейс расширения:

Создание адаптеров.

В обработках адаптеров требуется реализация общего интерфейса, реализованного в обработке расширения "ом_АдаптерШаблон"

 
 Общий интерфейс адаптеров

Управление адаптерами.

Кроме программного интерфейса есть общая обработка "ОМ. Управление адаптерами", позволяющая назначать активные адаптеры для регионов использования, изменять состав зарегистрированных адаптеров:

 
 Скриншот с тестового примера

 

В архиве сборка расширения и каркасный пример загрузки разнородных файлов для контрагентов.

Шаблоны проектирования Стратегия Адаптер

См. также

SALE! 20%

Infostart Toolkit: Инструменты разработчика 1С 8.3 на управляемых формах

Инструментарий разработчика Роли и права Запросы СКД Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

13000 10400 руб.

02.09.2020    122211    673    389    

715

SALE! 25%

Infostart PrintWizard

Пакетная печать Печатные формы Инструментарий разработчика Платформа 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:Конвертация данных 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

Инструмент, позволяющий абсолютно по-новому взглянуть на процесс разработки печатных форм. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и "прозрачность" разработки, а также навести порядок в многообразии корпоративных печатных форм.

18000 15300 руб.

06.10.2023    7307    22    6    

39

SALE! 20%

Infostart УДиФ: Управление данными и формами

Инструменты администратора БД Инструментарий разработчика Роли и права Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.

10000 8000 руб.

10.11.2023    3552    11    1    

34

SALE! 30%

PowerTools

Инструментарий разработчика Инструменты администратора БД Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Платные (руб)

Универсальный инструмент программиста для администрирования конфигураций. Сборник наиболее часто используемых обработок под единым интерфейсом.

3600 2520 руб.

14.01.2013    177764    1074    0    

849

Многопоточность. Универсальный «Менеджер потоков» 2.1

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Восстановление партий или взаиморасчетов, расчет зарплаты, пакетное формирование документов или отчетов - теперь все это стало доступнее. * Есть желание повысить скорость работы медленных алгоритмов! Но... * Нет времени думать о реализации многопоточности? * о запуске и остановке потоков? * о поддержании потоков в рабочем состоянии? * о передаче данных в потоки и как получить ответ из потока? * об организации последовательности? Тогда ЭТО - то что надо!!!

5000 руб.

07.02.2018    99355    239    97    

296

[ЕХТ] Фреймворк для Расширений 1С

Инструментарий разработчика Платформа 1С v8.3 Управляемые формы Платные (руб)

"Фреймворк для Расширений 1С" это универсальное и многофункциональное решение, упрощающее разработку и поддержку создаваемых Расширений. Поставляется в виде комплекта из нескольких Расширений с открытым исходным кодом. Работает в любых Конфигурациях в режиме Управляемого приложения с режимом совместимости 8.3.12 и выше без необходимости внесения изменений в Конфигурацию.

3000 руб.

27.08.2019    18122    6    8    

40

1С HTML Шаблоны / HTML Templates

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Быстрая и удобная обработка для работы с шаблонами HTML. Позволяет легко и быстро формировать код HTML.

2040 руб.

27.12.2017    28113    3    10    

15

Выполнение произвольного кода или запроса с параметрами через Web-сервис (замена COM-подключений)

Инструментарий разработчика Обмен между базами 1C Платформа 1С v8.3 Платные (руб)

В процессе работы в 1С часто возникает потребность получить данные из другой базы.  Обычно это делается через COM-соединение, и время выполнения запроса при этом оставляет желать лучшего. В данной публикации представлено универсальное решение, позволяющее практически моментально выполнить произвольный код или запрос с параметрами в другой информационной базе через Web-сервис.

2400 руб.

24.09.2019    23605    15    15    

32
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. alex_4x 85 19.06.20 10:56 Сейчас в теме
Стыд мне и позор, но я ничего не понял.

В статье в Вики всё понятно. И пример понятный.
Но я не понимаю какое отношение это имеет к 1С.
Объектная модель в 1С есть. То есть объект у нас документ или справочник или обработка. Экспортные функции и процедуры, которые написаны в модуле - ну как бы методы. В чем суть приведенного примера на 1С непонятно.
Прикрепленные файлы:
2. shmalevoz 304 19.06.20 13:17 Сейчас в теме
(1) Дело в том, что во многих организациях на проектах любой степени сложности наблюдается явление когда продукт рассматривается только в разрезе решения бизнес-задач. Стремление к качеству даже если и есть, но нет системного подхода как заставить разработчиков делать хорошо. И как следствие бывает, что модификация крайне затруднена, повторное использование сделанного в других проектах невозможна, пишем заново, ... А эти затраты можно было бы не нести, будь нормальное разделение функционала.
Применение же шаблонов проектирования в разработке дает на выходе намного более качественные вещи, естественным образом заставляет разработчиков делить функционал на отдельные блоки. На выходе простые интерфейсы, простые, легкомодифициуемые куски функционала, расположенные отдельно. Нет каши, есть возможность выбора алгоритма реализации, повторное использование функционала в других проектах. При этом принципы эти понятны, доступны, широко освещены.
А расширение это просто готовая схема управления выбора алгоритма (обработки). В помощь так сказать при использовании шаблонов проектирования. Шаблон Стратегия как раз это и подразумевает. А конечные обработки становятся Адаптерами, поскольку (в пределах своих видов) реализуют один функционал (интерфейс), но различными способами.
13jaguar; +1 Ответить
3. sh_oleg 26.03.21 13:40 Сейчас в теме
(1)
Адаптеры (временами в паре с Мостами (Bridge)) в 1С вполне применимы и полезны. Есть реальные кейсы, которые были решены с использованием этих паттернов.

К примеру, на одном из моих проектов, нужно было реализовать обмен заказами поставщиков по АПИ самих поставщиков (само собой у каждого поставщика свой АПИ). Здесь как раз были использованы Bridge+Adapter. В результате задача подключения каждого нового АПИ поставщика - сводится к 4-6 часам разработки (в зависимости от сложности самого АПИ).

Или, реализация отправки уведомлений с выбором типа и оператора (вайбер, телеграм, смс).

Или, чтоб далеко не ходить, в типовых конфигурациях есть общ. модуль АдминистрированиеКластераКлиентСервер, в котором применяется этот паттерн.

Список можно продолжать...
Оставьте свое сообщение