Главная / Статьи / 1С
7 мин чтения

Обмен данными с 1С: пять способов связать её с системой

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

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

Что значит «настроить обмен» и чем это лучше выгрузки в Excel?

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

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

Дальше работает служба регистрации изменений. Режим задаётся отдельно для каждого объекта, который участвует в обмене, и документация 1С описывает это так: если разрешена авторегистрация, система сама отслеживает выполняемые изменения и формирует набор данных, которыми нужно обменяться. После подтверждения приёма записи регистрации удаляются. Отсюда же берётся устойчивость к обрывам связи — блог фирмы «1С» пишет, что нумерация сообщений позволяет платформе понять, какие данные уже переданы, и «обеспечивается гарантированная доставка даже при ненадежных каналах передачи и потере сообщений».

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

Пять способов связать 1С с внешней системой

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

Механизм Что это Нужно программировать в 1С Когда брать
EnterpriseData Готовый обмен бизнес-документами в формате XML, встроен в типовые программы 1С Нет Обмен с типовой «Бухгалтерией», «Управлением торговлей», «Комплексной автоматизацией»
Стандартный интерфейс OData Автоматический доступ к справочникам и документам по сети Нет, включается галочкой в конфигураторе Забрать остатки, номенклатуру, статусы заказов
HTTP-сервисы Свои методы под конкретные действия, ответ формирует разработчик Да Создать документ, закрыть смену, провести списание
Web-сервисы (SOAP) Старший брат HTTP-сервисов, ориентирован на действия Да Когда внешняя система умеет только SOAP
Файловый обмен Выгрузка и загрузка XML или CSV по расписанию Обычно нет Базовые версии, слабый канал, простые справочники

Отдельно стоит COM-соединение. Механизм рабочий и встречается часто, но фирма «1С» относит его к устаревшим: в блоге компании COM назван механизмом, который «не рекомендуется использовать в новых решениях» и оставлен ради обратной совместимости. Работает он только на Windows.

Я в новых проектах COM не беру. Систему предстоит сопровождать годами, а у механизма, который сам разработчик называет устаревшим, будущего нет.

Механизм выбирают внутри технического задания, вместе с составом данных и частотой. У меня оно собирается через бота без оплаты: на выходе список данных, способ и частота обмена — с этим листом можно идти к любому подрядчику.

Чем OData отличается от HTTP-сервиса?

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

На примере это видно сразу. «Покажи остаток по складу» — работа для OData, там достаточно прочитать таблицу движений, которую 1С называет регистром. «Оприходуй выпуск по наряду №214 с распределением по материалам» — работа для HTTP-сервиса, потому что это бизнес-логика, а не чтение таблицы.

Официальная страница платформы перечисляет, чем HTTP-сервисы удобнее старых SOAP-сервисов:

Простота программирования клиента таких сервисов; Потенциально меньший объем передаваемых данных; Потенциально меньшая вычислительная нагрузка; HTTP-сервисы ориентированы на «ресурсы», в то время как SOAP сервисы ориентированы на «действия».

— Фирма «1С», «HTTP-сервисы», раздел «Интеграция» платформы 1С:Предприятие

У OData есть и обратная сторона. Интерфейс отдаёт данные в том виде, в каком они лежат в базе, и своей логики в нём не появится — за неё отвечает HTTP-сервис. Вторая беда — нагрузка: на Инфостарте предупреждают, что OData позволяет строить фильтры и выборки, но не каждый запрос будет лёгким для рабочей базы, поэтому нужны лимиты и мониторинг. Обе особенности лечатся на стороне внешней системы, знать про них лучше до старта.

Что нужно подготовить на своей стороне?

Для OData, HTTP-сервисов и web-сервисов базу 1С нужно опубликовать на веб-сервере. Документация фиксирует, что публикация HTTP-сервисов выполняется так же, как публикация web-сервисов. На обычном языке это означает: нужен компьютер или сервер, видимый по сети, и специалист, который его настроит. По моему опыту, публикация занимает несколько часов, когда сервер уже есть, и день-два, когда его поднимают с нуля.

Второй вопрос — версия, и здесь важно не перепутать две вещи. Платформа «1С:Предприятие» — движок, на котором всё работает. Прикладное решение поверх движка и есть конфигурация, то, что бухгалтер называет просто «наша 1С». Базовые конфигурации дешевле, но менять их нельзя: официальная страница сравнения версий «1С:Бухгалтерии» указывает, что в базовой «не поддерживается настройка программы под отраслевые особенности предприятия». Своего HTTP-сервиса там не появится. Остаются штатный EnterpriseData и файловый обмен — этого хватает для передачи документов и справочников.

Что собрать до разговора с подрядчиком:

  1. Название и версию конфигурации. «1С:Бухгалтерия 8, ред. 3.0», «Управление нашей фирмой», «Управление торговлей 11» — от этого зависит, есть ли готовый механизм обмена.
  2. Версию платформы. Она видна в меню «О программе». Стандартный интерфейс OData доступен начиная с версии 8.3.5.
  3. Где стоит база. Свой сервер, компьютер в бухгалтерии или аренда у провайдера. Для арендованной 1С возможность публикации зависит от тарифа — это вопрос к провайдеру, и его лучше задать заранее.
  4. Кто ведёт 1С. Штатный бухгалтер, приходящий специалист или франчайзи. С этим человеком подрядчику предстоит договариваться о доступах.
  5. Снята ли конфигурация с поддержки. Если в 1С уже есть доработки, это меняет и сроки, и цену; подробнее — в разборе про доработку 1С и отдельную систему.

Чего нельзя делать ни в коем случае?

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

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

— SimbirSoft, «Интеграция с 1С: то, о чем не рассказывают в книгах», Хабр

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

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

Как понять, что обмен встал?

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

Файловый обмен тут слабее прочих: специалисты SimbirSoft отмечают, что его мониторинг очень сложно контролировать. Вторая причина — плановые остановки. У той же команды сказано, что бесперебойную работу 24/7 для платформы 1С обеспечить сложно: раз в пару недель выходят регламентированные обновления, и на время установки они останавливают работу.

Три вещи, которые нужно потребовать от подрядчика на этапе технического задания:

  1. Журнал обменов с датой, объёмом и результатом каждой сессии — чтобы можно было открыть и посмотреть.
  2. Оповещение при сбое в мессенджер или на почту. Запись в лог не считается: логи никто не открывает, пока не хватились данных.
  3. Повтор после обрыва — обмен должен досылать непереданное сам, без ручного запуска.

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

Источники

Услуги по теме
Есть похожая задача по автоматизации?
Бот бесплатно соберёт техзадание по вашим процессам, или оставьте заявку на звонок — разберём за 15 минут.
Алексей Корытченко
Алексей Корытченко
Инженер по автоматизации производств. Об авторе · канал @alex_automates