Получение данных отчета из другой базы.
При наличии нескольких баз РБД существует проблема получения данных в подчиненной базе из отчетов СКД, т.к. далеко не все данные присутствуют в текущей базе. Например: есть центральная база и периферийная, в центральной работает регламент по расчету себестоимости, вводятся доп. расходы и прочее, а в периферийной делаются только продажи, однако менеджерам нужно видеть актуальную себестоимость, мотивацию, рассчитанную на основании этих данных. Или руководитель хочет видеть продажи других магазинов, а документов в этой базе нет! (причем хотят видеть в динамике!). Какой выход из этой ситуации? Пускать их в основную базу будет неправильно, поэтому решено было сделать универсальный механизм для СКД отчетов.
Как он работает:
При компоновке данных вставляется специальная функция, которая будет сериализовать различные параметры отчета, передавать их в другую базу, выполнять отчет и возвращать параметры, которые нужно десереализовать в нашей базе.
Расшифровка также работает в этом механизме, однако если какого-то ссылочного объекта не будет в нашей базе, при попытке открытия будет выдано сообщение "Объект не найден", но само представление этих объектов в отчете будет видно.
В файле присутствует отчет с разработанным механизмом, который выводит справочник валюты (отчет может быть любой сложности). Все функции для удобства находятся в модуле менеджера, но лучше их разместить в общих модулях конфигурации, тогда изменение отчета займет всего 3 строки кода. Также необходимо отметить, что схему компоновки у отчета не придется переделывать, здесь не используется внешний набор данных, только сериализация.
Параметры подключения находятся в функции "ПодключитьсяКБазе()", их нужно указать для центральной базы. В центральной базе должен быть опубликован веб-сервис с методом GetReport(). (тип возвращаемого значения string (http://www.w3.org/2001/XMLSchema)). Код метода присутствует в модуле объекта, его нужно будет перенести в веб-сервис, в базу, к которой выполняется подключение. Также нужно учитывать, что СКД должна выполняться в базе источнике.
Есть более старая разработка Формирование СКД отчетов в другой базе с возвратом результата через COM-соединение. В ней обмен происходит через COM-соединение. Разработка оказалось довольно популярной, поэтому переделал механизм обмена на более современный web-сервис. Основные преимущества в отличии от COM:
- Скорость обмена
- Не требует лицензии на соединение