WEB-приложение Сведение отчетности  (одним файлом) (14.07.2012)
1. Общие сведения

Сервис обеспечивает доступ удаленных пользователей к базе данных Системы Парус 8. С использованием предлагаемого решения удаленные пользователи получают возможность работать с базой данных Системы Парус 8, применяя все функциональные возможности модуля "Сведение отчетности - Центр учета" Системы.

Назначение сервиса

Как показано на схеме, сервис "WEB-приложение "Сведение отчетности - Центр учета" реализует интерфейс между базой данных Парус 8 и удаленными пользователями, являясь фактически шлюзом между корпоративной сетью и внешним миром.

Сервис дает возможность реализовать сбор и сведение отчетности с удаленных абонентских пунктов, используя все преимущества Web-технологий, а именно:

  • Отсутствие необходимости распространять и устанавливать какое-либо программное обеспечение на компьютеры удаленных абонентских пунктов.
  • Мгновенное автоматическое применение изменений настроек форм (алгоритмов расчета показателей, проверок, настройку трафаретов, и т. п.) ко всем отчетам удаленных абонентских пунктов без необходимости уведомлять их об этом и распространять какие-либо пакеты обновлений.
  • Не выдвигается требований к наличию на компьютерах удаленных абонентских пунктов каких-либо третьих продуктов, не поставляемых бесплатно в составе операционной системы.
  • Отсутствие необходимости в хранении данных, входящих в представляемые отчеты, на компьютерах абонентских пунктов снижает вероятность их хищения и/или фальсификации без применения нетривиальных усилий по физической защите удаленных компьютеров.
  • Существование одной и только одной полностью подконтрольной центру учета точке, через которую проходят данные удаленных абонентских пунктов, позволяет более внимательно подойти к вопросу контроля целостности и аутентичности.

2. Технические требования к аппаратно-программному обеспечению

Сервис предъявляет требования к настройке БД и серверной части ПП Парус 8.XX, конфигурации web-сервера и удаленных клиентов. Клиентская часть ПП Парус 8.XX в работе сервиса не используется.

Для успешной организации сбора отчетности посредством сервиса "Сведение отчетности on line" необходимо иметь установленную и настроенную серверную часть приложения ПП Парус 8.хх "Сведение отчетности - Центр учета".

В приложении необходимо стандартными средствами Парус 8 спроектировать состав форм отчетов, редакций, состав разрезов и показателей редакций, разработать формулы проверок и расчетов, разработать необходимый комплект трафаретов.

В базе данных необходимо создать пользователей Oracle по количеству раздаваемых удаленным абонентам авторизуемых логинов, и присвоить им пароли для авторизации.

В приложении "Администратор" необходимо зарегистрировать пользователей Oracle в разделе "Пользователи". После этого необходимо правильно раздать права доступа. Мы рекомендуем создать роль "Удаленный пользователь" и назначить ей права, необходимые для работы любого удаленного пользователя, а именно, на чтение данных в разделах:

  • Формы отчетов,
  • Типы пересчетов,
  • Разрезы отчетности,
  • Папки условий отбора.

Каждого удаленного пользователя рекомендуется связать с этой ролью, и назначить ему права по "его" каталогам в разделах:

  • Первичные/сводные отчеты,
  • Контрагенты.

Затем необходимо подготовить компьютер для установки web-сервера. Мы настоятельно рекомендуем не устанавливать web-сервер и сервер БД на одну физически машину, хотя технически к этому нет препятствий. Это отрицательно скажется на производительности, безопасности, и, в конечном счете, устойчивости программного комплекса. Необходимо изолировать столь разнородные задачи.

У компьютера, который станет web-сервером, должна быть значительная процессорная мощность. Требования к объему оперативной памяти и производительности дисковой подсистемы не так существенны. Требования к операционной системе приведены в документе "Аппаратно-программные и другие требования для функционирования Системы ПАРУС 8". Установите на web-сервер клиентскую часть Oracle Database, настройте (и проверьте) соединение с БД. Загружать web-сервер какими-то другими задачами мы не рекомендуем. Транспортный канал между web-сервером и сервером БД должен быть максимально широким и устойчивым.

К web-серверу предъявляются повышенные требования безопасности. Весьма рискованно использовать web-сервер без средств фильтрации пакетов (FireWall). Также на web-сервере не должно быть регистрационных записей пользователей без пароля или с легко подбираемым паролем.

Удаленные пользователи должны располагать компьютерами, которые соответствуют требованиям, приведенным в документе "Аппаратно-программные и другие требования для функционирования Системы ПАРУС 8".


2.1. Рекомендуемая конфигурация

В данном разделе будет описана рекомендуемая конфигурация аппаратно- программного обеспечения, необходимого для развертывания и последующего функционирования системы. Описанная ниже конфигурация является наиболее надежной и производительной с точки зрения компании-разработчика, но не означает, что иное построение системы будет неработоспособным.

Аппаратно-программные требования для развертывания системы на 100-500 пользователей изложены в документе СИС_Аппаратно-программные_требования.

Если все сервера расположены в одной стойке, то возможно использование одного ИБП повышенной мощности. Необходимо обратить внимание, что в серверах должны быть установлены сетевые адаптеры надежного производителя. Внимание: сервера некоторых производителей поставляются с сетевыми картами, имеющими программные ограничения и требующие активации для функционирования в полнодуплексном режиме.

Резервный сервер необходим для распараллеливания веб-доступа в штатном режиме и для горячей замены одного из 2х основных серверов (сервера БД и web-сервера) в случае их непредвиденного отказа.

Необходимо понимать, что основными требованиями к web-серверу являются вычислительная мощность и надежный, высокоскоростной сетевой интерфейс. А к серверу БД - наличие высокопроизводительного дискового массива.

Требования к каналам связи и Интернет-доступу

Рекомендуется обеспечить доступ к Интернет через провайдера, имеющего прямой выход на общефедеральные каналы связи. Ваш доступ к Интернету должен иметь минимальные ограничения со стороны провайдера. Крайне не желательно подключение системы с использованием прокси-сервера. Канал выделяемый провайдером должен быть "выделенным" ( т.е. не разделен с другими клиентами). Провайдер должен обеспечивать доступ к Интернет с полосой пропускания не менее 1 Мбит/с. В приведенной таблице отражена зависимость скорости доступа к Интернет центрального сервера и задержки системы при удаленной работе пользователей.

Скорость доступа10-100 пользователей100-300 пользователей300-1000 пользователей
100 Кбит/с
20-40 сек
40-80 сек
60-300 сек
1 Мбит/с
3-10 сек
10-20 сек
20-40 сек
10 Мбит/с
1-5 сек
5-10 сек
10-20 сек

Допускается использование провайдером брэндмауров, но порт 80 должен быть полностью открыт.

Желательно заключить с провайдером дополнительное соглашение о доступе в режиме 24х7. Все технические перерывы должны быть прописаны и известны заранее. Необходимо также учитывать, что Интернет-трафик в период сбора отчетности может достигать нескольких десятков Гигабайт (80% трафика -исходящий). Рекомендуется позаботится о выборе/смене тарифного плана.

У провайдера необходимо получить 2 внешних IP адреса. Возможно, необходимо зарегистрировать доменное имя или использовать существующее.

Развертывание системы

Сервер БД связывается с Web сервером "напрямую" - кросслинком, минуя локальную сеть. 2-я сетевая карта сервера БД подключается к роутеру локальной сети.

2-я сетевая карта Web сервера подключается непосредственно к роутеру 1-го уровня (имеющего выход на провайдера). Т.е. без промежуточных звеньев.

На Web-сервере устанавливается FireWall для внешнего сетевого интерфейса. Закрываются все порты, кроме 80. На внутренний интерфейс - все открыто. Т.к. СУБД Oracle может устанавливать соединения по широкому диапазону портов.

Резервный сервер - одной сетевой картой подключается к локальной сети (через нее имеет обычный доступ к серверу БД). Внешней напрямую в роутер аналогично web-серверу. На резервном - сервере устанавливается FireWall для внешнего сетевого интерфейса. Закрываются все порты, кроме 80. На внутренний интерфейс - все открыто.

На web сервере и резервном сервере в настройках внешних сетевых интерфейсов, прописываются внешние IP адреса, gateway и маски подсети полученные от провайдера.

Прочее

Настоятельно рекомендуется настроить резервное копирование БД по расписанию. Необходимо помнить, что Web - сервис должен быть остановлен до остановки ("shutdown") базы данных. Запуск сервиса необходимо производить в обратном порядке. Сначала БД, потом веб - сервис. Процедуру резервного копирования БД желательно настроить в автоматическом режиме на каждую ночь.

Также необходимо разработать регламент технических перерывов. Всем пользователям системы необходимо выдать легко вводимые логины и пароли доступа к системе.

На первой странице портала необходимо разместить информацию о порядке сдачи отчетности и телефоны тех-поддержки.

Протестировать работу системы на контрольной группе пользователей 5-7 организаций. В процессе тестирования зафиксировать все возникшие вопросы в "наиболее часто задаваемые вопросы". Провести обучение сотрудников технической поддержки.


3. Установка

Для установки сервиса на web-сервер необходимо запустить инсталлятор (файл ParusBalanceOnLine.exe):

Иконка инсталлятора

Любые другие способы установки сервиса, кроме запуска инсталлятора, крайне не рекомендуются. Инсталлятор - единственная гарантия того, что продукт будет установлен корректно и полностью, включая создание объектов базы данных.

Инсталлятор сервиса необходимо запускать с правами администратора.

Инсталлятор представляет собой несколько последовательно открывающихся страниц, каждая из которых подробно рассмотрена ниже.

Страница "О продукте" содержит сведения о правообладателе, а также номер и дату устанавливаемой версии.

Инсталлятор

Нажмите кнопку "Далее".

На второй странице необходимо задать папку установки. Рекомендуемый путь установки автоматически отображается в строке ввода. Если необходимо, изменить путь установки можно либо редактируя строку ввода, либо с помощью кнопки "Обзор".

Папка установки

Также на странице отображается объем требуемого и свободного дискового пространства на диске, на котором размещается выбранная папка установки.

Папку, выбранную на этой странице, сервис считает "своей". В дальнейшем эта папка называется "домашней папкой". Категорически не рекомендуется хранить в ней какие-либо файлы, не имеющие прямого отношения к сервису. При работе программы-деинсталлятора эти файлы будут удалены без предупреждения.

После того, как вы определились с выбором папки установки, нажмите кнопку "Далее".

На третьей странице необходимо ввести информацию, необходимую для соединения с БД Парус 8.XX. В строке ввода "База данных" необходимо ввести имя синонима из файла tnsnames.ora (подробности можно посмотреть в руководстве ПП Парус 8, а также в документации Oracle). В строке ввода "Пользователь" необходимо ввести имя того пользователя, который является владельцем схемы объектов ПП Парус 8. По традиции в подавляющем большинстве случаев этот пользователь имеет имя parus. Регистр ввода имени пользователя не важен. В строке ввода "Пароль" необходимо ввести пароль этого пользователя для соединения с БД. Регистр ввода пароля не важен.

База данных при установке

Инсталлятор осуществит проверку допустимости введенных значений при нажатии на кнопку "Далее", и, если не сможет установить соединения с базой данных, сообщит об ошибке:

Ошибка соединения с БД

Необходимо устранить проблему прежде, чем вы сможете продолжить установку. Подробности можно узнать в разделе "Возможные проблемы".

