АрхиТопос - проектирование архитектуры информационных систем

02.06.25

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

Подсистема "АрхиТопос" - это инструмент для проектирования архитектуры информационных систем, отдельных ее частей или даже корпоративной экосистемы (совокупность информационных систем).

Скачать файл

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

Наименование По подписке [?] Купить один файл
Расширение "АрхиТопос"
.zip 682,53Kb ver:1.0.1.19
29
29 Скачать (10 SM) Купить за 4 550 руб.

Область применения

В первую очередь решение будет полезно ИТ-компаниям или специалистам в ИТ-сфере.

Можно использовать любой уровень абстракции:

  • Корпоративная экосистема (несколько информационных систем)
    • Пример: инхаус разработка
  • Информационная система (одно решение)
    • Пример: авторские разработки, коммерческие разработки
  • Модуль системы (расширение / подсистема / библиотека)
    • Пример: авторские разработки

 

Ключевые особенности решения

  1. Построение объектной модели
    1. Сущности
    2. Связи
    3. Вспомогательные элементы
  2. Визуализация объектной модели через PlantUML
    • Генерация текста и изображения схем в реальном времени (вы добавляете объект, система его сразу отрисовывает на графическом полотне)
    • В качестве основы для визуализации используется нотация моделирования архитектуры C4, а если точнее то библиотека C4-PlantUML
    • С графическим полотном можно взаимодействовать интерактивно (обработка клика, рисование связей, контекстное меню)

 

Целевая аудитория

  • Архитекторы — для работы с корпоративным и системным уровнями (любой уровень декомпозиции).
  • Аналитики — для работы с бизнес уровнем (визуализации бизнес-процессов).
  • Разработчики — для работы с системным уровнем (декомпозиция до уровня кода).

 

Назначение

  • Сокращение времени на построение архитектурных схем;
  • Стандартизация подхода к проектированию архитектуры;
  • Единое пространство для работы проектных команд (единая точка входа для получения информации по системе);

 

Основные возможности

  • Построение корпоративной экосистемы
    • Ведение списка информационных систем и связей между ними (интеграционные потоки)
    • Возможность построить отчет "Карта корпоративной экосистемы"
  • Проектирование и моделирование информационных систем
    • Декомпозиция на разные слои и уровни абстракций (бизнес слой, слой приложения, технологический слой)
    • Описание сущностей
      • Метки, подписи, свойства
    • Создание связей между сущностями
      • С возможностью указания произвольных ссылок или ссылок на графические схемы (при клике на ссылку она откроется) 
    • Ведение классов пользователей системы
  • Ведение списка архитектурных схем в рамках каждой информационной системы
    • Выбор объектов / слоев / уровней для визуализации
    • Быстрый анализ схемы на форме элемента
    • Возможность указать номер версии
    • Возможность указать статус и заморозить схему (запретить изменение)
    • Возможность делиться схемой (изображение или ссылка на схему в PlantUML)
  • Ведение вспомогательной справочной информации
    • Метки
    • Виды объектов
    • Виды взаимодействия объектов
    • Стили объектов (цвет фона, фигура) 
  • Создание произвольных графических схем в нотациях BPMN и UML
    • Использование нативного функционала PlantUML с написанием текста схемы
    • Построение схемы через объектную модель (диаграмма последовательности, диаграмма потоков данных)
  • Визуализация объектной модели через PlantUML в режиме реального времени
    • Не нужно графически изменять связи или расположение объектов, или изменять текст схемы как при стандартном использовании PlantUML
       

 

Дополнительные возможности

  • Выдача прав доступа на редактирование конкретных информационных систем
    • Например:
      • Архитектор имеет полный доступ к информационной системе (добавление связей или сущностей и т.п.)
      • Остальные - только просмотр
  • Переопределение адреса сервера PlantUML для генерации диаграмм
    • Вы можете развернуть локальный сервер PlantUML и использовать его для генерации диаграмм (хранится в константе)
  • Служебная функциональность
    • Выгрузка/загрузка данных
      • Сохранение выбранной корпоративной экосистемы в файл (со всеми связными данными)
      • Загрузка корпоративной экосистемы из файла 
    • Генерация тестовых данных (информационные системы и связи между ними)
    • Наполнение справочников (метки, виды взаимодействия) распространенными технологиями

 

