Технология подключения слоев к базе данных АС Бюджет через отчетные алгоритмы Оглавление Настройка соединения с АС Бюджет ......................................................................................................... 1 Настройка ресурсных шаблонов ................................................................................................................ 2 Настройка слоев по ресурсным шаблонам ............................................................................................... 5 Расширенные возможности технологии ................................................................................................... 7 Задание постоянных ограничений выборки на клиенте ..................................................................... 7 Задание постоянных ограничений выборки на сервере ..................................................................... 7 Создание диалога запроса параметров ограничений ......................................................................... 7 Получение данных из АС Бюджет без использования ресурсных шаблонов .................................... 9 Настройка соединения с АС Бюджет Для установления соединения с АС Бюджет необходимо наличие следующих компонентов: 1. ScriptWP.exe – в каталоге OCX (сервер, обеспечивающий выполнение АБЛ-скриптов в среде АС Бюджет) 2. Бюджет\Объекты\Обработка\Скрипты\Внешние\ВыборкаИзРесурса1 – в удаленном реестре АС Бюджет (АБЛ-скрипт, выполняющий выборку данных с использованием отчетных алгоритмов) В базе данных Планирования необходимо выполнить следующие настройки: 1 При использовании отдельных удаленных реестров для АС «Бюджет» и АС «Планирование расходной части бюджета», скрипт должен находиться в удаленном реестре АС Бюджет. 1 1. В слое «Базы данных» зарегистрировать подключение к базе данных АС Бюджет: a. Имя базы может быть произвольным b. Тип базы данных выбрать из справочника: ABL c. В параметрах базы данных указать строку подключения к базе данных (аналогично той, которая прописывается в файле Workplace.ini) 2. В слое «Пользователи баз данных» настроить соответствие пользователей, которые будут работать с данными исполнения, с пользователями АС Бюджет: a. Имя базы данных выбирается из справочника b. Локальное имя пользователя – указывается пользователь, который будет подключаться к АС Бюджет для выборки данных c. Удаленное имя пользователя – имя пользователя, под которым локальный пользователь будет подключаться к АС Бюджет d. Пароль удаленный – пароль удаленного пользователя e. Спросить логин\пароль - флаг устанавливается, если необходимо запрашивать пароль при каждом соединении с АС Бюджет. Если флаг установлен, тогда пароль указывать не нужно.2 Настройка ресурсных шаблонов 1. Ресурсные шаблоны размещаются в удаленном реестре АС Бюджет, поэтому для создания шаблона запускаем АС Бюджет 2. Для создания шаблона потребуются clm-файлы из папки с отчетами АС Бюджет, поэтому необходимо убедиться, что в АС Бюджет корректно настроен путь к шаблонам. 2 Если флаг «Спросить логин\пароль» установлен, но диалог не отображается при подключении, значит в вашей версии отсутствует контроллер, отвечающий за показ диалога, либо контроллер реализован в виде заглушки или нестандартно. В этом случае подключение может быть установлено со стандартными параметрами: SYSDBA\masterkey 2 3. Создаем новый ресурсный шаблон в редакторе реестра АС Бюджет: a. В редакторе реестра находим ветку Бюджет\Ресурсы\Выборки\Внешние (если такой ветки нет, тогда создаем ее) b. Добавляем новое значение. Имя значения будет именем ресурсного шаблона. c. Устанавливаем у нового значения тип – Раскладка 4. Заходим в редактор раскладки и настраиваем шаблон: a. Сначала раскладка пустая. Для создания новой раскладки заходим в меню: Файл-> Открыть 3 b. Выбираем CLM-файл с описанием колонок, из которого будем выбирать колонки в ресурсный шаблон c. Выбираем колонки из стандартных 5. При необходимости производим дополнительные настройки колонок, как при создании шаблона отчета. У колонок с датами обязательно необходимо снять признак разыменовки, иначе потом в слое получим неправильные даты: 4 6. Сохраняем шаблон и закрываем редактор Настройка слоев по ресурсным шаблонам 1. На интерфейсе «Слои» создаем новый слой: a. Имя слоя - задаем произвольное b. Тип слоя - рекомендуется использовать код 92.03.xx.xx, специально зарезервированный под слои для импорта данных из АС Бюджет c. Таблица в БД – строка в формате: <Имя БД>.<Имя макроса>:<Имя шаблона> , где <Имя БД> - имя, под которым зарегистрировали базу в слое «Базы данных» <Имя макроса>3 - имя макроса, который будет выполняться на сервере ScriptWP <Имя шаблона> - имя ресурсного шаблона d. Только для чтения – рекомендуется установить, т.к. такие слои не умеют сохранять данные. e. Многоверсионный – не устанавливать, т.к. в АС Бюджет нет многоверсионности4 f. Алиас – рекомендуется использовать пространство имен «Бюджет.ИмпортИсполнения», специально зарезервированное под слои для импорта данных из АС Бюджет5. 3 для выбора данных через ресурсный шаблон используется макрос «ВыборкаИзРесурса» В АС Бюджет есть элементы многоверсионности, но они основаны на иных принципах, несовместимых со слойницей. 5 При разработке слоев под конкретного клиента необходимо использовать пространство имен с названием региона (города, района и т.д.). Например: «ХМАО.Бюджет.ИмпортИсполнения.СлойКассовогоРасхода». Более подробно см. рекомендации по именованию компонентов. 4 5 2. Заполняем детализацию слоя: a. Добавляем в слой поля, которые будут связаны с колонками ресурсного шаблона. При этом не все колонки ресурсного шаблона могут быть отражены в слое. Также в слое могут быть описаны дополнительные вычислимые поля. b. Позиция, имя поля и название колонок может быть произвольным c. Имя поля в БД необходимо заполнить в соответствии с именами колонок в ресурсном шаблоне 3. Теперь можно перейти на интерфейс «Данные линейно» и проверить слой. 6 Расширенные возможности технологии Задание постоянных ограничений выборки на клиенте Для слоя, выбирающего данные через ресурсный шаблон, можно задать постоянные параметры ограничений, которые будут передаваться отчетным алгоритмам АС Бюджет. Для этого необходимо на интерфейсе «Данные линейно» задать имена и значения параметров для вашего слоя. Например: - по этим параметрам слой кассового расхода будет всегда отбирать данные по КЭСР 2xx и по дате принятия с 01.01.2008 по 01.01.2009 (значение параметра ТипДатыУнивер=4 означает, что по датам нужно ограничить именно дату принятия, т.к. помимо даты принятия могут накладываться ограничения на даты документа, даты ввода и т.п.). При задании органичений в поле «Тип фильтра» нужно обязательно указывать значение «Ограничение выборки», чтобы данное ограничение было передано отчетным алгоритмам. Значение «Фильтр» также можно использовать, но в этом случае ограничение будет накладываться на клиенте после выборки всех данных через отчетные алгоритмы. Из-за этого фильтр работает значительно медленнее, чем ограничение выборки, но зато позволяет накладывать ограничения, которые не могут быть обработаны отчетными алгоритмами (например, по вычислимым полям слоя). Задание постоянных ограничений выборки на сервере Постоянные ограничения для отчетных алгоритмов можно задать в ресурсном шаблоне (раскладке) на странице «Параметры-ограничения». Постоянные ограничения на сервере являются более «жесткими» ограничениями, чем на клиенте: если ограничение задано на сервере, то клиент уже никак не сможет получить данные в обход этого ограничения без создания нового ресурсного шаблона. При задании ограничений на клиенте можно настроить несколько слоев, использующих один и тот же ресурсный шаблон, но с разными постоянными ограничениями. Создание диалога запроса параметров ограничений Можно сделать такой ресурсный шаблон, который запрашивает некоторые параметры ограничений у пользователя в виде диалога (например, даты начала и окончания периода, за который необходимо выбрать данные). Для этого в редакторе раскладки необходимо на странице «События» добавить обработчик события «ДоЗакачки». 7 Далее необходимо написать АБЛ-скрипт, который создаст диалог параметров, вызовет диалог, и поместит значения из диалога в параметры алгоритмов. Теперь при открытии данных слоя на экране будет появляться диалоговое окно: 8 Получение данных из АС Бюджет без использования ресурсных шаблонов Есть возможность получать данные из АС Бюджет и без использования ресурсных шаблонов. Для этого необходимо написать АБЛ-макрос, который будет каким-либо образом формировать данные, которые должны попадать в слой. Макрос размещается в удаленном реестре АС Бюджет в ветке: Бюджет\Объекты\Обработка\Скрипты\Внешние Там же размещен макрос, который выбирает данные из ресурсного шаблона (ВыборкаИзРесурса). Чтобы было понятнее, проанализируем содержимое макроса «ВыборкаИзРесурса»: включить '\Библиотеки\LibRu.lib'; включить '\Библиотеки\Reports.lib'; включить '\Макросы\Вспомогательные.abl'; включить '\Макросы\Отчеты\ФункцииДляРесурсов.abl'; ВыборкаИзРесурса(Параметры: IVariables); константы ВеткаРеестра = "\Ресурсы\Выборки\Внешние"; переменные Шаблон: ITemplates; Данные: СтатическиеДанные; ИмяРесурса: строка; начало ИмяРесурса := Параметры.Значение("ИмяРесурса"); если ИмяРесурса = "" тогда ВызватьОшибку("Макрос ВыборкаИзРесурса: имя ресурса не задано"); если не Реестр.Узел(КорневойУзелРеестра+ВЕТКАРЕЕСТРА).Значение(ИмяРесурса).Существует тогда ВызватьОшибку("Макрос ВыборкаИзРесурса: ресурс с именем '"+ИмяРесурса+"' не существует"); Шаблон := ЗагрузитьРесурсИзРеестра(КорневойУзелРеестра+ВеткаРеестра, ИмяРесурса); Данные := СформироватьДанныеРесурса(Шаблон, Параметры); Параметры.Значение("Данные") := Данные; конец. Жирным шрифтом выделены строки, которые обязательно должны присутствовать в макросе. Как можно увидеть из этого макроса, данные должны быть подготовлены в виде объекта с типом «СтатическиеДанные», который нужно поместить в коллекцию параметров макроса с именем «Данные». Также из коллекции параметров можно извлекать значения параметров ограничений, которые заданы на клиенте. Когда макрос готов, можно настроить слой, в заголовке которого необходимо указать имя базы данных и имя макроса в поле «Таблица в БД». Формат строки: <Имя БД>.<Имя макроса> 9