Универсальные модули 1С: как не разрабатывать одно и то же на каждом проекте

от автора

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

Привет, Хабр! Мы, Артем Вожаков и Анастасия Назарец, представители отраслевого центра компетенций IBS в машиностроении. В этой статье расскажем, как пришли к идее универсальных модулей 1С, что именно в них заложили и какие эффекты получили на реальных проектах.

Почему «универсальные модули» вообще понадобились

Отправной точкой стала усталость от необходимости каждый раз делать одно и то же. От проекта к проекту интеграции «съедали» огромную часть трудозатрат, заложенных в рамках проекта, а также несли большое количество «сюрпризов» из-за высокого уровня неопределенности. Раньше (в связи со спецификой конечных заказчиков) было принято считать, что работы по интеграциям, нормативно-справочной информации (НСИ), миграции и контрольным процедурам исключительно уникальны и способов минимизации затрат просто не существует. Разработка велась с нуля, создавались локальные решения, которые сложно переиспользовать, отсутствовали унифицированный подход и возможность накопления знаний для их дальнейшего переиспользования. В результате росли сроки, увеличивались трудозатраты и, как следствие, стоимость реализации проекта, а создаваемая архитектура становилась все менее предсказуемой.

Мы поняли, что ситуацию нужно менять, собрали типовые требования с ряда крупных проектов — с бюджетом от 400 миллионов рублей, — в таких отраслях, как промышленность, телеком, транспорт, посмотрели на них с другого ракурса: сложные интеграции, миграция исторических данных, согласование НСИ, контрольные процедуры — базовый набор задач любого проекта, которые никогда не меняются. Да, меняются детали, да, присутствует специфика, но суть задач всегда остается статичной.

Примеры стандартных требований комплексных проектов 1С:

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

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

  • Обеспечить возможность создания и согласования заявок на добавление/изменения НСИ.

  • Обеспечить управляемую миграцию данных из исторических систем.

  • Настроить получение инженерных данных из PLM.

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

  • Четко разграничить права пользователей по подразделениям и складам.

  • Обеспечить возможность создания и настройки произвольных справочников.

  • Централизировать управление НСИ.

  • Исключить потери данных при интеграции.

  • Настроить автоматический контроль корректности данных в системе.

  • Обеспечить возможность запуска процесса создания заявки на изменение справочника из ERP-систем контура проекта, сохранив проверку на полноту и корректность данных.

  • Реализовать множество интеграций в режиме онлайн.

  • Обеспечить возможность настройки нормативного времени исполнения задач согласования и исполнения заявок.

  • Обеспечить возможность печати и экспорта/импорта справочных данных в табличном формате.

  • Поддерживать технологии интеграции REST API, SOAP и обмен через файл. Избегать COM-подключения 1С, внешних источников данных и прямого подключения к системе управления базами данных.

  • И прочее…

Мы в очередной раз посмотрели на этот список и сформулировали для себя простую цель: сократить трудоемкость и сроки реализации проектов за счет повторного использования типовых решений. Так появился набор универсальных модулей, реализованных как расширения конфигурации 1С. Ниже — о каждом из них.

Универсальный интеграционный модуль

Интеграции — одна из самых дорогих и неопределенных частей проекта. Именно здесь чаще всего возникает ощущение, что каждая новая задача уникальна. На практике — нет.

Мы создавали универсальный интеграционный модуль (УИМ) как единый инструмент управления всеми потоками данных. Его ключевая идея — построение прозрачной и гибкой схемы интеграционных потоков любой сложности без разработки.

Что же позволяет делать УИМ? Практически все: 

  • В один клик настроить передачу идентичных объектов между базами 1С (ERP–ERP.УХ).

  • В несколько кликов настроить передачу «подобных» объектов 1С: мэппинг реквизитов, поля поиска и прочее.

  • Без разработчика организовать обмены данными в произвольном формате JSON/XML.

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

  • Настраивать как интеграции «точка-точка», так и интеграции с использованием сервисных шин данных и брокеров сообщений.

  • Использовать произвольные алгоритмы для сложных случаев мэппинга реквизитов.

  • Передавать миллионы записей максимально эффективно, с отслеживанием и гарантией доставки.

  • Поддерживать отправку больших пакетов данных (например срез остатков на складах на заданную дату).

  • Использовать произвольный код сериализации и обработки входящих сообщений для сверхсложных интеграций.

Важный момент: в рамках УИМ разработаны готовые адаптеры для «1С:Шина», Kafka, RabbitMQ, Datareon и SAP PI.

