Когда в третий раз за год реализуешь интеграцию 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/