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

19.06.20

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

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
adapters-0.1.4.24.zip
.zip 910,94Kb ver:0.1.4.24
1
1 Скачать (1 SM) Купить за 1 850 руб.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Проект на Gitlab

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

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

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

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

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

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

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

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

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

 

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

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

См. также

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

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

15500 руб.

02.09.2020    180565    1001    403    

954

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

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP, УНФ, КА и т.д.). Поддерживаются серверные и файловые базы, управляемые и обычные формы. Может выполнять свертку одновременно в несколько потоков. А так же автоматически, без непосредственного участия пользователя. Решение в Реестре отечественного ПО

8400 руб.

20.08.2024    21836    146    82    

144

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

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

22200 руб.

06.10.2023    19497    50    19    

84

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

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

15000 руб.

10.11.2023    13227    54    33    

74

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

Инструмент для написания и отладки кода в режиме «1С:Предприятие». Представляет собой консоль кода с возможностью пошаговой отладки, просмотра значений переменных любых типов, использования процедур и функций, просмотра стека вызовов, вычисления произвольных выражений на встроенном языке в контексте точки останова, синтаксического контроля и остановки по ошибке. В консоли используется удобный редактор кода с подсветкой, контекстной подсказкой, возможностью вызова конструкторов запроса и форматной строки.

9360 руб.

17.05.2024    29662    101    48    

147

Инструментарий разработчика Программист 8.3.14 Россия Платные (руб)

Расширение для конфигурации “Конвертация данных 3”. Добавляет подсветку синтаксиса, детальную контекстную подсказку, глобальный поиск по коду.

20000 руб.

07.10.2021    18845    7    32    

43

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

Разработка Конструктор автоматизированных рабочих мест "Конструктор АРМ" реализована в виде расширения и является универсальным инструментом для создания АРМ любой сложности в пользовательском режиме.

3600 руб.

27.12.2024    1984    2    0    

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

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

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

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

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

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