Инсталлятор соединяется с базой данных для того, чтобы создать в ней требуемые для работы сервиса объекты. Скрипты создания объектов БД устанавливаются при этом в папку установки сервиса в дочернюю папку SQL. Сами объекты создаются только при инсталляции сервиса (если работа инсталлятора доведена до конца). В момент заполнения этой страницы происходит только проверка доступности соединения с БД и валидности атрибутов пользователя.

После того, как вы ввели информацию о соединении с базой данных, нажмите кнопку "Далее".

Запустится непосредственно процесс инсталляции. В процессе установки необходимо зарегистрировать службу Windows, а также может потребоваться внести изменения в сетевые настройки компьютера, чтобы зарегистрировать правило, разрешающее сервису взаимодействовать с "внешним миром" через Windows Firewall. Перед изменением сетевых настроек инсталлятором будет задан вопрос:

Изменение в сетевые настройки

Отвечайте "Да" при работе в локальном сеансе на выделенном web-сервере. При установке сервиса через терминальный доступ, а также в случае, если на сервере установлено другое работающее в данный момент серверное программное обеспечение (особенно серверы управления базами данных с подключенными к ним пользователями), отвечайте "Нет". В этом случае вам потребуется настроить Firewall (если он используется) вручную (подробности можно узнать в разделе Возможные проблемы). Об успешной установке службы Windows сигнализирует сообщение:

Сервис успешно установлен

После завершения работы инсталлятора необходимо убедиться в наличии службы Windows, а также в том, что она находится в состоянии "Запущен". Для этого в апплете "Службы" (Start --> Control Panel --> Administrative Tools --> Services) найдите службу с именем "Parus Web Server":

Управление службами Windows

В этом окне с помощью контекстного меню Вы сможете в дальнейшем управлять состоянием службы - останавливать и запускать ее, когда это будет необходимо.

В процессе работы инсталлятора будет создана группа ярлыков меню "Пуск" для доступа к следующим средствам:


3.1. Возможные проблемы

3.1.1. Нет соединения с БД при установке

Описание проблемы:В процессе работы инсталлятора при вводе правильных значений в поля "База данных", "Пользователь" и "Пароль" выдается сообщение "Ошибка соединения с БД".

Во-первых, необходимо убедиться в том, что база данных на сервере Oracle доступна и находится в состоянии Open. Проще всего в наших конкретных условиях попытаться начать сеанс работы с системой Парус 8 (с любого другого компьютера, или непосредственно с web-сервера, если на нем установлена клиентская часть ПП Парус 8). Если начало сеанса проходит успешно, то идем дальше.

Для соединения с Oracle (и инсталлятором, и сервисом) используются библиотека OCI.DLL и файл tnsnames.ora, принадлежащие каталогу Oracle по умолчанию. Это становится актуально в случае, если на машине установлено одновременно несколько каталогов Oracle, или если какой-либо из каталогов Oraclе был некорректно удален. В любом случае, проблему легко исправить. Необходимо запустить редактор реестра Windows (regedit.exe) и убедиться в правильности следующих настроек:

HKEY_LOCAL_MACHINE --> SOFTWARE --> ORACLE -- > ALL_HOMES

Параметр HOME_COUNTER определяет количество установленных каталогов Oracle. Менять его не рекомендуется.

Параметр DEFAULT_HOME определяет имя каталога Oraclе по умолчанию (того самого, который нам нужен).

Дочерними к текущей ветке реестра являются ветки, описывающие каталоги Oracle. Они называются обычно ID0, ID1, ID2 и так далее. В каждой из них присутствуют: параметр NAME определяет имя каталога Oracle; параметр PATH определяет путь к физическому каталогу Oracle на диске.

Что должно быть? В параметре HOME_COUNTER должно содержаться количество реально зарегистрированных в реестре каталогов Oracle. В параметре DEFAULT_HOME должно содержаться имя (значение параметра NAME) того каталога, который мы будем использовать. Путь к физическому каталогу (параметр PATH) этого каталога Oracle должен быть валидным и указывать на правильную версию Oracle (не ниже 9.2.0.1) (например, C:\oracle\ora92).

Каталоги Oracle настроены правильно, однако соединения все равно не происходит. Необходимо проверить наличие алиаса БД в файле tnsnames.ora. Этот файл можно найти в подкаталоге NETWORK\ADMIN каталога, на который указывает параметр PATH текущего каталога Oracle (в нашем примере - C:\oracle\ora92\NETWORK\ADMIN\tnsnames.ora). Этот файл содержит список записей следующего вида:

Имя_базы_данных =

(DESCRIPTION =

   (ADDRESS_LIST =

    ; (ADDRESS = (PROTOCOL = TCP)(HOST = IP-адрес сервера БД) (PORT = Порт для соединения с Oracle))

   )

   (CONNECT_DATA =

     (SERVICE_NAME = SID_базы данных)

   )

)

Например,

ORADB =

(DESCRIPTION =

   (ADDRESS_LIST =

   (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.12)(PORT = 1521))

   )

   (CONNECT_DATA =

     (SERVER = DEDICATED)

     (SERVICE_NAME = ORADB_TEST)

   )

)

