УТ 10.3: как отдать данные во внешнюю систему, если конфигурацию трогать нельзя
Обычные формы, платформа старая, веб-сервисы поднимать некому. Разбираем, что реально работает на УТ 10.3 и сколько это стоит по времени.
Задача
Клиент сидит на "Управлении торговлей" 10.3. База живая, в ней работают, менять ее никто не даст: последняя доработка была пять лет назад, программиста, который ее делал, давно нет. А данные наружу нужны: сайт, личный кабинет клиента, дашборд руководителю или просто регулярная выгрузка остатков.
Отдельная беда - платформа. На УТ 10.3 часто стоит 8.3.5 или около того, на Windows, где нет современного шифрования. Половина готовых решений там просто не запускается.
Как это решают обычно
Веб-сервисы и OData. На управляемых формах это рабочий путь. На УТ 10.3 их нужно писать руками в конфигураторе, а потом публиковать базу на веб-сервере. То есть снять конфигурацию с поддержки или поставить на поддержку с изменениями, поднять Apache или IIS, попросить белый IP, пробросить порты. На практике это две-три недели и разговор с сисадмином, который открывать периметр не хочет.
Обмен файлами. Выгрузка в XML или CSV по расписанию, забор с диска или по FTP. Работает, но данные всегда вчерашние, при сбое никто не узнает, а любое изменение формата ломает обе стороны.
COM-соединение. Живет, пока внешняя система стоит на той же машине. Как только сервер переезжает или обновляется платформа, все рассыпается.
Как быстрее
Сервис "Жёлтый мост" заходит с другой стороны: наружу ходит сама база. В нее ставится внешняя обработка, она по расписанию спрашивает у шлюза, есть ли задание, выполняет запрос внутри базы и отдает результат. Входящих соединений в сеть клиента нет вообще, поэтому белый IP, проброс портов и публикация не нужны.
Для УТ 10.3 важны три вещи:
- есть сборка под обычные формы - та же, что для УПП 1.3 и КА 1.1, отдельно от управляемых;
- есть сборка под платформу 8.3.5, а для Windows без современного шифрования - вариант с локальным прокси рядом;
- конфигурация не меняется: это внешняя обработка, а не расширение, поддержка не слетает и обновления не ломаются.
Запрос выполняется внутри базы на языке запросов 1С. Значит, доступны виртуальные таблицы остатков и оборотов, соединения, временные таблицы. Остатки берутся как остатки, а не складываются вручную из движений регистра.
| Номенклатура | Склад | Остаток | Резерв | Доступно |
|---|---|---|---|---|
| Труба ВГП 25 | Основной | 480 | 60 | 420 |
| Труба ВГП 32 | Основной | 125 | 0 | 125 |
| Отвод 90 | Транзитный | 0 | 0 | 0 |
Как это сделать
1. Зарегистрируйтесь в кабинете и скачайте обработку для обычных форм. Если платформа 8.3.5 или ниже, возьмите сборку для старых платформ.
2. Откройте обработку в базе как обычный внешний отчет, вставьте ключ из кабинета и включите обмен. Пока окно открыто, база на связи; для постоянной работы обмен ставится регламентным заданием.
3. Внешняя система обращается к API сервиса по ключу и получает данные. Запрос пишется на языке 1С, отбор и периоды указываете вы.
Права у обработки ровно те, что у пользователя, под которым она запущена. Заведите отдельного пользователя с нужными правами - и наружу не уйдет ничего сверх них.
Что стоит знать заранее
Запросы к базе выполняются по очереди, по одному. Тяжелая выборка без отбора займет базу надолго - это обычное правило работы с 1С, и внешняя система ему тоже подчиняется. Ставьте период и ограничение числа строк.
Если обработка закрыта и регламентное задание не настроено, база не на связи: запрос подождет в очереди и вернет понятную ошибку, а не пустой ответ.
Не уверены, как подключается именно ваша база - в 1С:Фреш, в аренде, своя серверная или файловая? Выберите свой случай на главной: покажем, что мешает и что меняет мост.