Демонстрация функциональности

Ниже демонстрируется взаимодействие с графическими элементами на поле HTML

Рис. 1. Добавление элементов на графическом полотне

 

Рис. 2. Создание/изменение/удаление связей между элементами на графическом полотне
(снизу подсвечиваются нажатия горячих клавиш)

 

Рис. 3. Создание связей между элементами через перетаскивание элементов между таблицами

 

Рис. 4. Добавление сущностей диаграммы последовательности (PlantUML)

 

Рис. 5. Добавление связей диаграммы последовательности на графическом полотне (PlantUML)

 

Рис. 6. Форма выбора вида объекта

 

Пример использования

 В данном примере описывается архитектура подсистемы "АрхиТопос".

Вы все правильно поняли, с помощью данного решения была описана архитектура этого же решения.

 

Все реализовано через объектную модель, код схем генерируется автоматически.

Моделирование происходит в рамках единого пространства, можно выбирать исследуемый элемент, чтобы работать только с нужным уровнем абстракции.

Рис. 7. Форма основного инструмента для моделирования

 

Рис. 8. Архитектурная схема "Диаграмма контекста" (ссылка на схему PNG)

 

Рис. 9.  Форма элемента архитектурной схемы "Карта экосистемы"

 

Рис. 10. Архитектурная схема "Диаграмма вариантов использования" (ссылка на схему SVG)

 

Рис. 11. Архитектурная схема "Архитектура метаданных" - это аналог диаграммы классов (ссылка на текст схемы UML)

 

Рис. 12. Архитектурная схема "Диаграмма развертывания"

 

Рис. 13. Графическая схема "Диаграмма последовательности (Визуализация объектной модели)"


Абстрактные примеры

Это пример карты корпоративной экосистемы построенной на тестовых данных.

Рис. 14. Отчет "Карта корпоративной экосистемы"

 

Есть возможность рисовать BPMN схемы.

Рис. 15. Пример графической схемы в нотации BPMN

 

Текст диаграммы нигде не хранится и всегда генерируется на лету.

Рис. 16. Пример сгенерированного текста схемы

 

Есть возможность генерации тестовых данных для ознакомления, а также выгрузка и загрузка конкретной корпоративной экосистемы через файл.

Дополнительно есть возможность наполнить справочную информацию элементами технологий (1С, js, docker и т.п.)

Рис. 17. Обработка "Служебные функции"

 

Авторские пояснения

  • Нюансы визуализации PlantUML
    • Без доступности к сервису PlantUML графическое отображение схем работать не будет
      • У платформы должен быть доступ к внешнему серверу PlantUML или к локальному серверу развёрнутому в локальной сети
    • Сервис сам определяет расположение объектов и стрелок между ними
      • Иногда это может показаться нелогичным, попробуйте изменить направление полотна (портретная, альбомная)
    • Расположение элементов на схеме в некоторых случаях зависит от сортировки динамических списков
  • Пояснения по нотации моделирования архитектуры C4
    • В решении не реализовано жёсткое соблюдение нотации, при этом автор настоятельно советует соблюдать основы
      • Стандартная нотация
        • 4 основных уровня
          • System
            • Container
              • Component
                • Code
      • Видение от автора (возможно спорное, но иногда удобное)
        • Дополнительная детализация с вложенностью одинаковых типов
          • Пример 
            • System
              • Container
                • Container
              • Container
                • Component
                  • Component
                    • Code
        • Также есть еще один уровень Enterprise (совокупность информационных систем, карта корпоративной экосистемы)
        • При этом не допускаются следующие конструкции (т.е. должна соблюдаться стандартная иерархия уровней)
          • Component
            • Container

 

