Экспертный блог 8 мин чтения

Как подключиться к старой программе без API: пять способов

Пять способов подключиться к своей старой программе, у которой нет описания интерфейса: файловый обмен, чтение копии базы, стандартный интерфейс (для 1С OData), свой сервис и имитация действий оператора. Что я не делаю, как проверяю на копии и о чём спросить про права и лицензии.

интеграциястарая программаOData1Скопия базыавтоматизация

Коротко (TL;DR)

  • Подключиться к программе без описания интерфейса можно пятью путями, и я иду от безопасного к рискованному: файловый обмен, чтение копии базы, стандартный интерфейс самой программы, свой небольшой сервис внутри неё, имитация действий оператора.
  • Любой способ сначала проверяю на копии базы. Писать в рабочую базу напрямую, минуя саму программу, я не берусь: так ломается учёт, и гарантий от поставщика после этого нет.
  • Для 1С есть стандартный интерфейс OData, он включается без доработки конфигурации. Подробности в отдельной статье, ссылка ниже.
  • Всё это про свою систему или систему, на которую у вас есть права. Защиту, лицензии и чужие сервисы я не обхожу.
Хотите внедрить это у себя?

Сделаю под ключ: разберу задачу, назову срок и цену. Чтобы начать, напишите в Telegram одной фразой.

Автоматизация процессов

Чтобы подключиться к старой программе без API, найдите то место, где она уже отдаёт данные сама: выгрузку в файл, стандартный интерфейс или копию базы. Если ни одного нет, остаётся маленький сервис внутри программы или робот, который повторяет действия оператора. Я перебираю эти варианты по очереди, от самого безопасного, и останавливаюсь на первом, который закрывает задачу.

Что можно: пять способов по порядку

Рамка у меня одна: это ваша программа или система, на которую у вас есть права, а документации и разработчика нет. Для такой ситуации у меня есть пять способов, и чем ниже в списке, тем больше риска и тем дороже сопровождение.

  1. Файловый обмен и выгрузки, которые программа делает сама.
  2. Чтение копии базы данных.
  3. Стандартный интерфейс программы, если он есть.
  4. Небольшой свой сервис или расширение внутри программы, если есть доступ к её конфигурации.
  5. Имитация действий оператора как последнее средство.

Способ 1: файлы и выгрузки

Почти любая учётная программа умеет что-то выгружать: отчёт в Excel, файл в CSV или XML для банка, обмен с соседней базой. Это уже готовый интерфейс, просто его не называют API. Я смотрю, какие выгрузки есть в меню, какие настроены на расписание, и что лежит в папках обмена.

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

Способ 2: чтение копии базы

Если выгрузок мало, я прошу копию базы данных и читаю её у себя. Ключевое слово здесь копия: рабочую базу я не открываю, пока не выяснил, как она устроена. Для популярных движков копию делают штатными средствами. Например, у PostgreSQL утилита pg_dump снимает согласованный снимок, не блокируя читателей и писателей. У SQLite есть Online Backup API, который копирует даже работающую базу, а открыть файл только для чтения можно параметром mode=ro.

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

Ограничение: так можно только читать. Копия отстаёт от рабочей базы на время между выгрузками, и записать что-то обратно через неё нельзя. Для отчётов и панелей этого хватает, для оформления заказа из бота нет.

Способ 3: стандартный интерфейс

У многих систем интерфейс есть, просто о нём не знают. У 1С это OData: стандартный REST-интерфейс публикуется вместе с базой на веб-сервере и открывает объекты по HTTP. Конфигурацию править не нужно, нужен список объектов, которые вы готовы отдать, и пользователь с ограниченными правами. Как это сделать пошагово и где подводные камни, написано в статье про OData в 1С, здесь повторять не буду.

Так я подключил ИИ-бухгалтера к базе 1С для стенда форума: в проекте конфигурацию не меняли, всё шло через стандартный интерфейс. Так же устроен прототип задач для сотрудников в телефоне: в проекте приложение читает и обновляет стандартные задачи типовой 1С. Он остаётся прототипом, тиражного продукта пока нет.

Способ 4: свой сервис внутри программы

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

Это самый надёжный способ записи: данные меняет сама программа по своим правилам. Но он требует исходников или права вносить доработки, и не всякий поставщик это допускает.

Способ 5: имитация действий оператора

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

Слабые места известны заранее. Сдвинулась кнопка после обновления, вылезло окно с предупреждением, сменилось разрешение экрана, и робот вводит данные не туда. Поэтому у такого робота всегда есть проверка результата и остановка при отклонении, а работает он под отдельной учётной записью с минимальными правами.

