УПП 1.3: отдать данные во внешнюю систему, не трогая конфигурацию
База большая, формы обычные, доработок за годы накопилось столько, что снимать с поддержки страшно. Разбираем, как забрать из УПП данные наружу и где она подводит сильнее, чем УТ.
Задача
"Управление производственным предприятием" 1.3 - это обычно база, которой десять лет и больше. В ней считают себестоимость, ведут производство, закрывают месяц, и она живая: в ней работают каждый день. Конфигурация давно на поддержке с изменениями, история доработок известна частично.
Наружу при этом данные нужны: остатки на сайт, план производства в дашборд, сводка руководителю, обмен с системой качества или с ТСД. Трогать конфигурацию ради этого никто не разрешит.
Как это решают обычно
Веб-сервисы. На УПП их пишут руками в конфигураторе и публикуют базу на веб-сервере. Значит, изменение конфигурации, Apache или IIS, белый IP и проброс портов. Отдельная сложность именно у УПП: базы часто стоят в закрытом контуре производства, и открывать его наружу не даст служба безопасности.
Выгрузка файлами по расписанию. Работает, но данные всегда вчерашние. Для остатков склада это терпимо, для производственного заказа - уже нет.
COM и прямой доступ к SQL. Прямое чтение таблиц SQL особенно соблазнительно на больших базах и особенно опасно: структура хранения 1С не документирована, итоги считаются не так, как кажется, а обновление платформы ломает запросы молча. Ошибку в себестоимости вы увидите не сразу.
Как быстрее
Сервис "Жёлтый мост" разворачивает направление: наружу ходит сама база. В нее ставится внешняя обработка, она спрашивает у шлюза, есть ли задание, выполняет запрос внутри базы и возвращает результат. Входящих соединений в контур нет, поэтому белый IP и публикация не нужны, а служба безопасности видит только исходящий HTTPS.
Для УПП 1.3 существенны три вещи:
- сборка под обычные формы - та же, что для УТ 10.3 и КА 1.1: у УПП нет управляемого интерфейса, и обработка с управляемой формой в ней просто не откроется;
- сборка под старые платформы - УПП часто живет на 8.3.5 и ниже, где нет встроенной работы с JSON;
- конфигурация не меняется: это внешняя обработка, а не расширение. Поддержка не слетает, сравнение с типовой остается чистым.
Запрос выполняется внутри базы на языке запросов 1С, поэтому доступны виртуальные таблицы остатков и оборотов, соединения и временные таблицы. Себестоимость и остатки берутся штатными средствами, а не собираются вручную из движений.
| Материал | Склад | Остаток | В резерве | Доступно |
|---|---|---|---|---|
| Лист 3 мм | Цех 1 | 1240 | 300 | 940 |
| Пруток 12 | Цех 1 | 85 | 0 | 85 |
| Краска серая | Склад сырья | 0 | 0 | 0 |
Как это сделать
1. Зарегистрируйтесь в кабинете и скачайте обработку для обычных форм. Если платформа 8.3.5 или ниже, возьмите сборку для старых платформ.
2. Откройте обработку в базе как внешнюю, вставьте ключ из кабинета и включите обмен. Пока окно открыто, база на связи. Для постоянной работы обмен ставится регламентным заданием.
3. Внешняя система обращается к API сервиса по ключу. Текст запроса пишете вы, отбор и период указываете сами.
Права у обработки ровно те, что у пользователя, под которым она запущена. На УПП это особенно полезно: заведите отдельного пользователя, дайте ему чтение нужных объектов, и наружу не уйдет ничего сверх них.
Что стоит знать заранее
УПП подводит не интеграцией, а нагрузкой. База большая, запросы к регистрам за год идут минутами, а во время закрытия месяца она занята своими расчетами. Ставьте период и ограничение строк, тяжелые своды считайте ночью, а не в рабочий день.
Запросы к одной базе выполняются по очереди, по одному. Если внешняя система шлет их пачками, вторая половина будет ждать. Для потока запросов держите очередь у себя, а не в шлюзе.
Отдельная особенность старых баз: доработки прошлых лет. Имена объектов и реквизитов в вашей УПП могут отличаться от типовых, поэтому первый запрос всегда проверяйте на живой базе, а не по справке.
Не уверены, как подключается именно ваша база - в 1С:Фреш, в аренде, своя серверная или файловая? Выберите свой случай на главной: покажем, что мешает и что меняет мост.