Техническая информация

  • Требования
    • Платформа 1С:Предприятие версии 8.3.16 и выше;
      • Если используется операционная система Linux то платформа 1С:Предприятие версии 8.3.26 и выше (обновлен webkit);
    • Управляемые формы;
      • Тонкий клиент;
      • Веб клиент* (есть ограничения, нет возможности масштабировать графическое полотно в браузере);
    • Режим совместимости конфигурации 8.3.16 и выше;
    • Библиотека стандартных подсистем версии 2.3.4 и выше;
  • Внедрение и использование
    • Решение реализовано посредством расширения конфигурации с возможными вариантами использования (при соблюдении технических требований):
      • Поверх развернутой с нуля БСП;
      • В составе СППР;
      • В существующую систему учета на базе БСП.

 

Лицензионная информация

  • Решение распространяется под лицензией GPL v3
  • В решении используются сторонние open source библиотеки (html/css/js)
    • Данные библиотеки распространяются под MIT лицензией
    • Исходный код библиотек не изменялся, используются как есть
    • В исходном коде расширения указаны полные тексты лицензий с указанием авторов (license and copyright notice)

 

История обновлений

01.06.2025 Добавлена пилотная версия расширения 1.0.1.8

02.06.2025 Небольшие исправления 1.0.1.9

 

Проектирование архитектура система моделирование визуализация PlantUML UML BPMN экосистема схема

См. также

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

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

15500 руб.

02.09.2020    192077    1064    405    

992

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

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

8400 руб.

20.08.2024    29854    192    94    

182

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

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

22200 руб.

06.10.2023    22114    58    19    

88

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

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

15000 руб.

10.11.2023    15013    64    33    

82

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

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

9360 руб.

17.05.2024    32237    107    48    

151

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

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

20000 руб.

07.10.2021    19842    8    32    

44

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

Инструмент для генерации OpenApi (Swagger) спецификаций на основании файлов конфигураций 1С. Это консольное и десктопное приложение на языке Rust с полноценным редактором кода, содержащим автозамену и подсвечивание ошибок для быстрого и безошибочного написания документирующего комментария.

18000 руб.

22.11.2024    1125    1    0    

8
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. oleshko_alexey 2 02.06.25 10:03 Сейчас в теме
3. TSAllea 02.06.25 11:24 Сейчас в теме
(1) сори, а чем это решение не устраивает? бесплатностью? правильно понимаю, что ссылкой ниже Вы, как альтернативу, предлагаете что-то там приобрести за 128 тр. и потом еще чего-то приобрести.. и потом еще.
этого решения многим (большинству/всем) хватит за глаза
7. Nikola23 707 02.06.25 16:49 Сейчас в теме
4. developer118 40 02.06.25 11:41 Сейчас в теме
(1) Вопрос выбора инструмента или нотации - всегда холиварный.

В Archi используется нотация ArchiMate (хотя можно извернуться и моделировать на C4). Замечательная нотация, спору нет.
Но мне больше нравится нотация C4 из-за своей простоты, и вот для этой нотации подходящих инструментов моделирования я не нашел.

В Archi расположение объектов на графическом полотне производится вручную пользователем, в этом же решении пользователь вообще не определяет расположение объектов, PlantUML сам оптимально располагает элементы.
2. oleshko_alexey 2 02.06.25 11:16 Сейчас в теме
5. developer118 40 02.06.25 11:47 Сейчас в теме
(2) Не совсем понятно для чего этот комментарий.
Я прекрасно понимаю что есть много отличных решений, и платных и бесплатных.
6. oleshko_alexey 2 02.06.25 12:20 Сейчас в теме
- Дополнить шаблоны Справочниками
2. Базовые справочники
2.1. Архитектура ИТ-систем и приложений (справочник Программные продукты)

Параметры объектов справочника (24):

Название;
Версия;
Категория;
Требуется реализация;
Дата последнего обновления;
Рекомендуемый период обновления (дни);
Дата завершения техподдержки;
Дата завершения временной лицензии (если применимо);
Владелец (ответственный);
Поставщик;
Зависимость от иностранного производителя;
Количество лицензий (общее);
Количество лицензий (занятых);
Входит в критичную архитектуру;
Срок восстановления при сбоях (часов);
Требования к отказоустойчивости;
Расположение (cloud, home);
Тип лицензии;
Полнота использования функционала %;
Комментарии;
Уровень информационной безопасности;
Требования к информационной безопасности (текстовое поле);
Правило резервного копирования;
Требование к техподдержке.
Списки-вкладки (15):