Необходимо убедиться в том, что псевдоним соединения с базой данных (который вы используете в поле База данных задан в этом файле и задан правильно. Можно проверить соединение при помощи утилиты tnsping.exe в каталоге BIN (в нашем случае - C:\oracle\ora92\bin\tnsping.exe):

TNSPING

На последней строке протокола на рисунке показано сообщение "OK" и время обмена пакетами. То есть на рисунке - все в порядке.

Если все это не помогло, то проверьте еще раз раскладку клавиатуры при вводе пароля.


3.1.2. Невозможность подключения к серверу с удаленного компьютера

Описание проблемы:На самом Web-сервере URL http://127.0.0.1 работает нормально. Соединение с удаленным клиентом не происходит.

Причиной подобного поведения может быть неправильная настройка сетевого экрана (FireWall). В настоящем документе мы покажем, как необходимо настроить стандартный сетевой экран, являющийся частью операционной системы (Windows Firewall). Если вы пользуетесь другими сетевыми экранами, то информацию о его правильной настройке можно посмотреть в руководстве по его использованию.

Для настройки Windows Firewall используется соответствующий апплет панели управления (Start --> Control Panel --> Windows Firewall). Для разрешения работы сервиса необходимо на странице Exceptions добавить разрешение.

Нажмите на кнопку Add Program. В появившемся окне выберите исполняемый модуль приложения (например, C:\PROGRAM FILES\PARUSBALANCEONLINE\ParusWebServer.exe). Нажав на кнопку Change Scope в окне добавления разрешения, можно установить диапазон удаленных адресов, для которых это разрешение действительно.

Если при обращении к сервису возникает сообщение Windows Security Alert, то при нажатии на кнопку Unblock разрешение Windows Firewall будет добавлено автоматически.


3.1.3. Сообщение "база данных недоступна"

Описание проблемы:Я уверен, что правильно ввел параметры базы данных, база данных доступна и я вижу открытые процессом ParusWebServer.exe сессии Oracle. В то же время удаленный клиент получает сообщение "база данных недоступна".

Вероятнее всего, проблема в том, что сервис не может найти организацию системы с заданным наименованием. Если Вы уверены в том значении, которое написано в соответствующем поле окна настройки, то проверьте, как установлено местонахождение пользователя по умолчанию. Это важно, поскольку наименование организации обычно включает в себя национальные (русские) символы, которые должны интерпретироваться правильно процессом, запущенным пользователем SYSTEM (сервисом).

Для правильной настройки местонахождения необходимо воспользоваться апплетом панели управления (Start --> Control Panel --> Regional and Language Options). В окне апплета необходимо убедиться в том, что на странице Regional Options в поле Location выбрана та страна, национальные символы которой должны быть правильно интерпретированы (Russia).

Location - Russia

На странице Advanced необходимо установить флажок Apply all settings to the current user and to the default user profile, и нажать ОК.

Применить локальные настройки ко всем пользователям

Сервис после этого необходимо перезапустить.


3.1.4. Не отображаются дополнительные словари

Описание проблемы:В web-клиенте не отображаются дополнительные словари. В win-клиенте все нормально.

Вероятнее всего, не был перезапущен сервис.

После привязки дополнительных словарей в Win-клиенте, необходимо перезапустить службу Parus Web Server. В этом случае актуальный список дополнительных словарей будет доступен и в Web- клиенте.


4. Настройка

4.1. Установка параметров

Установка параметров функционирования сервера осуществляется в окне "Настройка Web-сервера". Параметры разделены на ряд взаимосвязанных групп. Рассмотрим эти группы одну за другой подробно.

Конфигурация

Группа "Общие параметры" определяет основные параметры функционирования сервера.

Параметр База данных определяет БД Парус 8, данные которой становятся доступны удаленным пользователям. Значение параметра должно совпадать с зарегистрированным в Oracle Home, используемом по умолчанию, синонимом Transparent Network Substrate (TNS).

Можно отказаться от использования Oracle Transparent Network Substrate, и использовать Oracle Instant Client(http://www.oracle.com/technology/tech/oci/instantclient/instantclient.html). В этом случае необходимы следующие шаги:

1. Распаковать архив Instant Client в папку, содержащуюся в системной переменной среды PATH. Если поиски такой папки вызывают у вас затруднения, используйте системную папку WINDOWS\SYSTEM32.

2. Oracle Instant Client использует в работе файлы msvcp71.dll и msvcr71.dll, которые могут отсутствовать в вашей системе. В этом случае необходимо скачать их с сайта разработчика (http://www.microsoft.com) или других сайтов (например, http://www.dll- files.com/dllindex/dll-files.shtml?msvcp71, http://www.dll-files.com/dllindex/dll-files.shtml?msvcr71). Библиотеки необходимо разместить в той же папке, в которую распакован архив Instant Client.

3. Создать системную переменную среды с именем NLS_LANG и значением, содержащим язык и кодировку соединения с Oracle (обычно, RUSSIAN_CIS.CL8MSWIN1251).

Установка NLS_LANG

4. Установить сервис. В качестве имени базы данных указать IP-адрес сервера:Порт/SID, например, 192.168.4.28:1521/ORADB (прямо так и писать!).

Подробности использования Oracle Instant Client можно посмотреть в документации Oracle.

Параметр Пользователь-владелец данных определяет имя схемы БД Парус 8, данные которой становятся доступны удаленным пользователям. По традиции это имя - "parus" без кавычек. Регистр ввода имени схемы не имеет значения.

Параметр Пароль определяет пароль пользователя- владельца схемы БД Парус 8, данные которой становятся доступны удаленным пользователям. Пароль хранится в файле конфигурации в домашней папке сервиса в открытом виде - будьте осторожны при выдаче прав на эту папку ненадежным людям. Сессии Oracle, через которые будет происходить (почти) всё взаимодействие сервиса и БД, будут открыты c использованием аутентификационной информации, заданной этими двумя параметрами.

Параметр Организация определяет организацию (в терминах Системы Парус 8), данные которой становятся доступны удаленным пользователям. Подробности в общесистемной справке на Парус 8.

Существует возможность распределить имеющиеся соединения с Oracle по набору организаций. Для того чтобы использовать эту возможность необходимо:

  1. Очистить поле ввода организации. После этого кнопка "Распределить по организациям" станет доступной.
  2. Нажать на кнопку "Распределить по организациям".
  3. В появившемся окне "Распределение по организациям" необходимо создать столько строк, сколько организаций планируется использовать. Для каждой стоки необходимо указать "идентификатор" (уникальный набор латинских символов), наименование организации и количество соединений с Oracle, которое будет использоваться при работе с данными этой организации. Сумма значений колонки "Количество соединений" должна совпадать со значением параметра Устанавливать до ... соединений с Oracle (см. ниже).

Идентификатор организации, заданный в соответствующей строке, будет храниться в сессии как значение параметра active-parus-handler и будет фигурировать в http-запросах к данным как имя виртуального каталога.

Параметр Домашняя папка указывает папку, в которую производилась установка. Папка в обязательном порядке дожна содержать все файлы и дочерние папки, которые создаются инсталлятором.

Группа параметров "Сведение отчетности" определяет параметры взаимодействия сервиса с установленным в БД приложением "Сведение отчетности - Центр Учета".

  • Параметр Устанавливать до ... соединений с Oracle определяет количество одновременно устанавливаемых соединений с Oracle. Сервис разделяет установленные соединения между всеми удаленными соединениями. Для комфортной работы удаленных пользователей рекомендуется соблюдать соотношение 1:10 между количеством сессий Oracle и количеством удаленных подключений.
  • Параметр Соединяться с Oracle при старте указывает сервису открыть все доступные ему соединения с Oracle в момент старта сервиса. Установленные, но неиспользуемые соединения отнимают ресурсы сервера БД, но позволяют ускорить выдачу данных удаленным клиентам.
  • Параметр Игнорировать цвета при переносе в Excel предписывает элементу ActiveX, отображающему трафарет, при переносе в Excel игнорировать цвета (соответственно, цвета шрифта и границ в всех ячейках останется черным (по умолчанию), а цвет всех ячеек - останется белым (опять же, по умолчанию)).
  • Параметр Только дополнительные словари контрагентов устанавливается для того, чтобы запретить использование значений дополнительных словарей, не связанных с контрагентами. Если вы используете разделение значений дополнительных словарей по контрагентам, установите этот параметр. В противном случае для контрагентов, не имеющих связанных с контрагентом значений дополнительных словарей будут отображаться все значения соответствующих дополнительных словарей.
  • Параметр Использовать наименования контрагентов дает возможность при добавлении отчета осуществлять выбор контрагента не через мнемокод, а через его наименование. При установленном флажке в основном представлении вместо мнемокода будет отображаться наименование контрагента. То же для отбора и сортировки. При этом для выбора контрагента при добавлении отчета предназначена пара элементов "Контрагент" + "Контрагент (Наименование)", с возможностью выбора контрагента из списка, открывающегося в отдельном окне.
  • Параметр Не отображать примечания Excel предписывает элементу ActiveX, отображающему трафарет, не использовать примечания Excel.
  • Параметр Учитывать перечни проверок контрагентов дает возможность сузить (уточнить) список выполняемых проверок: если параметр установлен, то в перечне проверок отчета будут отображаться проверки, привязанные и к форме отчета, и к контрагенту; если параметр НЕ установлен, то будут отображаться все проверки, привязанные к форме отчета.
  • Параметр Направление обхода трафарета предписывает элементу ActiveX, отображающему трафарет, при нажатии на клавишу Enter переходить в направлении, указанном в значении параметра.
  • Параметр Трафареты, конвертирующиеся при старте актуален только при использовании ПП Парус 8 версии 8.5.3.0 и выше. В этих версиях трафареты хранятся, используются и трактуются как рабочие книги Microsoft Excel. Это приводит к необходимости их конвертации во внутренний транспортный xml-документ, содержащий информацио о форматировании рабочего листа. К сожалению, конвертация трафаретов - процесс длительный. Конвертация среднего по объему трафарета (около 1 MB) занимает от 30 до 60 секунд. Это долго. Конвертация производится автоматически при первом обращении к любому новому трафарету. Сконвертированные трафареты сохраняются сервисом в специализированном хранилище, называемом в дальнейшем "кеш трафаретов". Непосредственно данные кеша расположены в файле %TEMP%\ParusWebServer.templates.cache (переменные окружения интерпретируются как системные, то есть обычно это C:\WINDOWS\TEMP\ParusWebServer.templates.cache). Этот файл монопольно захватывается сервером во время его работы и сервис поддерживает его логическую целостность. Чтобы избежать конвертации трафаретов по запросу, необходимо предварительно заполнить кеш трафаретами, которые используются удаленными пользователями наиболее часто. Для этого можно задать список масок наименований трафаретов, актуальность которых в кеше будет автоматически проверяться при старте сервиса (чтобы указать на все трафареты БД, поставьте в этом поле звездочку "*"). Это несколько замедлит процесс старта, но улучшит условия работы удаленных пользователей. Кроме того, кеш трафаретов можно сформировать непосредственно из окна настройки параметров, нажав кнопку "Загрузить сейчас". Сервис будет остановлен и начнется процесс формирования кеша тех трафаретов, имена которых соответствуют какой-либо маске из списка.
  • Параметры Загрузчики текстовых файлов, Загрузчики xml-документов и Загрузчики рабочих книг Excel подробно описаны в разделе Загрузка данных из внешних источников.
  • Кнопка Проверить Excel осуществит проверку доступности приложения Microsoft Excel для сервиса. В случае, если вы получили сообщение о возникших проблемах, установите на web-сервер Microsoft Excel правильно.
  • Группа параметров "Сеть, сервис и Windows" определяет параметры взаимодействия сервиса с сетевой и операционной средой.
  • Параметр Порт TCP указывает номер порта TCP/IP, который будет прослушиваться сервисом для приема входящих запросов на всех имеющихся на момент старта сервиса в системе сетевых интерфейсах. Поскольку сервис реализует протокол HTTP, то рекомендуется использовать порт 80. В случае, если Web-сервер использует третьестороннее серверное программное обеспечение (Microsoft IIS, Apache, и т. п.), которое обслуживает 80 порт (и "занимает" его), то необходимо использовать порт, отличный от 80 (и при этом свободный). Обращаться к сервису в таком случае необходимо, указывая порт в строке адреса после двоеточия. При помощи команды Windows netstat можно узнать текущее состояние портов TCP.
  • Параметр Сжатие трафика позволяет серверу использовать архивацию передаваемых данных. Архивация применяется только в том случае, если браузер удаленного клиента способен корректно обрабатывать сжатые данные. Для сжатия трафика используется библиотека zlib (http://www.zlib.net/). Минимальная тестированная на совместимость версия - 1.0.4, она включается в стандартную поставку сервиса.
  • Параметр Повторно использовать соединения позволяет не переоткрывать соединения после каждого обмена "запрос-ответ" между клиентом и сервером. Повторно используются соединения только в том случае, если такие соединения поддерживаются клиентом и сервером согласованно. Время ожидания нового запроса на зарезервированном соединении составляет 75 секнд. Рекомендуется выключать этот параметр при обслуживании более 300 одновременных соединений, поскольку слишком большой ресурс сервера начинает тратиться на проверку состояния зарезервированных соединений, что отрицательно сказывается на производительности системы в целом.
  • Параметр Время ожидания после старта системы определяет количество секунд, в течение которых сервис будет ожидать завершения инициализирующих действий других компонент системы, после чего приступит к собственной инициализации. В случае, если web-сервер и сервер БД установлены на одной машине, то необходимо дождаться перехода БД в состояние "open", прежде, чем открывать сессии Oracle и приступать к обработке запросов удаленных пользователей. Время, необходимое для этого, нужно выразить в секундах и задать в значении этого параметра.
    Полезные цифры
    1/2 минуты
    30 секунд
    1 минутa
    60 секунд
    2 минуты
    120 секунд
    3 минуты
    180 секунд
    5 минут
    300 секунд
    10 минут
    600 секунд
  • Параметр Время бездействия сессии определяет количество секунд, в течение которых сессия (серверный объект, владеющий информацией о состоянии удаленного подключения) сохраняется в памяти сервера в случае отсутствия активности удаленного пользователя. После истечения этого времени сессия будет уничтожена вместе со всей несохраненной клиентом информацией (в том числе и аутентификационной). Это не касается только информации о значениях редактируемого трафарета, поскольку элемент ActiveX предпринимает для этого специальные меры. Категорически не рекомендуется устанавливать это значение меньше, чем 300 секунд (5 минут). Значение по умолчанию - 3600 секунд (1 час).
    Полезные цифры
    1/2 часа
    1800 секунд
    1 час
    3600 секунд
    3/2 часа,
    полтора часа
    5400 секунд
    2 часа
    7200 секунд
    3 часа
    10800 секунд
  • Параметр Периодичность файлов протокола предлагает выбор из ряда вариантов, определяющих работу с файлами протоколов. Файлы протоколов хранятся в папке LOGS домашнего каталога сервиса. Формируемые файлы протоколов соответствуют требованиям стандарта (http://www.w3.org/TR/WD- logfile.html), поэтому для их дальнейшего анализа можно (и нужно) применять многочисленные третьесторонние средства. Файлы протокола создаются по мере надобности и переключаются в соответствии со значением этого параметра.
  • Группа параметров "Отображаемые действия" определяет, какие действия будут отображаться в интерфейсе удаленного пользователя. Полный список действий представлен в виде флажков. Эти параметры не являются средством контроля прав доступа. Никаких изменений в БД при изменении значений этих параметров не произойдет. Единственное место, где используются эти параметры - построение html-странички, показываемой в браузере удаленного пользователя. Эти параметры действительны для всех удаленных пользователей.

4.2. Заполнение таблиц

Для функционирования сервиса необходимо заполнить несколько настроечных таблиц. Доступ к этим таблицам предоставлен на странице "Таблицы" окна настроек сервиса.

Таблицы

В таблице "Предлагаемые даты отчетов" перечисляются даты, предлагаемые удаленному пользователю при создании, исправлении и размножении отчета, а также при выполнении действия "Сформировать первичный отчет". Если таблица пуста, то удаленному пользователю предлагается ввести дату вручную:

Таблица пустаТаблица заполнена
Добавление отчета
Добавление отчета с датой

Примечание. При исправлении отчета предлагается для выбора еще и дата (вообще говоря, не заданная описанной здесь настройкой), которая была исходно сформирована при помощи модуля "Сведение отчетности - Центр учета".

В таблице Связи показателей с дополнительными словарями задается соответствие между мнемокодами дополнительных словарей и мнемокодами показателей, значения которых заполняются удаленными пользователями выбором из соответствующих дополнительных словарей.


4.3. FAQ - Ответы на часто возникающие вопросы

Вопрос: Как-то очень лаконично осуществляется вход удаленного пользователя в систему. Я хочу видеть какую-нибудь "стартовую страницу" (на которой разместить рекламу, да побольше! ;)). Чтобы там была информация о моей организации, ее достижениях, фото руководства и прочее. Как это сделать?

Ответ: Для разработки web-страницы потребуется web-дизайнер. Он должнен, вооружась знанием html, отобразить на будущей "стартовой странице" то, что нужно. Для непосредственно входа в систему он может разместить в любом месте страницы ссылку, например, так:
       
<a href="parusdata.html?active-parus-handler=parus">Вход в систему</a>
После этого необходимо проделать следующие шаги:

  1. Переименовать файл ROOT\index.html в ROOT\parusdata.html
  2. Скопировать все файлы, необходимые для функционирования творчества web-дизайнера, в папку ROOT.
  3. Тот файл, который теперь будет стартовой страницей, переименовать в index.html.


Вопрос: Это неплохо. А как избавиться от формы задания логина и пароля, вот этой:
Форма ввода пароля
Я хочу, чтобы авторизация происходила на стартовой странице!


Ответ: Это, конечно, возможно. Просто вместо ссылки дизайнер должен разместить на своей странице форму:
       
<form action="parusdata.html?active-parus-handler=parus" method="post">
  Пользователь: <input type="text" name="login"/><br/>
  Пароль: <input type="password" name="password"/><br/>
  <input type="submit" value="Войти"/>
</form>
Остальные шаги остаются без изменения.


Вопрос: А ошибки авторизации разве не надо обработать?

Ответ: Хорошо бы обработать. Для этого надо сначала проверить авторизацию, а потом уже осуществлять переход. Но для этого уже необходимо запрограммировать клиентскую логику на языке JavaScript:
       
<html>

<head>
<script>
function createHttpRequest()
{
  var httpRequest;
  if(window.XMLHttpRequest)
  {
    httpRequest = new XMLHttpRequest();
    if (httpRequest.overrideMimeType)
      httpRequest.overrideMimeType('text/xml');
  }
  else if(window.ActiveXObject)
  {
    try
    {
      httpRequest = new ActiveXObject("Msxml2.XMLHTTP");
    }
    catch(e)
    {
      try
      {
        httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
      }
      catch(e){}
    }
  }
  return httpRequest;
}

function doSubmit()
{
  var oTestReq = createHttpRequest();
  oTestReq.open("GET", "/" + "parus" + "/" + "sysinfo.xml?" +
    "login=" + document.all["login"].value + "&" +
    "password=" + document.all["password"].value, false,
    document.all["login"].value, document.all["password"].value);
  oTestReq.setRequestHeader("Disable-Basic-Auth", "yes")
  oTestReq.send("");

  if (oTestReq.status == 401)
    alert("Пользователь или пароль указаны неверно.");
  else if (oTestReq.status == 200)
    document.all["loginform"].submit();

}

</script>
</head>

<body>

<form id="loginform" action="parusdata.html?active-parus-handler=parus" method="post">
  Пользователь: <input type="text" id="login" name="login"/><br/>
  Пароль: <input type="password" id="password" name="password"/><br/>
  <input type="button" value="Войти"  onClick="doSubmit()" />
</form>

</body>
</html>


Вопрос: Так. А теперь то же самое, но при распределении соединений по нескольким организациям?

Ответ: Например, так:
       
<html>

<head>
<script>
function createHttpRequest()
{
  var httpRequest;
  if(window.XMLHttpRequest)
  {
    httpRequest = new XMLHttpRequest();
    if (httpRequest.overrideMimeType)
      httpRequest.overrideMimeType('text/xml');
  }
  else if(window.ActiveXObject)
  {
    try
    {
      httpRequest = new ActiveXObject("Msxml2.XMLHTTP");
    }
    catch(e)
    {
      try
      {
        httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
      }
      catch(e){}
    }
  }
  return httpRequest;
}

function doSubmit()
{
  var oTestReq = createHttpRequest();
  oTestReq.open("GET", "/" + document.all["active-parus-handler"].value + "/" + "sysinfo.xml?" +
    "login=" + document.all["login"].value + "&" +
    "password=" + document.all["password"].value + "&" +
    "active-parus-handler=" + document.all["active-parus-handler"].value, false,
    document.all["login"].value, document.all["password"].value);
  oTestReq.send("");

  if (oTestReq.status == 401)
    alert("Пользователь или пароль указаны неверно.");
  else if (oTestReq.status == 200)
    document.all["loginform"].submit();

}

</script>
</head>

<body>

<form id="loginform" action="parusdata.html" method="post">
  Пользователь: <input type="text" id="login" name="login"/><br/>
  Пароль: <input type="password" id="password" name="password"/><br/>
  Организация: <select id="active-parus-handler" name="active-parus-handler" >
     <option value="rpsc" selected="1" >РОСПИЩЕСВЕТ</option>
     <option value="rpcs"              >РОСПИЩЕЦВЕТ</option>
   </select><br/>
  <input type="button" value="Войти"  onClick="doSubmit()" />
</form>

</body>
</html>


Вопрос: У нас есть корпоративная сеть бухгалтерии, сервер Oracle, всё это настроено и работает. А тут надо какой-то web-сервер ставить, настраивать что-то как-то... Я понимаю, что это дело администратора, но как ему хотя бы поставить задачу? Что должно быть-то? А доступ в интернет у нас есть, надо же отслеживать изменения в законодательстве и скачивать исправления ваших, господа программисты, ошибок...
Ответ: Вопрос более-менее понятен :). Если доступ в интернет есть, то, скорее всего, ваша сеть устроена примерно следующим образом:
Подключение 2
Для организации сведения отчетности on line рекомендуются следующие шаги:

  1. Необходимо установить компьютер, который в дальнейшем будет web-сервером. Этот компьютер имеет должен иметь "внешний" ip-адрес и доступ к серверу БД. Компьютер должен быть снабжен сетевым интерфейсом для доступа в internet (именно этому интерфейсу назначается "внешний" ip-адрес) с требуемой скоростью обмена, и сетевым интерфейсом для взаимодействия с сервером БД (настоятельно рекомендуется использовать как минимум Gigabit Ethernet, 1 Гбит/с).
  2. Сервер БД необходимо снабдить еще одним высокоскоростным сетевым интерфейсом и связять его этим интерфейсом с web-сервером посредством так называемого cross-link кабеля. Мы рекомендуем делать в том числе и для того, чтобы максимально снизить третьесоторннюю нагрузку на обмен между сервером БД и web-сервером.
Должно получиться примерно следующее:
Подключение 1


Вопрос: Насколько я понял из этой документации, администрирование и мониторинг состояниния сервиса осуществляется по протоколу http, а, значит, должны существовать средства, позволяющие выполнять эту работу удаленно?...
Если в ссылках для входа в систему необходимо задавать параметр active-parus-handler со значением "parus", то, видимо, этот параметр может принимать и другие значения, и web-сервер может обеспечивать доступ ко многим базам данных одновременно?
В документации вводится понятие "виртуального каталога" - корневого, "parus" и ".system". Значит, можно организовать и другие виртуальные каталоги, и построить полноценный web-портал, частью которого является функционал сбора и сведения отчетности?


Ответ: Ваши вопросы демонстрируют очень глубокое понимание принципов работы web-сервиса. Вы абсолютно правы.


4.4. Описание поставляемых файлов

Ниже приведен список файлов, устанавливаемых инсталлятором в папку, выбранную при установке:
ROOT (папка)
Папка, файлы из которой доступны для скачивания удаленным клиентам
ROOT\index.html
Файл, возвращаемый удаленному клиенту при запросе без указания имени файла.
ROOT\parusdata.js
Файл скриптов, выполняющихся браузером удаленного клиента.
LOGS (папка)
Папка для хранения файлов протоколов
SQL (папка)
Папка для хранения sql-скриптов описания создваваемых объектов БД.
SQL\script.sql
Объекты БД, не зависящие от версии ПП Парус 8
SQL\script8522.sql
Объекты БД, ориетированные на работу с версией ПП Парус 8.5.2.2 и ниже
SQL\script8530.sql
Объекты БД, ориетированные на работу с версией ПП Парус 8.5.3.0 и выше
ParusWebServer.exe
Исполняемый модуль сервиса и окна настроек
ParusWebServer.RUS
Файл ресурсов исполняемого модуля
ParusWebServer.conf
Файл конфигурации
LogViewer.exe
Утилита просмотра истории событий
DebugView.exe
Отладочный монитор
DebugView.RUS
Файл ресурсов отладочного монитора
parus.license
Внутренние файлы, необходимые для функционирования сервиса
ParusBalanceAppProvider.dll
ParusBalanceClient.exe
Стандартный инсталлятор клиентской части
ParusOnLine.chm
Документация (этот файл)
ValuesGridAX.DLL
Библиотека ActiveX, служащего для отображения трафарета.
NPValuesGrid.dll
Модуль плагина экзотических браузеров, служащего для отображения трафарета.
zlib1.dll
Свободно распространяемая библиотека-архиватор.
Uninstaller.exe
Деинсталлятор системы.


4.5. Установка и настройка Microsoft Excel

Архитектура ПП Парус 8 и сервиса требует взаимодействия с приложениями пакета Microsoft Office. В настоящее время для функционирования сервиса необходима установка приложения Microsoft Excel.

Архитектура пакета Microsoft Office предусматривает установку требуемых компонент "по требованию". В момент обращения к тому или иному компоненту пакета, ПО Microsoft Installer производит поиск файлов компонента, и, не найдя их, обращается за требуемыми файлами к дистрибутивному пакету установки. Если в процессе этого обращения возникли проблемы (например, дистрибутивный пакет не доступен), то Microsoft Installer обращается за их разрешением к пользователю. Пользователя попросят указать путь к дистрибутивному пакету, задать аутентификационные данные (пользователь, пароль, и т. п.), необходимые для доступа к нему. Пользователь также может принять решение отказаться от использования компонента, обращение к которому инициировало процесс установки отсутствующих компонент.

При первом запуске какого-либо приложения пакета Microsoft Office в сеансе какого-либо пользователя, происходит установка "по требованию" компонент, жизненно необходимых для работы приложения.

К сожалению, сервис Windows не взаимодействует с пользователем, и лишен возможности вести с пользователем соответствующий диалог о расположении дистрибутивных файлов. Хуже того, сервис по умолчанию работает из-под пользователя SYSTEM, которому из-за ограничений безопасности не доступны сетевые подключения по протоколу SMB ("ресурсы", "расшаренные папки"), а именно с таких устройств очень часто производят установку пакета Microsoft Office.

Во избежание проблем мы предлагаем учесть эти особенности при установке Microsoft Office на web-сервер. Мы призываем вас разместить дистрибутивный пакет на доступном локальном диске web-сервера и, отказаться от установки "по требованию" компонент приложения Microsoft Excel. Процесс достижения поставленной цели покажем далее на примере установки пакета Microsoft Office 2003 (в остальных поддерживаемых версиях Microsoft Office действия аналогичны).

На шаге выбора типа установки выберите тип "Полная установка", или, если вы - опытный администратор и нуждаетесь в тонкой настройке Office, то тип "Выборочная установка". Откажитесь от предлагаемого по умолчанию варианта "Обычная установка":

Неправильная установка Office
Всегда правильная установка Office

Если вы выбрали тип "Выборочная установка", то на следующем шаге обязательно установите флажок "Excel":

Установка Office
Установка Office - выбор компонентов

Так или иначе, перед началом установки убедитесь (на странице "Сводка"), что приложение Microsoft Excel будет устанавливаться для запуска с локального компьютера:

Правильная установка Office

После установки Microsoft Office можно приступать к установке сервиса.


5. Работа с WEB-сервером

5.1. Загрузка данных из внешних источников

Сервис реализует возможность загрузки данных из архивов различных типов. Поддерживаются следующие типы файлов:

  1. xml-документ, выгруженный для центра учета из (другого либо того же самого) центра учета. Для загрузки архивов этого типа никаких дополнительных действий предпринимать не нужно.
  2. pra-архив, выгруженный для центра учета из (другого либо того же самого) центра учета. Для загрузки архивов этого типа никаких дополнительных действий предпринимать не нужно.
  3. pra-архив, выгруженный для центра учета из абонентского пункта Excel. Для загрузки архивов этого типа никаких дополнительных действий предпринимать не нужно.
  4. xml-документ с преобразованием на проходе. Для этого необходимо разработать схему для валидации документа (файл с расширением xsd) и xslt-преобразование (файл с расширением xsl), соответственно для валидации и преобразования на проходе файлов различной структуры. Для использования загрузки документов с преобразованием на проходе в значении параметра(cсылка потеряна) "Загрузчики xml-документов" необходимо перечислить через точку с зяпятой соответствия файла схемы файлам преобразований (Например, без кавычек "c:\scripts\inbox_schema.xsd=c:\scripts\inbox.xsl;c:\scripts\outbox_schema.xsd=c:\scripts\outbox.xsl"). Тогда, если файл проходит валидацию по схеме, то произойдет преобразование на проходе по соответствующему сценарию и дальнейшая загрузка результата преобразования, как xml-документа из пункта 1. Схемы перебираются последовательно.
  5. текствоый файл. Для этого необходимо разработать скрипт загрузки текстового файла на языке прграммирования VBScript. Пример скрипта загрузки здесь(cсылка потеряна). Внутри скрипта доступны следующие объекты:
    • StringCount - функция без параметров, возвращает количество строк в переданном текстовом файле.
    • Strings(Index as Integer) - функция возвращает текст строки с номером Index из переданного текстового файла. Строки нумеруются с 0. При выходе за границу диапазона функция вернет пустую строкую.
    • InvalidData - предопределенная переменная, по умолчанию имеет значение False. В случае, если текстовый файл не распознан алгоритмом разбора как файл правильной структуры, присвойте этой переменной значение True.
    • xml - объект xml-документа с результирующими данными.
    • DebugString - процедура принимает строковый аргумент и передает его в отладочный монитор (может использоваться для отладки)
    • SessionValue - функция принимает строковый аргумент и возвращает значение параметра сессии с именем, равным аргументу.
    • Message - процедура принимает строковый аргумент. Переданная строка будет показана пользователю в протоколе загрузки архива, если значение InvalidData будет равно False.
    Для использования механизма загрузки текстовых файлов в значении параметра(cсылка потеряна) "Загрузчики текстовых файлов" необходимо перечислить через точку с зяпятой имена файлов скриптов загрузки с полным путем (например, без кавычек "c:\scripts\sample.vbs;c:\scripts\loadform127.vbs;c:\scripts\loadform128.vbs"). Тогда, если файл проходит преобразование (переменная InvalidData после завершения очередного скрипта равна False), то произойдет дальнейшая загрузка результата разбора, как xml-документа из пункта 1. Скрипты загрузки перебираются последовательно.
  6. рабочая книга Microsoft Excel. Для этого необходимо разработать скрипт загрузки рабочей книги Excel на языке прграммирования VBScript. Пример скрипта можно посмотреть здесь(cсылка потеряна). Внутри скрипта доступны следующие объекты:
    • WorkBook объект-рабочая книга. Сведения об интерфейсе объекта можно подчерпнуть в справочнике по Microsoft Excel VBA.
    • InvalidData - предопределенная переменная, по умолчанию имеет значение False. В случае, если текстовый файл не распознан алгоритмом разбора как файл правильной структуры, присвойте этой переменной значение True.
    • xml - объект xml-документа с результирующими данными.
    • DebugString - процедура принимает строковый аргумент и передает его в отладочный монитор (может использоваться для отладки)
    • SessionValue - функция принимает строковый аргумент и возвращает значение параметра сессии с именем, равным аргументу.
    • Message - процедура принимает строковый аргумент. Переданная строка будет показана пользователю в протоколе загрузки архива, если значение InvalidData будет равно False.
    Для использования механизма загрузки рабочих книг Excel в значении параметра(cсылка потеряна) "Загрузчики рабочих книг Excel" необходимо перечислить через точку с зяпятой имена файлов скриптов загрузки с полным путем (например, без кавычек "c:\scripts\sample.vbs;c:\scripts\loadform127.vbs;c:\scripts\loadform128.vbs"). Тогда, если файл проходит преобразование (переменная InvalidData после завершения очередного скрипта равна False), то произойдет дальнейшая загрузка результата разбора, как xml-документа из пункта 1. Скрипты загрузки перебираются последовательно.

    Для корректной работы механизма загрузки рабочих книг Microsoft Excel необходимо установить на web-сервере Microsoft Office версии, совместимой с загружаемыми рабочими книгами, но не ниже 2000.


5.2. Загрузка в пользовательском формате

Система поддерживает передачу отчетов в текстовом формате, который определяется XML-форматом загрузки/выгрузки в текст. XML-форматы разрабатываются и регистрируются в Системе при помощи словаря "Форматы загрузки/выгрузки в текст".

Наименование действия:Загрузка в пользовательском формате...

Назначение действия: Импорт первичных/сводных отчетов в пользовательском формате. При этом регистрируются новые и/или исправляются уже зарегистрированные отчеты (подотчеты).

Где задается: Вызов действия производится из списка дополнительных действий.

После вызова действия на экране отображается окно:

Загрузка в пользовательском формате

в котором требуется указать параметры загрузки:

  • Тип загружаемого отчета: Первичный или Сводный.
  • Дата загрузки отчета.
  • Контрагент, для которого будут импортироваться отчеты (выбирается из словаря) и Наименование контрагента (подставляется автоматически и недоступно для редактирования).
  • Формат загрузки из текста (XML), в соответствии с которым будет производиться разбор текстового файла. Полностью определяет расположение информации в текстовом файле. XML может относиться к более чем одному отчету. Формат выбирается из "жесткого" списка, который формируется по данным словаря "Форматы загрузки/выгрузки в текст".
  • Обновлять существующие отчеты. Исправление отчетов, зарегистрированных ранее:
    • Нет, тогда исправление блокируется.
    • Да, тогда исправление разрешено.
    На регистрацию новых отчетов (подотчетов) состояние признака не влияет.
  • Пересчитывать отчеты после загрузки.
  • Отчет.Загружаемый текстовый файл (с указанием полного пути).
  • Кодировка:

Загрузка отчета производится в текущий каталог. После загрузки всегда выводится протокол загрузки.


6. Администрирование

6.1. Мониторинг состояния WEB-сервера

Мониториг состояния web-сервера в режиме реального времени возможен на странице "Состояние" окна параметров (см. также Монитор состояния сервисов).

Состояние сервиса

Окно состояния сервиса состоит из дерева счетчиков и окна истории состояния выбранного в дереве счетчика. Каждый счетчик отображает свое состояние в реальном времени. Частота обновления графика истории выбирается в контекстном меню. Обмен информацией между сервером и окном монитора состояния происходит по тому же самому протоколу http, по которому с сервером взаимодействуют удаленные пользователи.

Средством мониторинга также являются файлы протоколов. Файлы протоколов доступны для чтения во время работы сервиса, следовательно, их можно использовать для анализа происходящего.


6.2. Просмотр истории событий

Утилита просмотра истории событий осуществляет соединение с БД и анализирует таблицу истории событий, созданную в БД при инсталляции сервиса.
История событий
Окно утилиты предоставляет доступ к ряду стандартных табличных функций, позволяющих фильтровать, сортировать, группировать данные истории, просматривать агрегаты и переносить таблицу истории в Microsoft Excel.

Утилита просмотра истории работает с таблицей HTTP_LOG (по умолчанию) следующей структуры:
STAMP DATE default sysdate NOT NULL, -- дата и время события
IP varchar2(15),                     -- IP-адрес удаленного пользователя
PORT number(5),                      -- локальный порт соединения с удаленным пользователем
LOGIN varchar2(31),                  -- login удаленного пользователя
OS varchar2(80),                     -- операционная система удаленного пользователя
BROWSER varchar2(80),                -- браузер удаленного пользователя
-- группа полей, описывающая запись отчета
REPORT_DATE date,                    -- дата отчета
FORM_CODE varchar2(20),              -- мнемокод формы отчета
AGENT_CODE varchar2(20),             -- мнемокод контрагента отчета
REPORT number(17),                   -- регистрационный номер отчета
-- группа полей, описывающая запись подотчета
SECTION_CODE varchar2(20),           -- мнемокод разреза
SUBREPORT number(17),                -- регистрационный номер отчета
VALUES_COUNT number(10),             -- количество записанных значений
ACTION number(2)                     -- код действия.
--коды действий интерпретируются следующим образом:
0 - "Авторизован",
1 - "Отказано в авторизации",
2 - "Архив загружен",
3 - "Отчет создан",
4 - "Отчет исправлен",
5 - "Отчет удален",
6 - "Отчет перемещен",
7 - "Отчет отправлен в ЦУ",
8 - "Отчет расчитан",
9 - "Отчет очищен",
10 - "Отчет проверен",
11 - "Отчет возвращен из ЦУ",
12 - "Отчет сведен",
13 - "Отчет расформирован",
14 - "Подотчет создан",
15 - "Подотчет исправлен",
16 - "Подотчет удален",
17 - "Значения загружены"
18 - "Подотчет пересчитан"
Никаких индексов на таблицу истории не создается. Структура индексов на таблицу HTTP_LOG зависит от характера часто используемых запросов к ней, и определяется администратором БД самостоятельно. Также рекомендуется очищать таблицу истории по мере ее разрастания. В целях сохранения информации, исторические данные можно переносить в другие таблицы (схемы, базы данных). Утилита просмотра истории сможет обеспечить просмотр истории из любого источника: единственное ограничение - наличие описанных выше полей. При запуске исполняемого модуля утилиты LogViewer.exe без параметров можно будет задать базу данных, имя и пароль владельца схемы и имя таблицы с историей.

6.3. Использование отладочного монитора
Для устранения проблем и локализации ошибок применяется отладочный монитор:
Отладочный монитор
Отладочный монитор в реальном времени отображает все http и sql-запросы, приходящие через сервис. Воспользовавшись действием "Сохранить в файл", можно получить почти всю информацию, необходимую разработчику для локализации проблемы, в виде одного файла.

6.4. Монитор состояния сервисов

Мониторинг состояния сразу нескольких web-серверов в режиме реального времени возможен при помощи Монитора состояния сервисов (см. также Мониторинг состояния WEB-сервера). Окно монитора содержит таблицу со списком записей о контролируемых WEB-серверах.

Запись добавляется при помощи действия "Добавить" (по одноименной позиции контекстного меню). В форме параметров действия укажите:

  • Адрес WEB-сервера и Порт его подсоединения.
  • Имя Пользователя и его Пароль.

Исправить параметры уже зарегистрированной записи можно по действию "Исправить", а удалить запись - по действию "Удалить".

Таблица монитора имеет следующие колонки:

  • Адрес, Порт WEB-сервера, к которому относится запись.
  • Состояние:
    • Не определено - связь с WEB-сервером не установлена; данные мониторинга отсутствуют.
    • Работает связь с WEB-сервером установлена; данные мониторинга отображаются в следующих колонках.
  • Сессий, с логином, авторизованных.
  • Время отклика указывает на относительную загруженность сервера.

7. Описание скриптов пользовательского интерфейса

7.1. Ответы сервера на http-запросы

Обмен информацией по протоколу http между сервисом и удаленным браузером происходит в рамках некоторой сессии. Каждая сессия имеет глобально-уникальный идентификатор, который устанавливается в cookie с именем HTTPID (по традиции). Параметры сессии - это строки, которые устанавливаются при любом запросе с параметрами методами post или get. Единожды установленное в рамках сессии значение параметра хранится внутри сессии до тех пор, пока не будет перезаписано другим значением.

Разбор имени ресурса при обращении к сервису происходит по следующему алгоритму:

    Имена, принадлежащие виртуальному каталогу parus (например, "/parus/catalogs123.xml").
           В случае распределения соединений по нескольким организациям, заданные вами идентификаторы организаций используются в качестве имен виртуальных каталогов с описываемым в этом разделе содержимым. То есть, при подобном распределении:
    Распределение по организациям
    имена, описанные в этом разделе как, например, "/parus/catalogs.xml" будут доступны как "/rpsc/catalogs.xml" для данных организации "РОСПИЩЕСВЕТ" и как "/rpcs/catalogs.xml" для данных организации "РОСПИЩЕЦВЕТ".
    От имени файла "отбрасывается" приписанное справа к имени целое число. То есть, имена "/parus/catalogs123.xml", "/parus/catalogs789466.xml" и "/parus/catalogs.xml" обрабатываются одинаково.

  1. /parus/catalogs.xml
    возвращается информация о доступных пользователю каталогах в виде xml-документа.
  2. /parus/reports.xml
    возвращается информация о доступных пользователю отчетах в каталоге, определяемом параметром с именем catalog, в виде xml-документа. При этом осуществляется дополнительный отбор с использованием критериев, заданных, соответственно, параметрами filter_date для поля "Дата", filter_form для поля "Форма", filter_agent для поля "Контрагент", filter_status для поля "Состояние", filter_note для поля "Примечание". Порядок отчетов в результирующем документе определяется параметром order, принимающим одно из следующих значений: date (сортировка по полю "Дата"), form (сортировка по полю "Форма"), agent (сортировка по полю "Контрагент"), status (сортировка по полю "Состояние"), note (сортировка по полю "Примечание").
  3. /parus/subreports.xml
    возвращается информация о доступных пользователю подотчетах отчета, определяемого параметром с именем report, в виде xml-документа.
  4. /parus/forms.xml
    возвращается информация о доступных пользователю формах в виде xml-документа.
  5. /parus/calctypes.xml
    возвращается информация о доступных пользователю типах пересчета в виде xml-документа.
  6. /parus/agents.xml
    возвращается информация о доступных пользователю контрагентах в виде xml-документа.
  7. /parus/dates.xml
    возвращается информация о предлагаемых датах отчетов в виде xml-документа.
  8. /parus/availableactions.xml
    возвращается информация о значениях параметров группы "Отображаемые действия" в виде xml-документа.
  9. /parus/sections.xml
    возвращается информация о доступных пользователю разрезах отчетности отчета, определяемого параметром report, в виде xml-документа, либо разрезы отчетности редакции формы, определяемой параметром form на дату, определяемую параметром date.
  10. /parus/templates.xml
    возвращается информация о трафаретах, через которые можно редактировать отчет, заданный параметром report, в виде xml-документа.
  11. /parus/dictionaries.xml
    возвращается информация о связях между дополнительными словарями и мнемокодами показателей в виде xml-документа.
  12. /parus/extradict.xml
    возвращается информация о значениях дополнительного словаря, мнемокод которого задан параметром dictionary, в виде xml-документа.
  13. /parus/checkreportreport.xml
    возвращается информация протокола проверки отчета, заданного параметром report, в виде xml- документа.
  14. /parus/reportcons.xml
    возвращается информация о составе сводного отчета, заданного параметром report, в виде xml- документа.
  15. /parus/indexcons.xml
    возвращается информация о составе значения показателя, заданного параметрами report(отчет), subreport(подотчет) и index(мнемокод показателя), в виде xml- документа.
  16. /parus/preparedata.xml
    подготавливаются (и запоминаются на сервере в контексте сессии) xml-документы с форматированием и значениями подотчета, заданного параметрами report и subreport через трафарет, заданный параметром template. Вовзращается информация для формирования заголовка окна редактирования значений в виде xml- документа.
  17. /parus/postvalues.xml
    происходит загрузка значений подотчета, определяемого параметром subreport, из xml-документа, определямого параметром values.
  18. /parus/template_formatting.xml
    если данные были подготовлены предыдущим обращением к /parus/preparedata.xml, то возвращается xml-документ с форматированием трафарета.
  19. /parus/template_values.xml
    если данные были подготовлены предыдущим обращением к /parus/preparedata.xml, то возвращается xml-документ со значениями показателей подотчета.
  20. /parus/deletereport.xml
    происходит удаление отчета, заданного параметром report. Возвращается документ с единственным корневым элементом. Имя корневого элемента error здесь и далее сигнализирует об ошибке, и корневой элемент содержит в этом случае текст сообщения.
  21. /parus/updatereport.xml
    происходит исправление записи отчета, заданного параметром report. Дата отчета определяется параметром date. Контрагент определяется параметром agent. Форма отчетов определяется параметром form. Примечание определяется параметром note. Возвращается документ с единственным корневым элементом.
  22. /parus/movereport.xml
    происходит перемещение записи отчета, заданного параметром report, в каталог, заданный параметром new_catalog. Возвращается документ с единственным корневым элементом.
  23. /parus/insertreport.xml
    происходит добавление записи отчета. Дата отчета определяется параметром date. Контрагент определяется параметром agent. Форма отчетов определяется параметром form. Примечание определяется параметром note. Возвращается документ с единственным корневым элементом.
  24. /parus/duplicatereport.xml
    происходит размножение записи отчета, заданного параметром report. Дата отчета определяется параметром date. Контрагент определяется параметром agent. Форма отчетов определяется параметром form. Примечание определяется параметром note. Возвращается документ с единственным корневым элементом.
  25. /parus/deletesubreport.xml
    происходит удаление подотчета, заданного параметром subreport. Возвращается документ с единственным корневым элементом.
  26. /parus/updatesubreport.xml
    происходит исправление записи подотчета, заданного параметром subreport. Разрез подотчета определяется параметром section. Примечание определяется параметром note. Возвращается документ с единственным корневым элементом.
  27. /parus/insertsubreport.xml
    происходит добавление записи подотчета. Разрез подотчета определяется параметром section. Примечание определяется параметром note. Возвращается документ с единственным корневым элементом.
  28. /parus/duplicatesubreport.xml
    происходит размножение записи подотчета, заданного параметром subreport. Разрез подотчета определяется параметром section. Примечание определяется параметром note. Возвращается документ с единственным корневым элементом.
  29. /parus/calcsubreport.xml
    происходит пересчет подотчета подотчета, заданного параметром subreport. Возвращается документ с единственным корневым элементом.
  30. /parus/sendreport.xml
    происходит установка признака "Отправлен в Центр Учета" записи отчета, заданного параметром report. Возвращается документ с единственным корневым элементом.
  31. /parus/unsendreport.xml
    происходит сброс признака "Отправлен в Центр Учета" записи отчета, заданного параметром report. Возвращается документ с единственным корневым элементом.
  32. /parus/clearreport.xml
    происходит очистка значений отчета, заданного параметром report. Возвращается документ с единственным корневым элементом.
  33. /parus/calcreport.xml
    происходит пересчет отчета, заданного параметром report. Возвращается документ с единственным корневым элементом.
  34. /parus/calcallreports.xml
    происходит пересчет всех отчетов в каталоге, заданном параметром catalog. Возвращается документ с единственным корневым элементом.
  35. /parus/consolidatereport.xml
    происходит формирование свода на основе сводного отчета, заданного параметром report. Сведение непроверенных отчетов определяется параметром unchecked ("on" - сводить непроверенные, "off" - не сводить непроверенные). Тип сводимых отчетов определяется параметром kind (0 - первичные, 1 - сводные, 2 - все). Папка условий сведения определяется параметром folder. Возвращается документ, содержащий сведения о составе сформированного свода.
  36. /parus/deconsolidatereport.xml
    происходит расформирование свода на основе сводного отчета, заданного параметром report. Возвращается документ, содержащий сведения о составе сформированного свода.
  37. /parus/checkreport.xml
    происходит проверка отчета, заданного параметром report. Возвращается xml-документ, содержащий сведения о протоколе проверки.
  38. /parus/checkallreports.xml
    происходит проверка всех отчетов каталога, заданного параметром catalog. Возвращается xml-документ, содержащий сведения о протоколе проверки.
  39. /parus/beforehandreport.xml'
    происходит разрешение пересчета свода на основе сводного отчета, заданного параметром report. Возвращается документ с единственным корневым элементом.
  40. /parus/confirmreport.xml'
    происходит подтверждение сведения свода на основе сводного отчета, заданного параметром report. Возвращается документ с единственным корневым элементом.
  41. /parus/linkeddocuments.xml
    возвращается информация о присоединенных документах отчета, заданного параметром report, в виде xml- документа.
  42. /parus/deletelinkeddocument.xml
    происходит удаление присоединенного документа, заданного параметром linkeddocument. Возвращается документ с единственным корневым элементом.
  43. /parus/uploadlinkeddocument.xml
    происходит загрузка содержимого присоединенного документа, заданного параметром linkeddocument. Возвращается документ с единственным корневым элементом.
  44. /parus/insertlinkeddocument.xml
    происходит создание присоединенного документа отчета, заданного параметром report. Возвращается документ с единственным корневым элементом.
  45. /parus/linkeddocumenttypes.xml
    возвращается информация о типах присоединенных документов, в виде xml- документа.
  46. /parus/linkeddocumentcatalogs.xml
    возвращается информация о каталогах присоединенных документов, в виде xml- документа.
  47. /parus/linkeddocument.*
    возвращается содержимое присоединенного документа, заданного параметром linkeddocument.
  48. /parus/absentreports.xml
    возвращается информация об отсутствующих отчетах контрагента, заданного параметром agent, в виде xml- документа.
  49. /parus/checklists.xml
    возвращается информация о перечнях проверок отчета, заданного параметром report, в виде xml- документа.
  50. /parus/checklistsall.xml
    возвращается информация о перечнях проверок отчетов в каталоге, заданном параметром catalog, в виде xml- документа.
  51. /parus/loadarchive.xml
    происходит загрузка файла(cсылка потеряна), заданного параметром file. Возвращается xml-документ, содержащий протокол загрузки файла.
  52. /parus/sysinfo.xml
    возвращается информация о версии программного обеспечения web-сервера и ПП Парус 8 в виде xml-документа.
  53. /parus/stream.template
    возвращается поток данных, несущий информацию о форматировании и значениях, подготовленную предыдущим обращением к /parus/preparedata.xml. Этот запрос генерируется плагином к экзотическим браузерам.
  54. /parus/parusbalanceclient.exe
    возвращается исполняемый модуль инсталлятора клиентской части.
  55. Имена, принадлежащие виртуальному каталогу .system (например, "/.system/session.xml").

  56. /.system/session.xml
    возвращает информацию о текущих параметрах сессии в виде xml-документа.
  57. Имена, принадлежащие корневому виртуальному каталогу (например, "/", "/index.html", "parusdata.js").

  58. Возвращается содержимое файла с заданным именем из каталога ROOT.


7.2. Используемый элемент ActiveX
Для редактирования значений через трафарет в настоящее время используется специализированный элемент ActiveX, описанный под именем ValuesGridForm в библиотеке ValuesGridAX.DLL (CLSID 6A1BF31F-09F7-471E-9148-6CA1FE70C7A4). В настоящем разделе будут кратко описаны свойства и методы этого элемента.
  • свойство FormattingString: WideString writeonly предназначено только для записи. Посредством установки значения этого свойства передается информация о внешнем виде трафарета. Передаваемая строка должна сожержать xml-документ, описывающий внешний вид трафарета, соответствующий этой схеме.
  • свойство ValuesString: WideString предназначено для чтения и записи. При установке значения свойства передается информация о расположении показателей на трафарете и об их значениях. Передаваемая строка должна сожержать xml-документ, описывающий значения показателей, соответствующий этой схеме. При считывании значения этого свойства формируется строка, содержащая xml- документ с внесенными пользоваетелем изменениями значений. Схема этого документа зависит от версии ПП Парус 8.
  • свойство GridVisible: WordBool определяет видимость листа трафарета. Если лист трафарета не виден (скрыт), то элемент управления отображает текст "Пожалуйста, дождитесь окончания загрузки страницы...".
  • свойство Modified: WordBool readonly показывает, были ли произведены пользователем какие-либо изменения значений показателей.
  • свойство ReadOnly: WordBool определяет, допустимо ли редактирование пользователем значений показателей.
  • свойство Report: WideString определяет регистрационный номер редактирумого отчета.
  • свойство Subreport: WideString определяет регистрационный номер редактирумого подотчета.
  • свойство Template: WideString определяет регистрационный номер отображаемого трафарета.
  • свойство SuppressExcelColor: WordBool предписывает игнорировать цвета при переносе в Excel.
  • свойство Sending: WordBool устанавливается (программистом) в True перед попыткой отправить изменения значений показателей на сервер. В этот момент элемент ActiveX создает во временном каталоге файл с изменениями значений. Если попытка прошла успешно, свойство необходимо установить (вручную) в значение False, после чего временный файл c изменениями будет удален. Если отправка изменений на сервер не увенчалась успехом, то при следующей загрузке значений редактируемого подотчета изменения будут (с запросом подтверждения от пользователя) загружены из файла во временном каталоге.
  • свойство SendingToExcelStarted: WordBool определяет, идет ли в данный момент процесс переноса трафарета в Microsoft Excel. Чтобы инициировать перенос трафарета в Microsoft Excel, установите этому свойству значение True.
  • свойство SavingToFileStarted: WordBool определяет, идет ли в данный момент процесс сохранения значений в файл. Чтобы инициировать сохранение значений в файл, установите этому свойству значение True.
  • свойство LoadingFromFileStarted: WordBool определяет, идет ли в данный момент процесс загрузки значений из файла. Чтобы инициировать загрузку значений из файла, установите этому свойству значение True.
  • свойство SelectedIndex: WideString определяет мнемокод показателя, на котором в данный момент находится фокус пользовательского ввода.
  • процедура RegisterDictionary(const Code: WideString; Document: OleVariant) связывает xml-документ (объект XMLDOMDocument) (заданный параметром Document) со словарем значений для выбора значений показателей из словаря, с мнемокодом показателя (заданным параметром Code).
  • процедура CreatePopupItem(const Caption: WideString; ID: Integer; NamedOnly: WordBool) создает элемент собственного контекстного меню элемента ActiveX. Параметр Caption определяет текст, отображаемый в контекстном меню. Параметр ID определяет внутренний идентификатор элемента меню. При срабатывании события нажатия пользователем на конкретный пункт меню в обработчик события будет передан параметр, значение которого равно этому идентификатору. Параметр NamedOnly определяет поведение пункта меню следующим образом: значение False говорит о том, что пункт меню доступен пользователю всегда, значение True - пункт меню доступен только на ячейках с показателями. Для реализации реакции на выбор пользователем пункта меню можно воспользоваться следующей техникой (JavaScript):
           
    
       function ActiveXMenuEventHandler(ID)
       {
         if (ID == 1)
         {
           alert("hello!");
         }
         else if (ID == 2)
         {
           alert("how are you?");
         }
       }
    
      .....
    
         XXX.CreatePopupItem("Say 'Hello'", 1, False);
         XXX.CreatePopupItem("Say 'how are you'", 2, False);
         XXX.attachEvent("OnPopupItemClick",  ActiveXMenuEventHandler);
    
    
  • свойство Version: WideString readonly предназначено только для чтения. Свойство возвращает версию реализации элемента ActiveX в виде строки в формате NNN.MMM.RRR.BBB. Разработчик гарантирует уникальность и возрастание версии элемента при любом изменении функциональности элемента.
           Изменение номера мажорной версии (NNN) происходит при глобальном изменении функциональности продукта (при введении нового порядка функциональности). Изменение номера минорной версии (MMM) происходит при введении в продукт новой функциональности, ведущей к программной несовместимости со старой версией, изменений в схеме функционирования продукта, значительных изменений функциональности, появления в продукте новых конкурентных преимуществ. Номера релизов версий (RRR) увеличиваются в процессе тестирования с каждым выпуском пакета исправлений ошибок. Номер сборки (BBB) определяет количество произведенных сборок и увеличивается не реже одного раза в сутки.
    При изменении любой компоненты номера версии все младшие компоненты обнуляются. Каждая компонента номера принимает значения от 0 до 999.
    Инсталлятор любого компонента системы отображает на первой странице информацию о версии:
    Информация о версии
Главное предназначение элемента ActiveX - максимально адекватно отобразить лист трафарета, что довольно трудно реализовать средствами HTML/DHTML (хотя, безусловно, возможно). Элемент не имеет встроенных средств печати трафаретов на принтере, и для реализации этой функции предлагается пользоваться переносом в Microsoft Excel. При этом часто встает проблема корректного разделения трафарета на печатные листы и передечи информации о расположении данных на печатном листе. Для решения этой проблемы предлагается в нужных (желательно, скрытых) ячейках трафарета в текстовые значения ячеек писать зарезервированные слова, отражающие специфическую информацию для печати данных. Поддерживаются следуюшие зарезервированные слова:
  • "::pagebreak" (с двумя двоеточиями без кавычек). Перед ячейкой с этим значением при переносе в Excel будут вставлены горизонтальный и вертикальный разрывы страницы.
  • "::zoom" (с двумя двоеточиями без кавычек) используется для передачи масштаба печати (в целых процентах). Нужно написать (в любой ячейке трафарета) зарезервированное слово, после чего без пробелов и прочих разделитетей указать масштаб печати в целых процентах (например, "::zoom65").
  • "::hmargin" (с двумя двоеточиями без кавычек) используется для передачи отступа от верхнего колонтитула (в целых миллиметрах). Нужно написать (в любой ячейке трафарета) зарезервированное слово, после чего без пробелов и прочих разделитетей указать отступ от верхнего колонтитула в целых миллиметрах (например, "::hmargin35").
  • "::fmargin" (с двумя двоеточиями без кавычек) используется для передачи отступа от нижнего колонтитула (в целых миллиметрах). Нужно написать (в любой ячейке трафарета) зарезервированное слово, после чего без пробелов и прочих разделитетей указать отступ от нижнего колонтитула в целых миллиметрах (например, "::fmargin15").
  • "::titlerows" (с двумя двоеточиями без кавычек) используется для задания диапазона "сквозных" строк, печатаемых на каждой странице. Нужно написать (в любой ячейке трафарета) зарезервированное слово, после чего без пробелов и прочих разделитетей указать диапазон строк, предваряя номера строк символом $ ("доллар") (например, "::titlerows$8:$13").

7.2.1. Внешний вид трафарета
<?xml version="1.0" ?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema" >
<xs:element name="TEMPLATE" >
<xs:complexType>
<xs:sequence>
<xs:element name="COLS" >
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="COL" >
<xs:complexType>
<xs:sequence>
<xs:element name="NUMBER" type="xs:unsignedShort" />
<xs:element name="SIZE" >
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="VALUE" type="xs:unsignedShort" />
<xs:element minOccurs="0" name="FORMULA" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="ROWS" >
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="ROW" >
<xs:complexType>
<xs:sequence>
<xs:element name="NUMBER" type="xs:unsignedShort" />
<xs:element minOccurs="0" name="SIZE" >
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="VALUE" type="xs:unsignedShort" />
<xs:element minOccurs="0" name="FORMULA" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="CELLS" >
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="CELL" >
<xs:complexType>
<xs:sequence>
<xs:choice maxOccurs="unbounded" >
<xs:element name="COLOR" >
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="VALUE" type="xs:string" />
<xs:element minOccurs="0" name="FORMULA" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="MERGERECT" >
<xs:complexType>
<xs:sequence>
<xs:choice maxOccurs="unbounded" >
<xs:element name="BOTTOM" type="xs:unsignedByte" />
<xs:element name="RIGHT" type="xs:unsignedByte" />
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" name="FONT" >
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="NAME" >
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="VALUE" type="xs:string" />
<xs:element minOccurs="0" name="FORMULA" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" name="SIZE" >
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="VALUE" type="xs:string" />
<xs:element minOccurs="0" name="FORMULA" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" name="STYLE" >
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="BOLD" >
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="VALUE" type="xs:string" />
<xs:element minOccurs="0" name="FORMULA" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" name="ITALIC" >
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="VALUE" type="xs:string" />
<xs:element minOccurs="0" name="FORMULA" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" name="UNDERLINE" >
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="VALUE" type="xs:string" />
<xs:element minOccurs="0" name="FORMULA" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" name="STRIKEOUT" >
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="VALUE" type="xs:string" />
<xs:element minOccurs="0" name="FORMULA" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="BORDERS" >
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="RIGHT" >
<xs:complexType>
<xs:sequence>
<xs:choice maxOccurs="unbounded" >
<xs:element name="COLOR" >
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="VALUE" type="xs:string" />
<xs:element minOccurs="0" name="FORMULA" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="WIDTH" >
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="VALUE" type="xs:string" />
<xs:element minOccurs="0" name="FORMULA" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="STYLE" >
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="VALUE" type="xs:string" />
<xs:element minOccurs="0" name="FORMULA" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" name="BOTTOM" >
<xs:complexType>
<xs:sequence>
<xs:choice maxOccurs="unbounded" >
<xs:element name="COLOR" >
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="VALUE" type="xs:string" />
<xs:element minOccurs="0" name="FORMULA" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="WIDTH" >
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="VALUE" type="xs:string" />
<xs:element minOccurs="0" name="FORMULA" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="STYLE" >
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="VALUE" type="xs:string" />
<xs:element minOccurs="0" name="FORMULA" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="STATICVALUE" >
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="FORMULA" type="xs:string" />
<xs:element minOccurs="0" name="VALUE" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="HALIGNMENT" >
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="VALUE" type="xs:string" />
<xs:element minOccurs="0" name="FORMULA" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="VALIGNMENT" >
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="VALUE" type="xs:string" />
<xs:element minOccurs="0" name="FORMULA" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="MASK" >
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="VALUE" type="xs:string" />
<xs:element minOccurs="0" name="FORMULA" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="DATATYPE" type="xs:unsignedByte" />
<xs:element name="DIGITS" type="xs:unsignedByte" />
<xs:element name="DECIMALPART" type="xs:unsignedByte" />
<xs:element name="TEXTLENGTH" type="xs:unsignedByte" />
<xs:element name="MINVALUE" type="xs:unsignedByte" />
<xs:element name="MAXVALUE" type="xs:unsignedByte" />
<xs:element name="READONLY" >
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="VALUE" type="xs:string" />
<xs:element minOccurs="0" name="FORMULA" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="WORDWRAP" type="xs:unsignedByte" />
<xs:element name="DRAW3D" type="xs:unsignedByte" />
<xs:element name="HINT" >
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="VALUE" type="xs:string" />
<xs:element minOccurs="0" name="FORMULA" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="NAME" type="xs:string" />
</xs:choice>
</xs:sequence>
<xs:attribute name="COL" type="xs:unsignedByte" use="required" />
<xs:attribute name="ROW" type="xs:unsignedShort" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" name="PARAMS" type="xs:unsignedShort" />
<xs:element minOccurs="0" name="ERRORCOLOR" type="xs:unsignedByte" />
<xs:element minOccurs="0" name="FIXEDCOLS" type="xs:unsignedByte" />
<xs:element minOccurs="0" name="FIXEDROWS" type="xs:unsignedByte" />
<xs:element minOccurs="0" name="PAGELEFTMARGIN" type="xs:unsignedByte" />
<xs:element minOccurs="0" name="PAGETOPMARGIN" type="xs:unsignedByte" />
<xs:element minOccurs="0" name="PAGERIGHTMARGIN" type="xs:unsignedByte" />
<xs:element minOccurs="0" name="PAGEBOTTOMMARGIN" type="xs:unsignedByte" />
<xs:element minOccurs="0" name="SHOWHEADERS" type="xs:unsignedByte" />
<xs:element minOccurs="0" name="MULTISELECT" type="xs:unsignedByte" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>

7.2.2. Значения показателей
<?xml version="1.0" encoding="windows-1251" ?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema" >
<xs:element name="VALUES" >
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" name="VALUE" >
<xs:complexType>
<xs:sequence>
<xs:element name="NAME" type="xs:string" />
<xs:element minOccurs="0" name="ID" type="xs:string" />
<xs:element minOccurs="0" name="DATA" type="xs:string" />
<xs:element name="POSITIONS" >
<xs:complexType>
<xs:sequence>
<xs:element name="POSITION" >
<xs:complexType>
<xs:sequence>
<xs:element name="COL" type="xs:unsignedShort" />
<xs:element name="ROW" type="xs:unsignedShort" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" maxOccurs="unbounded" name="TABLE" >
<xs:complexType>
<xs:sequence>
<xs:element name="NAME" type="xs:string" />
<xs:element name="ID" type="xs:string" />
<xs:element name="ROW" type="xs:unsignedShort" />
<xs:element name="COL" type="xs:unsignedShort" />
<xs:element name="WIDTH" type="xs:unsignedShort" />
<xs:element name="HEIGHT" type="xs:unsignedShort" />
<xs:element name="INDEXES" >
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="INDEX" >
<xs:complexType>
<xs:sequence>
<xs:element name="ID" type="xs:string" />
<xs:element name="CODE" type="xs:string" />
<xs:element name="COL" type="xs:unsignedShort" />
<xs:element name="ROW" type="xs:unsignedShort" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" name="CLONES" >
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="CLONE" >
<xs:complexType>
<xs:sequence>
<xs:element name="ID" type="xs:string" />
<xs:element name="VALUES" >
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="VALUE" >
<xs:complexType>
<xs:sequence>
<xs:element name="NAME" type="xs:string" />
<xs:element name="ID" type="xs:string" />
<xs:element minOccurs="0" name="DATA" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>

8. Доработки настроек и функционала

2010 год

  • 2010/Август/23  Использование стандартного трафарета - в связи с невостребованностью "стандартного" трафарета пока исключена возможность его выбора в WEB-приложении.
  • 2010/Сентябрь/21 Произведено разделение WEB-клиента Сведения отчетности - Центра учета (далее, WEB-Своды) по версиям Системы Парус 8. Соответственно версии WEB-Сводов 8.5.4 (и более ранние) и 8.5.5 теперь НЕ совместимы. Начиная с релизов 8.5.5 "старше" 08.09.2010 г. для каждого релиза будет выпускаться обновленный инсталлятор WEB-клиента, соответствующий данному релизу и работающий с этим релизом.
    Подробнее:
    • версии 8.5.4 (и более ранним) соответствует изначальный вариант WEB-Сводов (его особенность - включение в инсталлятор серверных объектов, которые при установке WEB-Сводов "прогонялись" по базе);
    • в версии 8.5.5 серверные объекты перенесены в СХС и удалены из инсталлятора; теперь эти объекты устанавливаются вместе с Системой при наличии соответствующей лицензии.
  • 2010/Октябрь/11 Окно "Настройка Web-сервера", вкладка "Конфигурация": открыт для редактирования параметр "Устанавливать до ... соединений с Oracle". Теперь возможно изменение количества соединений с Oracle в пределах, определенных лицензией на web-сервис.
    Ранее: Параметр был равен максимальному количеству одновременно устанавливаемых соединений с Oracle определенных лицензией на web-сервис, и был недоступен для изменения.
  • 2010/Октябрь/28
    • На форму параметров сведения (форма "Формирование свода", вызывается по дополнительному действию "Сформировать свод ...") добавлен признак Формировать промежуточные итоги. Поле доступно для редактирования при значении Запретить в поле "Пересчеты в составе свода".
      Ранее: Признак не отображался на форме "Формирование свода", и был всегда установлен. В результате этого у сведенных отчетов отсутствовал состав показателей.
    • Реализована настраиваемая возможность при добавлении отчета осуществлять выбор контрагента не через мнемокод, а через наименование. Для этого в окне "Настройка Web-сервера" (вкладка "Конфигурация", группа параметров "Сведение отчетности ") предназначен параметр Использовать наименования контрагентов. При установленном флажке в основном представлении вместо мнемокода будет отображаться наименование контрагента. То же для отбора и сортировки. При этом, для выбора контрагента при добавлении отчета предназначена пара элементов "Контрагент" + "Контрагент (Наименование)", с возможностью выбора контрагента из списка, открывающегося в отдельном окне.
  • 2010/Ноябрь/03 Реализована возможность использования WEB-клиента Сведения отчетности - Центра учета совместно с версией ПАРУС 8 на базе Oracle XE. Обеспечивается стабильная работа до 20 удаленных пользователей.
    Работа Parus Web Server на Oracle XE для небольшого количества пользователей не отличается от работы с "обычным" Oracle: при нагрузке на Web Server от 1 до 20 пользователей и от 1 до 2 соединений с Oracle среднее время отклика (average response time) изменяется незначительно (в пределах нескольких сотых долей секунды).
  • 2010/Ноябрь/29 Появилась возможность создания замечаний (со статусами и историей) непосредственно к ячейкам значений отчетов (Первичные/Сводные отчеты, действие "Исправить значения", окно с отчетом по форме).
    Для ячейки реализованы новые действия:
    • Добавить замечание с указанием статуса из одноименного словаря.
    • Замечания - для просмотра списка (истории) замечаний и добавления (а также исправления и удаления - до сохранения изменения) замечаний. Если ни одного замечания нет, то это действие недоступно.
    Ячейка с замечанием помечается цветом статуса последнего замечания.
  • 2010/Ноябрь/30  Сокращено время переноса отчетов в MS Excel. Время переноса не зависит от наличия в трафарете зарезервированных слов.
  • 2010/Декабрь/02 Доработан алгоритм подбора проверок, аналогично Win-приложению (см. статья новостей к событию П8-11427), в т.ч.: в окне "Настройка Web-сервера" (вкладка "Конфигурация", группа параметров "Сведение отчетности ") добавлен признак Учитывать перечни проверок контрагентов. Если признак установлен, то в перечне проверок отчета будут отображаться проверки, привязанные и к форме отчета, и к контрагенту. Если признак не установлен, то будут отображаться все проверки, привязанные к форме отчета.
  • 2010/Декабрь/17 Реализована загрузка отчетов в пользовательском формате.

2011 год

  • 2011/Январь/27 Начиная с верс. 8.5.5.0.
    1. Окно "Отчет по форме..."
      1. При исправлении значений отчета изменено назначение кнопки "Сохранить изменения" на сохранение значений и автоматическое пересчитывание значений из БД с выводом их на экран.
      2. Добавлена кнопка "Сохранить изменения и закрыть окно" для сохранения значений и последующим закрытием окна (вкладки) браузера.
      3. Добавлена кнопка "Пересчитать" с действием аналогичным "Пересчитать" контекстного меню.
      4. Порядок расположения кнопок на экране: Перенести в Excel - Пересчитать - Сохранить изменения и закрыть окно - Сохранить изменения
    2. Окно со списком отчетов
      1. Кнопка "Пересчитать все в каталоге" переименована в кнопку "Пересчитать отчет" и соответственно изменено действие, а пункт меню "Дополнительные действия - Пересчитать отчет" переименован в пункт "Пересчитать все в каталоге" и соответственно изменено действие.
      2. Кнопка "Проверить все в каталоге" переименована в кнопку "Проверить отчет" и соответственно изменено действие, а пункт меню "Дополнительные действия - Проверить отчет" переименован в пункт "Проверить все в каталоге" и соответственно изменено действие.
      3. Фон строчки "Дополнительные действия" изменен на белый.
  • 2011/Август/05 Начиная с верс. 8.5.5.0. Разработан Монитор состояния сервисов.
  • 2011/Сентябрь/15 Начиная с верс. 8.5.5.0. Теперь при выполнении действий:
    • Исправить отчет,
    • Размножить отчет,
    • Сформировать первичный отчет
    пользователь имеет возможность исправить поле "Дата отчета" выбором из выпадающего списка возможных значений - в соответствии с настройками сервиса.
    Ранее подобный выбор был возможен при выполнении только действия "Добавить отчет", а при указанных выше трех действиях - только ручной ввод.
  • 2011/Сентябрь/19 Начиная с верс. 8.5.5.0. Для записи об отчете добавлены:
    • Признак принятия отчета с возможными значениями: Не принят, Принят, Отклонен.
    • Действия "Принять отчет" и "Отклонить отчет".
    Используются следующим образом:
    • При создании отчета признак принимает значение Не принят.
    • По действию "Принять отчет" - Принят. Изменение значений отчета запрещено.
    • По действию "Отклонить отчет" - Отклонен. Изменение значений отчета разрешено.
    • При смене состояния отчета на "Изменен" - Не принят.
  • 2011/Сентябрь/19 Начиная с верс. 8.5.5.0. реализованы:
    • Возможность использования логической функции "ЕСЛИ" для получения значений отчета.
    • Отображение логических значений как ИСТИНА и ЛОЖЬ (а не цифровыми обозначениями).
  • 2011/Сентябрь/30 Начиная с верс. 8.5.5.0. Обратите внимание на порядок выбора трафарета при открытии формы:
    • Если трафаретов по правам доступа несколько и один из них имеет признак "Исп. по умолчанию", то открывается сразу это трафарет.
    • Если трафаретов по правам доступа несколько и ни один из них не имеет признак "Исп. по умолчанию", то предлагается список трафаретов для ручного выбора.
    • Если трафарет по правам доступа только один, то открывается сразу это трафарет, несмотря на наличие признака "Исп. по умолчанию".
    Попутно отметим, что в WEB-Сводах отсутствует (не предлагается) "Стандартный" трафарет.
  • 2011/Ноябрь/22Начиная с верс. 8.5.5.0. Теперь открыть форму отчета - Исправить значения - можно по двойному щелчку на записи подотчета.

9. О Справке

ПАРУС® WEB-приложение "Сведение отчетности - Центр учета": Справка
Редакция от 25.11.2011
© Корпорация ПАРУС, 1990-2011. Все права защищены.