Еще одна критичная вещь — прозрачность. Все ошибки фиксируются в отдельном логе интеграций, а не теряются в журнале регистрации.

На схеме исходящих потоков УИМ видно, как формируются и обрабатываются сообщения на стороне отправителя:

Схема входящих потоков показывает, как модуль принимает, проверяет и обрабатывает данные:

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

Интеграция с PLM

Отдельной задачей мы поставили себе универсализацию интеграции с PLM-системами (Product Lifecycle Management). Формально это частный случай и один из самых сложных на практике с точки зрения реализации. Мы сделали специализированное решение на базе УИМ, которое стандартизирует обмен с разными PLM-системами, включая Teamcenter, IPS, ЛОЦМАН:PLM, T-FLEX и 1С:PDM.

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

В результате интеграция PLM–ERP перестает быть сложным вызовом от проекта к проекту.

Значительным эффектом является стандартизация процессов, подходов и правил интеграции ERP–PLM и возможность плавно и безболезненно сменить PLM-систему (например, в рамках импортозамещения).

Модуль миграции данных

Миграция — еще одна зона, где «каждый раз заново» — стоит особенно дорого. Мы стандартизировали этот процесс через отдельный модуль, который управляет миграцией от начала и до конца.

Особенности модуля миграции:

  • Формирование и поддержание в актуальном состоянии реестра объектов миграции и статуса подготовки шаблонов.

  • Автоматическая генерация шаблонов Excel с детальным описанием правил заполнения реквизитов.

  • Обеспечение массовой загрузки данных из заполненных шаблонов в систему в один клик.

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

  • Возможность многопоточной загрузки данных и загрузки большого объема данных (>500 000 строк).

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

  • Возможность выгрузки и загрузки настроенных шаблонов из одной базы 1С
    в другую.

Ниже — архитектура модуля миграции:

По цифрам: нам удалось снизить затраты на разработку специальных средств миграции — с 40 часов на объект до нуля, а также снизить общие затраты на миграцию почти на 70%.

Модуль централизованной НСИ

Управление нормативно-справочной информацией — классическая боль практически любого проекта. И для случаев, когда необходимо построение ЦНСИ без использования отдельной MDM-системы, мы разработали модуль централизованной НСИ.

Он закрывает полный цикл задач: 

  • Процессы создания, согласования и выполнения заявок на создание/изменение элементов справочников.

  • Управление правилами распространения данных в системы-потребители.

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

  • Формирование и актуализация матрицы распределения ответственности за справочники.

  • Отслеживание статусов исполнения заявок в реальном времени.

  • Верификация и валидация заявок перед внесением изменений.

  • Гибкая аналитика и отчетность (отчеты по заявкам, время обработки заявок, статистика по исполнителям, гибкие фильтры).

Архитектура модуля:

По экономике эффект самый заметный. Мы экономим 80% на внедрении полноценной MDM-системы, а получаем, по сути, ту же функциональность без потери управляемости процессами НСИ.

Модуль оперативных контролей и прав

Последний блок — контроль действий пользователей. Типовая система распределения прав в 1С часто либо недостаточно гибкая, либо приводит к усложнению процесса работы и высокой нагрузке на производительность системы. Также, по опыту, около 20% времени на проектах уходит на реализацию различных контрольных процедур, мы часто слышим пожелания по типу: «А сделайте так, чтобы сотрудник склада не мог вот эту строчку изменить, а не то не дай бог он напортачит». Хуже того, потом все это превращается в непредсказуемый сценарий использования и неработающую систему, которая обложена вагоном различных контролей. Еще 20% времени потратят уже специалисты сопровождения, которые будут «выпиливать» эти контроли.

Мы сделали отдельный модуль, который позволяет управлять контролями декларативно, основные функции и возможности:

  • Обеспечение детализированного контроля доступа пользователей к критически важным операциям с возможностью гибкой настройки ограничений к реквизитам объектов и элементов форм.

  • Ограничение доступа к изменению реквизитов, элементам форм в соответствии с правилами.

  • Гибкая настройка механизмов распределения прав без необходимости перезапуска пользовательского сеанса.

  • Единый механизм контроля, совмещающий функционал контроля значений и доступности реквизитов с возможностью выбора момента выполнения контроля: при записи / при проведении.

  • Поддержка контролей по группам доступа.

  • Для работы модуля не требуется включение RLS.

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

Вот как реализован механизм применения правил:

По результатам: стоимость реализации контролей снижается примерно на 67%, а сопровождение становится предсказуемым — основные изменения больше не потребуют вмешательства в код.

Заключение

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

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

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

ссылка на оригинал статьи https://habr.com/ru/articles/1029894/