Задачи и требования;
Интеграция: входящие связи с ПП;
Интеграция: исходящие связи с ПП;
Контуры функционирования;
Оборудование;
Операционные риски;
Права доступа;
Финансы и лицензии;
Документы;
Показатели;
Исходящие связи с единицами деятельности (бизнес-процессами);
Формирует электронные документы;
Жизненный цикл;
Использует базы данных;
Орг.единицы.
В поставку включена детальная модель ИТ-архитектуры крупной организации. Она представлена в виде иерархического списка ИТ-систем с детализацией до модулей и функций и заполненными свойствами (карточками) некоторых ИТ-систем, а также в виде графических моделей (схем), которые формируются автоматически.
Показать
8. TSAllea 03.06.25 11:26 Сейчас в теме
(6) зачем оно? вы из одного продукта хотите какой-то свой получить?
а я для себя увидел применение для визуализации правил конвертации 3.
9. o.nikolaev 217 03.06.25 12:18 Сейчас в теме
Как только пути стрелочек (стрелочки) на схеме не подчиняются какому-то структурирующему (в т.ч. обязательно - иерархическому) принципу(ам - но это в идеале), как в Драконе, хоть я и не его фанат - то нужно покупать цитрамон в товарных количествах.
12. developer118 40 03.06.25 13:46 Сейчас в теме
(9) Ну тут нужно выбирать.

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

Вариант 2: выстраивать только объектную сущность, а визуализацию делегировать внешнему сервису, но при этом принять все возможные вытекающие проблемы.

Вариант 2 мне понравился больше. Но тут нужно приноровиться, без спору.
10. o.nikolaev 217 03.06.25 12:23 Сейчас в теме
Отчет "Карта корпоративной системы" - для запугивания обывателей, ну или как игра для детей "найди путь в лабиринте". Пожалуйста, очень прошу не сердиться, тезис про "сделай сам тогда лучше раз такой умный" - абсолютно верен. Долгие годы ищу что-то реально работающее для построения (в т.ч. и для проектирования) систем, но пока не нашел.
13. developer118 40 03.06.25 13:50 Сейчас в теме
(10) Это полезный инструмент для внедренцев или корпоративных архитекторов, чтобы посмотреть на ситуацию в целом. На ней можно накидать будущий концепт внедрения, и сразу нарисовать высокоуровневые связи. Также можно в отборах указать нужные контуры или информационные системы для анализа.
А так да, для большинства пользователей это будет лишь "прикольная паутинка".
11. oleshko_alexey 2 03.06.25 13:11 Сейчас в теме
https://dochub.info/ видел? сам C4 в основе. https://habr.com/ru/articles/701050/

но без цитрамона или чего покрепче не разберешься
пример https://dochub.info/
14. developer118 40 03.06.25 14:43 Сейчас в теме
(11) Да, я знаком с подходом "архитектура как код" (она в целом вытекает из парадигмы "документация как код").
Кстати, концепция этого решения частично похожа на концепцию "архитектура как код", только вместо текста хранится объектная модель (а схемы также строятся на лету).

Но я отвечу все также: вопрос выбора инструмента или нотации - всегда холиварный =)

Мне нравится концепция простоты:

1) Простота ознакомления - чтобы схему могли понять большинство людей (аналитики, разработчики, заказчик и др.) без вникания в нотацию.
На мой взгляд, нотация C4 с этим справляется хорошо.

2) Простота наполнения и изменения - чтобы уделять максимальное внимание контексту, а не инструменту.
На мой взгляд, связка "объектная модель + PlantUML" с этим справляется хорошо.
15. oleshko_alexey 2 03.06.25 17:04 Сейчас в теме
Хранится информация в базе или в файлах? XML для PlantUML?
Как можно версионировать в Git?
У нас 2 непересекающихся домена данных, между доменами обмены ходят.
Тянуть один домен в другой целиком смысла нет.
Можно ли как в Archi- файл проекта сохранить, а другой домен только как черный ящик со входами и выходами отобразить?
17. developer118 40 03.06.25 20:05 Сейчас в теме
(15)
Все хранится в базе.
Вопрос про XML не понял.
Код схемы генерируется на лету в момент построения отчета или моделирования, он нигде не хранится.