Чего я не делаю

  • Не пишу в рабочую базу напрямую, минуя программу. Программа держит в базе связи, итоги и регистры, о которых снаружи не знаешь. Запись в таблицы может молча сломать остатки, и найдут это при закрытии периода. Для записи у меня способы 3 и 4.
  • Не работаю на боевой базе без копии. Первый запуск любого обмена идёт на копии.
  • Не обхожу защиту и лицензионные ограничения. Если для интерфейса нужна лицензия или права, я так и скажу и предложу законный путь: докупить, договориться с поставщиком или выбрать способ без этого.
  • Не подключаюсь к чужим системам без согласия владельца. Если права на систему у вас нет, мы сначала решаем это с её владельцем.

Проверка на копии

Копия базы находит то, чего не видно на демо-данных. Когда я подключал паллетный учёт, копия рабочей базы показала формат дат, который 1С отдаёт по-своему, и обратный порядок работы склада: реализацию заводят утром, паллету собирают днём. Одно моё правило про даты пришлось переписать до того, как оно попало на склад.

Порядок у меня такой. Копия поднимается отдельно от рабочей базы. На ней я прогоняю чтение и запись, смотрю, что изменилось в документах, и пробую плохие случаи: пустые поля, повтор, обрыв связи. В проекте с ИИ-бухгалтером все проверки и откат я сначала гонял на копии типовой базы и только потом отдавал. Если у вас персональные данные клиентов, копию делаем без них или с обезличиванием: сведения о том, как обрабатывать данные в тестовых средах, лучше согласовать с тем, кто отвечает у вас за 152-ФЗ.

Права и лицензии

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

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

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

Как я это делаю

Начинаю с короткого разбора. Прошу доступ на чтение к копии базы, список выгрузок и описание задачи: что должно двигаться между системами и в какую сторону. За один-два дня составляю карту: какие способы доступны, что каждый даёт и чем рискуем. Потом предлагаю самый безопасный способ, который закрывает задачу, и показываю его работу на копии.

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

Сколько это стоит

Цены по моему прайсу. Разбор системы и карта способов подключения входят в технический аудит от 50 000 ₽, срок от 1 недели. Сам обмен данными и документами с разработкой интеграции: автоматизация процессов и документов от 60 000 ₽, срок от 2 недель. Если задача небольшая или нужна консультация по ходу, работаю по часам, от 3 000 ₽/час. Точную цену называю после того, как увижу, какие способы доступны у вас: она зависит от самой программы.

Частые вопросы

Можно ли читать базу старой программы напрямую?

Читать можно, если это копия или у вас есть права и вы уверены, что чтение не мешает работе. Я предпочитаю копию, обновляемую по расписанию: рабочая база остаётся в покое, а ошибка в моём запросе ничему не повредит.

А если у программы нет ни выгрузок, ни интерфейса?

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

Нужен ли разработчик программы?

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

Это законно?

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

Коротко о главном

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

Если у вас есть программа, к которой никто не знает, как подключиться, напишите мне в Telegram с кодовым словом «СТЫКОВКА»: @chimitdorzhi. Посмотрю, какие способы у вас доступны, и скажу честно, какой из них безопаснее.

Обсудим вашу задачу

Подключение старой программы к сайту, боту и отчётам

Напишите одной фразой, что нужно. Отвечу, что подойдёт, сколько займёт и сколько стоит. Сообщение уже подготовлено.

  • Разбор системы: какие способы подключения доступны
  • Чтение копии базы по расписанию без риска для учёта
  • Обмен через стандартный интерфейс или свой сервис
  • Проверка на копии, узкие права, журнал и откат
Пишу о разработке, ИИ и законах для бизнеса

Разборы, кейсы и практика — без воды. Выходит регулярно, читать 3–5 минут.

Готовые решения под ключTurnkey solutionsSoluciones llave en mano交钥匙解决方案Түлхүүр гардуулах шийдэл 451 готовых IT-решений для бизнеса451 ready-made IT solutions for business451 soluciones IT listas para empresas451 个面向企业的现成 IT 解决方案Бизнест зориулсан 451 бэлэн IT шийдэл Автоматизация, боты, AI, 152-ФЗ и платформы · бесплатная консультацияAutomation, bots, AI, data privacy and platforms · free consultationAutomatización, bots, IA, privacidad de datos y plataformas · consulta gratis自动化、机器人、AI、数据合规与平台 · 免费咨询Автоматжуулалт, бот, AI, өгөгдлийн хамгаалалт ба платформ · үнэгүй зөвлөгөө Смотреть каталогView catalogVer catálogo查看目录Каталог үзэх