Что значит «настроить обмен» и чем это лучше выгрузки в 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 сервисы ориентированы на «действия».
У OData есть и обратная сторона. Интерфейс отдаёт данные в том виде, в каком они лежат в базе, и своей логики в нём не появится — за неё отвечает HTTP-сервис. Вторая беда — нагрузка: на Инфостарте предупреждают, что OData позволяет строить фильтры и выборки, но не каждый запрос будет лёгким для рабочей базы, поэтому нужны лимиты и мониторинг. Обе особенности лечатся на стороне внешней системы, знать про них лучше до старта.
Что нужно подготовить на своей стороне?
Для OData, HTTP-сервисов и web-сервисов базу 1С нужно опубликовать на веб-сервере. Документация фиксирует, что публикация HTTP-сервисов выполняется так же, как публикация web-сервисов. На обычном языке это означает: нужен компьютер или сервер, видимый по сети, и специалист, который его настроит. По моему опыту, публикация занимает несколько часов, когда сервер уже есть, и день-два, когда его поднимают с нуля.
Второй вопрос — версия, и здесь важно не перепутать две вещи. Платформа «1С:Предприятие» — движок, на котором всё работает. Прикладное решение поверх движка и есть конфигурация, то, что бухгалтер называет просто «наша 1С». Базовые конфигурации дешевле, но менять их нельзя: официальная страница сравнения версий «1С:Бухгалтерии» указывает, что в базовой «не поддерживается настройка программы под отраслевые особенности предприятия». Своего HTTP-сервиса там не появится. Остаются штатный EnterpriseData и файловый обмен — этого хватает для передачи документов и справочников.
Что собрать до разговора с подрядчиком:
- Название и версию конфигурации. «1С:Бухгалтерия 8, ред. 3.0», «Управление нашей фирмой», «Управление торговлей 11» — от этого зависит, есть ли готовый механизм обмена.
- Версию платформы. Она видна в меню «О программе». Стандартный интерфейс OData доступен начиная с версии 8.3.5.
- Где стоит база. Свой сервер, компьютер в бухгалтерии или аренда у провайдера. Для арендованной 1С возможность публикации зависит от тарифа — это вопрос к провайдеру, и его лучше задать заранее.
- Кто ведёт 1С. Штатный бухгалтер, приходящий специалист или франчайзи. С этим человеком подрядчику предстоит договариваться о доступах.
- Снята ли конфигурация с поддержки. Если в 1С уже есть доработки, это меняет и сроки, и цену; подробнее — в разборе про доработку 1С и отдельную систему.
Чего нельзя делать ни в коем случае?
Писать напрямую в базу данных 1С в обход платформы — самая дорогая ошибка в этой теме. Структура базы закрыта, она меняется с обновлениями, и внешняя запись портит данные тихо, без сообщения об ошибке. Соблазн при этом понятен: прямое подключение делается за час и ничего настраивать в самой 1С не требует.
Моя рекомендация — никогда так не делайте. При прямом подключении к базе данных 1С, Java-приложение может косвенно повлиять на работу 1С и нарушить целостность данных, что приведет к сбоям и ошибкам.
Там же отмечено, что структура базы 1С закрыта, а её изменения непредсказуемы из-за обновлений платформы и конфигурации. Есть и лицензионная сторона: разработчик Михаил Калимулин на Хабре предупреждает, что попытка обойти платформу и работать с данными 1С только со стороны внешней системы «не удастся сделать без нарушения лицензионного соглашения с 1С». К штатным механизмам из таблицы выше это не относится — они для того и сделаны.
Если подрядчик предлагает «просто подключиться к базе напрямую, так быстрее» — спросите, что будет с этим подключением после ближайшего обновления конфигурации. Быстрее действительно будет, а разбираться с испорченными данными придётся вам, причём без сообщения об ошибке.
Как понять, что обмен встал?
Обмен ломается без единого сигнала. Файл не выгрузился, сервис вернул ошибку, база была недоступна — и данные просто перестали ходить. Узнают об этом обычно в конце месяца, когда бухгалтер не находит выпуск продукции за две недели. Поэтому контроль обмена закладывают в техническое задание с самого начала, вместе с самим обменом.
Файловый обмен тут слабее прочих: специалисты SimbirSoft отмечают, что его мониторинг очень сложно контролировать. Вторая причина — плановые остановки. У той же команды сказано, что бесперебойную работу 24/7 для платформы 1С обеспечить сложно: раз в пару недель выходят регламентированные обновления, и на время установки они останавливают работу.
Три вещи, которые нужно потребовать от подрядчика на этапе технического задания:
- Журнал обменов с датой, объёмом и результатом каждой сессии — чтобы можно было открыть и посмотреть.
- Оповещение при сбое в мессенджер или на почту. Запись в лог не считается: логи никто не открывает, пока не хватились данных.
- Повтор после обрыва — обмен должен досылать непереданное сам, без ручного запуска.
Проверить это можно в первую же неделю: выключите обмен на час, включите обратно и посмотрите, догнал ли он пропущенное сам. Догнал и оставил запись — сделано правильно. Общая картина связки учёта и цеха разобрана в опорной статье про интеграцию с 1С, а уход от ручного переноса цифр — в разборе про CRM и Excel.
Источники
- 1С — «План обмена», объекты конфигурации платформы 1С:Предприятие
- 1С — «HTTP-сервисы», раздел «Интеграция» платформы 1С:Предприятие
- Хабр, блог фирмы «1С» — «Способы интеграции с 1С»
- 1С — «1С:Бухгалтерия 8», сравнение версий
- Хабр, SimbirSoft — «Интеграция с 1С: то, о чем не рассказывают в книгах»
- Хабр, Михаил Калимулин — «Способы интеграции 1С с внешним миром. Актуальный список»
- Инфостарт — «API-first в 1С: REST и OData как архитектурный стандарт»