Версионирования нет, хотя в планах реализовать для архитектурных схем (чтобы можно было понять как изменялась схема от версии к версии).

Ну, вариантов по вашему бизнес кейсу несколько.
Можно каждый домен вести обособленно (несколько корпоративных экосистем), и в каждом из них добавить служебный узел "внешний домен".

А можно в рамках одной общей корпоративной экосистемы, просто домены разделить на контуры (если все таки они являются частью одной экосистемы).
Прикрепленные файлы:
16. o.nikolaev 217 03.06.25 17:32 Сейчас в теме
Может есть уже система проектирования которая бы отображала слои программной системы по образу и подобию BIM штучек. Слой строения (сущности, хранение), слой коммуникаций-электрики (потоки сигналов-сообщений между объектами), канализации (контроль данных, учет устаревания и очистки), вентиляции (логирование, интеграция и пр.) и единый контроль словаря и именований в системе. По нынешней моде - под контролем ИИ. Но мне пока такая не встретилась.
18. developer118 40 03.06.25 21:50 Сейчас в теме
(16) Система проектирование это лишь инструмент, а слои это уже методология. Можно вести методологию в любой системе (хоть в екселе), но вопрос в удобстве.

Я бы выделил 3 звена:
1) Методология / Фреймворк
2) Язык / Нотация
3) Инструмент

Общепринятая мировая схема:
1) TOGAF
2) ArhiMate
3) Archi / Enterprise Architect

Я не сторонник чистого TOGAF, т.к. считаю что полное его соблюдение - слишком сложное (вот тут точно нужна пачка цитрамона).
Но я однозначно поддерживаю его ключевые моменты, такие как ADM (метод разработки архитектуры) и архитектурные слои (бизнес-слой, слой приложения/данных, технологический слой). На рис. 7 вы можете их увидеть.

Простая схема (по моему мнению):
1) Основы TOGAF
2) Нотация C4
3) Объектная модель + PlantUML

В вашем же примере, слои это по сути блоки системы, и их взаимодействие между ними.
Ну, в принципе, вы можете попробовать реализовать вашу идею через нотацию С4.
19. oleshko_alexey 2 04.06.25 10:51 Сейчас в теме
Прежде чем тратить 10 SM вопросы :
1) Расширение в УТ11 можно ставить? ИЛИ СППР надо?
2) Есть ли возможность в поставке получить пример, который в статье описан?
3) Как можно открывать несколько описаний? отдельную базу ставить? Если смотреть пример из статьи и рабочий проект. Я про C4 только видео Лустина смотрел, которого сейчас в инете нет.

>> XML для PlantUML
выгрузку XML который на сервер PlantUML Отправляется , можно использовать для версионирования
21. developer118 40 04.06.25 19:04 Сейчас в теме
(19)
1) Можно, если подходит под технические требования указанные в статье.
2) Он включен в поставку, в архиве cf и схема в json. Через служебные функции схему можно загрузить к себе и ознакомиться с примерами.
3) Если я правильно понял, под описанием вы понимаете некое "пространство" для проектирования. Тогда, можно.
Справочник "Корпоративные экосистемы" - это основной аналитический разрез, в разрезе которого ведутся:
- Информационные системы (и связные с ними элементы)
- Графические схемы

Например:
1) Корпоративная экосистема - "ООО Ромашка", будет иметь свой набор ИС (БП, ЗУП, УТ)
2) Корпоративная экосистема - "ООО Одуванчик", будет иметь свой набор ИС (ERP, Документооборот)
и т.д.
Все эти "пространства" не пересекаются.

А вот вспомогательные справочники - общие.

4) Про "XML для PlantUML"
Текст схемы это не совсем XML. Отправляется на сервер закодированная строка. Вот ее да, планирую в будущем прикрутить версионирования.
20. yandextesting 150 04.06.25 16:35 Сейчас в теме
Закодированную строку схемы для передачи на plantuml-сервер можно без применения js "plantuml_encoder" получить 1С-ным кодом (как альтернатива):

ДвоичныеДанныеСтроки = ПолучитьДвоичныеДанныеИзСтроки(ИсходныйТекстPlantUML);	
СжатыеДанные = СжатыеДанные(ДвоичныеДанныеСтроки);	
Base64Строка = Base64Строка(СжатыеДанные);     
ФорматPlantUML = ФорматPlantUML(Base64Строка);

#Область КодированиеДанных

&НаСервереБезКонтекста
Функция ЗаписатьZip(Данные)

#Если МобильноеПриложениеСервер Тогда
	ВызватьИсключение(НСтр("ru = 'Работа с Zip-файлами в мобильной платформе не поддерживается'"));
#Иначе
	ВременныйФайл = ПолучитьИмяВременногоФайла(".bin");
	Данные.Записать(ВременныйФайл);
	ПотокZip = Новый ПотокВПамяти;
	ЗаписьZip = Новый ЗаписьZipФайла(ПотокZip);
	ЗаписьZip.Добавить(ВременныйФайл);
	ЗаписьZip.Записать();
	УдалитьФайлы(ВременныйФайл);

	Возврат ПотокZip.ЗакрытьИПолучитьДвоичныеДанные();
#КонецЕсли

КонецФункции

&НаСервереБезКонтекста
Функция СжатыеДанные(Данные) 

	ЧтениеДанных = Новый ЧтениеДанных(ЗаписатьZip(Данные));

	НачальноеСмещение = 14;
	ЧтениеДанных.Пропустить(НачальноеСмещение);
	ЧтениеДанных.ПрочитатьЦелое32(); // CRC32

	РазмерСжатыхДанных = ЧтениеДанных.ПрочитатьЦелое32();
	ЧтениеДанных.ПрочитатьЦелое32(); // РазмерИсходныхДанных

	РазмерИмениФайла = ЧтениеДанных.ПрочитатьЦелое16();
	РазмерДополнительногоПоля = ЧтениеДанных.ПрочитатьЦелое16();
	ЧтениеДанных.Пропустить(РазмерИмениФайла + РазмерДополнительногоПоля);

	ПотокGZip = Новый ПотокВПамяти;
	ЗаписьДанных = Новый ЗаписьДанных(ПотокGZip);
	ЧтениеДанных.КопироватьВ(ЗаписьДанных, РазмерСжатыхДанных);
	
	Возврат ПотокGZip.ЗакрытьИПолучитьДвоичныеДанные();

КонецФункции

&НаСервереБезКонтекста
Функция ФорматPlantUML(Данные) 
	
	Результат = "";
	СтрокаИскомая	  = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456­789+/";
	СтрокаПодстановки = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvw­xyz-_"; 
	Для Счетчик = 0 По СтрДлина(Данные) - 1 Цикл     
		ТекСимвол = Сред(Данные, счетчик + 1, 1);
		Поз = СтрНайти(СтрокаИскомая, ТекСимвол); 
		Если ТекСимвол = Символы.ПС ИЛИ ТекСимвол = Символы.ВК Тогда
		   Продолжить;
		КонецЕсли;
		Если Поз > 0  Тогда
			Результат = Результат + Сред(СтрокаПодстановки, Поз, 1);
		Иначе
			Результат = Результат + ТекСимвол; 
		КонецЕсли;
	КонецЦикла;
	
	Возврат Результат;   
	
КонецФункции 

#КонецОбласти

Показать
22. developer118 40 04.06.25 20:42 Сейчас в теме
(20) Да, я знаю про этот подход.
Я так и не смог найти вариант без временных файлов.
Может быть очень много построений схем (изменили сущности, добавили связь и т.п.), а еще если учесть параллельную работу нескольких пользователей, то получаем большое количество генерации временных файлов. Возможно, конечно, это не проблема (хотя диск спасибо не скажет), но такой подход мне не особо нравится.

Ну и справедливости ради решил сделать замер.
Разница во времени ощутимая (на примере время в сек. за 100 вызовов в цикле).
Запись и удаление только временных файлов - по времени почти равна генерации через js.
Прикрепленные файлы:
yandextesting; +1 Ответить
Оставьте свое сообщение