WEB-приложение Сведение отчетности (одним файлом)

WEB-приложение Сведение отчетности (одним файлом) (26.07.2026)

1. Общие сведения
Сервис обеспечивает доступ удаленных пользователей к базе данных Системы Парус 8. С использованием предлагаемого решения удаленные пользователи получают возможность работать с базой данных Системы Парус 8, применяя все функциональные возможности модуля "Сведение отчетности - Центр учета" Системы. Как показано на схеме, сервис "WEB-приложение "Сведение отчетности - Центр учета" реализует интерфейс между базой данных Парус 8 и удаленными пользователями, являясь фактически шлюзом между корпоративной сетью и внешним миром. Сервис дает возможность реализовать сбор и сведение отчетности с удаленных абонентских пунктов, используя все преимущества Web-технологий, а именно: Отсутствие необходимости распространять и устанавливать какое-либо программное обеспечение на компьютеры удаленных абонентских пунктов. Мгновенное автоматическое применение изменений настроек форм (алгоритмов расчета показателей, проверок, настройку трафаретов, и т. п.) ко всем отчетам удаленных абонентских пунктов без необходимости уведомлять их об этом и распространять какие-либо пакеты обновлений. Не выдвигается требований к наличию на компьютерах удаленных абонентских пунктов каких-либо третьих продуктов, не поставляемых бесплатно в составе операционной системы. Отсутствие необходимости в хранении данных, входящих в представляемые отчеты, на компьютерах абонентских пунктов снижает вероятность их хищения и/или фальсификации без применения нетривиальных усилий по физической защите удаленных компьютеров. Существование одной и только одной полностью подконтрольной центру учета точке, через которую проходят данные удаленных абонентских пунктов, позволяет более внимательно подойти к вопросу контроля целостности и аутентичности.

1.1. Технические требования к аппаратно-программному обеспечению
В данном разделе будет описана рекомендуемая конфигурация аппаратно- программного обеспечения, необходимого для развертывания и последующего функционирования системы. Описанная ниже конфигурация является минимальной для обеспечения функционирования сервиса. Если все сервера расположены в одной стойке, то возможно использование одного ИБП повышенной мощности. Необходимо обратить внимание, что в серверах должны быть установлены сетевые адаптеры надежного производителя. Внимание: сервера некоторых производителей поставляются с сетевыми картами, имеющими программные ограничения и требующие активации для функционирования в полнодуплексном режиме. Рекомендуется обеспечить доступ к Интернет через провайдера, имеющего прямой выход на общефедеральные каналы связи. Ваш доступ к Интернету должен иметь минимальные ограничения со стороны провайдера. Крайне нежелательно подключение системы с использованием прокси-сервера. Канал выделяемый провайдером должен быть "выделенным" (т.е. не разделен с другими клиентами). Провайдер должен обеспечивать доступ к Интернет с полосой пропускания не менее 1 Мбит/с. Ниже приведены минимальные требования к каналу связи по количеству пользователей.
| 1-150 пользователей | 150-500 пользователей | 500-1000 пользователей | более 1000 пользователей
--- | --- | --- | --- | ---
Скорость доступа | 1 Мб/с | 10 Мб/с | 100 Мб/с | 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 должен быть полностью открыт. В случае использования протокола HTTPS также должен быть полностью открыт порт 443.
Желательно заключить с провайдером дополнительное соглашение о доступе в режиме 24х7. Все технические перерывы должны быть прописаны и известны заранее. Необходимо также учитывать, что Интернет-трафик в период сбора отчетности может достигать нескольких десятков Гигабайт (80% трафика - исходящий). Рекомендуется позаботится о выборе/смене тарифного плана. Для выбора оптимальной схемы работы аппаратного обеспечения сервиса в зависимости от предполагаемого количества пользователей перейдите по соответствующей ссылке:

1.1.1. 1-150 пользователей
Рекомендуется использовать схему с одним WEB-сервером: Минимальные требования к аппаратному обеспечению: Процессор: Intel Core 2 Duo (2 ГГц) Память: 1 ГБ Минимальные требования к каналу связи: 1 Мб/сек Программное обеспечение:
| Windows редакция | Linux редакция
--- | --- | ---
Операционная система | Минимально Windows 7 / Windows Server 2008 (x86/x64) | Red Hat Enterprise Linux 7.x (x64) CentOS 7.x (x64) Ubuntu Server 16.04.x LTS (x64) openSUSE 15.2+ (x64)
Отчетная система | Microsoft Excel 2007/2010 (x86/x64 в соответствии с сервером приложений) | не требуется

1.1.2. 150-500 пользователей

1.1.3. 500-1000 пользователей
В данном случае рекомендуется использовать кластерную схему работы. Однако можно использовать и отдельный WEB-сервер.

1.1.3.1. Отдельный WEB-сервер
Минимальные требования к аппаратному обеспечению: Процессор: 2 x Intel Xeon E5606 или E5620 (2 ГГц) Память: 4 ГБ Минимальные требования к каналу связи: 100 Мб/сек Программное обеспечение:
| Windows редакция | Linux редакция
--- | --- | ---
Операционная система | Минимально Windows 7 / Windows Server 2008 (x86/x64) | Red Hat Enterprise Linux 7.x (x64) CentOS 7.x (x64) Ubuntu Server 16.04.x LTS (x64) openSUSE 15.2+ (x64)
Отчетная система | Microsoft Excel 2007/2010 (x86/x64 в соответствии с сервером приложений) | не требуется

1.1.3.2. Кластерная схема
Схема применяется для снижения вычислительной нагрузки на отдельный WEB-сервер и может объединять в себе несколько WEB-серверов (узлов кластера). Кластер обычно используется только для перенаправления запросов пользователей на узлы с определенной в настройках вероятностью. Основная вычислительная нагрузка ложится на узлы кластера. Минимальные требования к аппаратному обеспечению для кластера и узлов кластера: Процессор: Intel Core i5 или i7, Intel Xeon (2 ГГц) Память: 2 ГБ Минимальные требования к каналу связи: 100 Мб/сек Программное обеспечение для кластера:
| Windows редакция | Linux редакция
--- | --- | ---
Операционная система | Минимально Windows 7 / Windows Server 2008 (x86/x64) | Red Hat Enterprise Linux 7.x (x64) CentOS 7.x (x64) Ubuntu Server 16.04.x LTS (x64) openSUSE 15.2+ (x64)
Программное обеспечение для узлов кластера:
| Windows редакция | Linux редакция
--- | --- | ---
Операционная система | Минимально Windows 7 / Windows Server 2008 (x86/x64) | Red Hat Enterprise Linux 7.x (x64) CentOS 7.x (x64) Ubuntu Server 16.04.x LTS (x64) openSUSE 15.2+ (x64)
Отчетная система | Microsoft Excel 2007/2010 (x86/x64 в соответствии с сервером приложений) | не требуется

1.1.4. более 1000 пользователей
В данном случае рекомендуется использовать кластерную схему работы. Однако можно использовать и отдельный WEB-сервер.

1.1.4.1. Отдельный WEB-сервер
Схема применяется для снижения вычислительной нагрузки на отдельный WEB-сервер и может объединять в себе несколько WEB-серверов (узлов кластера). Кластер обычно используется только для перенаправления запросов пользователей на узлы с определенной в настройках вероятностью. Основная вычислительная нагрузка ложится на узлы кластера. Минимальные требования к аппаратному обеспечению для кластера: Процессор: Intel Core i5 или i7, Intel Xeon (2 ГГц) Память: 2 ГБ Минимальные требования к аппаратному обеспечению для узлов кластера: Требования к каждому узлу кластера определяются исходя из предполагаемого количества пользователей перенаправленных на данный узел кластером. Для определения минимальных требований к процессору и ОЗУ можно ориентироваться на таблицу:
| 1-150 пользователей | 150-500 пользователей | 500-1000 пользователей | более 1000 пользователей
--- | --- | --- | --- | ---
Конфигурация | Intel Core 2 Duo (2 Ггц) Память: 1 ГБ | Intel Core i5 или i7, Intel Xeon (2 Ггц) Память: 2 ГБ | 2 x Intel Xeon E5606 или E5620 (2 Ггц) Память: 4 ГБ | 2 или 4 x Intel Xeon E5-2600 или E5-4600 (2 Ггц) Память: >= 8 ГБ
Минимальные требования к каналу связи: 1 Гб/сек Программное обеспечение для кластера:
| Windows редакция | Linux редакция
--- | --- | ---
Операционная система | Минимально Windows 7 / Windows Server 2008 (x86/x64) | Red Hat Enterprise Linux 7.x (x64) CentOS 7.x (x64) Ubuntu Server 16.04.x LTS (x64) openSUSE 15.2+ (x64)
Программное обеспечение для узлов кластера:
| Windows редакция | Linux редакция
--- | --- | ---
Операционная система | Минимально Windows 7 / Windows Server 2008 (x86/x64) | Red Hat Enterprise Linux 7.x (x64) CentOS 7.x (x64) Ubuntu Server 16.04.x LTS (x64) openSUSE 15.2+ (x64)
Отчетная система | Microsoft Excel 2007/2010 (x86/x64 в соответствии с сервером приложений) | не требуется

1.1.4.2. Кластерная схема
Схема применяется для снижения вычислительной нагрузки на отдельный WEB-сервер и может объединять в себе несколько WEB-серверов (узлов кластера). Кластер обычно используется только для перенаправления запросов пользователей на узлы с определенной в настройках вероятностью. Основная вычислительная нагрузка ложится на узлы кластера. Минимальные требования к аппаратному обеспечению для кластера: Процессор: Intel Core i5 или i7, Intel Xeon (2 ГГц) Память: 2 ГБ Минимальные требования к аппаратному обеспечению для узлов кластера: Требования к каждому узлу кластера определяются исходя из предполагаемого количества пользователей перенаправленных на данный узел кластером. Для определения минимальных требований к процессору и ОЗУ можно ориентироваться на таблицу:
| 1-150 пользователей | 150-500 пользователей | 500-1000 пользователей | более 1000 пользователей
--- | --- | --- | --- | ---
Конфигурация | Intel Core 2 Duo (2 Ггц) Память: 1 ГБ | Intel Core i5 или i7, Intel Xeon (2 Ггц) Память: 2 ГБ | 2 x Intel Xeon E5606 или E5620 (2 Ггц) Память: 4 ГБ | 2 или 4 x Intel Xeon E5-2600 или E5-4600 (2 Ггц) Память: >= 8 ГБ
Минимальные требования к каналу связи: 1 Гб/сек Программное обеспечение для кластера:
| Windows редакция | Linux редакция
--- | --- | ---
Операционная система | Минимально Windows 7 / Windows Server 2008 (x86/x64) | Red Hat Enterprise Linux 7.x (x64) CentOS 7.x (x64) Ubuntu Server 16.04.x LTS (x64) openSUSE 15.2+ (x64)
Программное обеспечение для узлов кластера:
| Windows редакция | Linux редакция
--- | --- | ---
Операционная система | Минимально Windows 7 / Windows Server 2008 (x86/x64) | Red Hat Enterprise Linux 7.x (x64) CentOS 7.x (x64) Ubuntu Server 16.04.x LTS (x64) openSUSE 15.2+ (x64)
Отчетная система | Microsoft Excel 2007/2010 (x86/x64 в соответствии с сервером приложений) | не требуется

2. Установка

2.1. Windows
5. Порядок установки: Запустить на выполнение установочный файл сервиса ParusBalanceOnline.exe с диска дистрибутива. На запрос операционной системы, нажмите Run (Выполнить). Начнется процесс установки сервиса. Информация о версии: Окно содержит информацию о продукте и номер устанавливаемой версии. Нажмите Далее. На 64-разрядных платформах вы увидите окно, уведомляющее вас о возможности использования 64-разрядной редакции сервиса: Установите флажок, если вы хотите использовать 64-разрадную редакцию сервиса.
   Важно! | Для использования 64-разрядной редакции сервиса вам необходимо установить 64-разрядные версии клиентской части СУБД Oracle и 64-разрядную редакцию Microsoft Office. Разрядность сервиса и разрядность сервера БД никак не связаны. Вы можете использовать 64-разрядные компоненты СУБД на сервере БД, и 32-разрядную редакцию сервиса, и наоборот.
Путь установки: Здесь необходимо указать путь к папке установки файлов Сервиса на жестком диске. В дальнейшем выбранная директория будет использоваться в качестве рабочей директории Сервиса. Нажмите Установить. Начинается процесс установки. Процесс может занять некоторое время (минута-две). По окончании откроется главное окно Конфигуратора Сервиса.

2.1.1. Состав поставки
После установки Сервиса "Сведение отчетности OnLine" в папке, заданной на этапе установки, будут созданы следующие папки и файлы: DOJO - папка, содержащая скрипты свободной модульной библиотеки JavaScript. Эта библиотека служит для упрощения ускоренной разработки основанных на JavaScript или AJAX web-приложений. MILLJS, PARUSJS, PARUSPROXYJS - папки, содержащие скрипты пользовательского интерфейса Сервиса. REDIST - папка, содержащая необходимые третьесторонние компоненты. WIN64 - папка, содержащая 64-разрядные редакции исполняемых файлов. DebugView.exe - отладочный монитор, для отслеживания событий Сервиса. DBSetupShell.exe - утилита для обслуживания Баз данных. BalanceOnline.chm - файл справки по Сервису (этот файл). MillAppServer.conf - файл конфигурации Сервера. MillAppServer.exe - утилита управления Сервером. ParusBalanceOnlineUninstaller.exe - деинсталлятор Сервиса. ParusWebServerConfigurator.exe - конфигуратор Сервиса. Дополнительные программы и библиотеки для функционирования Сервиса. Кроме того, в меню Start (Пуск) будет создана группа ярлыков: Здесь: Документация - ссылка на этот документ. Настройка Сервиса - запуск Конфигуратора Сервиса. Отладочный монитор - утилита для отслеживания событий Сервиса. Удалить ПАРУС - Сведение отчетности Онлайн - деинсталлятор Сервиса.

2.2. Linux
2. Поддерживаемые дистрибутивы Linux: Red Hat 7.x и производные от него (в частности CentOS 7.x) Ubuntu 16.04.x LTS и производные от него OpenSUSE 15.2 и производные от него На текущий момент доступна только 64-разрядная версия сервиса. Порядок установки: Выберите соответствующий вашему дистрибутиву Linux архив-инсталлятор сервиса, и скопируйте его в каталог установки (например: /usr/lib64/ParusBalanceOnline). Распакуйте архив:
       tar -xvzf ParusBalanceOnLine.redhat.tgz
3. После окончания распаковки, запустите конфигуратор:
       ./ParusWebServerConfigurator.Console
Важно! | Для работы любых исполняемых файлов ПП требуется наличие установленной библиотеки libicu. Проверить ее наличие можно с помощью команды uconv -V. Обычно эта библиотека по умолчанию установлена в ОС, за редким исключением, например CentOS 7. В случае отсутствия библиотеки ее нужно установить с помощью команды менеджера пакетов: Для Red Hat: sudo yum install libicu Для Debian: sudo apt-get install libicu Для SUSE: sudo zypper install libicu
Кстати | Убедитесь, что установлена локаль ru_RU.UTF-8 и переменная окружения $LANG использует ее. Получить список установленных локалей:
    locale
Если нужной локали нет в списке, сгенерируйте ее и при необходимости настройте установленные пакеты:
    1sudo locale-gen "ru_RU.UTF-8"
    2sudo dpkg-reconfigure locales
для SUSE:
    sudo localedef -i ru_RU -f UTF-8 ru_RU
если выдается ошибка "cannot read character map directory `/usr/share/i18n/charmaps': No such file or directory", то необходимо установить пакет glibc-i18ndata и повторить команду. Установите локаль ru_RU.UTF-8 как умолчательную для системы:
    sudo update-locale LANG=ru_RU.UTF-8
для SUSE:
    sudo localectl set-locale LANG=ru_RU.UTF-8

2.2.1. Состав поставки
После распаковки архива в каталоге будут созданы следующие папки и файлы: dojo - папка, содержащая скрипты свободной модульной библиотеки JavaScript. Эта библиотека служит для упрощения ускоренной разработки основанных на JavaScript или AJAX web-приложений. milljs, parusjs, parusproxyjs - папки, содержащие скрипты пользовательского интерфейса Сервиса. DBSetup - утилита для обслуживания Баз данных. documentation - каталог со справкой по Сервису (стартовый файл documentation/index.html). MillAppServer.Console - утилита управления Сервером. MillAppServer.conf - файл конфигурации Сервера. ParusWebServerConfigurator.Console - конфигуратор Сервиса. Дополнительные программы и библиотеки для функционирования Сервиса.

3. Конфигурирование
Windows редакция Основное окно конфигуратора: Элементы управления: Закрыть - закрывается окно конфигуратора сервиса. При этом сервис остается в рабочем состоянии. Чтобы остановить сервис необходимо повторно открыть конфигуратор и воспользоваться кнопкой Остановить сервис. Стартовать сервис - сервис регистрируется в операционной системе как служба и запускается. Кнопка изменяет вид на . При нажатии на нее сервис будет остановлен. Тип конфигурации - пошаговое создание новой конфигурации. Подробнее. Сервер в сети - установка протокола обмена (HTTP, HTTPS). Подробнее. База данных Парус 8 - объявление базы данных, пользователя и пароля для доступа. Подробнее. Распределение соединений - распределение соединений в соответствии количеством доступных лицензий. Подробнее. Дополнительные возможности - настройка протоколирования событий сервера (в файл, в БД). Подробнее. О программе / Проверка наличия обновлений - Показ диалогового окна "О программе" со сведениями о текущей версии, в котором можно проверить наличие новых версий сервиса на сайте разработчика. Подробнее. Linux редакция При запуске конфигуратора будет показана его версия и дата сборки, информация о текущем состоянии сервиса, а также основное меню действий: Создание/изменение конфигурации – пошаговое создание новой или изменение существующей конфигурации Запустить сервис – регистрация сервиса в операционной системе как службы и ее запуск Остановить сервис – остановка службы сервиса Разрегистрировать сервис – разрегистрация службы сервиса из операционной системы Проверить наличие обновлений
Кстати | Для перехода между действиями, возврата к предыдущему меню или выходу из конфигуратора можно использовать комбинацию клавиш Ctrl+C.

3.1. Создание конфигурации
Для начала работы с сервисом необходимо задать настройки его конфигурации. В главном окне нажать значок "Тип конфигурации": При наличии существующей конфигурации будет задан вопрос об ее использовании или начале новой конфигурации: При выборе "Yes" ("Да") - вводимые настройки будут применяться к существующей конфигурации. При выборе "No" ("Нет") - будет создана новая конфигурация сервера. "Cancel" ("Отмена") - будет осуществлен возврат к предыдущему шагу настроек. В следующем окне необходимо определить, какую роль будет исполнять сервер, на котором производится настройка конфигурации:

3.1.1. Контроллер кластера
Контроллер кластера - при большом количестве ожидаемых запросов от удаленных пользователей рекомендуется организовать кластерную структуру. Для этого, один из серверов выделятся под контроллер кластера (сервер, распределяющий соединения по другим серверам). При этом, выделенный сервер может не обладать высокой производительностью, так как будет использоваться исключительно для перенаправления запросов удаленных пользователей на другие рабочие сервера. В окне прописываются доменные имена серверов (узлов кластера), на которые кластер должен перенаправлять запросы удаленных пользователей, а также вероятность перенаправления. На скриншоте-примере указаны три сервера с определенными доменными именами. При этом на сервер svody3.svody.ru будет перенаправляться 50% запросов, а на другие два по 25%. Это может быть связано с большей производительностью третьего сервера. Установка флага "Автоматическая балансировка" позволяет распределять нагрузку на узлы кластер в автоматическом режиме. Балансировка возможна по времени отклика, по количеству сессий или по количеству соединений. Для выполнения автоматической балансировки серверу необходимо обладать информацией о текущей нагрузке на каждом из узлов кластера, для этого контроллер будет с указанной периодичностью опрашивать узлы. Для получения информации о текущей нагрузке, контроллеру необходимо авторизоваться на этих узлах используя указанные данные пользователя ОС Windows или Linux, который должен входить в группу "Администраторы". В случае с Windows это одноименная группа "Администраторы", в случае с Linux это группа wheel (для Red Hat и производных) или sudo (для Ubuntu и производных). После того как будут заданы все узлы кластера, необходимо нажать ссылку "Завершить". Будет предложено сохранить изменения. Настройка контроллера кластера на этом завершена и необходимо перейти к настройке узлов кластера. Работа

3.1.2. Самостоятельный сервер/Узел кластера
Самостоятельный сервер / Узел кластера - данный вариант используется в случае если не планируется большое количество одновременных подключений удаленных пользователей или настраивается конкретный узел кластера. После выбора данного пункта будет запущена пошаговая процедура настройки конфигурации. Следующий шаг

3.1.3. Сервер с настройками по умолчанию
Для упрощения и ускорения процедуры настройки конфигурации предусмотрен вариант установок сервера по умолчанию. При выборе этого пункта все настройки устанавливаются в соответствии с наиболее часто употребляемыми. Необходимо указать только путь к базе данных, пользователя и пароль (Параметры подключения к базе данных). После того, как все настройки внесены, нажмите ссылку "Далее". Будет предложено сохранить созданную конфигурацию. Настройки по умолчанию: - Протокол обмена данными - HTTP - Номер порта TCP - 80 - Время ожидания после старта системы - 0 сек - Время бездействия сессии - 3600 сек - Повторно использовать сессии - включено - Сжимать трафик - включено - Рабочий каталог (стартовая страница) - путь на жестком диске, указанный при установке Сервиса - Количество лицензий - максимальное, равномерно распределенное с доступом ко всем организациям, без удаленного доступа для приложения Win32 - Без возможности обмена сообщениями как в web-приложениях, так и в приложениях Windows - Без протоколирования Работа

3.2. Параметры сетевых настроек
Для установки сетевых настроек нажмите Откроется окно выбора протокола обмена данными: Доступны два варианта: HTTP - стандартный протокол обмена данными через интернет HTTPS - защищенный протокол обмена данными через интернет Настройки для HTTP: - Порт TCP: указывает номер порта TCP/IP, который будет прослушиваться сервисом для приема входящих запросов на всех имеющихся на момент старта сервиса в системе сетевых интерфейсах. Поскольку сервис реализует протокол HTTP, то рекомендуется использовать порт 80. В случае, если Web-сервер использует третье стороннее серверное программное обеспечение (Microsoft IIS, Apache, и т. п.), которое обслуживает 80 порт (и "занимает" его), то необходимо использовать порт, отличный от 80 (и при этом свободный). Обращаться к сервису в таком случае необходимо, указывая порт в строке адреса после двоеточия. При помощи команды Windows netstat можно узнать текущее состояние портов TCP. - Количество потоков прослушивателя: определяет количество потоков обслуживаемых входящие соединения (по умолчанию используется 16 потоков). При неустойчивом канале связи, значение этого параметра настраивается согласно рекомендациям. - Время ожидания после старта службы: определяет количество секунд, в течение которых сервис будет ожидать завершения инициализирующих действий других компонент системы, после чего приступит к собственной инициализации. В случае, если web-сервер и сервер БД установлены на одной машине, то необходимо дождаться перехода БД в состояние "open", прежде, чем открывать сессии Oracle и приступать к обработке запросов удаленных пользователей. Время, необходимое для этого, нужно выразить в секундах и задать в значении этого параметра.
Полезные цифры
1/2 минуты | 30 секунд
1 минута | 60 секунд
2 минуты | 120 секунд
3 минуты | 180 секунд
5 минут | 300 секунд
10 минут | 600 секунд
- Время бездействия сессии: определяет количество секунд, в течение которых сессия веб сервера (серверный объект, владеющий информацией о состоянии удаленного подключения) сохраняется в памяти сервера в случае отсутствия активности удаленного пользователя. После истечения этого времени сессия будет уничтожена вместе со всей несохраненной клиентом информацией (в том числе и аутентификационной). Категорически не рекомендуется устанавливать это значение меньше, чем 300 секунд (5 минут). Значение по умолчанию - 3600 секунд (1 час). Все ненулевые значения, меньшие 60, трактуются как 60 секунд. - Время бездействия сессии Парус 8: устанавливает ограничение по времени бездействия в секундах, во время создания веб сессии Парус 8 в БД. Значение по умолчанию, соответствует времени бездействия сессии веб сервера. При использовании значения 0 - ограничение на время бездействия не накладывается. Но во время завершения сессии веб сервера по истечению времени бездействия, сессия Парус 8 автоматически также будет завершена. То же самое касается случая, когда значение времени бездействия сессии Парус 8, будет превышать время бездействия сессии сервера приложений. Все ненулевые значения, меньшие 60, трактуются как 60 секунд. Используемые значения конкретных сессий можно увидеть в интерфейсе Парус 8 - Администратор -> Учет -> Управление сеансами.
Полезные цифры
1/2 часа | 1800 секунд
1 час | 3600 секунд
3/2 часа, полтора часа | 5400 секунд
2 часа | 7200 секунд
3 часа | 10800 секунд
Сутки | 86400 секунд
Неделя | 604800 секунд
- Повторно использовать сессии: позволяет не пере-открывать соединения после каждого обмена "запрос-ответ" между клиентом и сервером. Повторно используются соединения только в том случае, если такие соединения поддерживаются клиентом и сервером согласованно. Время ожидания нового запроса на зарезервированном соединении составляет 75 секунд. Рекомендуется выключать этот параметр при обслуживании более 300 одновременных соединений, поскольку слишком большой ресурс сервера начинает тратиться на проверку состояния зарезервированных соединений, что отрицательно сказывается на производительности системы в целом. - Сжимать трафик: позволяет серверу использовать сжатие передаваемых данных. Сжатие применяется только в том случае, если браузер удаленного клиента способен корректно обрабатывать сжатые данные. Для сжатия трафика используется библиотека zlib. Минимальная тестированная на совместимость версия - 1.0.4, она включается в стандартную поставку сервиса. - Отключать алгоритм Nagle для соединений: Выключает алгоритм Nagle для TCP соединений, путем включения опции TCP_NO_DELAY у сокетов. Данная опция будет работать только при включенной опции "Повторно использовать сессии". - Способ идентификации сессии: позволяет указать каким способом будет отслеживаться сервером открытая сессия. Возможны варианты отслеживания по идентификатору сессии, по IP-адресу удаленного пользователя, а также одновременное отслеживание по идентификатору и IP-адресу. Настройки для HTTPS: - Порт TCP: указывает номер порта TCP/IP, который будет прослушиваться сервисом для приема входящих запросов на всех имеющихся на момент старта сервиса в системе сетевых интерфейсах. Поскольку сервис реализует протокол HTTPS, то рекомендуется использовать порт 443. В случае, если Web-сервер использует третье стороннее серверное программное обеспечение (Microsoft IIS, Apache, и т. п.), которое обслуживает 443 порт (и "занимает" его), то необходимо использовать порт, отличный от 443 (и при этом свободный). Обращаться к сервису в таком случае необходимо, указывая порт в строке адреса после двоеточия. При помощи команды Windows netstat можно узнать текущее состояние портов TCP. - Количество потоков прослушивателя: определяет количество потоков обслуживаемых входящие соединения (по умолчанию используется 16 потоков). При неустойчивом канале связи, значение этого параметра настраивается согласно рекомендациям. - Время ожидания после старта службы: определяет количество секунд, в течение которых сервис будет ожидать завершения инициализирующих действий других компонент системы, после чего приступит к собственной инициализации. В случае, если web-сервер и сервер БД установлены на одной машине, то необходимо дождаться перехода БД в состояние "open", прежде, чем открывать сессии Oracle и приступать к обработке запросов удаленных пользователей. Время, необходимое для этого, нужно выразить в секундах и задать в значении этого параметра.
Полезные цифры
1/2 минуты | 30 секунд
1 минута | 60 секунд
2 минуты | 120 секунд
3 минуты | 180 секунд
5 минут | 300 секунд
10 минут | 600 секунд
- Время бездействия сессии: определяет количество секунд, в течение которых сессия веб сервера (серверный объект, владеющий информацией о состоянии удаленного подключения) сохраняется в памяти сервера в случае отсутствия активности удаленного пользователя. После истечения этого времени сессия будет уничтожена вместе со всей несохраненной клиентом информацией (в том числе и аутентификационной). Категорически не рекомендуется устанавливать это значение меньше, чем 300 секунд (5 минут). Значение по умолчанию - 3600 секунд (1 час). Все ненулевые значения, меньшие 60, трактуются как 60 секунд. - Время бездействия сессии Парус 8: устанавливает ограничение по времени бездействия в секундах, во время создания веб сессии Парус 8 в БД. Значение по умолчанию, соответствует времени бездействия сессии веб сервера. При использовании значения 0 - ограничение на время бездействия не накладывается. Но во время завершения сессии веб сервера по истечению времени бездействия, сессия Парус 8 автоматически также будет завершена. То же самое касается случая, когда значение времени бездействия сессии Парус 8, будет превышать время бездействия сессии сервера приложений. Все ненулевые значения, меньшие 60, трактуются как 60 секунд. Используемые значения конкретных сессий можно увидеть в интерфейсе Парус 8 - Администратор -> Учет -> Управление сеансами.
Полезные цифры
1/2 часа | 1800 секунд
1 час | 3600 секунд
3/2 часа, полтора часа | 5400 секунд
2 часа | 7200 секунд
3 часа | 10800 секунд
Сутки | 86400 секунд
Неделя | 604800 секунд
- Повторно использовать сессии: позволяет не пере-открывать соединения после каждого обмена "запрос-ответ" между клиентом и сервером. Повторно используются соединения только в том случае, если такие соединения поддерживаются клиентом и сервером согласованно. Время ожидания нового запроса на зарезервированном соединении составляет 75 секунд. Рекомендуется выключать этот параметр при обслуживании более 100 одновременных соединений, поскольку слишком большой ресурс сервера начинает тратиться на проверку состояния зарезервированных соединений, что отрицательно сказывается на производительности системы в целом. - Сжимать трафик: позволяет серверу использовать сжатие передаваемых данных. Сжатие применяется только в том случае, если браузер удаленного клиента способен корректно обрабатывать сжатые данные. Для сжатия трафика используется библиотека zlib (http://www.zlib.net/), включается в стандартную поставку сервиса. - Отключать алгоритм Nagle для соединений: Выключает алгоритм Nagle для TCP соединений, путем включения опции TCP_NO_DELAY у сокетов. Данная опция будет работать только при включенной опции "Повторно использовать сессии". - Способ идентификации сессии: позволяет указать каким способом будет отслеживаться сервером открытая сессия. Возможны варианты отслеживания по идентификатору сессии, по IP-адресу удаленного пользователя, а также одновременное отслеживание по идентификатору и IP-адресу. - Сертификат центра сертификации: путь к файлу сертификата центра сертификации в pem-формате. - Сертификат домена: путь к файлу сертификата домена в pem-формате. - Закрытый ключ: путь к файлу закрытого/приватного ключа, от сертификата домена. - Пароль закрытого ключа: необязательный параметр, пароль от закрытого ключа сертификата. - Набор шифров для TLS 1.2 и ранее: необязательный параметр, если оставить пустым, то будет использоваться набор шифров по умолчанию. На данный момент, значение по умолчанию: EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA EECDH EDH+aRSA !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS !RC4). Указанные шифры будут использоваться между веб сервером и клиентом (клиент имеет свой набор поддерживаемых шифров), если при начале взаимодействия они найдут общие алгоритмы, доступные каждому из них. Порядок указания шифров важен, т.к. проверка возможности применения шифра осуществляется слева на право, в том порядке, в котором они выписаны. В умолчательный список не входят шифры с ГОСТ алгоритмами, поэтому в случае необходимости их поддержки (при использовании сертификата с ГОСТ алгоритмом шифрования) требуется их туда включить. Например, для поддержки: - только ГОСТ 2012 (и ничего больше), требуется указать: GOST2012-GOST8912-GOST8912 - всех версий ГОСТ (начиная с 89 и до 2012 включительно), требуется указать: GOST2012-GOST8912-GOST8912 GOST2001-GOST89-GOST89 GOST94-GOST89-GOST89 - набор шифров по умолчанию + ГОСТ 2012, требуется указать: EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA EECDH EDH+aRSA GOST2012-GOST8912-GOST8912 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS !RC4) Данный параметр применяется только для протокола TLS 1.2 и более ранних версий, т.е. если сервер и клиент для взаимодействия выбрали данные протоколы. - Набор шифров для TLS 1.3+: необязательный параметр. По смыслу, данный параметр полностью идентичен "Набор шифров для TLS 1.2 и ранее", но он применим только для протокола TLS 1.3 и последующих версий, т.е. если сервер и клиент для взаимодействия выбрали данный протокол. На данный момент, значение по умолчанию: TLS_AES_256_GCM_SHA384 TLS_CHACHA20_POLY1305_SHA256 TLS_AES_128_GCM_SHA256. В умолчательный список, как и в случае с параметром для TLS 1.2, не входят шифры с ГОСТ алгоритмами, поэтому в случае необходимости их поддержки, требуется их туда включить. Для поддержки ГОСТ 2015 определены следующие шифры: TLS_GOSTR341112_256_WITH_KUZNYECHIK_MGM_L, TLS_GOSTR341112_256_WITH_MAGMA_MGM_L, TLS_GOSTR341112_256_WITH_KUZNYECHIK_MGM_S, TLS_GOSTR341112_256_WITH_MAGMA_MGM_S. В таком случае, для поддержки ГОСТ 2015: - только ГОСТ 2015 (и ничего больше), требуется указать: TLS_GOSTR341112_256_WITH_KUZNYECHIK_MGM_L TLS_GOSTR341112_256_WITH_MAGMA_MGM_L TLS_GOSTR341112_256_WITH_KUZNYECHIK_MGM_S TLS_GOSTR341112_256_WITH_MAGMA_MGM_S - набор шифров по умолчанию + ГОСТ 2015, требуется указать: TLS_AES_256_GCM_SHA384 TLS_CHACHA20_POLY1305_SHA256 TLS_AES_128_GCM_SHA256 TLS_GOSTR341112_256_WITH_KUZNYECHIK_MGM_L, TLS_GOSTR341112_256_WITH_MAGMA_MGM_L, TLS_GOSTR341112_256_WITH_KUZNYECHIK_MGM_S, TLS_GOSTR341112_256_WITH_MAGMA_MGM_S Про процесс получения SSL-сертификата написано здесь. Особенности специфичные для Linux редакции описаны с соответствующем разделе.

3.3. Дополнительные прослушиватели
При необходимости переадресации с каких-либо TCP портов и http(s) протоколов, на фактически используемый порт и протокол сервиса (например, с 80, 8080 портов на 443 порт по https протоколу), сформируйте необходимую таблицу переадресации. Переадресация будет реализована, за счет дополнительных прослушивателей для каждой строки таблицы переадресации. Они будут принимать входящие запросы по указанному протоколу (http или https - описано ниже) и с указанного TCP порта, и затем перенаправлять их на фактически используемый порт и протокол сервиса. В зависимости от того, какой фактический протокол будет использовать сервис (http или https), таблица настройки переадресации, будет иметь вид: В случае настройки сервиса для работы по HTTP протоколу: В случае настройки сервиса для работы по HTTPS протоколу: Описание значений колонок: Порт - слушаемый порт дополнительного прослушивателя, для приема входящих запросов со всех имеющихся, на момент старта сервиса, сетевых интерфейсов, и переадресация их, на фактический порт сервиса. Например, с 80 порта на фактический порт, настроенный на предыдущем шаге. Протокол - протокол входящих запросов обрабатываемых дополнительным прослушивателем. Например, с указанного 80 порта должны приниматься запросы по http протоколу, а с 443 порта - по https протоколу, и переадресовываться на фактически используемый сервисом протокол.

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

3.4.1. Самостоятельное создание стартовой страницы
При конфигурировании сервиса вы можете указать каталог, содержащий файлы вашей собственной стартовой страницы: В указываемом вами каталоге должен находится файл с именем index.html, который будет выдан сервером в ответ на запрос. Внутри этого html-документа вы можете организовать взаимодействие с поставляемым web-приложением одним из следующих способов: С помощью перенаправления по ссылке. В этом случае пользователь будет просто перенаправлен на стартовую страницу web-приложения, и должен будет вводить параметры соединения, если они не были запомнены браузером. С помощью реализации своего механизма ввода логина и пароля. В этом случае у вас появляется возможность избавить пользователя от необходимости взаимодействовать с окном ввода логина и пароля, но на вас возлагается обязанность проверки правильности аутентификационной информации пользователя. С помощью фрейма. Вы можете "встроить" web-приложение внутрь вашего собственного документа с помощью механизма фреймов.
Важно! | Помните, что все текстовые файлы должны быть подготовлены вами в кодировке UTF-8.
Пример | Ниже приведен пример реализации файла index.html. В демонстрационно-дидактических целях документ содержит примеры всех упомянутых механизмов:
    01<html>
    02<head>
    03<script>
    04
    05function createHttpRequest()
    06{
    07  var httpRequest;
    08  if(window.XMLHttpRequest)
    09  {
    10    httpRequest = new XMLHttpRequest();
    11    if (httpRequest.overrideMimeType)
    12      httpRequest.overrideMimeType('text/xml');
    13  }
    14  else if(window.ActiveXObject)
    15  {
    16    try
    17    {
    18      httpRequest = new ActiveXObject("Msxml2.XMLHTTP");
    19    }
    20    catch(e)
    21    {
    22      try
    23      {
    24        httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
    25      }
    26      catch(e){}
    27    }
    28  }
    29  return httpRequest;
    30}
    31
    32function doSubmit()
    33{
    34  var handler = "parus";
    35    //если организация одна, то оставить так.
    36    //если несколько организаций, то, соответственно,
    37    //"parus1", "parus2" и так далее.
    38
    39  var company = null;
    40    //если вы не распределяете обработчики по организациям, то
    41    //определите организацию здесь, например, так:
    42    //var company = "Организация";
    43
    44  var oTestReq = createHttpRequest();
    45
    46  oTestReq.open("GET", "/" + handler + "/" + "sysinfo.xml?" +
    47    "login=" + document.all["login"].value + "&" +
    48    "password=" + document.all["password"].value, false,
    49    document.all["login"].value, document.all["password"].value);
    50
    51  oTestReq.setRequestHeader("Disable-Basic-Auth", "yes")
    52  oTestReq.send("");
    53
    54  if (oTestReq.status == 401 || oTestReq.status == 403)
    55    alert("Пользователь или пароль указаны неверно.");
    56  else if (oTestReq.status == 200) {
    57    document.cookie = "justClosed=0";
    58    document.cookie = "loggedUserHandler=" + handler +
    59      (company ? "%3B" + encodeURI(company) : "");
    60    document.cookie = "loggedUserName=" + document.all["login"].value;
    61    document.cookie = "loggedUserPassword=" + document.all["password"].value;
    62    document.all["loginform"].submit();
    63  }
    64
    65}
    66
    67</script>
    68</head>
    69
    70
    71<body>
    72
    73<!-- перенаправление на "стандартную" форму логина !-->
    74  <a href="/parusjs" target="_blank">Работа с приложением.</a>
    75
    76<hr/>
    77
    78<!-- реализация своей формы логина с обработкой аутентификаци !-->
    79  <form id="loginform" action="/parusjs" method="post">
    80    Пользователь: <input type="text" id="login" name="login"/><br/>
    81    Пароль: <input type="password" id="password" name="password"/><br/>
    82    <input type="button" value="Войти"  onClick="doSubmit()" />
    83  </form>
    84
    85<hr/>
    86
    87<!-- приложение во фрейме -->
    88<iframe
    89   src="/parusjs"
    90   frameborder="0"
    91   width="100%"
    92   height="70%">
    93</iframe>
    94
    95</body>
    96</html>

3.5. Страница документации удаленного пользователя
При конфигурировании сервиса вы можете указать url, по которому размещены файлы страниц документации: После настройки страницы документации будут доступны удаленному пользователю по нажатию кнопки "Справка" во всех диалоговых окнах. Для отображения будет использован браузер, установленный в Системе по умолчанию.
Пример |
Если вы хотите разместить файлы документации непосредственно на том же сервере, на котором устанавливаете сервис, то можно положить их в каталог parusjs, и указать соответствующий url в виде "/parusjs/mydocument.html" (без кавычек). Если ваша документация размещена у удаленного хостера, то укажите полный url, например, "http://goo.gl/1yWBR" (без кавычек).

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

3.7. Интеграция с Парус-Онлайн Web 2.0
При конфигурировании сервиса можно указать, что его работа будет осуществляться в режиме интеграции с Парус-Онлайн Web 2.0. Более подробно об этом режиме и его возможностях описано в статье Интеграция с Парус-Онлайн Web 2.0.

3.8. OpenID аутентификация
Если вы планируете разрешить удаленным пользователям аутентифицироваться с помощью OpenID, установите соответствующий флажок. Если вы планируете разрешить удаленным пользователям самостоятельно регистрировать свои OpenID логины, то установите соответствующий флажок. Далее необходимо указать наименование и примечание внешнего поставщика информационных услуг, который будет использоваться для ассоциации аккаунтов пользователей с OpenID аккаунтами. В случае отсутствия указанного поставщика в БД, он будет создан во время сохранения конфигурации. Посмотреть существующие поставщики можно в интерфейсе Парус 8: Администратор -> Учет -> Внешние поставщики информационных услуг. Посмотреть информацию о привязках OpenID-идентификаторов к текущему пользователю сервиса, а также удалить некоторые из них, можно в Web-интерфейсе: Первичные отчеты -> Действия (или контекстное меню) -> Расширения -> Логины внешних провайдеров.

3.9. Доменная аутентификация
Если вы планируете разрешить удаленным пользователям аутентифицироваться с помощью доменной аутентификации, установите соответствующий флажок. Если вы планируете разрешить удаленным пользователям самостоятельно регистрировать свои учетные записи пользователей домена, то установите соответствующий флажок. Так же необходимо указать имена доменов (в случае нескольких используйте системный разделитель списков), пользователям которых вы хотите разрешить аутентифицироваться.
Важно! | Аутентификация пользователя будет осуществляться контроллером домена к которому данный пользователь принадлежит. Поэтому следующие требования являются необходимыми: Наличие соединения между сервером контроллера домена и компьютером удаленного пользователя, для его авторизации в своей же ОС (для входа в сервис будет использоваться именно эта введенная пользователем учетная запись). Наличие соединения между сервером контроллера домена и сервером на котором работает данный сервис.
Далее необходимо указать наименование и примечание внешнего поставщика информационных услуг, который будет использоваться для ассоциации аккаунтов пользователей с аккаунтами пользователей домена. В случае отсутствия указанного поставщика в БД, он будет создан во время сохранения конфигурации. Посмотреть существующие поставщики можно в интерфейсе Парус 8: Администратор -> Учет -> Внешние поставщики информационных услуг. Посмотреть информацию о привязках аккаунтах пользователей домена к текущему пользователю сервиса, а также удалить некоторые из них, можно в Web-интерфейсе: Первичные отчеты -> Действия (или контекстное меню) -> Расширения -> Логины внешних провайдеров. Настройка браузеров пользователей для включения возможности автоматической доменной аутентификации, описана в разделе Настройка браузеров для использования доменной аутентификации. В приложении Win32 работающего в режиме удаленного доступа, можно зарегистрировать текущую учетную запись пользователя домена Windows в качестве внешнего идентификатора для текущего пользователя учетной системы в интерфейсе Парус 8: Файл -> Сервис -> Параметры -> Расширения -> Пользовательские приложения -> "Зарегистрировать текущего пользователя домена Windows для удаленного доступа по доменной аутентификации".

3.10. Аутентификация клиентскими SSL сертификатами и 2-х факторная аутентификация
Если вы планируете разрешить удаленным пользователям аутентифицироваться с помощью клиентских SSL сертификатов, либо разрешить 2-х факторную аутентификацию с использованием SSL сертификатов пользователей, то установите соответствующие флажки. Публично доступный URL текущего сервиса, включая порт, если он нестандартный:Укажите URL, по которому пользователи будут входить на сайт (так называемая "точка входа" для пользователя), обычно это сам домен сервиса. На этом URL у пользователя не будет запрашиваться его SSL сертификат, он будет работать на порту, который указан на странице Параметры сетевых настроек - Настройки протокола HTTPS, обычно это порт умолчанию 443.
Важно! | Если сервис доступен пользователю по нестандартном порту (отличному от 443), то в текущем параметре обязательно требуется указать URL вместе с этим нестандартным портом. Доступность сервиса для пользователя на нестандартном порту, может быть по разным причинам, например: - при конфигурации указан нестандартный порт на странице Параметры сетевых настроек - Настройки протокола HTTPS - сервис работает за серверным прокси, который использует нестандартный порт - сервис работает за пробросом портов (port forwarding) и порт для "входа" нестандартный
Порт дополнительного прослушивателя, для запроса сертификата пользователя: Укажите порт, на который будут автоматически перенаправляться пользователи для прохождения аутентификации по SSL сертификату (в случае аутентификации по SSL сертификату, сразу после того как пользователь инициирует авторизацию, а в случае 2-х факторной аутентификации, после того как пользователь пройдет аутентификацию по логин/паролю). На этом порту (итоговый URL складывается из значения вышеуказанного параметра Публично доступный URL текущего сервиса + указанный Порт дополнительного прослушивателя, из текущего параметра, по приведенному примеру, URL получится следующим - https://balance.ru:4443) у пользователя будет запрашиваться его клиентский SSL сертификат, другими словами, будет попытка установить соединение с взаимной проверкой и клиента и сервера (mutual TLS или mTLS). После того как пользователь укажет свой сертификат, он будет проверяться на веб сервере (сначала на доверие, по нижеуказанным параметрам, а потом на соответствие сертификата пользователю в Парус). Сертификаты доверенных центров сертификации: Укажите путь к файлу в PEM-формате, содержащий публичный сертификат доверенного центра сертификации, по которому будут проверяться клиентские сертификаты - они выпущены им или нет. Клиентские сертификаты могут быть выпущены не только напрямую указанным центром, но и его дочерними центрами, а также и их дочерними, в свою очередь. Каждый такой промежуточный центр сертификации считается доверенным на том основании, что он выпущен доверенным корневым центром. Соответственно, нет необходимости включать их (промежуточные центры) в файл доверенных центров сертификации. При проверке пользовательского сертификата, каждый такой промежуточный центр, увеличивает глубину проверки в цепочке сертификатов на 1. Важно, чтобы итоговая глубина проверки не превышала указанного значения в нижеописанном параметре Глубина проверки в цепочке сертификатов. В случае необходимости доверять нескольким центрам сертификации, их сертификаты можно сохранить в один файл, в котором расположить их друг за другом, т.е. обычной конкатенацией и с новой строки.
Кстати | Указанные сертификаты в параметре "Сертификаты доверенных центров сертификации" влияют на показываемый пользователю список клиентских сертификатов для выбора - показываются только те сертификаты, которые выпущены указанными центрами сертификации. Т.е. указанный список, при установке соединения, передается с сервера на клиент, и далее, браузер корректирует список сертификатов для выбора, перед тем как показать его пользователю. Таким образом, косвенно через этот список, управляется выбор сертификатов для пользователя, в частности, показывать только RSA или только ГОСТ.
Список отозванных сертификатов: При необходимости, укажите путь к файлу в PEM-формате, содержащий отозванные сертификаты (признаваемые недействительными раньше срока своего окончания).
Кстати | Получение CRL файла в PEM формате. Если используется собственный центр сертификации на основе инфраструктуры OpenSSL:
    openssl ca -gencrl -out ca.crl
В результате будет сформирован CRL файл в PEM формате, содержащий список отозванных сертификатов на основе данных внутреннего хранилища сертификатов OpenSSL. В случае использования клиентских сертификатов полученных от стороннего центра сертификации, необходимо получить URL по которому можно скачать CRL файл данного центра сертификации. Данный URL обычно присутствует в любом из публичных сертификатов. Просмотр с помощью OpenSSL, при условии, что файл сертификата в PEM формате (в примере просматривается сертификат c:\ca.pem):
    openssl x509 -noout -text -in c:\ca.pem
Среди всех свойств сертификата найти с именем X509v3 CRL Distribution Points - в нем будет указано необходимое значение URI:http://... Просмотр с помощью средств Windows (файл сертификата может быть в любом формате, но должен иметь расширение.crt): Открываем файл сертификата в проводнике В открывшемся диалоге свойств сертификата переходим на вкладку Details Среди свойств сертификата выбираем CRL Distribution Points Копируем URL из значения этого свойства После скачивания CRL файла по полученному URL, его необходимо сконвертировать в PEM формат (в примере исходный файл в DER формате - crl.der, итоговый файл в PEM формате - crl.pem):
    openssl crl -inform DER -in crl.der -outform PEM -out crl.pem
Получение данных CRL файла, и его конвертацию в PEM-формат необходимо автоматизировать и перезаписывать указанный в текущем параметре файл, чтобы веб сервер мог вычитывать из него актуальные сведения об отозванных сертификатах пользователей.
Глубина проверки в цепочке сертификатов: Укажите глубину проверки в цепочке сертификатов. Глубина проверки устанавливает лимит на количество сертификатов между конечным сертификатом пользователя и доверенным центром, находящимся в файле доверенных центров сертификации. Если цепочка сертификатов, необходимая для получения доверенного эмитента, длиннее указанной глубины + 2, то пользовательский сертификат будет признан недействительным.
Важно! | Как осуществляется проверка клиентского сертификата. На каждом уровне проверки цепочки сертификата проверяется действительность этого сертификата. Если будет обнаружен хоть 1 просроченный, недействительный, не доверенный сертификат (отсутствует связь с сертификатами из файла доверенных центров сертификации) или отозванный (присутствующий в файле Список отозванных сертификатов), или будет превышена указанная глубина проверки, то сам пользовательский сертификат также будет считаться недействительным.
Использовать другой сертификат вместо указанного в настройках HTTPS: Если данная опция выключена, то на Порту дополнительного прослушивателя, для запроса сертификата пользователя будут использоваться те же настройки, что указаны на странице Параметры сетевых настроек - Настройки протокола HTTPS. А если опция включена, то дополнительный порт можно настроить независимо от основного прослушивателя. Эта опция дает возможность гибко разделить использование сертификата для основного прослушивателя (функционирование сервиса по HTTPS протоколу) и использование сертификата для проверки клиентских SSL сертификатов (в дополнительном прослушивателе). Т.к. проверка клиентских сертификатов на основе RSA алгоритмов, предполагает использование RSA сертификата на дополнительном прослушивателе со стороны сервера. И аналогично, в случае необходимости проверки клиентских сертификатов на основе ГОСТ алгоритмов, требует использования ГОСТ сертификата на дополнительном прослушивателе со стороны сервера. В частности, при необходимости проверять сертификаты пользователей с ГОСТ алгоритмами, логично было бы настроить: - сам сайт сервиса (главная страница, точка входа пользователей, основной прослушиватель) на работу с RSA сертификатом (не ГОСТ). Это позволит добиться его доступности и поддержки со стороны всех браузеров. - а URL (с портом дополнительного прослушивателя), на котором будет требоваться сертификат клиента (осуществляться mTLS) на работу с ГОСТ сертификатом. Для этого, со стороны клиента, будет необходим браузер, поддерживающий ГОСТ шифрование (Chromium Gost, Яндекс Браузер, и другие). Таким образом, такое разделение позволит снять необходимость использования специального браузера для тех пользователей, которым не требуется авторизовываться клиентскими ГОСТ сертификатами. Для этого, включите текущий параметр и укажите данные ГОСТ сертификата для дополнительного прослушивателя. По смыслу, функциональность параметров (Сертификат центра сертификации, Сертификат домена, Закрытый ключ, Пароль закрытого ключа, Набор шифров для TLS 1.2- и Набор шифров для TLS 1.3+) полностью соответсвует описанию на странице Параметры сетевых настроек - Настройки протокола HTTPS.
Важно! | Не забудьте указать набор шифров для поддержки ГОСТ алгоритмов в параметрах Набор шифров для TLS 1.2 и ранее и Набор шифров для TLS 1.3+. Перед настройкой необходимо иметь 2 валидных сертификата, валидирующих один и тот же домен (указанный в параметре "Публично доступный URL текущего сервиса"). Допустим это будет balance.ru, тогда необходимо подготовить: 1) RSA сертификат для главной страницы, валидирующий домен balance.ru 2) ГОСТ сертификат для прослушивателя дополнительного порта, где будет запрашиваться сертификат пользователя, валидирующий тот же домен balance.ru

3.11. Параметры подключения к базе данных
Для установки параметров подключения к базе данных нажмите Откроется окно настроек параметров подключения к базе данных: В поле СУБД необходимо указать используемую СУБД - Oracle или Postgres. В поле База данных необходимо указать адрес БД в формате локального именования (псевдоним БД из файла tnsnames.ora) или Easy Connect (строка подключения вида host:port/SID, например 192.168.1.42:1521/ORCL1).
Кстати | Если на сервере не установлен клиент Oracle требуемой разрядности, а он требуется, то можно скачать и установить Oracle Instant Client в процессе конфигурирования. Если при этом используется метод локального именования (tnsnames), то потребуется создать файл tnsnames.ora в папке установки, и включить в него реквизиты соединения.
Параметр Пользователь-владелец данных определяет имя схемы БД Парус 8, данные которой становятся доступны удаленным пользователям. По традиции это имя - "parus" без кавычек. Параметр Пароль определяет пароль пользователя- владельца схемы БД Парус 8, данные которой становятся доступны удаленным пользователям. Пароль хранится в файле конфигурации в домашней папке сервиса в открытом виде - будьте осторожны при выдаче прав на эту папку ненадежным людям. Параметр Использовать иного пользователя сервиса позволяет указать пользователя, от имени которого должен работать сервис. По умолчанию, сервис работает от имени владельца схемы, указываемого в соответствующем параметре чуть выше. В случае, если включена эта галка, и действительно указан пользователь сервиса отличный от пользователя владельца-данных, то в конце конфигурирования этому пользователю будут выданы необходимые права на используемые сервисом объекты схемы (файл с выполненным скриптом будет сохранен в каталоге установки с именем GrantSchemaRights.sql). Предполагается, что данный пользователь к этому моменту уже будет создан в СУБД и зарегистрирован в Парус 8 как анонимный пользователь с назначением лицензии (в которой есть серверные лицензионные соединения для приложения BalanceOnline). Параметр Пользователь сервиса и Пароль позволяют задать реквизиты доступа для пользователя от имени которого будет работать сервис. Данный пользователь должен быть зарегистрирован в Парус 8 как анонимный пользователь.
Важно! | До указания в конфигураторе пользователя-владельца данных и пользователя сервиса, необходимо убедиться, что данные пользователи существует в Парус 8, они настроены соответственно выполняемой роли (например, пользователь сервиса должен быть анонимным пользователем), а также им назначена лицензия, из которой планируется распределять серверные лицензии. Пользователь-владелец данных при использовании СУБД Postgres : Например, если это пользователь PARUS (при условии, что он является владельцем схемы или суперпользователем с необходимыми правами над объектами БД в используемой схеме), то все также как и в Oracle. Если это пользователь POSTGRES (владелец схемы по умолчанию), то необходимо обеспечить создание данного пользователя в Парус 8, и наделить его всеми теми же правами в учетной системе, что и пользователя PARUS при использовании Oracle.
Параметр Не устанавливать соединения с БД при старте: при выключеном параметре (умолчательное значение), во время старта сервиса будут установленны все необходимые соединения с БД. При включенном параметре, во время запуска сервиса, никакие соединения с БД не будут установлены, это действие, для каждого из обработчиков и аутентификаторов, будет отложено до первой необходимости в соединении с БД (обращении клиента к соответствующему обработчику или аутентификатору). Параметр Таймаут соединения с БД, время бездействия, сек. определяет время, в течении которого соединение с БД (любого из обработчиков или аутентификаторов) может простаивать, т.е. находится в состоянии ожидания запросов. При отсутствии запросов, в течении указанного времени, соединение с БД штатно закрывается, и будет установлено заново при первом же обращении клиента к соответствующему обработчику или аутентификатору. Если указать значение 0 (оно же умолчательное значение), то соединение с БД не будет завершаться по его бездействию. Параметр Максимальное время жизни соединения с БД, сек. определяет время, спустя которое соединение с БД (для любого из обработчиков или аутентификаторов) будет устанавливаться заново (закрываться и открываться вновь, при первой же необходимости в этом соединении) вне зависимости от активности использования этого соединения. Если указать значение 0 (оно же умолчательное значение), то соединение с БД не будет периодически устанавливаться заново и будет держаться активным все время работы сервиса.

3.12. Удаленный доступ для приложения Win32
Если удаленный пользователь планирует использовать для работы с Сервисом приложение для Win32 в данном окне указываются настройки приложения. Для использования приложения необходимо установить соответствующий флаг. После этого станут доступны поля настройки приложения: - Собирать статистику действий удаленного клиента - при включении этого флажка агенты доступа к приложениям Win32 будут автоматически собирать статистику действий удаленного клиента. Подробности о работе этого механизма описаны в соответствующем разделе. - Каталог - указывается папка на жестком диске, которая содержит стартовую страницу загрузки Win32 клиента. - Путь к файлам - указываются пути к файлам, необходимым для работы клиента.

3.12.1. Статистика действий удаленного клиента
Сбор статистики осуществляется удаленным клиентом при запуске приложения p8application.exe с ключом командной строки -writeuserlog. Если вы установили соответствующий флажок в конфигураторе, он будет вызывать p8application.exe в этом режиме. Статистика действий пользователя собирается в файл %ProgramData%\Techmill\parususerlog.bin. Если этот файл отсутствует, то он будет создан, и ему будет присвоен внутренний глобально-уникальный идентификатор. При дальнейших действиях с файлом идентификатор не изменится. Статистика действий удаленного пользователя сохраняется в этом файле в контексте сеанса. Если общий размер файла превысит 100 MB, то информация о наиболее старых сеансах будет из файла удалена. Сессии, хранящиеся в файле, нумеруются последовательными числами. Несколько процессов, работающих одновременно, разделят файл статистики. Информация, накопленная в файле статистики, должна быть отправлена на сервер приложений. Для этого можно использовать любой из следующих способов: В БД создан модуль пользовательского приложения с именем LoadRemoteUserLog Администратор должен привязать действие этого модуля к какому-либо разделу системы по своему усмотрению, и удаленный пользователь выполнит это действие. Удаленный клиент передает файл статистики %ProgramData%\Techmill\parususerlog.bin администратору любым доступным ему способом, и администратор загружает его стандартными средствами "Обозревателя данных":

3.12.2. Сервера удаленного доступа
После настройки удаленного доступа для приложения Win32, необходимо указать один или несколько серверов обеспечивающих удаленный доступ. В случае задания нескольких серверов, все они будут доступны для выбора в окне логина в качестве параметра "База данных".
Важно! | Все указываемые сервера должны иметь (и поддерживать ее при последующих обновлениях) одинаковую версию настоящего Сервиса, а также версии файлов, необходимые для работы клиента, указанные на предыдущем шаге конфигурации. Клиентское приложение Win32 будет проверять наличие обновлений на всех указанных серверах (информация о версии сервиса будет запрошена параллельно), но итоговое решение о необходимости обновления будет приниматься на основании ответа сервера, который первым ответит на запрос. Обновление, в случае необходимости, будет производится сразу именно с этого сервера.
- Наименование - указывается наименование, которое будет показано пользователю в окне логина Win32 приложения в параметре "База данных". В случае если наименование не будет указано, то вместо него будет использоваться соответствующий параметр Хост сервера. - Хост сервера - указывается адрес как минимум настраиваемого сервера (в случае необходимости, можно указать несколько дополнительных серверов), они должны быть доступны удаленным пользователям по указанным именам. Если доступ осуществляется по нестандартному порту, после двоеточия необходимо указать порт. Если протокол доступа к хосту отличается от протокола настраиваемого сервиса, то укажите префикс протокола (http:// или https://) в этом поле перед адресом. - Путь серверного proxy - указывается путь синонима серверного proxy, по которому сервис будет доступен удаленному пользователю. Подробнее об использовании серверного proxy можно узнать здесь.

3.12.3. Дополнительные модули и переменные окружения в составе удаленного клиента
В случае необходимости включать в состав клиента удаленного доступа для приложения Win32 дополнительные модули/файлы, или указать переменные окружения, которые должны быть установлены в момент старта клиента, укажите их. Диалог указания дополнительных модулей/файлов : - Путь к файлу - указывается путь к файлу, который должен быть включен в состав файлов распространяемых вместе в клиентом удаленного доступа для приложения Win32. Диалог указания дополнительных переменных окружения : - Имя - указывается имя переменной окружения, которая будет установлена, вместе со своим значением, в момент запуска процесса удаленного клиента. - Значение - указывается значение переменной окружения, которая будет установлена в момент запуска процесса удаленного клиента.
Важно! | В случае если указанное значение содержит имя другой переменной окружения, то указанное значение будет "раскрываться" стандартным механизмом Windows, так как если бы оно было бы задано на клиентских местах напрямую в ОС, или в родительском процессе перед запуском процесса клиента удаленного доступа.
Кстати | В качестве примера использования указанной возможности описывается процесс подключения ГОСТ алгоритмов шифрования в https протокол на клиентской стороне. Эта обеспечивается за счет включения в состав удаленного клиента дополнительной библиотеки для OpenSLL - gost.dll, файла конфигурации этого плагина - openssl.conf, и задания переменной окружения - OPENSSL_CONF, указывающей путь к этому файлу конфигурации библиотекам OpenSSL (они входят в стандартную поставку клиента, т.е. указывать их нет необходимости). Подробнее, необходимые требования и настройки, в частности пример содержимого файла конфигурации openssl.conf, описаны в статье "Использование SSL сертификатов c ГОСТ алгоритмами". В этой статье описывается настройка на стороне сервера приложений, но за исключением 4-го пункта, процесс полностью идентичен.

3.13. Распределение соединений
Для установки параметров, в главном окне выберите: На данном шаге настроек осуществляется распределение общего числа лицензий по серверным лицензиям. Информацию о наименованиях Организаций и общем количестве соединений конфигуратор получает из БД указанной в настройках подключения к БД. По умолчанию, равномерно для всех организаций распределяется 100% доступных соединений для web-приложений (используются WIN-лицензии приложения BalanceOnline), и 100% доступных соединений для Win32-приложения (если работа с ним разрешена, используются WIN-лицензии приложения MillAppServer). По умолчанию, полученные таким образом соединения, доступны для всех организаций. Для web-приложений есть возможность указать перечень организаций, которые будут доступны для подключения пользователей. Для Win32-приложения (если работа с ним разрешена), доступные для подключения пользователей организации - не указываются, а доступ к ним полностью регулируется правами Паруса. Если Вы распределили не все доступные соединения из лицензии, то появится сообщение: На этом шаге можно вернуться к распределению снова. Или нажать "Yes" ("Да") для подтверждения операции. Для каждого клиентского соединения будет использоваться 1 WEB-лицензия соответствующего приложения: Для web-приложений - WEB-лицензии из приложения Balance или Monitoring. Для Win32-приложения - WEB-лицензии из используемого клиентом приложения. В случае отсутствия WEB-лицензий для приложения Balance или Monitoring, появится сообщение об ошибке: В случае, если на предыдущих этапах настройки сервиса было указано, что удаленным пользователям разрешено использовать для работы Win32 приложение, то окно распределения примет следующий вид:

3.14. Выбор используемой реализации движка Excel
Выбор используемой реализации движка Excel: Доступны два варианта: Реализация Excel от Microsoft - требуется установленный пакет Microsoft Excel Собственная реализация Excel - не требуется установка сторонних продуктов В Linux возможно использовать только Собственную реализацию Excel.

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

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

3.17. Максимальное время обработки
Вы можете ограничить максимальное время обработки различных тяжелых операций: Ограничение времени конвертации трафарета "сработает" также для любой конвертации рабочей книги в формат PDF или html (например, истории значений или выгрузки отчета в Excel). Ограничение времени выгрузки отчета в Excel относится только ко времени формирования рабочей книги. Если после формирования необходима конвертация, то ее время рассчитывается независимо. Ограничение времени выполнения процедуры/запроса ограничивает только время сервера БД. На последующие операции загрузки результата ("fetch") ограничение не распространяется. Ограничение времени сетевого запроса ограничивает только время передачи уже сформированного ответа от сервера к клиенту.
Важно! | Категорически не рекомендуется злоупотреблять этими ограничениями. Возникающие проблемы с производительностью необходимо решать там, где они возникли. Ограничение времени выполнения - не есть метод снижения нагрузки на сервер или СУБД. Не устанавливайте слишком маленькие значения максимального времени. Оставьте все значения пустыми, если Вы не уверены в своих действиях.

3.18. Отправка подписанных отчетов по электронной почте
Если вы планируете отправлять подписанные отчеты по электронной почте, установите соответствующий флажок. Данный функционал требует наличие служебной схемы базы данных. Процесс создания и инициализации служебной схемы рассмотрен в соответствующем разделе. Для формирования сообщений электронной почты необходимо в пользовательскую процедуру, формирующую неподписанный XML-файл отчета, добавить выходной параметр с именем "SPOST_PROCESS_USER_PROC" . Если после выполнения процедуры формирования отчета, значение этого параметра будет содержать мнемокод пользовательской процедуры, то она будет вызвана, и в качестве параметров в нее будет переданы параметры самой процедуры формирования отчета, а также если в ней присутствуют параметры с привязкой: - к организации - значение организации. - к регистрационному номеру записи - значение регистрационного номера отчета по которому формируется выгрузка. - к идентификатору отмеченных записей - значение идентификатора отмеченных записей, содержащий имя сформированного файла и сам файл. В качестве наглядного примера можно использовать пользовательскую процедуру "SendReportByMail", которая создается конфигуратором в корневом каталоге раздела "Пользовательские процедуры". Она, в служебной схеме базы данных, создает письма и во вложение добавляет переданные ей файлы. Сервер, в свою очередь, отправляет созданные письма по протоколу SMTP непосредственно получателям, либо на выделенный почтовый сервер. Настройка отправки сообщений электронной почты Непосредственно получателям - Номер порта TCP указывает номер порта TCP/IP, на который сервис будет отправлять исходящие почтовые сообщения. - Периодичность рассылки очереди определяет периодичность в секундах, с которой сервис проверяет наличие писем поставленных в очередь на отправку. - Домен почтового сервера указывает домен, от имени которого сервер будет рассылать письма. - Отправитель по умолчанию устанавливает заданное значение отправителя во всех отправляемых письмах, в которых он не указан. На выделенный почтовый сервер - Номер порта TCP указывает номер порта TCP/IP, на который сервис будет отправлять исходящие почтовые сообщения. - Периодичность рассылки очереди определяет периодичность в секундах, с которой сервис проверяет наличие писем поставленных в очередь на отправку. - Домен почтового сервера указывает домен, от имени которого сервер будет рассылать письма. - Отправитель по умолчанию устанавливает заданное значение отправителя во всех отправляемых письмах, в которых он не указан. - Хост почтового сервера рассылки указывает сервер на который будут отправляться все исходящие письма для их дальнейшей рассылки по конечным пользователям. - Пользователь - аккаунт пользователя на сервере рассылки. - Пользователь - пароль пользователя на сервере рассылки.

3.18.1. Экспорт сообщений электронной почты из БД
При необходимости, есть возможность экспортировать сообщения электронной почты из базы данных в файлы формата eml.

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

3.20. Параметры протоколирования нагрузки
Для установки параметров протоколирования событий сервера нажмите: В открывшемся окне необходимо выбрать способ протоколирования:

3.20.1. В файл
- В файл - записи о событиях сервера будут сохраняться в текстовый файл в формате W3CExtended. После начала работы сервера в рабочем каталоге будет создана папка LOGS, в которой будут сохранятся log-файлы с наименованием w3cext.log.
Пример | Пример log-файла: #Version: 1.0 #Date: 2012-06-04 15:55:53 #Software: DMAS/1.1 #Fields: date time time-taken bytes c-ip cs-username cs-method cs-uri cs-status cs-bytes sc-bytes x-cookie 2012-06-04 15:56:05 0.0 1433 127.0.0.1 - GET / 200 451 1102 HTTPID={921CFE12-F2B3-4186-A5FC-C03C12ABCBDD} 2012-06-04 15:56:05 0.0 0 127.0.0.1 - GET /parusjs/parus8.js 304 575 307 HTTPID={921CFE12-F2B3-4186-A5FC-C03C12ABCBDD} 2012-06-04 15:56:05 0.0 0 127.0.0.1 - GET /.system/contents.xml?dojo.preventCache=1338810965668 200 639 1101 HTTPID={921CFE12-F2B3-4186-A5FC-C03C12ABCBDD} 2012-06-04 15:56:13 0.0 0 127.0.0.1 parus GET /parus/sysinfo.xml?login=parus&password=parus&dojo.preventCache=1338810973239 200 663 489 HTTPID={921CFE12-F2B3-4186-A5FC-C03C12ABCBDD} 2012-06-04 15:56:13 0.0 0 127.0.0.1 parus GET /parusjs/balance.html 304 578 307 HTTPID={921CFE12-F2B3-4186-A5FC-C03C12ABCBDD} 2012-06-04 15:56:13 0.6 0 127.0.0.1 parus POST /parus/query.xml 200 808 973 HTTPID={921CFE12-F2B3-4186-A5FC-C03C12ABCBDD} 2012-06-04 15:56:15 0.92 0 127.0.0.1 parus POST /parus/query.xml 200 811 8479 HTTPID={921CFE12-F2B3-4186-A5FC-C03C12ABCBDD} 2012-06-04 15:56:15 0.1 0 127.0.0.1 parus POST /parus/query.xml 200 816 749 HTTPID={921CFE12-F2B3-4186-A5FC-C03C12ABCBDD} 2012-06-04 15:56:16 0.0 0 127.0.0.1 parus POST /parus/query.xml 200 794 381 HTTPID={921CFE12-F2B3-4186-A5FC-C03C12ABCBDD} 2012-06-04 15:56:45 0.0 0 127.0.0.1 - GET /.admin/counters.xml 200 123 816 - 2012-06-04 15:56:45 0.0 0 127.0.0.1 - GET /.admin/sessions.xml 200 123 765 - 2012-06-04 15:56:45 0.0 0 127.0.0.1 - GET /.admin/messages.xml 200 123 400 -
В начале файла идет служебная информация об используемом ПО для генерации log-файла. Далее каждая строка описывает одно событие сервера, и содержит дату и время события, время выполнения, объем данных, ip-адрес клиента, используемый метод и т.д. В дальнейшем, при необходимости, есть возможность экспортировать log-файл в базу данных.

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

3.20.2.1. Экспорт протоколов из БД
При необходимости, есть возможность экспортировать протоколы сервиса из базы данных в файл формата W3C.

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

3.21. Создание и инициализация служебной схемы базы данных
Создание служебной схемы базы данных требуется в следующих случаях: - разрешена отправка подписанных отчетов по электронной почте. - разрешен обмен сообщениями, как в web-приложениях, так и в приложениях Windows. - настроено протоколирование в БД. - разрешен сбор статистики действий удаленного клиента. - использование Linux редакции сервиса - Пользователь-владелец данных - имя пользователя-владельца схемы. - Пароль - пароль для пользователя - Пароль пользователя SYS - пароль пользователя, наделенного правами создания/изменения пользователя и схемы БД. Вы можете не указывать пароль пользователя SYS. В этом случае вы должны самостоятельно создать служебную схему. При сохранении конфигурации будет создана (в случае ее отсутствия) и проинициализирована служебная схема БД.
Важно! | В случае, если конфигуратор не может обновить существующую схему (например, из-за того, что версия существующей схемы старше текущей на год и более), мы советуем выгрузить из нее имеющуюся информацию и пересоздать служебную схему. Выгрузка информации : - сообщений электронной почты. - протоколов сервиса.

3.21.1. Самостоятельное создание служебной схемы
Администратор БД может самостоятельно создать схему для служебных данных. Необходимо проделать следующее: Создать пользователя - владельца схемы. Пользователь должен иметь табличное пространство по умолчанию, и достаточную квоту на него. В этом табличном пространстве будут созданы объекты служебной схемы. Предоставить пользователю - владельцу схемы следующий набор привилегий: create session create table create sequence create view create procedure create trigger create any context
Пример | Пример сценария создания служебной схемы:
    1create user WEBSERVER identified by *****
    2  default tablespace SYSAUX quota unlimited on SYSAUX;
    3grant create session to WEBSERVER;
    4grant create table to WEBSERVER;
    5grant create sequence to WEBSERVER;
    6grant create view to WEBSERVER;
    7grant create procedure to WEBSERVER;
    8grant create trigger to WEBSERVER;
    9grant create any context to WEBSERVER;

3.22. Проверка наличия обновлений
При нажатии на конфигуратор автоматически проверит наличие обновлений и, при необходимости, предложит скачать новую версию конфигуратора: При нажатии кнопки "Yes" ("Да") будет произведено автоматическое скачивание новой версии сервиса. По окончании скачивания подтвердите установку: обновления будут установлены в фоновом режиме. При этом конфигуратор будет выгружен из памяти компьютера. После установки конфигуратор снова будет запущен и готов к работе. Если при проверке обновлений найдено не было, будет выведено сообщение:

3.23. Параметры, устанавливаемые в соответствующих разделах ПП Парус 8

3.23.1. Кэширование значений словарей контрагентов
Вы можете отключить кэширование значений словарей контрагентов. В этом режиме изменения, сделанные администратором в дополнительных словарях (и в дополнительных словарях контрагентов), будут сразу отображаться в web-интерфейсе удаленного пользователя. Установить настройку можно в интерфейсе Парус 8 (Файл -> Сервис -> Параметры).

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

3.23.3. Включение защиты листа в выгружаемых рабочих книгах Excel
Вы можете предписать сервису включать защиту листа в выгружаемых рабочих книгах Excel. Для управления этой возможностью введена настройка "Включать защиту листов экспортируемых рабочих книг" в разделе "Первичные/сводные отчеты" (код настройки - BalanceOnlineProtectExportWorkBooks). Установить настройку можно в интерфейсе Парус 8 (Файл -> Сервис -> Параметры).

3.23.4. Доступность сводных отчетов
Доступность или недоступность сводных отчетов определяется на основании доступности роли или пользователю псевдораздела "Сводные отчеты (Сведение отчетности On Line)". Чтобы сделать сводные отчеты доступными, назначьте соответствующим пользователям и/или ролям этот раздел в приложении "Администратор".

3.23.5. Пользовательская процедура сохранения выгруженных отчетов в БД
Использование этого параметра, описано в разделе Сохранение сформированных отчетов в базе данных.

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

3.23.7. Интервалы проверки новых сообщений
Параметры предназначены для настройки интервалов проверки новых сообщений (см. раздел Возможность обмена сообщениями). В интерфейсе Парус 8 (Файл -> Сервис -> Параметры), в корневом разделе "Параметры": InstantMessagePoolingIntervalWeb: Интервал проверки новых сообщений в Web (сек.) InstantMessagePoolingIntervalWin32: Интервал проверки новых сообщений в Win32 (сек.) InstantMessagePoolingIntervalWin32Proxy: Интервал проверки новых сообщений в Win32 с использованием удаленного доступа (сек.)
Совет | Не следует указывать слишком короткие интервалы, т.к. это может повлечь за собой неоправданную нагрузку на БД.

3.24. Особенности специфичные для Linux редакции
Конфигуратор При работе с конфигуратором, для перехода между действиями, возврата к предыдущему меню или выходу из конфигуратора можно использовать комбинацию клавиш Ctrl+C. Конфигуратор при необходимости установит и настроит (предварительно спросив пользователя): Клиентские библиотеки доступа к Oracle (instant client) и PostgreSQL OpenSSL - для взаимодействия по протоколу HTTPS 7-zip - для возможноости распаковки содержимого модулей справочной системы во время работы сервиса, в случае если предварительная конвертация не была выполнена.
Кстати | Управление и получение информации о состоянии служб ОС, без использования конфигуратора:
    service [имя сервиса] start | stop | reload | restart | status
имя службы настоящего сервиса - ParusBalanceOnline
Во время сохранения конфигурации, в Парус 8 будут созданы пользовательские приложения для конвертирования трафаретов, их миниатюр, данных шрифтов для конвертации в PDF, и модулей справочной системы для их дальнейшего использования в Linux редакции сервиса. Конвертация трафаретов может быть выполнена в приложении "Сведение отчетности. Центр учета" в разделе "Словари" -> "Формы отчетов": в спецификации "Формы отчетов" по выбранным формам с возможностью отбора редакций по дате начала и окончания в спецификации "Редакции форм" по выбранным редакциям в трафаретах спецификации по выбранным трафаретам Конвертация шрифтов может быть выполнена: в приложении "Администратор" в разделе "Учет" -> "Модули" в приложении "Сведение отчетности. Центр учета" в разделе "Словари" -> "Формы отчетов" Конвертация модулей справочной системы может быть выпонена: в приложении "Администратор" в разделе "Учет" -> "Модули" в приложении "Сведение отчетности. Центр учета" в разделе "Словари" -> "Формы отчетов"
Важно! | Без предварительной конвертации используемых пользователями сервиса трафаретов, шрифтов или модулей справочной системы, при открытии их пользователями в браузере, будет выдано сообщение о том, что конвертация выбранного трафарета или модуля справочной системы еще не выполнена, с просьбой обратиться к Администратору.
Настройка Firewall и SeLinux Во время указания слушаемого порта сервиса или дополнительных прослушивателей, в момент конфигурирования параметров сетевых настроек, будут проверены настройки Firewall, и в случае если указанные порты не добавлены в его исключения (не будут доступны из внешней сети, в том числе клиентам), то будет предложено добавить порт с помощью конфигуратора. В случае отказа администратор должен самостоятельно обеспечить корректную настройку Firewall для доступности слушаемых портов.

3.24.1. Протоколирование отладочных сообщений
Поддерживается 2 вида протоколирования: в локальный системный журнал (journalctl) отправка на syslog сервер (как локальный, так и внешний) При запуске сервиса в конфигураторе можно включить или выключить протоколирование (подерживаются оба вида). По умолчанию, протоколирование выключено, и в системный журнал записываются только критические сообщения, так же как это происходит в Windows. Для "ручного" включения полного протоколирования отладочных сообщений, необходимо добавить ключи запуска для требуемого приложения: -DebugMessageToJournal - протоколирование в локальный системный журнал -DebugMessageToSyslog host[:port] [-udp | -tcp | -ssl] - протоколирование на syslog сервер. Для отбора из системного журнала отладочных сообщений, которые бы попали в Отладочный монитор в случае работы сервиса на Windows, можно использовать фильтрацию по аттрибуту SYSLOG_SDID=DebugMessage (без данной фильтрации будут отобраны сообщения от любых приложений/служб с данного хоста), а также указать другие критерии отбора.
- Пример | Пример отбора сообщений с подробным выводом в удобочитаемом виде:
      journalctl -o verbose SYSLOG_SDID=DebugMessage --since="2017-09-13 15:00:00"
- Пример отбора сообщений для дальнейшей загрузки полученного файла в Отладочный монитор, или отправки в службу поддержки:
      journalctl -o export SYSLOG_SDID=DebugMessage --since="2017-09-13 15:00:00"
Настройка Отладочного монитора, запущенного на Windows, в качестве syslog сервера, описана с статье Использование отладочного монитора. Также стоит отметить, что по умолчанию в ОС все сообщения отправленные в системный журнал, автоматически попадают и на локальный syslog сервер (служба rsyslog). В свою очередь, rsyslog может быть настроен на пересылку локальных сообщений на некий внешний syslog сервер. Это дает дополнительную возможность пересылать отладочные сообщения с Linux в Отладочный монитор, который запущен на Windows. Для этого можно добавить конфиг-файл (с любым именем, но расширением.conf) в каталог конфигов rsyslog ("/etc/rsyslog.d/") со следующим содержанием:
    01template(name="SyslogProtocol23FormatFromCEE" type="list") {
    02  constant(value="<")
    03  property(name="pri")
    04  constant(value=">1 ")
    05  property(name="timestamp" dateFormat="rfc3339")
    06  constant(value=" ")
    07  property(name="hostname")
    08  constant(value=" ")
    09  property(name="programname")
    10  constant(value=" ")
    11  property(name="$!_PID")
    12  constant(value=" ")
    13  property(name="$!SYSLOG_MESSAGE_ID")
    14  constant(value=" [")
    15  property(name="$!SYSLOG_SDID")
    16  constant(value="@77737676")
    17  constant(value=" ModuleName=\"")
    18  property(name="$!MODULENAME")
    19  constant(value="\" TID=\"")
    20  property(name="$!TID")
    21  constant(value="\" Sender=\"")
    22  property(name="$!SENDER")
    23  constant(value="\"] ")
    24  property(name="$bom")
    25  property(name="$!MESSAGE")
    26  constant(value="\n")
    27}
    28
    29if $inputname == "imjournal" then {
    30  if $!SYSLOG_SDID == "DebugMessage" then {
    31    action(type="omfwd" Target="192.168.1.50" protocol="tcp" Port="514" TCP_Framing="octet-counted" Template="SyslogProtocol23FormatFromCEE")
    32  }
    33}

3.25. Пользовательские цветовые темы
Предусмотрена возможность использования пользовательских цветовых тем. Доступные пользователю цветовые темы перечислены в документе PARUSJS\theme\themes.xml. При установке документ имеет следующее содержание:
    1<themes>
    2   <theme id="parus8" loaded="1" title="Парус 8"/>
    3   <theme id="durer" loaded="1" title="Контрастная"/>
    4 </themes>
Это означает, что пользователю доступны две цветовые темы с соответствующими идентификаторами и наименованиями. Атрибут loaded указывает на то, что цветовая тема загружается автоматически и доступна всегда. Темы, которые должны загружаться из дополнительных файлов, должны иметь атрибут loaded, равный 0. Если ввести в документ узел
    <theme id="mytheme" loaded="0" title="Пользовательская тема"/>
то произойдет следующее: В пользовательском интерфейсе новая пользовательская тема станет доступна для использования: При выборе темы будет произведена попытка загрузить файл PARUSJS\theme\mytheme\theme.css. Если этот файл найден, то он будет применен к интерфейсу. Разработка и сопровождение CSS-файла, содержащего описание темы, представляет собой значительную трудность. Стили, определяемые в CSS-файле темы определяют не только цветовую гамму, но и множество аспектов поведения пользовательского интерфейса. При обновлении ПО до более новой версии сервиса в CSS-файл придется вносить нетривиальные изменения. Для решения этих задач мы советуем использовать "Редактор цветовых тем".
Важно! | Редактор цветовых тем не поддерживает операционные системы ниже, чем Windows 7.
Вы можете также удалить из документа PARUSJS\theme\themes.xml строки, соответствующие темам, которые хотите сделать недоступными для выбора. При обновлении ПО документ PARUSJS\theme\themes.xml будет записан "поверх" ваших изменений, изменения не будут сохранены. Вам нужно будет повторить все те изменения, которые вы делали вручную, или выгрузить на обновленный сервер повторно те темы, которые вы разработали с помощью редактора.

3.25.1. Редактор цветовых тем
В состав ПО включен инструмент "Редактор цветовых тем". Информация о цветовой теме сохраняется в файлах с расширением .PCSH. Каждый такой файл содержит изменения, внесенные разработчиком темы, относительно некоторой выбранной им базовой темы на базовом сервере разработки. После завершения разработки можно выгрузить тему на рабочий сервер, и сделать ее тем самым доступной пользователям. Также вы сможете установить разработанную тему в качестве темы по умолчанию на соответствующей странице конфигуратора. Для начала работы с редактором запустите ярлык "Редактор цветовых тем". Вы увидите окно выбора базового сервера и базовой темы: Рекомендуется вести разработку на одном сервере ("девелоперском"), и выкладывать готовые темы на другой ("рабочий"). Откроется главное окно редактора: На панели цветов вы можете выбрать один или несколько цветов, и установить в редакторе цветов значение каждой компоненты цвета. С помощью действий в контекстом меню панели цветов вы можете: Отсортировать список цветов по имени или по цвету. Показать цвет. При выполнении этого действия в окне предпросмотра элементы, использующие выбранный вами цвет, будут "мигнут" три раза. Выполнить групповой пересчет: Используя групповой пересчет, вы можете поменять компоненты местами, ослабить или усилить группу цветов, и так далее. В форме группового пересчета можно вводить не только числа, но и выражения на языке VBscript . Использовать идентификаторы цветов вместо наименований. Отобразить панель инструментов разработчика. Вернуть значения цветов к значениям базовой темы. С помощью кнопки "Выбрать элемент" вы можете быстро найти цвета, которые использует тот или иной элемент. Для этого нажмите кнопку "Выбрать элемент", и выберите интересующий вас элемент в окне предпросмотра. Вы увидите список цветов, имеющих отношение к выбранному вами элементу. Вы можете выбрать цвет и перейти к его редактированию. При редактировании цветов в окне предпросмотра вы будете видеть изменения интерфейса web-приложения в реальном времени. В панели изображений вы видите список изображений, используемых цветовой темой. Вы можете выгрузить одно или все изображения в файлы, отредактировать изображения в стороннем графическом редакторе, и загрузить их обратно. При загрузке изображений в окне предпросмотра вы будете видеть изменения интерфейса web-приложения в реальном времени. Не забывайте сохранять изменения в файл с расширением .PCSH. В дальнейшем вы сможете открыть этот файл редактором, и продолжить разработку. Обеспечьте надежное хранение и резервирование нужных вам файлов тем. Они понадобятся вам при обновлении ПО для повторной выгрузки тем на обновленный сервер. Для того, чтобы сделать разработанную тему доступной пользователям, ее необходимо выгрузить на рабочий сервер. Вам необходимо указать aдрес сервера, имя пользователя-администратора рабочего сервера и его пароль (для Windows - это пользователь Windows, входящий в группу "Администраторы"). Также нужно указать идентификатор схемы (идентификатор должен состоять из цифр и латинских букв, и начинаться с буквы), и наименование схемы, видимое пользователям. ПО сервера проделает при выгрузке следующие действия: Внесет изменения в документ PARUSJS\theme\themes.xml Создаст папку с именем, равным идентификатору темы, в папке PARUSJS\theme Будем называть эту папку "папкой темы". В папке темы создаст файл theme.css с описанием стилей разработанной темы. В папке темы создаст папку images, и выгрузит в нее изображения, используемые темой. В папке PARUSJS\theme созаст файл с именем, равным идентификатору темы, и расширением .less. Это позволит в дальшейшем использовать разработанную тему в качестве базовой при разработке других тем. После успешной выгрузки вы увидите окно с рекомендациями: Выполните их.

3.26. Возможности автоматизации консольного конфигуратора
На ряду с конфигуратором с графическим интерфейсом, в состав поставки ПП входит консольный конфигуратор (для Linux редакции поставляется только консольный конфигуратор), имеющий аналогичные возможности интерактивного конфигурирования. Дополнительно к стандартным возможностям конфигурирования, консольный конфигуратор может быть использован для автоматизации и упращения работы администратора, путем его запуска с нижеуказанными ключами-параметрами: -CheckConfig: Проверка текущей конфигурации. Выполняется упрощенная проверка, с точки зрения конфигуратора, а именно проверяется наличие файла конфигурации, возможность его корректной загрузки, базовая проверка валидности, возможность соединения с БД указанной в конфигурации, проверка версии БД и наличие необходимых лицензий. Все эти пункты аналогично выполняются и во время интерактивного процесса конфигурации. -RegisterService: Регистрация и запуск сервиса ОС. Если на момент запуска команды сервис был уже зарегистрирован, но еще не запущен, то в результате он будет запущен. Если сервис зарегистрирован, и запущен, то в результате этой команды он будет перезапущен. В Linux редакции предоставляется возможность изменить параметры логирования, например логировать в syslog (локальный или удаленный) или в сервис journald. Параметры логирования хранятся в регистрационном файле, в виде ключей параметров запуска для сервиса, поэтому они запрашиваются во время регистрации сервиса. -UnRegisterService: Разрегистрация (и остановка при необходимости) сервиса ОС. -UpdateSchema: Инициализация и обновление служебной схемы базы данных. -UpdateDB: Обновление служебных объектов в базе данных Парус 8 (включая все действия выполняемые с ключем -UpdateSchema). -GenerateLaunchers: Генерация агентов удаленного доступа для приложения Win32. -ApplyConfig: Применение конфигурации целиком (включая все действия выполняемые с ключами -UpdateDB и -GenerateLaunchers). -ConvertTemplates: Выполнение конвертации трафаретовдля формирования локального кэша сервиса, работающего в текущей ОС Windows, и кэша в БД, для сервисов работающих в Linux, а также конвертации других объектов для их использования в Linux, такие как модули справочной системы Парус и шрифты текущей ОС Windows. Данный ключ позволяет выполнить конвертацию, полностью аналогичную выполняемой при интерактивном конфигурировании, отличие лишь в упрощении вызова и легкости настройки параметров. Это же описание можно получить запустив консольный конфигуратор с ключиком -help.
Важно! | Во всех вариантах запуска необходимо наличие файла конфигурации, который будет использоваться для получения необходимых настроек и параметров для запускаемой команды.

4. Работа
После установки всех настроек появится запрос на сохранение конфигурации: Подтвердите сохранение. Для запуска сервера нажмите В процессе запуска необходимо зарегистрировать службу Windows, а также может потребоваться внести изменения в сетевые настройки компьютера, чтобы зарегистрировать правило, разрешающее сеFirewall. Перед изменением сетевых настроек конфигуратором будет задан вопрос: Отвечайте "Да" при работе в локальном сеансе на выделенном web-сервере. При установке сервиса через терминальный доступ, а также в случае, если на сервере установлено другое работающее в данный момент серверное программное обеспечение (особенно серверы управления базами данных с подключенными к ним пользователями), отвечайте "Нет". В этом случае вам потребуется настроить Firewall (если он используется) вручную. Об успешной установке службы Windows сигнализирует сообщение: После завершения работы инсталлятора необходимо убедиться в наличии службы Windows, а также в том, что она находится в состоянии "Запущен". Для этого в апплете "Службы" (Start --> Control Panel --> Administrative Tools --> Services) найдите службу с именем "DataMill Application Server": В этом окне с помощью контекстного меню Вы сможете в дальнейшем управлять состоянием службы - останавливать и запускать ее, когда это будет необходимо. Серверное приложение будет зарегистрировано в качестве службы операционной системы и сервер будет запущен: Главное окно изменит вид: Кнопка Служит для остановки сервиса. Нажатие ссылки " Активные сессии " открывает список активных в настоящий момент сессий с указанием IP-адреса клиента, имени подключенного пользователя, временем до окончания сессии. Для того чтобы новый удаленный клиент мог подключиться к работе, он должен в адресной строке своего браузера набрать адрес сервера (или ip-адрес). Откроется окно с запросом имени и пароля пользователя: После ввода имени и пароля необходимо нажать "Ок" и будет открыта форма работы сервиса.

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

4.2. Рекомендации по разработке трафаретов
При разработке трафарета следует обращать внимание на факторы, которые могут значительно замедлить работу удаленного пользователя. Некоторые из таких факторов обсуждаются далее. 1. Неоправданное расширение используемой области (UsedRange) При разработке трафарета необходимо отслеживать, чтобы за границами видимой формы (области печати) не было заполненных, не несущих смысловой нагрузки ячеек, а также ячеек с любым нестандартным форматированием. В противном случае, эти ячейки также попадут в область печати и будет распечатана ненужная страница. Также будет потрачено время на их отображение в форме документа.
Пример |
2. Использование атрибутов форматирования ячейки При создании трафарета документа, при выборе способа форматирования ячейки необходимо использовать метод выравнивания данных в ячейке по вертикали "ПО ВЕРХНЕМУ КРАЮ". Данный метод позволяет существенно сократить время на генерацию формы в режиме он-лайн. Также включенная функция "ПЕРЕНОСИТЬ ПО СЛОВАМ" существенно замедляет отрисовку форм документов. В связи с этим необходимо ограничить использование данной функции в трафарете для тех ячеек, в которых находится статическая (постоянная) информация.
Пример | Для приведенного ниже трафарета желтым цветом выделены ячейки, для которых функция "ПЕРЕНОС ПО СЛОВАМ" должна быть отключена. Эти ячейки не несут в себе переменной информации. Голубым выделены ячейки, для которых возможно также не требуется включение функции "ПЕРЕНОС ПО СЛОВАМ", так как для информации, которая будет в них внесена, достаточно места. Остальные ячейки можно использовать с переносом по словам.
Для того чтобы узнать способ форматирования одной или нескольких ячеек, необходимо выделить эту ячейку (или несколько ячеек с зажатой клавишей Ctrl). После этого правой кнопкой мыши вызвать контекстное меню и выбрать действие "Формат ячеек". Перейти на вкладку "Выравнивание" и убедиться, что соответствующие пункты заполнены верно: 3. Наличие скрытых ячеек В трафарете не должно быть скрытых столбцов и строк. Их наличие влияет на производительность работы сервиса, а также может влиять на отображение формы документа при распечатке.
Пример | В данном примере при создании трафарета были скрыты столбцы А и F. Эти столбцы не несут никакой смысловой нагрузки, однако учитываются при генерации формы документа при работе он-лайн.
Для того чтобы отобразить все скрытые ячейки на листе (если они есть) необходимо выбрать весь диапазон данных (одиночный щелчок левой кнопки мыши на выделенной на рисунке области): выделятся все ячейки. После этого в любом месте листа вызвать контекстное меню и выбрать действие "ОТОБРАЗИТЬ". 4. Перекрестные и неверные формулы Для увеличения производительности необходимо минимизировать использование перекрестных ссылок между формулами в разных ячейках. То есть если необходимо в одной ячейке посчитать, например, сумму двух ячеек, которые, в свою очередь, содержат формулы для подсчета сумм других ячеек, то для оптимальной работы необходимо в конечной ячейке произвести полный расчет необходимой суммы, а не давать ссылку на промежуточные расчеты. Рассмотрим следующий пример:
Пример |
В ячейке О20 считается значение суммы значений в ячейках O22 и O23, в которых в свою очередь подсчитываются суммы соответственно ячеек L22, M22, N22 для O22 и L23, M23, N23 для O23. Для увеличения быстродействия рекомендуется в ячейке O20 сразу подсчитать сумму значений L22, M22, N22, L23, M23, N23, не прибегая при этом к дополнительным промежуточным вычислениям. 5. Использование нестандартных шрифтов. Нежелательно использование в трафарете шрифтов, не включенных в стандартную поставку Microsoft Excel, так как это значительно замедляет процесс отображения форм документов.

4.3. Поддерживаемые функции Microsoft Excel
Разработчики заявляют о поддержке следующего набора функций:
Русское локальное имя | Международное имя
--- | ---
ABS | ABS
ACOS | ACOS
ACOSH | ACOSH
АДРЕС | ADDRESS
И | AND
ASC | ASC
ASIN | ASIN
ASINH | ASINH
ATAN | ATAN
ATAN2 | ATAN2
ATANH | ATANH
СРЗНАЧ | AVERAGE
СРЗНАЧА | AVERAGEA
ОКРВВЕРХ | CEILING
СИМВОЛ | CHAR
ВЫБОР | CHOOSE
ПЕЧСИМВ | CLEAN
КОДСИМВ | CODE
СТОЛБЕЦ | COLUMN
СЦЕПИТЬ | CONCATENATE
COS | COS
COSH | COSH
СЧЁТ | COUNT
СЧЁТЗ | COUNTA
СЧИТАТЬПУСТОТЫ | COUNTBLANK
ДАТА | DATE
ДАТАЗНАЧ | DATEVALUE
ДЕНЬ | DAY
ДНЕЙ360 | DAYS360
ГРАДУСЫ | DEGREES
РУБЛЬ | DOLLAR
ЧЁТН | EVEN
СОВПАД | EXACT
EXP | EXP
ЛОЖЬ | FALSE
НАЙТИ | FIND
ФИКСИРОВАННЫЙ | FIXED
ОКРВНИЗ | FLOOR
ГПР | HLOOKUP
ЧАС | HOUR
ЕСЛИ | IF
ДВССЫЛ | INDIRECT
ИНФОРМ | INFO
ЦЕЛОЕ | INT
ЕПУСТО | ISBLANK
ЕОШ | ISERR
ЕОШИБКА | ISERROR
ЕЛОГИЧ | ISLOGICAL
ЕНД | ISNA
ЕНЕТЕКСТ | ISNONTEXT
ЕЧИСЛО | ISNUMBER
ЕССЫЛКА | ISREF
ЕТЕКСТ | ISTEXT
ЛЕВСИМВ | LEFT
ДЛСТР | LEN
LN | LN
LOG | LOG
LOG10 | LOG10
ПРОСМОТР | LOOKUP
СТРОЧН | LOWER
ПОИСКПОЗ | MATCH
МАКС | MAX
МАКСА | MAXA
ПСТР | MID
МИН | MIN
МИНА | MINA
МИНУТЫ | MINUTE
ОСТАТ | MOD
МЕСЯЦ | MONTH
Ч | N
НД | NA
НЕ | NOT
ТДАТА | NOW
НЕЧЁТ | ODD
ИЛИ | OR
ПИ | PI
СТЕПЕНЬ | POWER
ПРОИЗВЕД | PRODUCT
ПРОПНАЧ | PROPER
РАДИАНЫ | RADIANS
СЛЧИС | RAND
РАНГ | RANK
РАНГ.СР | RANK.AVG
РАНГ.РВ | RANK.EQ
ПОВТОР | REPT
ПРАВСИМВ | RIGHT
ОКРУГЛ | ROUND
ОКРУГЛВНИЗ | ROUNDDOWN
ОКРУГЛВВЕРХ | ROUNDUP
СТРОКА | ROW
ПОИСК | SEARCH
СЕКУНДЫ | SECOND
ЗНАК | SIGN
SIN | SIN
SINH | SINH
КОРЕНЬ | SQRT
ПОДСТАВИТЬ | SUBSTITUTE
СУММ | SUM
Т | T
TAN | TAN
TANH | TANH
ТЕКСТ | TEXT
ВРЕМЯ | TIME
ВРЕМЗНАЧ | TIMEVALUE
СЕГОДНЯ | TODAY
СЖПРОБЕЛЫ | TRIM
ИСТИНА | TRUE
ОТБР | TRUNC
ПРОПИСН | UPPER
ЗНАЧЕН | VALUE
ВПР | VLOOKUP
ДЕНЬНЕД | WEEKDAY
ГОД | YEAR
Следующие функции распознаются, но их вычисление не поддерживается:
Русское локальное имя | Международное имя
--- | ---
FРАСП | FDIST
FРАСПОБР | FINV
ZТЕСТ | ZTEST
АСЧ | SYD
АПЛ | SLN
БЕТАОБР | BETAINV
БЕТАРАСП | BETADIST
БС | FV
БИНОМРАСП | BINOMDIST
ВЕЙБУЛЛ | WEIBULL
ВЕРОЯТНОСТЬ | PROB
ВСД | IRR
ГАММАНЛОГ | GAMMALN
ГАММАОБР | GAMMAINV
ГАММАРАСП | GAMMADIST
ГИПЕРГЕОМЕТ | HYPGEOMDIST
ГИПЕРССЫЛКА | HYPERLINK
ДДОБ | DDB
ДИСП | VAR
ДИСПА | VARA
ДИСПР | VARP
ДИСПРА | VARPA
ФУО | DB
ДОВЕРИТ | CONFIDENCE
ИНДЕКС | INDEX
КВАДРОТКЛ | DEVSQ
КВАРТИЛЬ | QUARTILE
КВПИРСОН | RSQ
КОВАР | COVAR
КОРРЕЛ | CORREL
КПЕР | NPER
КРИТБИНОМ | CRITBINOM
ЛГРФПРИБЛ | LOGEST
ЛИНЕЙН | LINEST
ЛОГНОРМОБР | LOGINV
ЛОГНОРМРАСП | LOGNORMDIST
МВСД | MIRR
МЕДИАНА | MEDIAN
МОБР | MINVERSE
МОДА | MODE
МОПРЕД | MDETERM
МУМНОЖ | MMULT
НАИБОЛЬШИЙ | LARGE
НАИМЕНЬШИЙ | SMALL
НАКЛОН | SLOPE
CTABKA | RATE
НОРМАЛИЗАЦИЯ | STANDARDIZE
НОРМОБР | NORMINV
НОРМРАСП | NORMDIST
НОРМСТОБР | NORMSINV
НОРМСТРАСП | NORMSDIST
ЧПС | NPV
ОБЛАСТИ | AREAS
ОСПЛТ | PPMT
ОТРБИНОМРАСП | NEGBINOMDIST
ОТРЕЗОК | INTERCEPT
ПУО | VDB
ПЕРЕСТ | PERMUT
ПЕРСЕНТИЛЬ | PERCENTILE
ПС | PV
ПИРСОН | PEARSON
ПРПЛТ | IPMT
ПЛТ | PMT
ПРЕДСКАЗ | FORECAST
ПРОЦЕНТРАНГ | PERCENTRANK
ПУАССОН | POISSON
РИМСКОЕ | ROMAN
РОСТ | GROWTH
СКОС | SKEW
СМЕЩ | OFFSET
СРГАРМ | HARMEAN
СРГЕОМ | GEOMEAN
СРОТКЛ | AVEDEV
СТАНДОТКЛОН | STDEV
СТАНДОТКЛОНА | STDEVA
СТАНДОТКЛОНП | STDEVP
СТАНДОТКЛОНПА | STDEVPA
СТОШYX | STEYX
СТЬЮДРАСП | TDIST
СТЬЮДРАСПОБР | TINV
СУММЕСЛИ | SUMIF
СУММКВ | SUMSQ
СУММКВРАЗН | SUMXMY2
СУММПРОИЗВ | SUMPRODUCT
СУММРАЗНКВ | SUMX2MY2
СУММСУММКВ | SUMX2PY2
СЧЁТЕСЛИ | COUNTIF
ТЕНДЕНЦИЯ | TREND
ТИП | TYPE
ТРАНСП | TRANSPOSE
ТТЕСТ | TTEST
УРЕЗСРЕДНЕЕ | TRIMMEAN
ФАКТР | FACT
ФИШЕР | FISHER
ФИШЕРОБР | FISHERINV
ФТЕСТ | FTEST
ХИ2ОБР | CHIINV
ХИ2РАСП | CHIDIST
ХИ2ТЕСТ | CHITEST
ЧАСТОТА | FREQUENCY
ЧИСЛКОМБ | COMBIN
ЧИСЛСТОЛБ | COLUMNS
ЧСТРОК | ROWS
ЭКСПРАСП | EXPONDIST
ЭКСЦЕСС | KURT
ЯЧЕЙКА | CELL

4.4. Загрузка отчетов
Сервис реализует возможность загрузки отчетов из внешних файлов различных типов. Тип файла определяется его содержимым. Поддерживаются следующие типы файлов: xml-документ, выгруженный для центра учета из (другого либо того же самого) центра учета. Для загрузки файлов этого типа никаких дополнительных действий предпринимать не нужно. pra-архив, выгруженный для центра учета из (другого либо того же самого) центра учета. Для загрузки архивов этого типа никаких дополнительных действий предпринимать не нужно. pra-архив, выгруженный для центра учета из абонентского пункта Excel. Для загрузки архивов этого типа никаких дополнительных действий предпринимать не нужно. xml-документ произвольной структуры. Для этого необходимо разработать схему для валидации документа (файл с расширением xsd) и xslt-преобразование (файл с расширением xsl), соответственно для валидации и преобразования загружаемых xml-документов. Схемы, указанные в списке при настройке сервиса, перебираются последовательно. Если для той или иной схемы документ проходит валидацию по схеме, то произойдет преобразование по соответствующему этой схеме сценарию, и дальнейшая загрузка результата преобразования, как xml-документа из пункта 1. Схемы перебираются последовательно. Текстовый файл. Для этого необходимо разработать скрипт загрузки текстового файла на языке прграммирования VBscript . Скрипты, указанные в списке при настройке сервиса, перебираются последовательно. Если пользовательский текстовый файл проходит преобразование скриптом (переменной InvalidData после завершения очередного скрипта присвоено значение False), то произойдет дальнейшая загрузка результата разбора, как xml-документа из пункта 1. Рабочая книга Microsoft Excel. Для этого необходимо разработать скрипт загрузки рабочих книг на языке прграммирования VBscript . Скрипты, указанные в списке при настройке сервиса, перебираются последовательно. Если пользовательский файл рабочей книги проходит преобразование скриптом (переменной InvalidData после завершения очередного скрипта присвоено значение False), то произойдет дальнейшая загрузка результата разбора, как xml-документа из пункта 1. Рабочие книги в формате xlsx поддерживаются при условии установки на сервере соответствующей версии Microsoft Office.

4.4.1. Разработка xslt-преобразований
1. Для реализации загрузки отчетов из xml-документов произвольной структуры необходимо предпринять следующие шаги: Внимательно изучить структуру, с которой придется иметь дело. Если схемы валидации документов такой структуры не существует, ее придется разработать самостоятельно.
   Пример | Например, нам нужно иметь дело с документами следующей структуры:
       1<data>
       2  <report agent="РосПищеСвет" form="Форма 160.285">
       3    <subreport ЗаСпички="100" ЗаМыло="200" Качество="Хорошее" />
       4    <subreport code="Разрез 1" ЗаСпички="10" ЗаМыло="20" Качество="Среднее" />
       5    <subreport code="Разрез 2" ЗаСпички="80" ЗаМыло="280" Качество="Отличное" />
       6  </report>
       7</data>
   Для валидации документов такой структуры создадим xsd-схему:
       01<xs:schema
       02  xmlns:xs="http://www.w3.org/2001/XMLSchema">
       03  <xs:element name="data">
       04  <!--  Корневой элемент документа имеет имя "data" -->
       05    <xs:complexType>
       06      <xs:sequence>
       07        <xs:element name="report" maxOccurs="unbounded">
       08        <!--  Корневой элемент включает в себя любое количество элементов "report" -->
       09          <xs:complexType>
       10            <xs:sequence>
       11              <xs:element maxOccurs="unbounded" name="subreport">
       12              <!--  Элемент "report" включает в себя любое количество элементов "subreport" -->
       13                <xs:complexType>
       14                  <xs:attribute name="code" type="xs:string" use="optional" />
       15                  <!--  Элемент "subreport" имеет необязательный атрибут "code" -->
       16                  <xs:anyAttribute processContents="skip" />
       17                  <!--  Элемент "subreport" имеет неизвестное заранее количество любых атрибутов
       18                    Это будут значения показателей.
       19                   -->
       20                </xs:complexType>
       21              </xs:element>
       22            </xs:sequence>
       23            <xs:attribute name="agent" type="xs:string" use="required" />
       24            <!--  Элемент "report" имеет обязательный строковый атрибут "agent" -->
       25            <xs:attribute name="form" type="xs:string" use="required" />
       26            <!--  Элемент "report" имеет обязательный строковый атрибут "form" -->
       27          </xs:complexType>
       28        </xs:element>
       29      </xs:sequence>
       30    </xs:complexType>
       31  </xs:element>
       32</xs:schema>
2. Теперь нам нужно научиться превращать документы в документы стандартной структуры Парус 8:
       01<REPORTS>
       02  <!-- отчет -->
       03  <REPORT>
       04    <!-- обязательные элементы -->
       05    <AGENT>Мнемокод контрагента</AGENT>
       06    <FORM>Мнемокод формы</FORM>
       07    <BDATE>Дата отчета</BDATE>
       08    <KIND>0-первичный отчет, 1-сводный отчет</KIND>
       09
       10    <!-- необязательные элементы -->
       11    <CATALOG>Наименование каталога</CATALOG>
       12    <CHECKED>0-непроверен;1-проверен</CHECKED>
       13    <STATE>Состояние отчета</STATE>
       14    <SENT>Отправлен</SENT>
       15
       16    <!-- подотчеты -->
       17    <SUBREPORTS>
       18
       19      <!-- главный подотчет -->
       20      <SUBREPORT>
       21        <!-- значения одиночных показателей -->
       22        <VALUES>
       23          <VALUE>
       24            <CODE>Мнемокод показателя</CODE>
       25            <!-- один из трех вариантов -->
       26            <NVAL>Число</NVAL>
       27            <SVAL>Строка</SVAL>
       28            <DVAL>Дата</DVAL>
       29          </VALUE>
       30          <VALUE>
       31            ...
       32          </VALUE>
       33        </VALUES>
       34
       35        <!-- таблицы показателей -->
       36        <TABLES>
       37          <TABLE>
       38            <NAME>Наименование таблицы</NAME>
       39            <!-- строки таблицы -->
       40            <ROWS>
       41              <ROW>
       42                <VALUE>
       43                  <CODE>Мнемокод показателя в составе таблицы</CODE>
       44                  <!-- один из трех вариантов -->
       45                  <NVAL>Число</NVAL>
       46                  <SVAL>Строка</SVAL>
       47                  <DVAL>Дата</DVAL>
       48                </VALUE>
       49                <VALUE>
       50                  ...
       51                </VALUE>
       52              </ROW>
       53              <ROW>
       54                ...
       55              </ROW>
       56            </ROWS>
       57          </TABLE>
       58          <TABLE>
       59            ...
       60          </TABLE>
       61        </TABLES>
       62      </SUBREPORT>
       63      <SUBREPORT>
       64        <CODE>Мнемокод разреза</CODE>
       65          ...
       66      </SUBREPORT>
       67    </SUBREPORTS>
       68  </REPORT>
       69  <REPORT>
       70    ...
       71  </REPORT>
       72</REPORTS>
   Пример | Преобразование нашего исходного документа к стандартной структуре:
       01<xsl:stylesheet version="1.0"
       02                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
       03                xmlns:msxsl="urn:schemas-microsoft-com:xslt"
       04                xmlns:parus="parus.xslt"
       05                xmlns:vbs="parus.vbscript"
       06                exclude-result-prefixes="xsl msxsl parus vbs">
       07<!-- Пространства имен:
       08  xsl - стандартное пространство имен элементов xslt
       09  msxsl - расширение Microsoft пространства имен xslt
       10  parus - "наше" пространство имен. Принадлежащие ему идентификаторы описаны ниже.
       11  vbs - "локальное" пространство имен, через которое мы будем получать доступ к скриптовым функциям. -->
       12
       13<!-- нам понадобятся возможнсти, которые не предоставляются стандартными средствами xslt-транслятора.
       14Напрмер, нам будет нужна текущая дата. Определелим в локальном пространстве имен скриптовую функцию,
       15возвращающую отформатированную дату -->
       16  <msxsl:script language="VBScript" implements-prefix="vbs">
       17  <![CDATA[
       18    function today()
       19      today = Year(Date) & "-" & Month(Date) & "-" & Day(Date)
       20    end function
       21  ]]>
       22  </msxsl:script>
       23
       24  <xsl:output encoding="UTF-8"
       25              method="xml"/>
       26
       27  <!-- шаблон корневого узла. Он будет применен один и только один раз. -->
       28  <xsl:template match="/">
       29    <!-- Элемент целевой структуры -->
       30    <REPORTS>
       31
       32      <!-- Для каждого элемента "report" исходной структуры ... -->
       33      <xsl:for-each select="data/report">
       34        <REPORT>
       35          <!-- выводим сообщение пользователю. Он увидит его протоколе загрузки -->
       36          <xsl:value-of select="parus:Message(concat('Сообщение пользователю при загрузке файла ', parus:FileName(), '.'))"/>
       37
       38          <!-- выводим сообщение в отладочный монитор. -->
       39          <xsl:value-of select="parus:DebugString('Сообщение в монитор.')"/>
       40
       41          <!-- эти элементы бререм из атрибутов узла "report" -->
       42          <AGENT><xsl:value-of select="@agent"/></AGENT>
       43          <FORM><xsl:value-of select="@form"/></FORM>
       44
       45          <!-- Формируем дату как результат вызова скриптовой функции -->
       46          <BDATE><xsl:value-of select="vbs:today()" /></BDATE>
       47
       48          <!-- константа -->
       49          <KIND>0</KIND>
       50
       51          <SUBREPORTS>
       52            <!-- цикл по элементам "subreport" -->
       53            <xsl:for-each select="subreport">
       54              <SUBREPORT>
       55
       56                <!-- если "subreport" имеет атрибут "code", то использовать его -->
       57                <xsl:if test="@code">
       58                  <CODE><xsl:value-of select="@code"/></CODE>
       59                </xsl:if>
       60
       61                <VALUES>
       62                  <!-- цикл по всем атрибутам элемента "subreport" -->
       63                  <xsl:for-each select="@*">
       64                    <!-- если атрибут имеет имя, отличное от "code", то это показатель -->
       65                    <xsl:if test="not(name(.)='code')">
       66                      <VALUE>
       67                        <CODE><xsl:value-of select="name(.)"/></CODE>
       68                        <SVAL><xsl:value-of select="." /></SVAL>
       69                      </VALUE>
       70                    </xsl:if>
       71                  </xsl:for-each>
       72                </VALUES>
       73              </SUBREPORT>
       74            </xsl:for-each>
       75          </SUBREPORTS>
       76        </REPORT>
       77      </xsl:for-each>
       78    </REPORTS>
       79  </xsl:template>
       80</xsl:stylesheet>
   В результате применения этого преобразования к нашему документу мы получим следующий документ:
       01<REPORTS>
       02  <REPORT>
       03    <AGENT>РосПищеСвет</AGENT>
       04    <FORM>Форма 160.285</FORM>
       05    <BDATE>2015-10-15</BDATE>
       06    <KIND>0</KIND>
       07    <SUBREPORTS>
       08      <SUBREPORT>
       09        <VALUES>
       10          <VALUE>
       11            <CODE>ЗаСпички</CODE>
       12            <SVAL>100</SVAL>
       13          </VALUE>
       14          <VALUE>
       15            <CODE>ЗаМыло</CODE>
       16            <SVAL>200</SVAL>
       17          </VALUE>
       18          <VALUE>
       19            <CODE>Качество</CODE>
       20            <SVAL>Хорошее</SVAL>
       21          </VALUE>
       22        </VALUES>
       23      </SUBREPORT>
       24      <SUBREPORT>
       25        <CODE>Разрез 1</CODE>
       26        <VALUES>
       27          <VALUE>
       28            <CODE>ЗаСпички</CODE>
       29            <SVAL>10</SVAL>
       30          </VALUE>
       31          <VALUE>
       32            <CODE>ЗаМыло</CODE>
       33            <SVAL>20</SVAL>
       34          </VALUE>
       35          <VALUE>
       36            <CODE>Качество</CODE>
       37            <SVAL>Среднее</SVAL>
       38          </VALUE>
       39        </VALUES>
       40      </SUBREPORT>
       41      <SUBREPORT>
       42        <CODE>Разрез 2</CODE>
       43        <VALUES>
       44          <VALUE>
       45            <CODE>ЗаСпички</CODE>
       46            <SVAL>80</SVAL>
       47          </VALUE>
       48          <VALUE>
       49            <CODE>ЗаМыло</CODE>
       50            <SVAL>280</SVAL>
       51          </VALUE>
       52          <VALUE>
       53            <CODE>Качество</CODE>
       54            <SVAL>Отличное</SVAL>
       55          </VALUE>
       56        </VALUES>
       57      </SUBREPORT>
       58    </SUBREPORTS>
       59  </REPORT>
       60</REPORTS>
   Этот документ вполне соответствует стандартной структуре, и, если в БД существуют соответствующая форма, контрагент, показатели и разрезы, то он загрузится.
Важно! | Элементы пространства имен с uri "parus.xslt": Функция FileName () возвращает имя загруженного пользователем файла. Функция Message (Text: string) передает строковый аргумент пользователю в протокол загрузки отчета. Возвращает пустую строку. Если вы хотите передать этой функции что-то, отличное от строки, то преобразуйте аргумент в строку функцией string. Например, <xsl:value-of select="parus:Message(string(@code))" /> Функция DebugString (Text: string) передает строковый аргумент в отладочный монитор. Возвращает пустую строку. Если вы хотите передать этой функции что-то, отличное от строки, то преобразуйте аргумент в строку функцией string. Например, <xsl:value-of select="parus:DebugString(string(@code))" /> Функция SessionValue (Name: string) возвращает сохраненное в сессии значение с именем, определяемым параметром Name. Например, <xsl:value-of select="parus:SessionValue("agent")" /> Этими функциями вы можете пользоваться в своих xslt-преобразованиях.

4.4.2. Разработка скриптов загрузки
- Скрипты - загрузчики разрабатываются на языке VBscript . В скрипте загрузки вы можете использовать следующие интерфейсные элементы: Процедура Message (Text: string) передает строковый аргумент пользователю в протокол загрузки отчета. Процедура DebugString (Text: string) передает строковый аргумент в отладочный монитор. Переменная FileName : string (только для чтения) содержит имя загруженного пользователем файла. Переменная xml : Object содержит объект MSXML DOM Document . Во время исполнения скрипта этот документ пуст. Ожидается, что скрипт наполнит его узлами в соответствии с информацией, доступной скрипту их загруженного файла. Именно этот документ будет в дальнейшем загружаться в базу данных. Структура этого документа достаточно подробно описана здесь.
  Совет | Вы можете вывести текст сформированного документа в отладочный монитор оператором
      DebugString xml.xml
- Переменная InvalidData : BOOL содержит результат разбора файла скриптом. Если ваш скрипт "признал файл своим", присвойте этой переменной значение True, если нет, то присвойте ей значение False.
  Важно! | Переменная InvalidData по умолчанию имеет значение False. Скрипт, который "забудет" присвоить значение этой переменной, "захватит" любой проходящий через него файл.
Функция SessionValue (Name: string) : string возвращает сохраненное в сессии значение с именем, определяемым параметром Name. Ниже будут рассмотрены особенности загрузчиков файлов различных типов, и даны соответствующие примеры.

4.4.2.1. Загрузка текстовых файлов
В дополнение к ранее описанным объектам, скрипт загрузки текстового файла имеет доступ к следующему: Переменная StringCount : Integer (только для чтения) содержит количество строк в загружаемом текстовом файле. Функция Strings(Index: Integer) : string возвращает строку загружаемого файла с номером Index. Строки нумеруются с нуля. Попытка обратиться к несуществующей строке приведет к ошибке.
Пример | Ниже приведен откомментированный пример скрипта загрузки текстового файла:
    001'Так можно и нужно анализировать строки пришедшего текстового файла.
    002'Количество строк - StringCount, строка с номером I - Strings(I), нумерация с 0.
    003
    004'Фактически здесь написано: если на четвертой (с номером 3) строке написано что-то,
    005'отличное от "Форма 160/128q", то это не "наш" текстовый файл, его не надо обрабатывать.
    006if StringCount < 4 then
    007  'Количество строк меньше четырех. Это точно не "нащ" файл.
    008  InvalidData = True
    009elseif Strings(3) <> "Форма 160/128q" then
    010  'Текстовый файл не признан "своим".
    011  InvalidData = True
    012else
    013  'Следите за отступами.
    014
    015  Message("Анализируем файл.") 'Сообщение пользователю в протокол загрузки.
    016
    017  '1. Создание корневого элемента REPORTS
    018  set xml.documentElement = xml.createElement("REPORTS")
    019
    020  '2. Создание элемента-отчета. Повторять столько раз, сколько нужно отчетов.
    021  with xml.documentElement.appendChild(xml.createElement("REPORT"))
    022
    023    '3. Атрибуты отчета
    024
    025    .appendChild(xml.createElement("AGENT")).appendChild(xml.createTextNode("Мнемокод контрагента"))
    026    .appendChild(xml.createElement("FORM")).appendChild(xml.createTextNode("Мнемокод формы"))
    027    .appendChild(xml.createElement("BDATE")).appendChild(xml.createTextNode("Дата в формете YYYY-MM-DD"))
    028    .appendChild(xml.createElement("NOTE")).appendChild(xml.createTextNode("Примечание!!!"))
    029    .appendChild(xml.createElement("KIND")).appendChild(xml.createTextNode("0")) '0-первичный, 1-сводный
    030
    031    'Также можно установить дополнительные атрибуты отчета:
    032    '.appendChild(xml.createElement("CATALOG")).appendChild(xml.createTextNode("Наименование каталога"))
    033    '.appendChild(xml.createElement("CHECKED")).appendChild(xml.createTextNode("1"))
    034    '.appendChild(xml.createElement("STATE")).appendChild(xml.createTextNode("2"))
    035    '.appendChild(xml.createElement("SENT")).appendChild(xml.createTextNode("1"))
    036
    037    '4. Список подотчетов
    038    with .appendChild(xml.createElement("SUBREPORTS"))
    039
    040      '5. Главный подотчет (без мнемокода)
    041      with .appendChild(xml.createElement("SUBREPORT"))
    042
    043        '6. Список значений
    044        with .appendChild(xml.createElement("VALUES"))
    045
    046          'Создать столько значений, сколько нужно.
    047          '7. Значение числового показателя
    048          with .appendChild(xml.createElement("VALUE"))
    049            .appendChild(xml.createElement("CODE")).appendChild(xml.createTextNode("Мнемокод числового показателя"))
    050            .appendChild(xml.createElement("NVAL")).appendChild(xml.createTextNode("100.10"))
    051          end with
    052
    053          '8. Значение строкового показателя
    054          with .appendChild(xml.createElement("VALUE"))
    055            .appendChild(xml.createElement("CODE")).appendChild(xml.createTextNode("Мнемокод строкового показателя"))
    056            .appendChild(xml.createElement("SVAL")).appendChild(xml.createTextNode("Строковое значение"))
    057          end with
    058
    059          '9. Значение показателя типа "дата".
    060          with .appendChild(xml.createElement("VALUE"))
    061            .appendChild(xml.createElement("CODE")).appendChild(xml.createTextNode("Мнемокод показателя типа дата"))
    062            .appendChild(xml.createElement("DVAL")).appendChild(xml.createTextNode("2020-01-01"))
    063          end with
    064
    065        end with
    066
    067        '10. Таблицы показателей - если редакция содержит таблицы показателей.
    068        with .appendChild(xml.createElement("TABLES"))
    069
    070          '11. Таблица. Повторять столько раз, сколько нужно таблиц.
    071          with .appendChild(xml.createElement("TABLE"))
    072
    073            '12. Наименование таблицы
    074            .appendChild(xml.createElement("NAME")).appendChild(xml.createTextNode("Наименование таблицы"))
    075
    076            '13. Строки таблицы
    077            with .appendChild(xml.createElement("ROWS"))
    078
    079              '14. Строка таблицы
    080              with .appendChild(xml.createElement("ROW"))
    081
    082                '15. Значение строкового показателя
    083                with .appendChild(xml.createElement("VALUE"))
    084                  .appendChild(xml.createElement("CODE")).appendChild(xml.createTextNode("Показатель в составе талицы"))
    085                  .appendChild(xml.createElement("SVAL")).appendChild(xml.createTextNode("Строковое значение"))
    086                end with
    087
    088                with .appendChild(xml.createElement("VALUE"))
    089                  .appendChild(xml.createElement("CODE")).appendChild(xml.createTextNode("Другой показатель в составе талицы"))
    090                  .appendChild(xml.createElement("SVAL")).appendChild(xml.createTextNode("Строковое значение"))
    091                end with
    092
    093              end with
    094
    095              '16. Строка таблицы
    096              with .appendChild(xml.createElement("ROW"))
    097
    098                '17. Значение строкового показателя
    099                with .appendChild(xml.createElement("VALUE"))
    100                  .appendChild(xml.createElement("CODE")).appendChild(xml.createTextNode("Показатель в составе талицы"))
    101                  .appendChild(xml.createElement("SVAL")).appendChild(xml.createTextNode("Строковое значение"))
    102                end with
    103
    104                with .appendChild(xml.createElement("VALUE"))
    105                  .appendChild(xml.createElement("CODE")).appendChild(xml.createTextNode("Другой показатель в составе талицы"))
    106                  .appendChild(xml.createElement("SVAL")).appendChild(xml.createTextNode("Строковое значение"))
    107                end with
    108
    109              end with
    110
    111            end with
    112
    113          end with
    114
    115        end with
    116
    117      end with
    118
    119      '18. Подотчет. Повторять столько раз, сколько нужно подотчетов.
    120      with .appendChild(xml.createElement("SUBREPORT"))
    121
    122        '19. Мнемокод разреза подотчета
    123        .appendChild(xml.createElement("CODE")).appendChild(xml.createTextNode("Мнемокод разреза"))
    124
    125        '20. Список занчений
    126        with .appendChild(xml.createElement("VALUES"))
    127
    128          'Создать столько значений, сколько нужно.
    129          '21. Значение числового показателя
    130          with .appendChild(xml.createElement("VALUE"))
    131            .appendChild(xml.createElement("CODE")).appendChild(xml.createTextNode("Мнемокод числового показателя"))
    132            .appendChild(xml.createElement("NVAL")).appendChild(xml.createTextNode("100.10"))
    133          end with
    134
    135          '22. Значение строкового показателя
    136          with .appendChild(xml.createElement("VALUE"))
    137            .appendChild(xml.createElement("CODE")).appendChild(xml.createTextNode("Мнемокод строкового показателя"))
    138            .appendChild(xml.createElement("SVAL")).appendChild(xml.createTextNode("Строковое значение"))
    139          end with
    140
    141          '23. Значение показателя типа "дата".
    142          with .appendChild(xml.createElement("VALUE"))
    143            .appendChild(xml.createElement("CODE")).appendChild(xml.createTextNode("Мнемокод показателя типа дата"))
    144            .appendChild(xml.createElement("DVAL")).appendChild(xml.createTextNode("2020-01-01"))
    145          end with
    146
    147        end with
    148
    149        'Создать таблицы, если они нужны.
    150
    151      end with
    152
    153    end with
    154  end with
    155end if

4.4.2.2. Загрузка рабочих книг Excel
В дополнение к ранее описанным объектам, скрипт загрузки рабочей книги Excel имеет доступ к следующему: Переменная WorkBook : ExcelWorkBook (только для чтения) содержит объект-рабочую книгу. Через эту переменную вы можете обращаться к любым свойствам и методам объектной модели Microsoft Excel.
Пример | Ниже приведен откомментированный пример скрипта загрузки рабочей книги Excel:
    001'Так можно и нужно анализировать ячейки рабочей книги Excel.
    002'WorkBook - объект рабочей книги.
    003
    004'Фактически здесь написано: если на листе "Лист 1" в ячейке D13 содержится значение,
    005'отличное от "Форма 160/128q", то это не "наша" рабочая книга, ее не надо обрабатывать.
    006
    007if WorkBook.WorkSheets("Лист 1").Range("D13").Value <> "Форма 160/128q" then
    008  'Текстовый файл не признан "своим".
    009  InvalidData = True
    010else
    011  'Следите за отступами.
    012
    013  Message("Анализируем файл.") 'Сообщение пользователю в протокол загрузки.
    014
    015  '1. Создание корневого элемента REPORTS
    016  set xml.documentElement = xml.createElement("REPORTS")
    017
    018  '2. Создание элемента-отчета. Повторять столько раз, сколько нужно отчетов.
    019  with xml.documentElement.appendChild(xml.createElement("REPORT"))
    020
    021    '3. Атрибуты отчета
    022
    023    .appendChild(xml.createElement("AGENT")).appendChild(xml.createTextNode("Мнемокод контрагента"))
    024    .appendChild(xml.createElement("FORM")).appendChild(xml.createTextNode("Мнемокод формы"))
    025    .appendChild(xml.createElement("BDATE")).appendChild(xml.createTextNode("Дата в формете YYYY-MM-DD"))
    026    .appendChild(xml.createElement("NOTE")).appendChild(xml.createTextNode("Примечание!!!"))
    027    .appendChild(xml.createElement("KIND")).appendChild(xml.createTextNode("0")) '0-первичный, 1-сводный
    028
    029    'Также можно установить дополнительные атрибуты отчета:
    030    '.appendChild(xml.createElement("CATALOG")).appendChild(xml.createTextNode("Наименование каталога"))
    031    '.appendChild(xml.createElement("CHECKED")).appendChild(xml.createTextNode("1"))
    032    '.appendChild(xml.createElement("STATE")).appendChild(xml.createTextNode("2"))
    033    '.appendChild(xml.createElement("SENT")).appendChild(xml.createTextNode("1"))
    034
    035    '4. Список подотчетов
    036    with .appendChild(xml.createElement("SUBREPORTS"))
    037
    038      '5. Главный подотчет (без мнемокода)
    039      with .appendChild(xml.createElement("SUBREPORT"))
    040
    041        '6. Список значений
    042        with .appendChild(xml.createElement("VALUES"))
    043
    044          'Создать столько значений, сколько нужно.
    045          '7. Значение числового показателя
    046          with .appendChild(xml.createElement("VALUE"))
    047            .appendChild(xml.createElement("CODE")).appendChild(xml.createTextNode("Мнемокод числового показателя"))
    048            .appendChild(xml.createElement("NVAL")).appendChild(xml.createTextNode("100.10"))
    049          end with
    050
    051          '8. Значение строкового показателя
    052          with .appendChild(xml.createElement("VALUE"))
    053            .appendChild(xml.createElement("CODE")).appendChild(xml.createTextNode("Мнемокод строкового показателя"))
    054            .appendChild(xml.createElement("SVAL")).appendChild(xml.createTextNode("Строковое значение"))
    055          end with
    056
    057          '9. Значение показателя типа "дата".
    058          with .appendChild(xml.createElement("VALUE"))
    059            .appendChild(xml.createElement("CODE")).appendChild(xml.createTextNode("Мнемокод показателя типа дата"))
    060            .appendChild(xml.createElement("DVAL")).appendChild(xml.createTextNode("2020-01-01"))
    061          end with
    062
    063        end with
    064
    065        '10. Таблицы показателей - если редакция содержит таблицы показателей.
    066        with .appendChild(xml.createElement("TABLES"))
    067
    068          '11. Таблица. Повторять столько раз, сколько нужно таблиц.
    069          with .appendChild(xml.createElement("TABLE"))
    070
    071            '12. Наименование таблицы
    072            .appendChild(xml.createElement("NAME")).appendChild(xml.createTextNode("Наименование таблицы"))
    073
    074            '13. Строки таблицы
    075            with .appendChild(xml.createElement("ROWS"))
    076
    077              '14. Строка таблицы
    078              with .appendChild(xml.createElement("ROW"))
    079
    080                '15. Значение строкового показателя
    081                with .appendChild(xml.createElement("VALUE"))
    082                  .appendChild(xml.createElement("CODE")).appendChild(xml.createTextNode("Показатель в составе талицы"))
    083                  .appendChild(xml.createElement("SVAL")).appendChild(xml.createTextNode("Строковое значение"))
    084                end with
    085
    086                with .appendChild(xml.createElement("VALUE"))
    087                  .appendChild(xml.createElement("CODE")).appendChild(xml.createTextNode("Другой показатель в составе талицы"))
    088                  .appendChild(xml.createElement("SVAL")).appendChild(xml.createTextNode("Строковое значение"))
    089                end with
    090
    091              end with
    092
    093              '16. Строка таблицы
    094              with .appendChild(xml.createElement("ROW"))
    095
    096                '17. Значение строкового показателя
    097                with .appendChild(xml.createElement("VALUE"))
    098                  .appendChild(xml.createElement("CODE")).appendChild(xml.createTextNode("Показатель в составе талицы"))
    099                  .appendChild(xml.createElement("SVAL")).appendChild(xml.createTextNode("Строковое значение"))
    100                end with
    101
    102                with .appendChild(xml.createElement("VALUE"))
    103                  .appendChild(xml.createElement("CODE")).appendChild(xml.createTextNode("Другой показатель в составе талицы"))
    104                  .appendChild(xml.createElement("SVAL")).appendChild(xml.createTextNode("Строковое значение"))
    105                end with
    106
    107              end with
    108
    109            end with
    110
    111          end with
    112
    113        end with
    114
    115      end with
    116
    117      '18. Подотчет. Повторять столько раз, сколько нужно подотчетов.
    118      with .appendChild(xml.createElement("SUBREPORT"))
    119
    120        '19. Мнемокод разреза подотчета
    121        .appendChild(xml.createElement("CODE")).appendChild(xml.createTextNode("Мнемокод разреза"))
    122
    123        '20. Список занчений
    124        with .appendChild(xml.createElement("VALUES"))
    125
    126          'Создать столько значений, сколько нужно.
    127          '21. Значение числового показателя
    128          with .appendChild(xml.createElement("VALUE"))
    129            .appendChild(xml.createElement("CODE")).appendChild(xml.createTextNode("Мнемокод числового показателя"))
    130            .appendChild(xml.createElement("NVAL")).appendChild(xml.createTextNode("100.10"))
    131          end with
    132
    133          '22. Значение строкового показателя
    134          with .appendChild(xml.createElement("VALUE"))
    135            .appendChild(xml.createElement("CODE")).appendChild(xml.createTextNode("Мнемокод строкового показателя"))
    136            .appendChild(xml.createElement("SVAL")).appendChild(xml.createTextNode("Строковое значение"))
    137          end with
    138
    139          '23. Значение показателя типа "дата".
    140          with .appendChild(xml.createElement("VALUE"))
    141            .appendChild(xml.createElement("CODE")).appendChild(xml.createTextNode("Мнемокод показателя типа дата"))
    142            .appendChild(xml.createElement("DVAL")).appendChild(xml.createTextNode("2020-01-01"))
    143          end with
    144
    145        end with
    146
    147        'Создать таблицы, если они нужны.
    148
    149      end with
    150
    151    end with
    152  end with
    153end if

4.4.3. Содержимое сессии
В скриптах и преобразованиях, используемых при загрузке отчетов, вы можете обращаться к следующим значениям, сохраненным в сессии:
Имя | Описание
--- | ---
HTTPID | Уникальный идентификатор сессии
showReport | Значение " on " указывает на то, что протокол загрузки будет показан пользователю, значение " off " - на то, что протокол загрузки не будет показан.
canOverWrite | Значение " on " указывает на то, что пользователь разрешил при загрузке обновлять существующие отчеты " off " - обновление существующих отчетов запрещено пользователем.
canSkipValues | Значение " on " указывает на то, что пользователь разрешил пропускать значения при отсутствии показателей " off " - пропускать значения при отсутствии показателей запрещено пользователем.
recalcReports | Значение " on " указывает на то, что отчеты будут пересчитаны после загрузки, " off " - пересчет отчетов после загрузки пользователем не заказан.
distrByCatalog | Значение " on " указывает на то, что пользователем разрешено распределение отчетов по каталогам, " off " - распределение отчетов по каталогам пользователем не заказано.
agent | Значение мнемокода контрагента, заданное пользователем при загрузке. Пустая строка указывает на то, что пользователь не выбрал никакого контрагента.
kind | Тип загружаемых отчетов. " 0 " - первичные, " 1 " - сводные.

4.5. Использование электронной подписи
Поддержка электронной подписи реализована с использованием КриптоПро ЭЦП Browser plug-in . В Chromе (и других браузерах на основе Chromium) начиная с версии 45, и Firefox начиная с версии 53, отключена возможность использования NPAPI плагинов. Для продолжения поддержки электронной подписи в этих браузерах, КриптоПро выпустил обновленную версию своего плагина (2.0). Начиная с этой версии, для указанных браузеров, добавлен новый механизм взаимодействия с криптопровайдерами через расширение браузера CryptoPro Exension for CAdES Browser Plug-in. С нашей стороны реализована полная поддержка новой версии КриптоПро ЭЦП Browser plug-in, и в частности подержка нового механизма взаимодействия с браузерами на основе Chromium (Opera, Яндекс.Браузер и др.), Firefox и Edge у которых отсутствует поддержка NPAPI плагинов. Наряду с этим сохранилась возможность использования существовавших ранее способов взаимодействия браузеров с криптопровайдерами. Особенности и необходимые условия использования электронной подписи в различных браузерах: При установке новой версии CryptoPro Browser plug-in 2.0: плагин NPAPI по прежнему устанавливается во все поддерживаемые браузеры, использующие эту технологию плагин ActiveX по прежнему устанавливается во все поддерживаемые браузеры Internet Exporer (до 11 версии включительно) в браузере Firefox, начиная с версии 53 включительно - расширение автоматически не устанавливается. Необходимо вручную установить это расширение, предварительно скачав его с сайта КриптоПро. На данный момент расширение пока еше недоступно в магазине расширений Firefox. в браузерах на основе Chromium: в Chrome - расширение автоматически устанавливается. То есть нет необходимости вручную устанавливать это расширение через магазин расширений. в Яндекс.Браузер - расширение автоматически устанавливается. Если оно автоматически не установилось, то его можно установить вручную напрямую из магазина Google. в Edge - расширение автоматически устанавливается. Если оно автоматически не установилось, то его можно установить вручную напрямую из магазина Google. в Opera - расширение автоматически не устанавливается. Необходимо вручную установить это расширение из магазина Opera (расширения из магазина Google, напрямую, не поддерживаются браузером). В случае если с установкой из магазина Opera возникнут проблемы, то можно воспользоваться "обходным" путем: сначала установить расширение из магазина Opera, позволяющее устанавливать расширения из магазина Google затем установить изначально требуемое расширение из магазина Google в других браузерах на основе Chromium, предлагается действовать по аналогии. в браузере Edge до 75 версии (не на основе Chromium), начиная с версии 38 (Windows 10 Anniversary Update) - расширение автоматически не устанавливается. На данный момент расширение пока еше недоступно в магазине Microsoft Store. Необходимо вручную установить это расширение, предварительно скачав его с сайта КриптоПро. Краткая инструкция по ручной установке расширения Edge: скачать установочный файл расширения с сайта КриптоПро скачать корневой сертификат CryptoPro , которым подписано это расширение, и установить его в хранилище локального компьютера в раздел “Доверенные корневые центры сертификации” разрешить устанавливать приложения от сторонних разработчиков в ОС Windows 10 - Настройки системы -> Обновление и безопасность -> Для разработчиков -> Режим разработчика установить ранее скаченное расширение, запустив его установочный файл перезапустить браузер каждый раз при использовании функционала подписи убедиться, что расширение включено - Настройки -> Расширения Варианты взаимодействия браузеров с криптопровайдерами : в Chromе начиная с 45 версии, поддержка NPAPI плагинов полностью отключена - взаимодействие возможно только с помощью расширения. в Яндекс.Браузер, поддержка NPAPI плагинов полностью отключена - взаимодействие возможно только с помощью расширения. в Opera поддержка NPAPI плагинов пока не отключена (отключение планируется) - взаимодействие возможно как с помощью NPAPI плагинов, так и с помощью расширения. в Firefox, начиная с 53 версии включительно, поддержка NPAPI плагинов полностью отключена - взаимодействие возможно только с помощью расширения. в Firefox ESR 52, основанный на 52 версии Firefox, поддержка NPAPI плагинов не отключена - взаимодействие возможно как с помощью NPAPI плагинов, так и с помощью расширения. В более поздних версиях Firefox ESR, поддержка NPAPI плагинов полностью отключена. в Edge поддержка NPAPI плагинов не реализована - взаимодействие возможно только с помощью расширения. Приоритеты взаимодействия браузеров на основе Chromium с криптопровайдерами Т.к. метод взаимодействия с помощью NPAPI считается устаревшим, то сначала производится попытка использовать расширение брузера. В случае, когда это не удалось - будет использоваться плагин NPAPI.
Важно! | Вниманию пользователей браузеров на основе Chromium. Для стабильной работы расширения браузера рекомендуется обновить браузер до последней версии (104+)

4.6. Использование различных методов подключения сервера к сети

4.6.1. Использование NAT
Механизм NAT описан в rfc1631 и в rfc3022 . Работа через NAT полностью поддерживается, и не должна вызывать каких-либо затруднений. Рассмотрим пример. Допустим, на сервере, обозначенном как "наш сервер", установлен наш сервис. "Наш сервер" слушает IP-адрес внутренней сети 192.168.4.110, порт 8090. В таком случае он доступен пользователям во внутренней сети через url http://192.168.4.110:8090. NAT-сервер, имеющий внешний IP 212.158.161.21, устанавливает соответствие своего порта 8099 и порта 8090 локального хоста 192.168.4.110. На рисунке показано это правило для одного из "бытовых" роутеров (нас интересует последнее правило в списке): Благодаря этому, сервис доступен "снаружи" через url http://212.158.161.21:8099. При настройке удаленного доступа приложений Win32 к этому серверу, вам необходимо указать в поле " Хост сервера " строку " 212.158.161.21:8099 " (без кавычек), поле "Путь серверного proxy" оставить пустым. Во всех случаях номера стандартных портов можно не указывать, а IP-адреса заменить соответствующими им доменными именами. При использовании механизма "Restricted NAT", "Наш сервер" будет лишен возможности получить реальные IP-адреса удаленных пользователей, все запросы он будет видеть приходящими с одного и того же адреса. Если вы используете Restricted NAT, то вы лишаетесь возможности протоколировать IP-адреса в поле "Способ идентификации сессии" на странице " Параметры сетевых настроек " не сможете использовать способы, опирающиеся на IP-адрес (фактически, вам доступен только способ "Использовать идентификатор"). Это приведет к невозможности работы с сервисом пользователей, не имеющих соединения с постоянным IP-адресом.

4.6.2. Использование серверного proxy
Допустим, мы имеем следующую схему подключения: Допустим, на сервере, обозначенном как "наш сервер", установлен наш сервис. "Наш сервер" слушает IP-адрес внутренней сети 192.168.4.110, порт 8090. В таком случае он доступен пользователям во внутренней сети через url http://192.168.4.110:8090. На сервере, обозначенном как "Proxy-сервер", установлен web-сервер apache, конфигурационный файл которого содержит, помимо прочего, следующие строки:
    01Listen 8099
    02  ...
    03  LoadModule proxy_module modules/mod_proxy.so
    04  ...
    05  ProxyPass /mysite/mysite1/mysite2/ http://192.168.4.110:8090/
    06  ...
    07  <Proxy /mysite/mysite1/mysite2/*>
    08    Order allow,deny
    09    Allow from all
    10    ...
    11  </Proxy>
    12  ....
Proxy-сервер имеет внешний IP 212.158.161.21. То есть, все обращения, поступающие на proxy-сервер на url вида http://212.158.161.21:8099/mysite/mysite1/mysite2/.... будут перенаправлены им на наш сервер, а ответ нашего сервера будет возвращен удаленному клиенту (в этом смысл работы механизма proxy). Благодаря этому, сервис доступен "снаружи" через url http://212.158.161.21:8099/mysite/mysite1/mysite2/parusjs/index.html (вам придется указывать полный путь именно в таком виде, иначе мы не сможем разрешить относительные ссылки на страницах). При настройке удаленного доступа приложений Win32 к этому серверу, вам необходимо указать в поле " Хост сервера " строку " 212.158.161.21:8099 " (без кавычек), в поле " Путь серверного proxy " указать строку " /mysite/mysite1/mysite2 " (без кавычек). Во всех случаях номера стандартных портов можно не указывать, а IP-адреса заменить соответствующими им доменными именами. При использовании серверного proxy "Наш сервер" будет лишен возможности получить реальные IP-адреса удаленных пользователей, все запросы он будет видеть приходящими с одного и того же адреса. Если вы используете серверный proxy, то вы лишаетесь возможности протоколировать IP-адреса (протоколирование должно быть возложено на proxy-сервер) в поле "Способ идентификации сессии" на странице " Параметры сетевых настроек " не сможете использовать способы, опирающиеся на IP-адрес (фактически, вам доступен только способ "Использовать идентификатор"). Это приведет к невозможности работы с сервисом пользователей, не имеющих соединения с постоянным IP-адресом.

4.6.2.1. Поддержка соединения для запросов выполняющихся длительное время (более 1-2 мин)
1. При работе тонкого клиента напрямую с сервером приложений, подобной проблемы не возникает, т.к. тонкий клиент и сервер приложений самостоятельно поддерживают длительные запросы к СУБД, без стороннего воздействия. При работе тонкого клиента через серверный прокси, запросы, выполняющиеся на сервере СУБД, продолжительное время (более 1-2 мин), могут быть расценены клиентом как запросы, на которые не поступил ответ. В результате, взаимодействие с сервером прекращается, и клиент получает ошибку Cannot initiate intercommunication with remote server. Please, check provided address information. Для решения данной проблемы, необходимо помочь серверу приложений определить, что он работает через серверный прокси (reverse proxy). Для этого необходимо настроить 2 момента: Запросы клиентов, перенаправляемые серверным прокси, на сервер приложений, должны содержать какой-то из следующих заголовков: X-Original-URL X-Forwarded-For X-Real-IP Значение этих заголовков не имеет значения, важно просто наличие одного из них.
   Пример | В nginx, в качестве одного из вариантов, можно указать в его конфиге - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
2. Таймауты серверного прокси для ожидания ответа от сервера приложений, должны быть достаточно большими, чтобы длительный запрос успел выполниться в СУБД.
   Пример | В nginx, в его конфиге нужно указать - proxy_read_timeout 300s; #вместо 300 сек укажите свое значение, по умолчанию nginx использует 1 мин.

4.7. Взаимодействие с внешними веб-сервисами
Сервис предоставляет возможность реализации взаимодействия с внешними веб-сервисами. Функционал основан на механизме пользовательских приложений. Пример подобной реализации представлен в поставляемом пользовательском приложении "WebServicesIntegrationCROC" в виде VBScript. Перед началом использования данного примера, необходимо задать/исправить значения следующих параметров (Файл -> Сервис -> Параметры, раздел "Первичные/сводные отчеты"): URL взаимодействия с внешним веб-сервисом: КРОК Каталог для сохранения присоединенных документов при взаимодействии с внешним веб-сервисом: КРОК. По умолчанию установлено "Присоединенные документы". Тип присоединенных документов при взаимодействии с внешним веб-сервисом: КРОК. При отсутствии значения (по умолчанию) тип присоединяемого документа будет определяться по расширению файла (на момент взаимодействия, соответствующие типы уже должны существовать в системе). При заданном значении параметра - все файлы, присоединяемые в процессе взаимодействия, будут добавляться с использованием указанного типа. В данном примере, реализована NTML аутентификация для взаимодействия с внешним веб-сервисом (т.е. по пользователям входящим в домен). В штатной поставке данного пользовательского приложения, для аутентификации передаются реквизиты пользователя, из под которого работает сервер приложений. Но т.к. штатным режимом работы сервера приложений является работа в виде сервиса Windows (а по умолчанию, все сервисы работают под локальной учетной записью "NT AUTHORITY\SYSTEM", т.е. не являются членами домена), то для успешной аутентификации необходимо выбрать 1 из следующих вариантов: Изменить учетную запись, под которой работает сервис, на учетную запись пользователя домена (Сервисы -> "DataMill Application Server" -> Свойства -> Вкладка "Вход" -> Группа "Использовать для входа"). Этот вариант является более предпочтительным. Задать логин/пароль требуемого доменного пользователя (от имени которого будет проходить аутентификация) в константах VBScript пользовательского приложения: CLogin (формат - Домен\Пользователь) и CPassword.

4.7.1. Модуль для взаимодействия по протоколу http(s)
Модуль для взаимодействия по протоколам http(s) представлен в поставляемом пользовательском приложении "ParusAppServerProvider", в виде COM-сервера. В вышеуказанном модуле реализован COM-объект с ProgID ParusAppServerProvider.Provider, реализующий следующий интерфейс:
    01IProvider = interface(IDispatch)
    02    ['{5CC36760-E292-44AA-B542-A32865828DAC}']
    03    function CreateTempFileName(const Extension: WideString): WideString; safecall;
    04    function CreateBinaryData: IDispatch; safecall;
    05    function DownloadData(const Host: WideString; const Url: WideString;
    06      const UserName: WideString; const Password: WideString; NegotiateAuth: WordBool;
    07      PostData: OleVariant; const PostContentType: WideString; PostDataIsBinary: WordBool;
    08      CanCache: WordBool; NewSession: WordBool; TimeOut: Integer): IDispatch; safecall;
    09    function JSONEscape(const Value: WideString): WideString; safecall;
    10    function JSONUnEscape(const Value: WideString): WideString; safecall;
    11  end;
Функция CreateTempFileName возвращает сгенерированное системой имя временного файла с расширением, переданным в параметре Extension. Функция CreateBinaryData создает пустой объект, реализующий интерфейс IBinaryData (описан ниже). Функция DownloadData осуществляет обращение к указанному ресурсу по протоколу http (https), и возвращает ответ сервера в виде объекта, реализующего интерфейс IBinaryData. Параметр Host определяет http-сервер, параметр Url - Url, к которому будет происходить обращение. Параметры UserName и Password определяют имя пользователя и пароль, если http-сервер требует авторизовать пользователя. Параметр NegotiateAuth устанавливает режим аутентификации. (Basic или Negotiate (NTLM)). Параметры PostData, PostContentType и PostDataIsBinary определяют содержимое тела POST-запроса (если не определено, функция отправит GET-запрос). Источник может быть Объектом, реализующим интерфейс IStream Объектом, реализующим интерфейс ISequentialStream Строкой Параметр CanCache позволяет использовать локальный кеш http-ответов. Параметр NewSession требует принудительного создания новой сессии при вызове функции. Параметр TimeOut определяет максимальное время ожидания ответа в секундах. Функция JSONEscape возвращает строку в формате JSON, полученую путем конвертации переданной строки в формат JSON. Функция JSONUnEscape возвращает строку, полученную путем расконвертации переданной JSON строки. Интерфейс IBinaryData представляет набор двоичных данных:
    01IBinaryData = interface(IDispatch)
    02    ['{8A9F7CB3-230A-4048-B938-852CBF6ADB2D}']
    03    procedure Append(const Src: OleVariant);
    04    procedure Load(const Src: OleVariant);
    05    procedure Save(const Dst: OleVariant);
    06    function Size: Cardinal;
    07    procedure AppendData(Data: Pointer; DataSize: Cardinal);
    08    procedure SetData(Data: Pointer; DataSize: Cardinal);
    09    procedure GetData(Data: Pointer);
    10    function ToString(Encoding: WideString): WideString;
    11    procedure FromString(Data: OleVariant);
    12    procedure AppendString(Data: OleVariant);
    13    function ToBase64: WideString;
    14    procedure FromBase64(Data: OleVariant);
    15  end;
Процедура Load загружает двоичные данные из переданного источника. Источник может быть Объектом, реализующим интерфейс IStream Объектом, реализующим интерфейс ISequentialStream Строкой, содержащей имя файла Процедура Append добавляет двоичные данные из переданного источника. Источник может быть Объектом, реализующим интерфейс IStream Объектом, реализующим интерфейс ISequentialStream Строкой, содержащей имя файла Процедура Save сохраняет двоичные данные в переданный приемник. Приемник может быть Объектом, реализующим интерфейс IStream Объектом, реализующим интерфейс ISequentialStream Строкой, содержащей имя файла Функция ToString переводит данные в строку. Байты, содержашиеся в объекте, будут рассматриваться как содержащие строку в кодировке, заданной параметром Encoding. По умолчанию используется кодировка UTF-8 Процедура FromString загружает данные из строки, переданной в параметре Data, перекодировав ее в кодировку UTF-8 Процедура AppendString добавляет данные из строки, переданной в параметре Data, перекодировав ее в кодировку UTF-8 Функция ToBase64 возвращает строку, полученную путем кодирования в формат Base64, данных содержащихся в объекте Процедура FromBase64 загружает данные из строки, переданной в параметре Data, раскодировав ее из формата Base64

4.8. Сохранение сформированных отчетов в базе данных
Сервис предоставляет возможность сохранения в базу данных любых выгружаемых отчетов/подотчетов, в том формате в который они могут быть сконвертированы (xls, xlsx, pdf или html). Данная возможность реализуется, путем указания той или иной пользовательской процедуры, в параметре "Пользовательская процедура сохранения выгруженных отчетов в БД". Установить настройку можно в интерфейсе Парус 8 (Файл -> Сервис -> Параметры -> Каталог "Первичные/сводные отчеты"). Если в указанном параметре, задано значение, то в веб интерфейсе, пользователю будет доступна опция "Сохранить полученный отчет в БД". При выборе этой опции, после формирование отчета, он не будет передан на скачивание пользователю, а будет вызвана указанная процедура, с передачей в нее сформированного отчета(ов), и другой сопутствующей информацией. В пользовательские процедуры, для сохранения отчетов, будут переданы следующие значения (в параметры с соответствующими именами): SUNITCODE - Раздел из которого было вызвано формирование отчета/подотчета NCOMPANY - RN текущей организация пользователя NREPORT - RN вызванного отчета NSUBREPORT - RN вызванного или сформированного подотчета NTEMPLATE - Используемый трафарет SFILENAME - Имя сформированного файла (аналогичное тому, что формируется при скачивании сформированных отчетов) SFILEEXTENSION - Расширение сформированного файла отчета (xls, xlsx, pdf, html) BFILEDATA - Содержимое сформированного файла отчета Пример подобной реализации представлен в поставляемой пользователькой процедуре "SaveExecutedReport", в виде неименованного блока, который сохраняет переданные ей отчеты в Присоединенных документах отчета, который был вызван на формирование. Перед началом использования данного примера, необходимо задать/исправить значения следующих параметров (Файл -> Сервис -> Параметры, раздел "Первичные/сводные отчеты"): Каталог для сохранения выгруженных отчетов в БД. По умолчанию, установлен корневой каталог - "Присоединенные документы". Тип присоединенных документов при сохранении выгруженных отчетов в БД. При отсутствии значения (по умолчанию) тип присоединяемого документа будет определяться по расширению файла (на момент взаимодействия, соответствующие типы уже должны существовать в системе). При заданном значении параметра - все файлы, переданные в эту пользовательскую процедуру, будут добавляться с использованием указанного типа.

4.9. Интеграция с Парус-Онлайн Web 2.0
Интеграция и совместная работа сервиса Сведение отчетности Онлайн и Парус-Онлайн Web 2.0, предлагает пользователю возможность одновременного взаимодействия с обоими сервисами и над одними и теми же данными (предполагается, что сервисы работают с одной и той же БД и схемой), в одном окне браузера, через веб-приложение - Парус-Онлайн Web 2.0. Описание и архитектура интеграции. Оба сервиса могут, и по идее, должны, работать на разных хостах и иметь разные, но общедоступные доступные доменые имена, т.е. оба адреса должны быть доступны для пользователя. Однако, при этом, для обеспечения совместной работы над одними и теми же данными, оба сервиса должны использовать одну и ту же БД и схему в ней. Аутентификация пользователей осуществляется единожды, при их входе в Парус-Онлайн Web 2.0, в приложение "Сведение отчетности. Центр учета". А при взаимодействии пользователя с сервисом Сведение отчетности Онлайн, лицензионные сеансы пользователей будут переиспользованы, без необходимости повторной аутентификации.
Важно! | Для корректного переиспользования лицензионных сеансов веб-пользователей, требуется, чтобы оба сервиса (Парус-Онлайн Web 2.0 и Сведение отчетности Онлайн) использовали один и тот же логин анонимного пользователя для работы с БД.
Воспользоваться функционалом сервиса Сведения отчетности Онлайн в веб приложении Парус-Онлайн Web 2.0, пользователь может через пункты меню: Учет -> Сведения отчетности Онлайн - Первичные отчеты Учет -> Сведения отчетности Онлайн - Сводные отчеты Учет -> Сведения отчетности Онлайн - Протоколы сравнения отчетов Настройка интеграции. В Сведение отчетности Онлайн. Для включения режима интеграции установите соответствующую галку в конфигураторе и укажите публично доступное доменное имя (или URL) текущего сервиса "Сведения отчетности Онлайн", которое назначено (или будет назначено) для сервиса Сведение отчетности Онлайн.
Важно! | Т.к. оба сервиса, Сведения отчетности Онлайн и Парус-Онлайн Web 2.0, работают на разных доменах, то для браузера они являются независимыми, и их взаимодействие осуществляется по правилам защиты от атаки CSRF (межсайтовая подделка запроса). В рамках этой защиты, браузеры требуют использование HTTPS протокола, как минимум для сайта, с которым осуществляется взаимодействие из хостового сайта, т.е. в нашем случае это текущий сервис Сведения отчетности Онлайн. В связи с этим, включение режима интеграции с Парус-Онлайн Web, предполагает конфигурирование и работу текущего сервиса с HTTPS протоколом.
Кстати | Впоследствии, указанное значение домена (URL) также можно задать или изменить в Парус в разделе Параметры - узел "Первичные/сводные отчеты", параметр BalanceOnlineIntegrateURL: "Интеграция "Сведение отчетности Онлайн" и "Парус Онлайн": URL сервиса "Сведение отчетности Онлайн"".
2. - В Парус-Онлайн Web 2.0. В состав инсталлятора Сведения отчетности Онлайн входит архив ParusWebBalanceExtension.zip, являющийся расширением для Парус-Онлайн Web 2.0. Для подключения расширения необходимо: Распаковать содержимое архива расширения в каталог для расширений Парус-Онлайн Web 2.0 (по умолчанию, это каталог - C:\Program Files (x86)\Parus8\WebClient\WebClient\Modules). В итоге, должны иметься файлы, на примере каталога по умолчанию (C:\Program Files (x86)\Parus8\WebClient\WebClient\): \Modules\BalanceMainMenuHandler\BalanceMainMenuHandler.dll \Modules\BalanceMainMenuHandler\scripts\tab_listener.js Включить механизм расширений и само новое расширение. Для этого в файле конфигурации расширений "C:\Program Files (x86)\Parus8\WebClient\WebClient\Config\extensions.config" нужно указать: аттрибут
         enabled="true"
   - убедиться, что аттрибут rootPath указывает на каталог расширений, в который было распаковано описываемое расширение для интеграции Сведения отчетности Онлайн
          rootPath="C:\Program Files (x86)\Parus8\WebClient\WebClient\Modules\"
   - добавить узел extensions узел описания текущего расширения:
          <extension assembly="BalanceMainMenuHandler" path="BalanceMainMenuHandler\BalanceMainMenuHandler.dll"/>
Убедиться, что пользователь Windows, из под которого работает сервис IIS, имеет доступ на чтение к каталогу \Modules\BalanceMainMenuHandler и \Modules\BalanceMainMenuHandler\scripts, в частности Запустить или перезапустить IIS
Важно! | Если каталог расширений Modules, перенесен из корневого каталога веб-приложения WebClient, в иное место (изменен аттрибут rootPath), то распакуйте и настройте расширение в соответствии с этим местом. Однако, необходимо сохранить каталог \Modules\BalanceMainMenuHandler\scripts\ со всем его содержимым на "старом" месте \Modules\BalanceMainMenuHandler\scripts\, в виду того, что этот путь зафиксирован в расширении и нет иного механизма для указания относительности.
Более подробно процесс подключения и настройки расширений в Парус-Онлайн Web 2.0 описан в его документации.

4.10. Использование SSL сертификатов c ГОСТ алгоритмами
На текущий момент существует 2 варианта реализации ГОСТ алгоритмов, которые может использовать OpenSSL, и как следствие, использоваться текущим сервисом:

4.10.1. gost.dll - open source библиотека
Вариант 1: gost.dll - open source библиотека, которая раньше поставлялась вместе с OpenSSL, но начиная с версии OpenSSL 1.1, она была исключена из его состава, и оформилась в виде отдельного продукта https://github.com/gost-engine/engine . Поддержка алгоритмов ГОСТ 2001 имеется во всех версиях библиотеки gost.dll. Однако поддержка алгоритмов ГОСТ 2012 реализована только в версиях, совместимых с OpenSSL >= 1.1.0. Библиотека gost.dll должна использоваться только с соответствующей ей версией OpenSSL: для OpenSSL < 1.1.0: берется из поставки самого OpenSSL, НЕподдерживает ГОСТ 2012 для OpenSSL >= 1.1.0, но < 3.0: собирается самостоятельно из исходников (https://github.com/gost-engine/engine, необходимо выбрать релиз соответствующий используемой версии OpenSSL), поддерживает ГОСТ 2012 для OpenSSL >= 3.0: также собирается самостоятельно из исходников (https://github.com/gost-engine/engine, необходимо выбрать релиз соответствующий используемой версии OpenSSL), поддерживает ГОСТ 2012 В релизах сервиса до сентября 2020 включительно, использовались библиотеки OpenSSL 1.0.2. Поэтому возможно использовать библиотеку gost.dll из самого инталлятора OpenSSL. В релизах сервиса до января 2024 включительно, поставлялись библиотеки OpenSSL версии 1.1.1. Соответствующая этой версии библиотека gost.dll может быть собрана самостоятельно из исходников. Либо воспользоваться собранной нами версией для Windows: Win32: https://techmill.ru/paruspub/current/gost/gost.dll Win64: https://techmill.ru/paruspub/current/gost/win64/gost.dll В релизах текущей версии сервиса, поставляются библиотеки OpenSSL версии 3.3.0. Соответствующая этой версии библиотека для ГОСТ алгоритмов может быть собрана самостоятельно из исходников. Либо можно воспользоваться собранной нами версией для Windows: Win32: https://techmill.ru/paruspub/current/gost/3.0/gost.dll https://techmill.ru/paruspub/current/gost/3.0/gostprov.dll Win64: https://techmill.ru/paruspub/current/gost/3.0/WIN64/gost.dll https://techmill.ru/paruspub/current/gost/3.0/WIN64/gostprov.dll Во всех релизах текущего сервиса для Linux, библиотеки OpenSSL не поставляются в составе продукта, их необходимо самостоятельно собрать локально по месту использования, либо установить с помощью менеджера пакетов Linux. При работе конфигуратор подскажет как это сделать. Также, для Linux потребуется самостоятельная сборка библиотеки для ГОСТ, для этого можно воспользоваться исходной инструкцией - https://github.com/gost-engine/engine/blob/master/INSTALL.md.
Важно! | Необходимо использовать библиотеку соответствующую разрядности используемого приложения, которое будет использовать данную библиотеку. Например, если настраивается серверная сторона Сервиса, то выбирается в соответствии с его разрядностью, если настраивается клиентская сторона (приложение для удаленного доступа), то в соответствии с его разрядностью (на текущий момент только Win32).
2. Развертывание : Расположить библиотеку gost.dll, а в случае с OpenSSL 3.0, еще и gostprov.dll, нужной разрядности в каталог установки текущего сервиса, рядом с исполняемыми файлами, которые будут ее использовать. В случае использования Win64 разрядности сервиса - это подкаталог WIN64. Создать файл конфигурации OpenSSL (в случае с OpenSSL 3.0, последнюю строчку с CRYPT_PARAMS=... рекомендуется опустить и не указывать), например openssl.conf:
       01openssl_conf = openssl_def
       02
       03[openssl_def]
       04engines = engine_section
       05
       06[engine_section]
       07gost = gost_section
       08
       09[gost_section]
       10engine_id = gost
       11dynamic_path = ./gost.dll
       12default_algorithms = ALL
       13CRYPT_PARAMS = id-Gost28147-89-CryptoPro-A-ParamSet
   В указанном примере файла конфигурации предполагается, что библиотеки поддержки алгоритмов ГОСТ находятся рядом с исполняемыми файлами. Но файл конфигурации может быть расположен в ином месте. В таком случае необходимо указать полный, а не относительный путь к библиотеке gost.dll. Кстати, в качестве разделителя каталогов пути необходимо использовать прямой слэш "/" как в Unix, а не обратный, как в Windows, либо экранировать обратные слэши еще одним обратным слэшем - "\\". В случае использования существующего файла конфигурации, например при использовании полноценно установленного OpenSSL (а не используемого из состава поставки) в составе которого имеется свой файл конфигурации, вышеуказанный блок необходимо вставить после строки "oid_section = new_oids". Указанный файл конфигурации является примером, и может быть изменен пользователем в зависимости от требуемых настроек.
   Кстати | Подобным образом возможно подключить любые другие расширения (engine) для OpenSSL. Например, в случае если приватный ключ сертификата хранится на аппаратном носителе (USB токен, смарт карт) который не допускает их экспортирования в файл, но при этом предоставляет возможность их использования через свой интерфейс. Обычно в таких случаях криптопровайдер распространяет расширения для интеграции с OpenSSL. В таких случаях, в процессе конфигурирования вместо указания пути к файлу (Настройки протокола HTTPS, поле Закрытый ключ) необходимо указать через какое расширение можно обращаться к закрытому ключу:
       engine:id расширения:путь к закрытому ключу согласно документации криптопровайдера
   Например:
       engine:gostengy:techmill.ru
3. Установить системную переменную окружения ОС с именем OPENSSL_CONF и значением указывающим полный путь к файлу конфигурации OpenSSL.
   Кстати | В случае настройки клиента удаленного доступа для приложения Win32, это удобно настроить (как подключение файл конфигурации OpenSSL, так и установка переменной окружения OPENSSL_CONF) в процессе конфигурирования на странице Дополнительные модули и переменные окружения в составе клиента удаленного доступа.
При конфигурировании, на странице Параметры сетевых настроек - Настройки протокола HTTPS, укажите значение в параметре Набор шифров для TLS 1.2 и ранее: GOST2012-GOST8912-GOST8912 GOST2001-GOST89-GOST89 GOST94-GOST89-GOST89, для поддержки всех версий ГОСТ - 2012, 2001 и 94, либо значение GOST2012-GOST8912-GOST8912, для поддержки только версии ГОСТ 2012. В случае необходимости поддержки ГОСТ 2015, укажите значение в параметре Набор шифров для TLS 1.3+: TLS_GOSTR341112_256_WITH_KUZNYECHIK_MGM_L TLS_GOSTR341112_256_WITH_MAGMA_MGM_L TLS_GOSTR341112_256_WITH_KUZNYECHIK_MGM_S TLS_GOSTR341112_256_WITH_MAGMA_MGM_S. В случае проблем с использованием настроенного и запущенного сервиса, для проверки его работоспособности рекомендуется использовать утилиту openssl в режиме клиента TLS, с помощью команды openssl s_client -connect 127.0.0.1:443. В случае успешного соединения с сервером в выводе консоли будет указана вся информация об установленном соединении, такая как сертификат, версия протокола TLS, используемый шифр и многое другое. Для проверки корректности созданного файла конфигурации OpenSSL, и самой загрузки ГОСТ библиотеки, можно воспользоваться командой openssl engine. В случае правильной настройки, среди строк вывода будет строка "(gost) Reference implementation of GOST engine". Перед использованием OpenSSL утилиты необходимо аналогично обеспечить настройку файла конфигурации OpenSSL, как указано в пункте 2 и установить системную переменную окружения ОС с именем OPENSSL_CONF, как указано в пункте 3.

4.10.2. gost_capi.dll или gostengy.dll - библиотека от КриптоПро (развитие прекращено)
Вариант 2: gost_capi.dll (для OpenSSL <1.1.0) или gostengy.dll (для OpenSSL >= 1.1.0) - библиотека от КриптоПро для работы установленного КриптоПро CSP через интерфейсы OpenSSL (работает только при установленном КриптоПро CSP, т.к. вся работа с ГОСТ будет осуществляться КриптоПро CSP, но опосредованно через интерфейсы OpenSSL).
Важно! | Развитие данного продукта прекращено. Также нет сведений о поддержке актуальной версии OpenSSL 3.0.
Аналогично, как и с библиотекой gost.dll, версия библиотеки зависит от используемой версии OpenSSL: для OpenSSL < 1.1.0: необходимо использовать библиотеку gost_capi, НЕ поддерживает ГОСТ 2012 для OpenSSL >= 1.1.0: необходимо использовать библиотеку gostengy, поддерживает ГОСТ 2012 Скачать необходимые версии библиотеки можно на сайте КриптоПро . Более подробное описание использования можно найти у них же на форуме.
Важно! | Необходимо использовать библиотеку соответствующую разрядности используемого приложения, которое будет использовать данную библиотеку. Например, если настраивается серверная сторона Сервиса, то выбирается в соответствии с его разрядностью, если настраивается клиентская сторона (приложение для удаленного доступа), то в соответствии с его разрядностью (на текущий момент только Win32).
2. Развертывание : Расположить необходимую библиотеку поддержки алгоритмов ГОСТ нужной разрядности (gost_capi.dll для OpenSSL <1.1.0 или gostengy.dll в случаае использования OpenSSL >= 1.1.0) рядом с исполняемыми файлами, которые будут ее использовать. В случае использования Win64 разрядности сервиса - это подкаталог WIN64. Создать файл конфигурации OpenSSL:
       01openssl_conf = openssl_def
       02
       03[openssl_def]
       04engines = engine_section
       05
       06[engine_section]
       07gost = gostengy_section
       08
       09[gostengy_section]
       10engine_id = gostengy
       11dynamic_path = ./gostengy.dll
       12default_algorithms = CIPHERS, DIGESTS, PKEY, PKEY_CRYPTO, PKEY_ASN1
   В указанном примере файла конфигурации предполагается, что библиотека поддержки алгоритмов ГОСТ находится рядом с исполняемыми файлами. Но файл конфигурации может быть расположен в ином месте. В таком случае необходимо указать полный, а не относительный путь к библиотеке. Кстати, в качестве разделителя каталогов пути необходимо использовать прямой слэш "/" как в Unix, а не обратный, как в Windows, либо экранировать обратные слэши еще одним обратным слэшем - "\\". В случае использования существующего файла конфигурации, например поставляемого с самим OpenSSL, необходимо 1-ю строчку (openssl_conf = openssl_def) вставить в начало этого файла, а остальные строки в самый конец файла. Указанный файл конфигурации является примером, и может быть изменен пользователем в зависимости от требуемых настроек.
   Кстати | Подобным образом возможно подключить любые другие расширения (engine) для OpenSSL. Например, в случае если приватный ключ сертификата хранится на аппаратном носителе (USB токен, смарт карт) который не допускает их экспортирования в файл, но при этом предосталяет возможность их использования через свой интерфейс. Обычно в таких случаях криптопровайдер распространяет расширения для интеграции с OpenSSL. В таких случаях, в процессе конфигурирования вместо указания пути к файлу (Настройки протокола HTTPS, поле Закрытый ключ) необходимо указать через какое расширение можно обращаться к закрытому ключу:
       engine:id расширения:путь к закрытому ключу согласно документации криптопровайдера
   Например:
       engine:gostengy:techmill.ru
3. Установить системную переменную окружения ОС с именем OPENSSL_CONF и значением указывающим полный путь к файлу конфигурации OpenSSL.
   Кстати | В случае настройки клиента удаленного доступа для приложения Win32, это удобно настроить (как подключение файл конфигурации OpenSSL, так и установка переменной окружения OPENSSL_CONF) в процессе конфигурирования на странице Дополнительные модули и переменые окружения в составе клиента удаленного доступа.
В связи с тем, что КриптоПро не работает с файлами закрытых ключей находящихся в файлах, необходимо использовать приватный ключ находящийся в одном из следующих мест где криптопровайдер КриптоПро сможет его найти и использовать: системное хранилище сертификатов Windows (certmgr.msc) - необходимо предварительно импортировать сертификат содержащий приватный ключ одним из штатных способов хранилища сертификатов самого КриптоПро - необходимо предварительно импортировать сертификат содержащий приватный ключ с помощью инструментов КриптоПро, наприме утилиты certmgr из штатной поставки КриптоПро аппаратный носитель (USB токен, смарт карт) содержащий приватный ключ В любом из вышеперечисленном варианте, путь к закрытому ключу нужно указывать не как к файлу, а с помощью расширения для OpenSSL от КриптоПро (gost_capi или gostengy), например - engine:gostengy:techmill.ru, т.е. по шаблону engine:gost_capi или gostengy:FQDN указанное в сертификате (доменное имя). При непосредственном использовании этого ключа сам криптопровайдер определит его местонахождение, и при необходимости будет иницировать интерактивный процесс запроса разрешения на использование указанного ключа и его пароля. Но в любом случае, приватный ключ должен быть доступен КриптоПро и находиться в одном из вышеуказанных хранилищах, а не в файле. При конфигурировании, на странице Параметры сетевых настроек - Настройки протокола HTTPS, укажите значение в параметре Закрытый ключ в формате engine:gostengy:FQDN. При конфигурировании, на странице Параметры сетевых настроек - Настройки протокола HTTPS, укажите значение в параметре Набор шифров для TLS 1.2 и ранее: GOST2012-GOST8912-GOST8912 GOST2001-GOST89-GOST89 GOST94-GOST89-GOST89, для поддержки всех версий ГОСТ - 2012, 2001 и 94, либо значение GOST2012-GOST8912-GOST8912, для поддержки только версии ГОСТ 2012. В случае необходимости поддержки ГОСТ 2015, укажите значение в параметре Набор шифров для TLS 1.3+: TLS_GOSTR341112_256_WITH_KUZNYECHIK_MGM_L TLS_GOSTR341112_256_WITH_MAGMA_MGM_L TLS_GOSTR341112_256_WITH_KUZNYECHIK_MGM_S TLS_GOSTR341112_256_WITH_MAGMA_MGM_S. В случае проблем с использованием настроенного и запущенного сервиса, для проверки его работоспособности рекомендуется использовать утилиту openssl в режиме клиента TLS, с помощью команды openssl s_client -connect 127.0.0.1:443. В случае успешного соединения с сервером в выводе консоли будет указана вся информация об установленном соединении, такая как сертификат, версия протокола TLS, используемый шифр и многое другое. Перед использованием OpenSSL утилиты необходимо аналогично обеспечить настройку файла конфигурации OpenSSL, как указано в пункте 2 и установить системную переменную окружения ОС с именем OPENSSL_CONF, как указано в пункте 3.

4.10.3. Выбор браузеров для взаимодействия с веб-серверами использующими SSL сертификаты с ГОСТ алгоритмами
- Для взаимодействия браузера с веб-серверами, использующими SSL сертификаты с ГОСТ алгоритмами, необходимо, чтобы эти браузеры "понимали" эти алгоритмы. "Понимание" криптоалгоритмов, обеспечивается путем взаимодействием браузера с определенным криптопровайдером, через ту или иную инфраструктуру криптопровайдеров. На ОС Windows инфраструктура криптопровайдеров обеспечивается Microsoft CryptoApi. Различные браузеры могут использовать какую-то определенную инфраструктуру криптопровайдеров. Например Internet Explorer может использовать только Microsoft CryptoApi, а Chrome и Firefox - только NSS. Таким образом, для работы с веб серверами, использующими SSL ГОСТ-сертификатами требуется установленный на клиенте криптопровайдер с поддержкой ГОСТ, и браузер, который умеет опосредовано через инфраструктуру, использовать этот криптопровайдер. Рассмотрим на примере продуктов CryptoPro (это 1 из примеров, по аналогии могут быть использованы любые другие криптопровайдеры, добавляющиеся в Microsoft CryptoApi, и реализующие поддержку ГОСТ алгоритмов). Установка CryptoPro CSP добавляет в Microsoft CryptoApi криптопровайдер, реализующий поддержку ГОСТ алгоритмов: Internet Explorer - полная поддержка. Поддерживаются как ГОСТ 2012, так и предыдущие алгоритмы. Firefox, непосредственно официальные сборки - не поддерживаются, но можно использовать третьесторонние сборки, например КриптоПро Fox.
  Важно! | Установка браузера КриптоПро Fox, должна производится после установки криптопровайдера. КриптоПро Fox не подерживает сертификаты с алгоритмами ГОСТ 2012.
Если после установки КриптоПро Fox - соединение с сервером не устанавливается с кодом ошибки "SSL_ERROR_INAPPROPRIATE_FALLBACK_ALERT", то необходимо проверить, что модуль для связи браузера с КриптоПро CSP, загружен браузером: Открыть Меню -> Настройки -> Дополнительные -> Сертификаты -> Устройства защиты В открывшемся диалоге, найти модуль CryptoPro PKCS11, у которого должен быть дочерний модуль CryptoPro Token. Если дочернего модуля нет, то необходимо переустановить данный браузер. Если после установки КриптоПро Fox - соединение с сервером считается ненадежным, то необходимо сделать изменения в его настройках: Открыть вкладку с адресом about:config Найти настройку с именем security.tls.version.max, и изменить значение с 3 на 2 Chrome - не поддерживается из-за использования им криптопровайдеров NSS. Однако можно использовать стороннюю сборку Chromium от КриптоПро - Chromium Gost , в которую включена возможность поддержки ГОСТ алгоритмов, в случае работы совместно с КриптоПро CSP. Поддерживаются как ГОСТ 2012, так и предыдущие алгоритмы. Chromium Gost является рекомендуемым браузером в случае использования ГОСТ сертификатов .

4.11. Процедура формирования заголовков окон
Для формирования заголовков окон и имен файлов может использоваться пользовательская процедура, мнемокод которой задается в настройке "DescribeBalanceReport". Пользовательская процедура, указанная в этой настройке, должна иметь следующие параметры:
Позиция | Наименование параметра | Тип данных | Тип параметра | Описание параметра
--- | --- | --- | --- | ---
1 | NCOMPANY | Число (number) | Входной (in) | Организация (ссылка на COMPANIES.RN)
2 | NREPORT | Число (number) | Входной (in) | Отчет (ссылка на BLREPORTS.RN)
3 | NSUBREPORT | Число (number) | Входной (in) | Подотчет (ссылка на BLSUBREPORTS.RN)
4 | NTEMPLATE | Число (number) | Входной (in) | Трафарет (ссылка на BLRPFRMTEMPLATES.RN)
5 | NINDEX | Число (number) | Входной (in) | Показатель (ссылка на BALANCEINDEXES.RN)
6 | NVALUE | Число (number) | Входной (in) | Значение показателя (ссылка на BLTBLVALUES.RN для показателей в составе таблицы, на BLINDEXVALUES.RN для одиночных показателей)
7 | DDATE | Дата (date) | Входной (in) | Дата и время сохранения
8 | SAUTHID | Строка (varchar2) | Входной (in) | Пользователь (ссылка на USERLIST.AUTHID)
9 | NPURPOSE | Число (number) | Входной (in) | Назначение (перечисление 0..7)
10 | SRESULT | Строка (varchar2) | Выходной (out) | Результат выполнения
Параметр NPURPOSE определяет цель вызова процедуры:
0 | Сформировать заголовок окна редактирования значений. Допустимо использовать параметры NCOMPANY, NREPORT, NSUBREPORT, NTEMPLATE.
1 | Сформировать заголовок окна протокола проверки. Допустимо использовать параметры NCOMPANY, NREPORT, NSUBREPORT.
2 | Сформировать заголовок окна состава показателя. Допустимо использовать параметры NCOMPANY, NREPORT, NSUBREPORT, NINDEX, NVALUE.
3 | Сформировать имя файла значений. Допустимо использовать параметры NCOMPANY, NREPORT, NSUBREPORT, NTEMPLATE.
4 | Сформировать заголовок окна истории значений. Допустимо использовать параметры NCOMPANY, NREPORT, NSUBREPORT, DDATE, SAUTHID.
5 | Сформировать имя файла истории значений. Допустимо использовать параметры NCOMPANY, NREPORT, NSUBREPORT, DDATE, SAUTHID.
6 | Сформировать заголовок окна редактора трафаретов. Допустимо использовать параметры NCOMPANY, NTEMPLATE.
7 | Сформировать имя файла рабочей книги трафарета. Допустимо использовать параметры NCOMPANY, NTEMPLATE.
Допустимо при некоторых условиях не возвращать из пользовательской процедуры никакого значения. Если пользовательская процедура вернет в параметре SRESULT значение null, будет использована строка-описатель по умолчанию.
Кстати | Для формирования заголовка окна состава показателя процедура по умолчанию использует значения ключевых для идентификации строки таблицы показателей. Ключевые показатели - это те, которые включены хотя бы в одно активное ограничение уникальности, связанное с соответствующей таблицей показателей (вне зависимости от трафарета).
Важно! | При установке сервиса создается (и поддерживается, если она уже создана) пользовательская процедура с мнемокодом BalanceReportsDesc. Допустимо установить значение настройки "DescribeBalanceReport" в мнемокод этой процедуры, но по умолчанию значение настройки пусто.
Важно! | Пользователи должны иметь права на выполнение пользовательской процедуры, указанной в настройке "DescribeBalanceReport".

4.12. Настройка браузеров для использования доменной аутентификации
Доменная аутентификация может осуществляться по NTLM и Kerberos протоколу. Первый считается устаревшим, но он обычно включен администратором домена для совместимости. Kerberos всегда включен по умолчанию в современных серверных ОС Windows которые используются в качестве контроллера домена.
Важно! | В браузере Edge, на текущий момент, отсутствует поддержка доменной аутентификации.
Настройка Firefox : Открыть вкладку с адресом about:config В случае необходимости использования NTML аутентификации нужно настроить параметр network.automatic-ntlm-auth.trusted-uris указав в его значении домен сервиса (например balance.domain.com или .domain.com для использования всех поддоменов из домена domain.com). В случае необходимости использования Kerberos аутентификации также нужно настроить параметры network.negotiate-auth.delegation-uris (задать протокол для которого будет использоваться доменная аутентификация, например "http://,https://" для включения обоих протоколов) и network.negotiate-auth.trusted-uris (значение задается по аналогии с NTLM параметром) .
Кстати | Можно включить использование доменной аутентификации для всех доменов, включив параметры (задав значение true) network.automatic-ntlm-auth.allow-non-fqdn или network.negotiate-auth.allow-non-fqdn, и очистив значения параметров network.automatic-ntlm-auth.trusted-uris и network.negotiate-auth.trusted-uris.
Настройка IE (Chrome и браузеры на основе Chromium, в частности Opera и Yandex браузер, используют настройки IE): Откройте настройки IE (свойства браузера) и перейдите на вкладку "Безопасность". Выберите зону "Местная интрасеть". Для включения автоматичекой аутентификации проверьте текущую настройку "Проверка подлинности пользователя" - в группе настроек "Уровень безопасности для этой зоны" нажмите на кнопку "Другой", настройка "Проверка подлинности пользователя" должна иметь значение "Автоматический вход в сеть только в зоне интрасети". Для настройки перечня доменов нажмите на кнопку "Сайты" (если в открывшемся диалоговом меню не показался перечень сайтов, а предлагается автоматически определять такие сайты, то задать вручную необходимый сайт можно нажав на кнопку "Дополнительно") в открывшемся диалоге введите нужный домен, и нажмите кнопку "Добавить". Там же можно настроить и требуемый протокол (http или https).
Важно! | Браузер IE осуществляет аутентификацию в каждом новом TCP соединении (сокете) с сервером. И из-за того, что процесс доменной аутентификации происходит путем осуществления не менее 2-х запросов-ответов между клиентом и сервером, то в случае с IE требуется включение KeepAlive (в конфигураторе параметр "Повторно использовать сессии" в группе "Параметры сетевых настроек"). В противном случае, доменная аутентификация в IE будет невозможна. В браузере IE, после прохождения доменной аутентификации и дальнейшей необходимости перевойти с помощью логина/пароля, или использования другого вида аутентификации, требуется закрыть и снова открыть браузер (переоткрыть вкладку не достаточно). Это связано с особенностью работы браузера IE (всех версий), в которой он использует упреждающую аутентификацию (не дожидается требования аутентификации от сервера, а самостоятельно начинает этот процесс), что в совокупности с запоминанием им возможности доменной аутентификации на конкретном URL, приводит к автоматической переаутентификации на доменную учетную запись посреди сеанса.

4.13. Использование Microsoft Office 2010 или выше
1. В случае использования на сервере Microsoft Office версии 2010 или выше, может наблюдаться проблема с быстродействием (по сравнению с Office 2007 или более ранней версии) по выгрузке отчетов в Excel файлы. Данная проблема связана с изменениями в работе с буфером обмена в версиях Microsoft Office 2010 и выше. А именно: Изменение способа оповещения просмотрщиков буферов обмена других процессов офисных программ (в частности Excel), запущенных в текущем сеансе Windows. В результате этого, при активной работе с буфером обмена, наблюдается замедление работы Excel даже в случае работы только 1-го процесса Excel. Изменение способа очистки буфера обмена перед его использованием в случаях когда это сделать не удается с 1-го раза, например при интенсивной работе с ним других процессов: В версиях Excel предшествующих 2010, делалось только 1 попытка очистить буфер обмена, после чего процесс шел дальше вне зависимости от результата В версиях Excel 2010 и выше, делается до 10 попыток в случае неудачи, после чего процесс идет дальше вне зависимости от результата В результате этого, при активной работе с буфером обмена, наблюдается замедление работы Excel пропорционально количеству других процессов (в частности Excel) конкурирующих за буфер обмена. Решение проблемы : Microsoft признала проблемой изменение описанное в пункте 1, и реализовала возможность отключения просмотрщиков буфера обмена во всех своих продуктах Office, начиная с 2010. Для включения данной настройки в Office 2010, необходимо убедиться, что его версия не менее 14.0.7106.5000.
   Важно! | Вы можете вручную применить эту настройку, так как это описано в статье , или включить флажок "Отключить просмотрщик буфера обмена Microsoft Office" в инсталляторе, для автоматического выполнения этой настройки. При ручном применении этой настройки стоит иметь ввиду, что она действует только для тех пользователей Windows, в ветке реестра которых она применена. Т.е. её необходимо включить как минимум для того пользователя от имени которого будет работать сервис (по умолчанию, все сервисы в системе работают от имени SID: S-1-5-18).
В Microsoft было отправлено описание проблемы из пункта 2. До того момента когда данная проблема будет исправлена (или не исправлена) Microsoft, нами была разработана библиотека OfficeNoSleep.dll, поставляемая в составе Сервиса "Сведение отчетности Онлайн", которая детектирует ситуации описанные в пункте 2, и нивелирует их, когда это возможно. Данная библиотека подключается и начинает функционировать когда это необходимо (использование Microsoft Office 2010 и выше) автоматически, т.е. администратору не нужно предпринимать каких-либо действий.
Важно! | Для полного решения описанных проблем, необходимо использовать оба решения совместно. В таком случае, быстродействие будет даже несколько выше того, что было при использовании Microsoft Office 2007 или ниже.

5. Часто задаваемые вопросы

5.1. Получение SSL-сертификата

5.1.1. Протокол SSL
SSL (англ. Secure Sockets Layer — уровень защищённых сокетов) SSL это криптографический протокол использующий протокол TCP/IP, т.е. он (SSL) находится между транспортным протоколом TCP/IP и протоколами прикладного уровня HTTP, SMTP, преобразуя их сообщения в шифрованный вид. Для работы по протоколу SSL требуется, чтобы на сервере был установлен SSL-сертификат. Безопасность соединения обеспечивается с помощью аутентификации (сертификат привязан к одному конкретному домену) и шифрования (передаваемая информация может быть расшифрована только с помощью специального ключа). Каждый сертификат содержит в себе информацию о: доменное имя, на которое получен сертификат; юридическое лицо, владеющее сертификатом; местонахождение владельца сертификата (страна, город); реквизиты компании, удостоверяющей подлинность сертификата. SSL-cертификат подтверждает, что домен принадлежит реальной компании и что его владелец вправе пользоваться секретным ключом на законных основаниях. Выпуск SSL-сертификатов осуществляется Центрами сертификации. Существует большое количество Центров сертификации во всем мире, в том числе и в России. Однако, для того чтобы Ваш сертификат принимался во всем мире, желательно получить сертификат в большой международной организации. Наиболее известные мировые центры сертификации: Thawte Products GeoTrust VeriSign В России интересы Центров сертификации представляют многие компании-регистраторы. Для примера далее рассматривается процесс получения SSL-сертификатов от Компании Thawte Products через российскую RU-CENTER.

5.1.2. Виды сертификатов
Компания RU-CENTER предлагает получить SSL-сертификаты крупнейших международных Центров Сертификации. Для примера рассмотрен процесс получения сертификатов компании Thawte. Эта компания предлагает следующие виды SSL-сертификатов, наиболее востребованных в российских реалиях: SSL 123 SSL Web Server SSL Wildcard
Сертификат | Период | SSL 123 | SSL Web Server Certificates | Wildcard SSL Certificates
Область применения |  | Сети интранет Почтовые сервисы Небольшие интернет-магазины Авторизация и передача личной информации | Платежные системы Интернет-банкинг Оплата пластиковыми картами Интернет-магазины Защита каналов связи Корпоративные сети Другие | Защита неограниченного числа субдоменов одного уровня (например, вида *.test.ru).
Выдается |  | Физическим и юридическим лицам | Юридическим лицам | Юридическим лицам
Подтверждает информацию |  | О домене | О домене и организации | О домене и организации
Примерные сроки выдачи |  | от 1 дня | от 3 дней | от 3 дней
Стоимость (руб.) на 10.02.2012 | 1 год 2 года 3 года 4 года 5 лет | 2630 4970 6570 8540 10490 | 4750 8320 11430 15410 18980 | 20990 36740 - - -
Дополнительно |  | Упрощенная процедура проверки. Удостоверяет одно доменное имя. Не требует предоставления документов. | Стандартный сертификат для интернет-коммерции. Удостоверяет одно доменное имя. Подтверждает существование организации. | Поддержка субдоменов: удостоверяет множество доменов вида *.test.ru на одном домене. Подтверждает существование организации.
Для всех сертификатов | уровень шифрования от 128-бит до 256-бит; совместимость с браузерами 99.9%; бесплатный перевыпуск (до 3 раз); поддержка протоколов HTTP, IMAP, POP3, SMTP, NNTP, FTP, IRC, SIP, IPP, RDP и др.

5.1.3. Получение SSL-сертификатов
Процедура получения SSL-сертификата для юридического лица состоит из двух этапов: Предварительная подготовка - на данном этапе необходимо подготовить все обязательные документы, создать и опубликовать доменное имя, создать адрес электронной почты в соответствии с требованиями центра сертификации. Создание и отправка запроса

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

5.1.3.1.1. Пакет документов
Электронную копию (скан) свидетельства о внесении записи о вашем юридическом лице в единый государственный реестр юридических лиц. Электронную копию (скан) свидетельства о постановке вашего юридического лица на учет в территориальном налоговом органе. Электронную копию (скан) документа, подтверждающего наличие контактного телефонного номера (копия счета телефонной компании или копия договора с телефонной компанией). Пожалуйста, выделите ручкой или маркером номер вашего телефона на странице. Данный документ требуется для осуществления проверочного звонка в организацию. Если предоставить такой документ затруднительно, рекомендуем вам зарегистрироваться в общедоступных базах данных. Существует еще один альтернативный вариант — можно загрузить нотариально заверенное заявление, подтверждающее право технического контакта подать заявку на сертификат SSL от лица организации. В случае если заказчик SSL-сертификата не является администратором домена, Удостоверяющий центр может потребовать предоставить письмо («domain release letter») в качестве доказательства того, что Администратор домена не возражает против выпуска сертификата на его доменное имя. Письмо предоставляется с подписью и печатью организации, являющейся администратором домена.
Важно! | При заполнении следует соблюсти следующие требования: - оформление заявления на бланке организации; - визирование подписью Корпоративного Контакта, указанного, в заказе на SSL-сертификат; - заполнение должным образом всех граф.

5.1.3.1.2. Доменное имя
Для того чтобы иметь возможность получить SSL-сертификат, ваше доменное имя должно быть зарегистрировано и иметь запись в международном сервисе WHOIS. Для того чтобы узнать наличие записи о Вашем доменном имени, перейдите по ссылке whois. В открывшемся окне введите проверяемое доменное имя.
Пример | Пример запроса информации по доменному имени: Whois2

5.1.3.1.3. IP-адрес
Для установки и корректного функционирования SSL-сертификата обязательно наличие выделенного IP-адреса. Если у вас несколько субдоменов на одном IP вы можете воспользоваться Wildcard SSL сертификатом.

5.1.3.1.4. Адрес электронной почты
По требованию Удостоверяющего центра при заказе SSL-сертификата необходимо указать адрес электронной почты (approver email), на который будет отправлен запрос на подтверждение выпуска сертификата. E-mail получателя может принимать одно из следующих значений: admin@[имя_домена] administrator@[имя_домена] hostmaster@[имя_домена] root@[имя_домена] postmaster@[имя_домена] webmaster@[имя_домена] где [имя_домена] должно соответствовать полю «Common Name» (CN), указанному в CSR. В случае если сертификат заказывается для поддомена, в e-mail допускается использовать домен второго уровня.
Пример | Например, при заказе сертификата для домена «www.test.ru» с именем получателя «admin» можно использовать e-mail: - admin@www.test.ru, - admin@test.ru.

5.1.3.1.5. Создание аккаунта RU-CENTER
Для заказа любого вида SSL-сертификата, например через компанию RU-CENTER, предварительно необходимо создать аккаунт на сайте RU-CENTER.
Кстати | Если у компании уже есть аккаунт на www.nic.ru - пропустите данный раздел.
Заходим на страницу регистрации нового аккаунта . Проставляем галочку "Я ознакомлен и согласен со всеми условиями, на которых будут оказаны услуги." Выбираем признак "Анкета заполняется для резидента РФ" (да/нет) Выбираем форму собственности компании:

5.1.3.1.5.1. Для физического лица
1. Заполнение анкеты: Фамилия, имя, отчество (person-r): Заполняется в соответствии с паспортными данными по-русски.
   Пример | Сидоров Сидор Сидорович
2. Имя и фамилия (person): Без точек, заполняется латинскими буквами.
   Важно! | Данная информация общедоступна при использовании сервиса Whois для международных и зарубежных доменов.
   Можно воспользоваться функцией "Создать автоматически по полю person-r" для автоматической транслитерации русского написания в латинское.
   Пример | Sidor Sidorov
3. Паспортные данные (passport):* Серия, номер, кем выдан, дата выдачи, место регистрации с указанием города, улицы, номера дома и квартиры, если частный дом, должно быть указано "частный дом".
   Пример | 12 34 567890 выдан 123 отделением милиции г.Москвы, 30.01.1990 зарегистрирован по адресу: Москва, ул.Кошкина, д.15, кв.4
4. Дата рождения (birth-date): Указывается цифрами через точку в формате DD.MM.YYYY, где DD - число, MM - месяц, YYYY - год.
   Пример | 18.10.1965
5. Почтовый адрес (p-addr): Будет использоваться для рассылки возможных уведомлений и официальных документов.
   Важно! | Повторная отправка возвращенных почтовым отделением документов, оформление заверенных копий и переоформление оригиналов документов осуществляется платно, согласно действующим тарифам.
   Пример | Кому: Сидорову Сидору Сидоровичу Куда: Москва, ул.Кошкина, д.15, кв.4 Индекс: 123456
6. Телефон (phone): С обязательным указанием международного кода и кода города. Информация по каждому телефону должна быть представлена отдельной строкой. Для делегирования доменов.RU и.РФ необходимо указать номер телефона с функцией приема SMS.
   Важно! | Данная информация общедоступна при использовании сервиса Whois.
   Пример | +7 495 1234567
7. Факс (fax-no): С обязательным указанием международного кода и кода города. Информация по каждому факсу должна быть представлена отдельной строкой.
   Важно! | Данная информация общедоступна при использовании сервиса Whois.
   Пример | +7 495 1234567
8. Адрес электронной почты (e-mail): Используется для направления запросов RU-CENTER и информации административного характера, а также для отсылки уведомлений о запрошенных и оказанных услугах, о необходимости продления услуг. Для более надежной связи желательно указать групповой адрес рассылки. Возможно указание нескольких электронных адресов, в этом случае информация по каждому адресу должна быть представлена отдельной строкой.
   Важно! | Данная информация общедоступна при использовании сервиса Whois.
   Пример | adm-group@my-internet-name.ru sidor@test.my-provider.ru
9. Адрес электронной почты для уведомлений технического характера (mnt-nfy): Используется для направления уведомлений RU-CENTER об изменениях параметров услуг и их настроек, об изменении данных в анкете и т.п. Возможно указание нескольких электронных адресов, в этом случае информация по каждому адресу должна быть представлена отдельной строкой.
   Важно! | Если поле не заполнено, уведомления технического характера по электронной почте не высылаются
   Пример | noc@my-internet-name.ru
Административный пароль: административный пароль, который Вы будете использовать для доступа в раздел "Для клиентов" для заказа и настройки услуг Подтверждение административного пароля: Технический пароль: Технический пароль обладает ограниченными возможностями по сравнению с административным, он предназначен для специалиста, непосредственно осуществляющего настройку технических параметров услуги.
Важно! | При создании паролей разрешается использовать только латинские буквы и цифры.
После заполнения всех необходимых полей нажать кнопку "Отправить анкету" Будет выведено сообщение об успешном заполнении анкеты. На указанный почтовый ящик будет отправлено письмо с уведомлением об успешном заполнении анкеты. Для продолжения работы нажать кнопку "Начать работу".

5.1.3.1.5.2. Для юридического лица
1. Заполнение анкеты: Наименование организации в соответствии с учредительными документами (org): Включает организационно-правовую форму и название юридического лица. Заполняется латинскими буквами. Допускается использование аббревиатуры. Длина поля org не должна превышать 100 символов.
   Важно! | Данная информация общедоступна при использовании сервиса Whois.
   Пример | JSC "New time"
2. Полное наименование организации в соответствии с учредительными документами (org-r): Включает организационно-правовую форму и полное (без сокращений!) наименование юридического лица в соответствии с учредительными документами. Используется при формировании счетов и счетов-фактур. Поле заполняется по-русски.
   Пример | Закрытое Акционерное Общество "Новое время" Пример для структурного подразделения: Калужский филиал Закрытого Акционерного Общества "Новое время" (наименование филиала)
3. Наименование головной организации (parent-org-r): Заполняется только структурным подразделением (филиалом, представительством). Указывается полное наименование головной организации. Используется при формировании счетов-фактур. В остальных случаях заполнять поле и ставить прочерк не нужно.
   Пример | Закрытое Акционерное Общество "Новое время" (название головной организации)
4. ИНН (code): Данные из этого поля будут использоваться при формировании счетов на оплату, а также для идентификации в базе данных Регистратора.
   Пример | 1234567891
5. КПП (kpp): Код причины постановки на учет налогоплательщика покупателя. Данные из этого поля будут использоваться при формировании счетов-фактур в поле "ИНН/КПП покупателя".
   Пример | 123456789
6. Юридический адрес организации (address-r): Место нахождения юридического лица в соответствии с учредительными документами. Данные из этого поля будут использоваться при формировании счетов и счетов-фактур.
   Пример | 123456, Москва, ул.Собачкина, д.13а Пример для структурного подразделения: 123456, Москва, ул.Собачкина, д.13а (место нахождения головной организации)
7. Почтовый адрес (p-addr): На этот адрес по почте будут высылаться оригиналы счетов и другие официальные документы. В поле нужно указать всю информацию, необходимую для надежной доставки письма до адресата.
   Важно! | Обязательно: — указание почтового индекса и получателя (адресата), — наличие договора об оказании услуг почтовой связи с вашим почтовым отделением.
   Пример | Кому: ЗАО "Новое Время", Отдел телекоммуникаций, Сидорову Сидору Сидоровичу Куда: Москва, ул.Собачкина, д.13а Индекс: 123456
8. Адрес грузополучателя (d-addr): Почтовый адрес без названия организации и указания лиц, получающих корреспонденцию. Данные из этого поля будут использоваться при формировании счетов-фактур в поле "Грузополучатель и его адрес".
   Пример | Пример: 123456, Москва, ул.Собачкина, д.13а Пример для структурного подразделения: 248600, г. Калуга, ул. Театральная, д. 36 (почтовый адрес структурного подразделения)
9. Телефон (phone): С обязательным указанием международного кода и кода города. Информация по каждому телефону должна быть представлена отдельной строкой. Для делегирования доменов.RU и.РФ необходимо указать номер телефона с функцией приема SMS.
   Важно! | Данная информация общедоступна при использовании сервиса Whois.
   Пример | +7 495 1234567 +7 495 1234568 +7 495 1234569
10. Факс (fax-no): С обязательным указанием международного кода и кода города. Информация по каждому факсу должна быть представлена отдельной строкой.
    Важно! | Данная информация общедоступна при использовании сервиса Whois.
    Пример | +7 495 1234560
11. Адрес электронной почты (e-mail): Используется для направления запросов RU-CENTER и информации административного характера, а также для отсылки уведомлений о запрошенных и оказанных услугах, о необходимости продления услуг. Для более надежной связи желательно указать групповой адрес рассылки. Возможно указание нескольких электронных адресов, в этом случае информация по каждому адресу должна быть представлена отдельной строкой.
    Важно! | Данная информация общедоступна при использовании сервиса Whois.
    Пример | adm-group@my-internet-name.ru
12. Адрес электронной почты для уведомлений технического характера (mnt-nfy): Используется для направления уведомлений RU-CENTER об изменениях параметров услуг и их настроек, об изменении данных в анкете и т.п. Возможно указание нескольких электронных адресов, в этом случае информация по каждому адресу должна быть представлена отдельной строкой.
    Важно! | Если поле не заполнено, уведомления технического характера по электронной почте не высылаются
13. Административный пароль: административный пароль, который Вы будете использовать для доступа в раздел "Для клиентов" для заказа и настройки услуг
    Важно! | Разрешается использовать только латинские буквы и цифры.
Технический пароль: обладает ограниченными возможностями по сравнению с административным, он предназначен для специалиста, непосредственно осуществляющего настройку технических параметров услуги. После заполнения всех необходимых полей нажать кнопку "Отправить анкету" Будет выведено сообщение об успешном заполнении анкеты. На указанный почтовый ящик будет отправлено письмо с уведомлением об успешном заполнении анкеты. Для продолжения работы нажать кнопку "Начать работу".

5.1.3.1.5.3. Для индивидуального предпринимателя (ИП)
1. Заполнение анкеты: Фамилия, имя, отчество (person-r): Заполняется по-русски в соответствии с паспортными данными. Перед фамилией должна присутствовать аббревиатура ИП.
   Пример | ИП Сидоров Сидор Сидорович
2. Имя и фамилия (person): Без точек, заполняется латинскими буквами. Можно воспользоваться функцией "Создать автоматически по полю person-r" для автоматической транслитерации русского написания в латинское.
   Важно! | Данная информация общедоступна при использовании сервиса Whois для международных и зарубежных доменов.
   Пример | Sidor Sidorov
3. Паспортные данные (passport): Серия, номер, кем выдан, дата выдачи, место регистрации с указанием города, улицы, номера дома и квартиры, если частный дом, должно быть указано "частный дом".
   Пример | 12 34 567890 выдан 123 отделением милиции г.Москвы, 30.01.1990 зарегистрирован по адресу: Москва, ул.Кошкина, д.15, кв.4
4. Адрес прописки (address-r): Место регистрации индивидуального предпринимателя. Данные из этого поля будут использоваться при формировании счетов и счетов-фактур.
   Пример | 123456 Москва, ул.Собачкина, д.13а, кв.78
5. ИНН предпринимателя (code) : Данные из этого поля будут использоваться при формировании счетов на оплату, а также для идентификации в базе данных Регистратора.
   Пример | 123456789012
6. Дата рождения (birth-date): Указывается цифрами через точку в формате DD.MM.YYYY, где DD - число, MM - месяц, YYYY - год.
   Пример | 18.10.1965
7. Почтовый адрес (p-addr): На этот адрес по почте будут высылаться оригиналы счетов и другие официальные документы. В поле нужно указать всю информацию, необходимую для надежной доставки письма до адресата.
   Важно! | Обязательно указание почтового индекса и получателя (адресата).
   Важно! | Повторная отправка возвращенных почтовым отделением документов, оформление заверенных копий и переоформление оригиналов документов осуществляется платно, согласно действующим тарифам.
   Пример | Кому: Сидорову Сидору Сидоровичу Куда: Москва, ул.Кошкина, д.15, кв.4 Индекс: 123456
8. Адрес грузополучателя (d-addr): Почтовый адрес без указания лиц, получающих корреспонденцию. Данные из этого поля будут использоваться при формировании счетов-фактур в поле "Грузополучатель и его адрес".
   Пример | 123456, Москва, ул.Собачкина, д.13а
9. Телефон (phone): С обязательным указанием международного кода и кода города. Информация по каждому телефону должна быть представлена отдельной строкой. Для делегирования доменов.RU и.РФ необходимо указать номер телефона с функцией приема SMS.
   Важно! | Данная информация общедоступна при использовании сервиса Whois.
   Пример | +7 495 1234567 +7 495 1234568 +7 495 1234569
10. Факс (fax-no): С обязательным указанием международного кода и кода города. Информация по каждому факсу должна быть представлена отдельной строкой.
    Важно! | Данная информация общедоступна при использовании сервиса Whois.
    Пример | +7 495 1234560
11. Адрес электронной почты (e-mail): Используется для направления запросов RU-CENTER и информации административного характера, а также для отсылки уведомлений о запрошенных и оказанных услугах, о необходимости продления услуг. Для более надежной связи желательно указать групповой адрес рассылки. Возможно указание нескольких электронных адресов, в этом случае информация по каждому адресу должна быть представлена отдельной строкой.
    Важно! | Данная информация общедоступна при использовании сервиса Whois.
    Пример | adm-group@my-internet-name.ru sidor@test.my-provider.ru
12. Адрес электронной почты для уведомлений технического характера (mnt-nfy): Используется для направления уведомлений RU-CENTER об изменениях параметров услуг и их настроек, об изменении данных в анкете и т.п. Возможно указание нескольких электронных адресов, в этом случае информация по каждому адресу должна быть представлена отдельной строкой.
    Важно! | Если поле не заполнено, уведомления технического характера по электронной почте не высылаются
    Пример | noc@my-internet-name.ru
13. Административный пароль: административный пароль, который Вы будете использовать для доступа в раздел "Для клиентов" для заказа и настройки услуг
    Важно! | Разрешается использовать только латинские буквы и цифры.
Технический пароль: обладает ограниченными возможностями по сравнению с административным, он предназначен для специалиста, непосредственно осуществляющего настройку технических параметров услуги. После заполнения всех необходимых полей нажать кнопку "Отправить анкету" Будет выведено сообщение об успешном заполнении анкеты. На указанный почтовый ящик будет отправлено письмо с уведомлением об успешном заполнении анкеты. Для продолжения работы нажать кнопку "Начать работу".

5.1.3.1.6. Внесение денежных средств на личный счет
Для того чтобы заказать SSL-сертификат через компанию RU-CENTER необходимо, чтобы перед отправкой запроса на личном счету в личном кабинете вашей компании было достаточно средств для оплаты данной услуги. Текущий баланс можно проверить в личном кабинете (Оплата - Баланс личного счета): Для того чтобы пополнить баланс необходимо в личном кабинете из верхнего меню выбрать пункт "Оплата" и в выпадающем списке выбрать "Пополнить личный счет": Откроется страница внесения денежных средств: Здесь нужно ввести сумму в рублях, на которую Вы планируете пополнить баланс и нажать кнопку "Пополнить". После этого откроется страница выбора способа пополнения, на которой можно выбрать нужный вариант. Банковские переводы (безналичный расчет) - здесь Вы можете сделать запрос о формировании нового счета на оплату указанной суммы. Через интернет и электронной наличностью (Яндекс.Деньги, MoneyMail, WebMoney и другие) - здесь для Вас будут выведены реквизиты выбранной платежной системы для оплаты (номер кошелька). Через терминалы и точки приема наличных - здесь будут выведены реквизиты для оплаты через платежные терминалы и точки приема платежей (номер заказа) При помощи мобильного телефона - будут выведены реквизиты для отправки платного SMS-сообщения. Электронные переводы - реквизиты платежной системы. Рассмотрим процесс безналичного перевода: Выбрать способом оплаты "Безналичный расчет": Откроется страница с информацией о выставленном счете: Счет можно просмотреть и распечатать, нажав на одну из ссылок: HTML, RTF, PDF. После оплаты счета денежные средства поступают на личный счет вашей компании.

5.1.3.2. Создание и отправка запроса

5.1.3.2.1. Выбор типа сертификата
Для заказа SSL-сертификата необходимо авторизоваться в личном кабинете на сайте nic.ru. Для этого в правом верхнем углу нажать "Вход" и в открывшейся странице ввести свои номер договора и пароль, полученные в процессе регистрации. При этом суффикс договора оставить "NIC-D". После ввода данных нажать кнопку "Вход" ниже. Откроется личный кабинет. В разделе "Заказать услугу" выбрать пункт "SSL-сертификат". Откроется окно выбора типа сертификата: Подробная информация о типах SSL-сертификатов: Виды сертификатов Выбрать необходимый сертификат и срок его действия, нажать "Продолжить". Откроется окно для ввода CSR-запроса. Подробно Создание CSR запроса

5.1.3.2.2. Отправка CSR-запроса
После того как Вы определились с видом желаемого сертификата, необходимо Создать CSR запрос и внести его в форму на странице: Заполнение поля запроса производится прямым копированием текста запроса из буфера обмена. После этого необходимо выбрать используемый Вами тип сервера из списка ниже. В случае если Вы планируете работу с Платформой "Мельница данных" - выберите пункт "Other" ("Другой"). Нажмите кнопку "Продолжить". На следующей странице: некоторые из реквизитов будут заполнены автоматически на основании данных введенных Вами ранее при создании запроса и при регистрации аккаунта. Проверьте эти данные и заполните все остальные поля достоверной информацией. Все поля заполняются латинскими символами. Название организации в поле «Organization name» должно соответствовать данным указанным в CSR, в Whois домена и в свидетельстве о регистрации юридического лица. Длина названия организации не должна превышать 64 символов. В поля формы «Данные контактного лица» необходимо вводить корректную информацию, так как Удостоверяющий центр может воспользоваться ей для запроса дополнительных сведений. Нажмите кнопку "Продолжить" после заполнения всех полей. На следующей странице Вам будет предложено проверить все введенные данные. Если данные введены верно, нажмите кнопку "Отправить заказ". Данные будут отправлены.

5.1.3.2.2.1. Создание CSR запроса
4. Для генерации CSR-запроса существует несколько путей. Наиболее защищенным вариантом (рекомендуемым) является создание такого запроса с использованием OpenSource (свободно распространяемого) программного обеспечения OpenSSL Project (http://www.openssl.org/). На сайте проекта представлены открытые исходные коды программного обеспечения для обслуживания SSL-сертификатов. Коды находятся в свободном доступе на странице Исходные коды и могут быть скомпилированы под используемую конечным пользователем Платформу. Для Платформы Microsoft Windows готовые скомпилированные файлы проекта можно найти на сайте партнера проекта Shining Light Productions . В открывшемся списке файлов на этой странице выбрать вариант используемой операционной системы Windows компьютера, на котором будет производиться генерация CSR-запроса. Win32 OpenSSL v1.0.0g - для 32 битных операционных систем Win64 OpenSSL v1.0.0g - для 64 битных операционных систем После нажатия на выбранную ссылку начнется процесс скачивания файла программного обеспечения (около 16 Мб). По завершении скачивания, необходимо запустить с локального диска файл Win32OpenSSL-1_0_0g(1).exe (для 32-хбитных систем) или Win64OpenSSL-1_0_0g(1).exe (для 64-хбитных систем). Процесс установки (на примере для 32-хбитных систем): Предупреждение системы безопасности - нажать "RUN" ("Выполнить") 1-й экран установщика - нажать "Next" ("Далее") Лицензионное соглашение - ознакомиться, выбрать пункт "I accept the agreement" и нажать "Next" ("Далее"). Выбор папки для установки - выбрать путь для установки программного обеспечения на жестком диске, нажать "Next" ("Далее"). Выбор папки установки в меню "Start" ("Пуск") - выбрать наименование папки, нажать "Next" ("Далее"). Выбор месторасположения дополнительных библиотек - установить библиотеки в папку установки программного обеспечения C:\OpenSSL\bin . Оставить без изменений, нажать "Next" ("Далее"). Проверка информации - проверить введенную ранее информацию, нажать "Install" ("Установить"). Начнется процесс установки программного обеспечения (около минуты). Далее появится окно: Здесь разработчики предлагают внести посильный вклад в развитие проекта путем перечисления определенной суммы. Данное действие добровольное и, если Вы не хотите перечислять денежные средства разработчикам, просто уберите все галочки из этого окна и нажмите "Finish" ("Завершить"). Установка завершена. Для создания CSR-запроса необходима следующая последовательность действий: Запустить сеанс командной строки MS. Для этого выполнить "START - RUN" ("ПУСК - Выполнить..."). В открывшемся окне ввести "cdm", нажать кнопку "Ok". Откроется окно командной строки Windows Установить в качестве рабочей директории папку C:\OpenSSL\bin , для этого в командной строке ввести команду cd c:\openssl\bin. После ввода нажать "Enter": Задать путь к конфигурационному файлу: set OPENSSL_CONF=C:\OpenSSL\bin\openssl.cfg. После ввода нажать "Enter": Сгенерировать закрытый ключ шифрования. Для этого ввести в командной строке: openssl genrsa -des3 -out private.key 2048 - команда для формирования текста закрытого ключа. Параметр "2048" указывает минимальную длину закрытого ключа. "private.key" - имя файла, в который будет сохранен текст закрытого ключа. После ввода команды нажать "Enter". Начнется формирование закрытого ключа шифрования. На одном из этапов будет запрошен пароль для шифрования закрытого ключа: Здесь необходимо 2 раза ввести секретный пароль, с помощью которого Вы в дальнейшем сможете восстановить информацию закрытого ключа. После ввода нажмите "Enter". По окончании процесса в папке C:\OpenSSL\bin будет сформирован файл, содержащий закрытый ключ. Примерное содержимое файла:
       01-----BEGIN RSA PRIVATE KEY-----
       02Proc-Type: 4,ENCRYPTED
       03DEK-Info: DES-EDE3-CBC,BB1B386511FA8AA1
       0435KXOCPXp95tIc8HN9Z+/jWtv/1KDIQJPb2DKM90iqVbf2O8wfCAChG2/j3vwzoq
       05fKD57/O7g9MdmeREJSxBt3JaBau/NMPKsACtKtWDpPQMQ9DX8ZpScGQ+FyVehkBh
       06BKxXibuivdGBkgrHTgUBhT3FfRNZcP2Sq7HkaTFx55weUvTWjs099A6rf/SePMYU
       07NC1qv7Ft6xZK43ANem3gG4UUzzvTVJIamH4516fZBcW0QQn6Jw0LVa58vAdVdFfD
       08uVoyFEtU3eqDDGEw+20GMzCJbN2Lr3M/RUL4PQHp7jgHVxXGQE/HWfJlKeoUtqia
       09B7UZ6zxbNZksGS9dcElEpL506/Ba5J4gXV8G+PlPRMUCEXJ//K6f/+dMDuEMlzvX
       10tp6iX9spXwXx/kJQ3dNbWHIMkZYFUeFlA1XRW4OpRDhwktMzICT0K6DFxqcf1BQf
       11Wmn2WKlPVNMfmtIEb1rGj9Neow/ekEmnKTlQYb73Bms5DerOEYGZB3mDfSzASYTG
       12Pj32hdWGXQZHCtrDsc7vM5hn6rqFRm3+oEasakOaruWroCLk03mrbNb7QVGUDX3J
       13JZgwqkzI0QxBJg27qpccgsF4vf5BOdK73otetVy2lHLZsyOP5jG26g4YqwcoEVKC
       14aPzVzXhMXNIYzjnUxoB6E0ikTrH7kFhR776bLINNcAddvwTGNTio5wNdbEWalPuc
       158xFOwDLeuG1L0gvZvrHS94cc4c6CXb+/9BiITo6pMv5Pn2TLZHh23EI0cQHfKY8i
       16CNEAVnbg7nwFzCkLnmaKLFRIhGArUKAMbbF1IIZ3dVicdWhPWd72xFIrjOYKM0J6
       17uiyRqhTAlwzGg/93/dfryZhdlqRzm50PSTU2+dlTwKTugDtE8y3cT+5xQ66kbieZ
       18rQTyh6/Wl+pVhvWdqeY3TNfgE+d/w5mBttKYu8/tYMmGmGHaDtwTg76PX8Z2EkhN
       195dezGyhrVx126xXz6NEoeGoxBEQ6N68hxqVIHHGPZjkJT1c6sZRgUMQf29pA4C35
       20yQZj2WB4Xh+8qXOFoj5tg3r1JGGLoaz1rc71iGoquguugVWtqKtbE/lVo7Pt/tED
       21aa07vvhhv6Pi4r1fVTceKUGEXVOP/EqAsUVgkf2xtpuNVRjJ1DflBnFladDpckTs
       22LJ1g4CUCVTCVYoQg1WPNGsZoNb2HtolLBcK31HgIgcq8FEvi3byRH+grtcCZ20Sz
       23hMPiytuxVeaS0wgoZbwWqb5vu46Om+rPyQ9ePMy7YdN/9ujRloGq8rIjzp7u3/qh
       24-----END RSA PRIVATE KEY-----
   .
   Важно! | Сохраните файл в надежном месте и не передавайте его никаким третьим лицам для сохранения конфиденциальности Вашего HTTPS-соединения.
5. На основании полученного ранее закрытого ключа создать CSR-запрос на SSL-сертификат. Для этого в командной строке ввести команду:
       openssl req -new -key private.key -out csr.csr
   - с указанием файла, содержащего текст закрытого ключа, полученного на предыдущем шаге (private.key) и именем нового файла, который будет содержать в себе текст CSR-запроса (csr.csr). После ввода команды нажать "Enter". Будет запрошен пароль закрытого ключа. Введите пароль, который вводили на предыдущем шаге, нажмите "Enter". Далее будут заданы несколько вопросов о принадлежности домена, для которого запрашивается SSL-сертификат. Country name (2 letter code) [AU] - Двухбуквенный код страны, в которой зарегистрирована организация. Для РФ необходимо указывать RU. State or Province name - Область. Для Москвы можно указывать Moscow. Locality Name(City) - Город, в котором зарегистрирована организация. Например, Moscow. Organization Name - Название организации. Название в форме заявки должно быть абсолютно идентичным, как и в представленных документах. Так, например, если в свидетельстве указано Открытое Акционерное Общество «Бизнес», то в сертификате должно фигурировать OAO Biznes. Иные написания: ОАО Компания Бизнес, ОАО Компания Biznes, ОАО КБ и т.п. — не допускаются. Обратите внимание на корректность указания формы собственности. Форма собственности указывается исключительно латинскими буквами, либо в Европейской интерпретации.
     Пример | OOO = Ltd или LLC OAO = OJSC, JSC или OAO (латинскими) ZAO = CJSC или JSC.
     Важно! | название должно быть указано без кавычек и любых других специальных символов, которые можно набрать на клавиатуре, в английской раскладке (например ! @ # " и т.п.)
6. Organizational Unit Name - Подразделение в компании, которое ответственно за данный сертификат. Например, IT Department. Common Name - Доменное имя, для которого необходим сертификат. Учтите, если сертификат необходим для сайта www.domain.tld, то это имя нужно указать полностью. Если сертификат необходим для сайта domain.tld, то именно это имя нужно указать. Для wildcard сертификатов необходимо указывать «звездочку» в левой части названия сайта, например, *.domain.tld Если домен не принадлежит компании, то необходимо предоставить скан-копию письма от владельца домена (DRL-письмо), подтверждающее его согласие на использование доменного имени для приобретения сертификата. Никаких печатей и подписей клиента на письме DRL быть не должно. Письмо подписывается исключительно владельцем домена. Никаких печатей и логотипов владельца быть не должно. Шаблон письма высылается на корпоративный контактный email клиента, указанный при регистрации на ssl.ru E-mail adress - корпоративный контактный email клиента. Далее идут необязательные параметры. Завершение ввода каждого из параметров необходимо завершать нажатием клавиши "Enter". После завершения работы построителя запроса в папке C:\OpenSSL\bin будет создан файл с заданным Вами именем (здесь csr.csr ). Файл содержит готовый CSR-запрос, примерно следующего вида:
       01-----BEGIN CERTIFICATE REQUEST-----
       02MIIC6TCCAdECAQAwgYwxCzAJBgNVBAYTAlJVMQ8wDQYDVQQIDAZNb3Njb3cxDzAN
       03BgNVBAcMBk1vc2NvdzETMBEGA1UECgwKT0FPIENvbnNJRDELMAkGA1UECwwCSVQx
       04FjAUBgNVBAMMDXd3dy5jb25zaWQucnUxITAfBgkqhkiG9w0BCQEWEnZvc3Rlbnp1
       05a0BpbmJveC5ydTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALbs88zF
       06dpb1keTP10FI5Y9cozXL1Y/aXgfLGs4oCWVF1DE98aTitXpc06FgFhhZ2sDe6k1A
       07vUb0ic+Jji7CJ94npUZ+YpIpUBAYthJcKxNPjFum9MKm4EA5QCFkjmW4Qr+uz6K8
       08wWEC665QKeTYGm1FN9xdnYMkrVVfLKPgqMBLfH1t9yPSMUJ7zchdqWKT+pAhJys/
       09AMVqst5k6W6drMMCAwEAAaAXMBUGCSqGSIb3DQEJBzEIDAYyMzU3MTEwDQYJKoZI
       10hvcNAQEFBQADggEBAKUXW1ykVUM+k3No1IriZtOA9Ez23k6+A/UQihnfdV1U9BMA
       11TU7FXx4/EjQ8TdykxLuC10AYPZKYotXNGw3scCBWAirGYYs9Z1t8hrJAE4Ms6Ms9
       12v7sNcu+7fGrrJLGXlhbFZwNTfCPEUC+bECEYLfv5KHJr1o7CBbSx5J5NIXTgksul
       13O0G+9YJ5wcbOlMrL1LXLuO8KSKC7pNw37c00EzuWA0DQKzlvPNnH6U8N2ZaxEdqB
       14yVeg6nYg1vvQrDYHhrbMRcPjZqI/o6BvUuI1Eg48v0UJjvZ6qRR55b1kn9KnlSQ2
       15mwcBiq6wsOO5p4OyEQCQpOkiMwQVUG+D7jVzj8w=
       16-----END CERTIFICATE REQUEST-----
Файл можно открыть для просмотра любым текстовым редактором. Откройте файл, содержащий CSR-запрос и скопируйте всю информацию в буфер обмена операционной системы ("Ctrl + A" - выделить все, "Ctrl + C" - скопировать в буфер). На этом этап создания CSR-закончен. Можно переходить к следующему шагу Отправка CSR-запроса

5.1.3.3. Дальнейшие действия
После отправки запроса вам придет запрос от компании RU-CENTER на предоставление дополнительных документов с инструкцией. По запросу предоставьте все необходимые материалы, собранные ранее на этапе предварительной подготовки. После получения ваших документов, специалист компании RU-CENTER, направит запрос с вашими данными в центр сертификации THAWTE. Производитель SSL-сертификатов производит обязательную проверку корректности CSR и предоставленных документов, а также осуществляет контрольный звонок в организацию, получающую сертификат. Обычно эта процедура занимает от 3 до 10 рабочих дней, в зависимости от типа заказанного сертификата. Если домен, на который оформляется сертификат, не принадлежит организации-заказчику, от владельца домена понадобится письменное разрешение (шаблон будет предоставлен при необходимости).
Важно! | Ответственный сотрудник — лицо, с которым пытаются связаться при осуществлении контрольного звонка. Он должен быть в курсе того, что осуществлен заказ SSL-сертификата, а также знать название компании, указанное в запросе на сертификат, и домен, на который сделан заказ.
Сертификат выпускается, как правило, в течение трех суток после завершения процедуры проверки данных. После выпуска сертификат будет доступен для загрузки в вашем личном кабинете. Для того чтобы получить SSL-сертификат необходимо в личном кабинете перейти "Услуги - SSL-сертификаты". В выведенном списке выберите ссылку получить сертификат. Откроется страница для скачивания SSL-сертификата. Также, для дальнейшей работы потребуется корневой сертификат центра сертификации. В нашем случае - это сертификат компании Thawte. Скачать его можно на сайте Thawte . На открывшейся странице выделите весь текст, скопируйте его в блокнот и сохраните на жестком диске под именем SSL_CA_Bundle.pem .

5.1.4. Самостоятельная генерация сертификата
Скачиваем инсталлятор openssl с сайта openssl.org (для Windows). Устанавливаем openssl, если при установке openssl на Windows он потребует Microsoft Redistributables Package, то предварительно, скачиваем и устанавливаем соответствующий пакет. Например, на данный момент доступна версия openssl v1.0.1c и соответствующий ему Visual C++ 2008 Redistributables (x86/x64) по следующим ссылкам: openssl и Redistributables После установки openssl запускаем командную строку cmd и выполняем следующие команды, предварительно перейдя в каталог bin установленного openssl (по умолчанию c:\OpenSSL-Win32\bin): Указываем путь к конфигурации openssl: set OPENSSL_CONF=C:\OpenSSL-Win32\bin\openssl.cfg ; Генерируем приватный ключ (в процессе генерации приватного ключа необходимо задать пароль): openssl genrsa -des3 -out c:\certificate\private.key 2048 ; Генерируем запрос на сертификат: openssl req -new -key c:\certificate\private.key -out c:\certificate\csr.csr В процессе генерации запроса будут запрошены параметры для сертификата, которые необходимо вводить в латинской раскладке. Достаточными являются: - Country Name (2 letter code) [AU] - страна регистрации организации, для которой готовим сертификат (для Росcии - RU) - State or Province Name (full name) [Some-State] - область, регион регистрации организации (Москва - Moscow) - Locality Name (eg, city) [] - город регистрации организации (Москва - Moscow) - Organization Name (eg, company) [Internet Widgits Pty Ltd] - наименование организации - Common Name (e.g. server FQDN or YOUR name) [] - доменное имя, для которого генерируется сертификат (в данном случае может не совпадать с действительным доменным именем) (localhost, companyname.com) Генерируем сам сертификат сроком на 365 дней (можно больше или меньше): openssl x509 -req -days 365 -in c:\certificate\csr.csr -signkey c:\certificate\private.key -out c:\certificate\certificate.pem В результате в каталоге c:\certificate будет создан приватный ключ (private.key) и сертификат (certificate.pem), который, в случае самостоятельно генерируемого сертификата, будет являться и сертификатом центра сертификации. Для того чтобы браузер не выдавал предупреждения по поводу недостоверности сертификата, можно установить сертификат (certificate.pem) в систему (предварительно поменяв его расширение на.crt) или в браузер, если он использует собственное хранилище сертификатов.

5.1.4.1. Самостоятельная генерация сертификата на основе ГОСТ алгоритмов
Скачиваем инсталлятор OpenSSL, как это указано в статье Самостоятельная генерация сертификата. В целом, процесс почти аналогичный. После установки OpenSSL настраиваем все необходимое (файл конфигурации, переменная окружения и прочее) для использования engine библиотеки gost.dll как это описано в статье Использование SSL сертификатов c ГОСТ алгоритмами. В командной строке выполняем: Для генерации сертификата ГОСТ 2001: openssl req -x509 -newkey gost2001 -pkeyopt paramset:A -nodes -keyout c:\gost_private.key -out c:\gost_cert.crt Для генерации сертификата ГОСТ 2012 с длиной ключа 256: openssl req -x509 -newkey gost2012_256 -pkeyopt paramset:A -nodes -keyout c:\gost_private.key -out c:\gost_cert.crt Для генерации сертификата ГОСТ 2012 с длиной ключа 512: openssl req -x509 -newkey gost2012_512 -pkeyopt paramset:A -nodes -keyout c:\gost_private.key -out c:\gost_cert.crt В результате в каталоге в файле c:\gost_private.key будет сохранен сгенерированный приватный ключ, а в файле c:\gost_cert.crt публицный ключ, т.е. сам сертификат, который, в случае самостоятельно генерируемого сертификата, будет являться и сертификатом центра сертификации.

5.1.5. Конвертация различных форматов сертификатов в требуемый
- Для корректного использования сертификатов в текущем сервисе требуется, чтобы сертификаты были в формате PEM (закодированными в Base64 кодировке), аналогично формату, использующемуся в Apache. Также необходимо, чтобы сертификаты хранились каждый в своем файле, т.е. Непосредственно сертификат домена Приватный ключ сертификата домена Сертификат(ы) центра сертификации. При этом несколько сертификатов центра сертификации (сам сертификат центра и его цепочки промежуточных сертификатов) необходимо включить в один файл, в котором они указываются последовательно, например:
      1-----BEGIN CERTIFICATE-----
      2...
      3-----END CERTIFICATE-----
      4-----BEGIN CERTIFICATE-----
      5...
      6-----END CERTIFICATE-----
      7...
Рассмотрим наиболее часто встречаемые форматы и способы конвертации каждого из них в PEM формат. Формат PEM. Это целевой формат, в который нужно сконвертировать свои сертификаты, в случае если они находятся в других форматах. Данные сертификата закодированы в Base64 формате. При открытии файлов данного типа в текстовом редакторе можно увидеть строки "BEGIN CERTIFICATE" для сертификатов, и "BEGIN RSA PRIVATE KEY" или "BEGIN PRIVATE KEY" для приватных ключей. Обычно файлы имеют раширение.pem,.crt,.cer или.key. Формат DER. Это бинарная форма PEM формата. При открытии файлов данного типа в текстовом редакторе, строки BEGIN и END отсутствуют. Обычно файлы имеют расширение.der или.cer. Конвертация из DER в PEM :
    openssl x509 -inform der -in c:\cert.der -out c:\cert.pem
Формат PKCS#7 или P7B. Данные сертификата обычно закодированы в формате Base64, и он не может содержать приватных ключей. При открытии файлов данного типа в текстовом редакторе можно увидеть строки "BEGIN PKCS7" и "END PKCS7". Обычно файлы имеют расширение.p7b или.p7c. Конвертация из P7B в PEM :
    openssl pkcs7 -print_certs -in c:\cert.p7b -out c:\cert.pem
Важно! | После вышеуказанной конвертации в выходном файле будут находится все сертификаты - как сертификат домена, так и сертификат(ы) центра. Для их использования в текущем сервисе необходимо их разделить на отдельные файлы.
В случае затруднения в разделении на отдельные файлы, возможно, будет проще сконвертировать полученный на предыдущем шаге PEM файл и имеющийся приватный ключ (в PEM формате) в PFX формат, который затем сконвертировать в PEM формат, с разделением на отдельные файлы: Конвертация из PEM в PFX :
    openssl pkcs12 -export -out c:\cert.pfx -inkey c:\cert.key.pem -in c:\cert.pem
- Где: c:\cert.pem - это выходной файл, полученный после конвертации из P7B в PEM, и содержащий как сертификат домена, так и сертификат(ы) центра сертификации c:\cert.key.pem - это приватный ключ (в PEM формате) c:\cert.pfx - это итоговый выходной PFX файл, который в дальнейшем можно конвертировать в PEM с разделением на отдельные файлы (см. пункт конвертация из PFX в PEM) Формат PKCS#12 или PFX. Данные представлены в бинарной форме. Это файл контейнер который содержит все сертификаты - сертификат(ы) центра сертификации, сертификат домена и его приватный ключ. Обычно файлы имеют расширение.pfx или.p12. Конвертация из PFX в PEM : Экспорт сертификата(ов) центра сертификации:
      openssl pkcs12 -export -out c:\cert.pfx -inkey c:\cert.key.pem -in c:\cert.pem
- Экспорт сертификата домена:
      openssl pkcs12 -in c:\cert.pfx -out c:\cert.pem -nodes -nokeys -clcerts
- Экспорт приватного ключа:
      openssl pkcs12 -in c:\cert.pfx -out c:\cert.key.pem -nodes -nocerts
Назначение, удаление или изменение пароля приватного ключа :
    openssl rsa -des3 -in c:\old_cert.key.pem -out c:\new_cert.key.pem -passin pass:old_password -passout pass:new_password
Для удаления пароля не указывайте параметр passout. В случае если исходный файл без пароля, то не указывайте параметр passin.

5.2. Решение проблем
Для диагностики проблем в некоторых случаях помогает страница диагностики. Она доступна всем пользователям системы по url /.system/diag.html. Попросите удаленных пользователей воспользоваться возможностями этой страницы.

5.2.1. Проблема доставки запросов от клиента к серверу
Описание проблемы: На клиенте - проходит авторизация, проходит получение данных дерева каталогов и гридов. При этом не проходят запросы на совершение действий и не проходят запросы после задания условий отбора. На сервере - В отладочном мониторе появляются сообщения "Socket became inactive in first line" или "Bad first line". Причины проблемы: Проблема связана с особенностями провайдера клиента. У провайдера установлено ограничение на длину любого http-запроса, либо POST-запроса в 1KB или немногим более. Обычно проблема проявляется при использовании Microsoft (ISA) Internet Security and Acceleration Server на маршрутизаторе локальной сети. Для диагностики такой ситуации можно использовать командный сценарий проверки провайдера (пример) . Сценарий покажет, что отказ происходит именно при отправке запроса, размер которого превышает 1 КВ. Вы можете написать собственный сценарий проверки, лучше соответствующий вашей ситуации, и распространить его своим клиентам. Запуск файла производится из окружения интерпретатора командной строки Windows (cmd.exe) Решение проблемы лежит не в области функциональности программного продукта, а в области его эксплуатации, конкретнее - в области организации взаимодействия между web-сервером и клиентскими рабочими местами пользователей. Проблема должна решаться специалистами, отвечающими за сопровождение программного продукта у тех клиентов, у которых имеет место описанное выше ограничение. Пути решения проблемы: 1. Обратиться к провайдеру с просьбой о снятии ограничения на размер запросов. 2. Использовать нестандартный TCP/IP порт, договорившись с провайдером о его открытии с серверной и клиентской стороны. Данный путь не гарантирует решения проблемы, но может помочь. В данном случае "провайдером" может выступать как администратор локальной сети организации, так и ISP (интернет-провайдер), в зависимости от того, как организовано подключение конечного пользователя. 3. Использовать протокол https. В этом случае провайдер не сможет анализировать содержимое обмена и, следовательно, не сможет применять ограничения. Для использования протокола https необходимо иметь сертификат, а также внести изменения в настройки web-сервера. Первые два пути могут способствовать быстрому решению проблемы. При этом стратегически правильным является путь 3 - использование протокола https. Взаимодействие по протоколу https может быть организовано с использованием сертификатов двух видов: 1) Сертификат, выдаваемый уполномоченными организациями ("настоящий" сертификат). Инструкция по получению "настоящего" сертификата включена в данное руководство, а также доступна по адресу: http://app.techmill.ru/paruspub/current/documentation/ED01679A80A74E999952269A89D95D36.html 2) Самостоятельно сгенерированный сертификат. Инструкция по генерации такого сертификата приведена Здесь. При использовании самостоятельно сгенерированного сертификата браузер пользователя будет выдавать предупреждение о сомнении в его достоверности. О том как избежать отображения такого предупреждения также написано Здесь. Действия по установке настроек web-сервера для работы по протоколу https описаны Здесь.

5.2.1.1. Сценарий проверки провайдера (пример)
Содержимое примера файла сценария проверки провайдера Testme.bat
    01@echo off
    02IF "%1"=="" GOTO NOHOST
    03
    04echo Checking connection...
    05AppServerFetch download %TEMP%\1.bin from http://%1/ >nul
    06IF NOT %ERRORLEVEL%==0 GOTO ERROR
    07echo passed.
    08
    09echo Checking DataMill Application Server....
    10AppServerFetch download %TEMP%\1.bin from http://%1/.system/session.xml >nul
    11IF NOT %ERRORLEVEL%==0 GOTO ERROR
    12echo passed.
    13
    14echo Checking long GET....
    15AppServerFetch download %TEMP%\1.bin from http://%1/.system/session.xml?data=0123456789^
    160123456789012345678901234567890123456789012345678901234567890123456789^
    170123456789012345678901234567890123456789012345678901234567890123456789^
    180123456789012345678901234567890123456789012345678901234567890123456789^
    190123456789012345678901234567890123456789012345678901234567890123456789^
    200123456789012345678901234567890123456789012345678901234567890123456789^
    210123456789012345678901234567890123456789012345678901234567890123456789^
    220123456789012345678901234567890123456789012345678901234567890123456789^
    230123456789012345678901234567890123456789012345678901234567890123456789^
    240123456789012345678901234567890123456789012345678901234567890123456789^
    250123456789012345678901234567890123456789012345678901234567890123456789^
    260123456789012345678901234567890123456789012345678901234567890123456789^
    270123456789012345678901234567890123456789012345678901234567890123456789^
    280123456789012345678901234567890123456789012345678901234567890123456789^
    290123456789012345678901234567890123456789012345678901234567890123456789^
    300123456789012345678901234567890123456789012345678901234567890123456789^
    310123456789012345678901234567890123456789012345678901234567890123456789^
    320123456789012345678901234567890123456789012345678901234567890123456789^
    330123456789012345678901234567890123456789012345678901234567890123456789^
    340123456789012345678901234567890123456789012345678901234567890123456789^
    350123456789012345678901234567890123456789012345678901234567890123456789^
    3601234567890 > nul
    37IF NOT %ERRORLEVEL%==0 GOTO ERROR
    38echo passed.
    39
    40echo Checking POST....
    41echo 01234567890 > %TEMP%\2.bin
    42AppServerFetch download %TEMP%\1.bin from http://%1/.system/session.xml sending %TEMP%\2.bin >nul
    43IF NOT %ERRORLEVEL%==0 GOTO ERROR
    44echo passed.
    45
    46
    47echo Checking long POST....
    48for /L %%i in (1,1,100) DO echo 01234567890 >> %TEMP%\2.bin
    49AppServerFetch download %TEMP%\1.bin from http://%1/.system/session.xml sending %TEMP%\2.bin >nul
    50IF NOT %ERRORLEVEL%==0 GOTO ERROR
    51echo passed.
    52
    53exit /B 0
    54:ERROR
    55echo Failed.
    56exit /B 1
    57:NOHOST
    58echo Host not given.
    59exit /B 2

5.2.2. Клиент не может авторизоваться в системе
Описание проблемы: На клиенте - ошибка " 403 Forbidden " при попытке входа в систему. На сервере - наблюдается неконтролируемый рост числа сессий с одного ip-адреса. Причины проблемы: Удаленные клиенты идентифицируются сервером при помощи ip-адреса и "идентификатора сессии", который поддерживается посредством механизма cookies. Механизм cookies используется следующим образом: - при первом обращении клиента к серверу, сервер генерирует идентификатор cookie (GUID) и передает его вместе с ответом клиенту; при этом каждая cookie имеет свое время жизни; время жизни задается сервером как момент времени, в который cookie будет уничтожена. Этот момент (в будущем) определяется настройкой "время жизни сессии". В соответствии с требованием стандарта для единства операций со временем (сервер и клиент могут находиться в разных часовых поясах) время указывается по Гринвичу (GMT); - клиент, получив cookie, прикрепляет ее к каждому своему дальнейшему запросу, до тех пор, пока ее время жизни не истечет; когда время жизни истекает, сервер получает запрос без cookie и выдает ошибку авторизации; - для сравнения своего текущего времени со временем на Гринвиче и сервер и клиент используют информацию о своем системном времени и своем часовом поясе. При неверной установке системного времени и/или часового пояса на сервере или на клиенте, возникнет рассинхронизация, и клиент может ошибочно считать время жизни cookie истекшим. Также очевидно, что решение проблемы лежит не в области функциональности программного продукта, а в области его эксплуатации, конкретнее - решение заключается в настройке web-сервера и рабочих мест удаленных пользователей. Проблема должна решаться специалистами, отвечающими за сопровождение программного продукта у тех клиентов, у которых имеет место описанная проблема. Пути решения проблемы: Корректно установить время и часовой пояс в системных настройках web-сервера. Для применения новых значений достаточно выполнить перезапуск сервиса DataMill Application Server. Если, после коррекции системного времени и часового пояса сервера (или если изначально они были установлены правильно), от удаленных пользователей продолжают поступать сообщения об ошибках авторизации, рекомендовать удаленным пользователям корректно выставить системное время и часовой пояс на своей локальной машине. Для применения новых значений пользователю достаточно перезапустить свой браузер. Установить значение параметра "время жизни сессии" в значение, существенно превосходящее один час (например, два часа), поскольку из-за ошибочных установок перехода на летнее время время клиента может расходиться с реальным на час. Это несколько увеличит нагрузку на сервер, однако позволит таким клиентам нормально работать. Следует принимать во внимание, что после отмены перехода на зимнее время часовым поясом для Москвы стал часовой пояс GMT+3.

5.2.3. Получение ответов «403 Forbidden» при некоторых действиях после успешной авторизации
Описание проблемы: На клиенте - после успешной авторизации на некоторые запросы возвращается ошибка "403 Forbidden". На сервере - несколько запросов в рамках одной сессии приходят с одинакового ip-адреса, далее идут несколько запросов с разных ip-адресов рамках той же сессии. После этого запросы снова идут с первого ip-адреса. Причины проблемы: Ошибка происходит в момент смены видимого ip-адреса (запрос приходит на сервер не с того ip-адреса, с которого выполнялась авторизация). Иными словами, имеется проблема нестабильности ip-адреса в рамках одной пользовательской сессии. Удаленные клиенты идентифицируются сервером при помощи ip-адреса и "идентификатора сессии", который поддерживается посредством механизма cookies. Использование ip-адреса в дополнение к cookies обусловлено следующими факторами: Обеспечение требуемого уровня безопасности. cookie представляет собой глобально уникальный идентификатор (GUID), генерируемый сервером при первом обращении каждого из клиентов. При этом Microsoft официально утверждает, что вероятность повтора генерируемого GUID крайне мала, но не равна нулю. В связи с этим было принято решение дополнять идентификацию сессии по cookie контролем ip-адреса; не исключена возможность "перехвата" cookie на любом из узлов маршрутизации любого уровня запроса удаленного пользователя; при снятии контроля ip-адреса будет открыта возможность делать запросы с перехваченной cookie с других ip-адресов, не зная логина и пароля пользователя (и получать на эти адреса ответы). Перспектива контроля числа лицензий пользователя, определяемого через число активных подключений, определяемых по ip-адресам. Пути решения проблемы: Попытаться решить проблему стабильности ip-адреса посредством взаимодействия с администратором сети или провайдером удаленного пользователя. Внести изменения в систему идентификации сессий, отказавшись от контроля ip-адреса. Этот путь имеет существенные недостатки, связанные со снижением уровня безопасности и теоретической невозможностью контроля web-сервером числа лицензий пользователей.

5.2.4. Неустойчивый внешний канал
Вопрос: - Не отображаются активные сессии в "Настройке сервиса" (используется протокол HTTP) - Наблюдается очень медленная работа веб-сервиса. Например, на авторизацию и открытие списка отчетов уходит до 10 минут. При этом запросов от BalanceOnline активных в базе нет и ресурсы веб-сервера не загружены. Ответ: Причиной описанных проблем является неустойчивый внешний канал связи. Для решения необходимо в параметрах сетевых настроек сервиса : 1. Включить сжатие трафика; 2. Снять галку "повторно использовать сессии" 3. Если предыдущие шаги не помогли, то увеличить значение параметра "Количество потоков прослушивателя" до 32. Если клиентов ожидается больше 300 (на неусточивом канале), то задать значение в 48 или даже 64 потока. Ставить большее значение не имеет смысла, в этом случае необходимо расширять внешний канал.

5.2.5. Медленное открытие трафаретов, при установленном антивирусе Kaspersky
Описание проблемы : При установленном антивирусе Kaspersky, наблюдается значительное замедление открытия трафаретов в браузере. Причина проблемы : Причиной проблемы является установленное в браузер расширение антивируса Kaspersky. Решение проблемы : Необходимо отключить это расширение в используемом браузере. Начиная с 15 версии вышеупомянутого антивируса, отключение этого расширения в браузере не достаточно, т.к. оно снова устанавливается при каждом запуске браузера. Для решения этой проблемы, необходимо отключить автоматическую установку этого расширения в самом антивирусе. Последовательность действий:

5.2.6. Клиент не может соединиться с сервером по протоколу https с помощью Internet Explorer в Windows XP
Клиент, используя Windows XP и Microsoft Internet Explorer, любой из доступной для этой ОС версии - 6, 7 или 8, не может соединиться с сервером по протоколу https: Это происходит по следующим причинам (какой-то одной или вместе взятых): Браузер пытается использовать шифры RC4 или 3DES, а по умолчанию поддержка этих шифров отключена, по причине их небезопасности. Более того, эти шифры являются единcтвенно возможными в Windows XP для всех версий IE. В следующих ОС Windows, с этими же версиями IE, такой проблемы нет, т.к. в них появилась поддержка шифра AES. Браузер пытается использовать протоколы SSL (вместо TLS), а по умолчанию поддержка этих протоколов отключена, по причине их небезопасности. Решить проблему правильным и безопасным способом, это посоветовать пользователю воспользоваться другим браузером. В случаях, когда нужно принять временную меру (плохое и небезопасное решение, крайне не рекомендуется). Как уже упоминалось ранее, шифры RC4 или 3DES являются единcтвенно возможными в Windows XP для всех версий IE. Поэтому без включения поддержки этих шифров на сервере приложений, никакая версия IE работать не будет. Для этого, в файле MillAppServer.conf, в элемент /config/object[@class="{91D7A767-7222-4463-BC7F-AD40589E3426}"] добавьте узел <param name="CipherList" value="EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS +RC4 RC4"/>. В случае, когда 1-й пункт выполнен, но проблема остается, то причиной является использование браузером протоколов SSL, вместо TLS. Для решения этой проблемы, необходимо посоветовать пользователю настроить свой браузер на использование безопасного протокола TLS (Настройка "Use TLS 1.0" или "Использовать TLS 1.0"): Либо включить поддержку протоколов SSL на сервере. В файле MillAppServer.conf, в элемент /config/object[@class="{91D7A767-7222-4463-BC7F-AD40589E3426}"] добавьте узел (или замените, если он уже существует) <param name="MinProtocol" value="0"/> Рассматривайте эти меры только как временные и переводите удаленных пользователей на более современные системы.

5.2.7. Клиент не может соединиться с сервером по протоколу HTTPS с помощью Internet Explorer в Windows 7 и других браузеров без TLS 1.2
1. Клиент не может соединиться с сервером по протоколу HTTPS с помощью Internet Explorer в Windows 7, а также других браузеров, не поддерживающих TLS 1.2, вне зависимости от ОС. По умолчанию, поддержка протоколов TLS 1.0 и TLS 1.1 отключена, по причине их небезопасности. Поэтому в следующих случаях клиент не сможет соединиться с сервисом по протоколу HTTPS: любые версии Internet Explorer в случае использования их в Windows 7 или более ранних версиях. В следующих версиях Windows (8.1 и новее) при использовании Internet Explorer 11, такой проблемы нет, т.к. в них появилась поддержка протокола TLS 1.2, который включен по умолчанию. Chrome 28 или более ранние версии, вне зависимости от ОС Firefox 26 или более ранние версии, вне зависимости от ОС Safari 6 или более ранние версии, вне зависимости от ОС Opera 15 или более ранние версии, вне зависимости от ОС Решить проблему правильным и безопасным способом, это посоветовать пользователю воспользоваться актуальной версией браузера, поддерживающий протокол TLS 1.2 и TLS 1.3. В случаях, когда нужно принять временную меру (плохое и небезопасное решение, крайне не рекомендуется). Включить поддержку устаревших протоколов TLS 1.0 и TLS 1.1 на сервере приложений. Для этого, в файле MillAppServer.conf, в элемент /config/object[@class="{91D7A767-7222-4463-BC7F-AD40589E3426}"] добавьте узел (или замените, если он уже существует):
       <param name="MinProtocol" value="2">
В случае, когда 1-й пункт выполнен, но проблема остается, то причиной является отключенные в браузере пользователя протоколы TLS 1.0 и TLS 1.1. Для решение этой проблемы, пользователю необходимо настроить свой браузер на использование этих протоколов: В настройках Internet Explorer: В настройках Firefox: - открыть вкладку с адресом about:config - найти параметр security.tls.version.enable-deprecated, и если он имеется, то установить его значение равным true. - найти параметр security.tls.version.min, и установить его значение равным 1 (TLS 1.0). Рассматривайте эти меры только как временные и переводите удаленных пользователей на более современные системы.

5.2.8. Медленная работа удаленного клиента через приложение Win32, в случае работы через прокси сервер
В случае работы сервиса за серверным прокси сервером и наблюдением медленной работы удаленного клиента, например есть задержки с получением ответа, в то время как на хосте сервиса видно, что данные отправились быстро, рекомендуется проверить нижеуказанные настройки сервиса: Сжимать трафик - выключено, но только в том случае, если на прокси сервере можно настроить сжатие трафика независимо от настройки настоящего сервиса Повторно использовать сессии - включено, но только в том случае, если прокси сервер может "эффективно" переиспользовать соединения между ним и сервисом, а не открывать для каждого внешнего клиента отдельное соединение между собой и сервисом Отключать алгоритм Nagle для соединений - включено, но только в том случае, если имеется достаточный запас канала между сервисом и прокси сервером Также стоит обратить внимание на настройки прокси сервера, касаемые буферизации ответов. Значение этих буферов должно быть как можно меньше или выключено совсем. Именование настроек для некоторых прокси серверов: в IIS - "Response buffer threshold" (Пороговое значение буфера ответов): Application Request Routing Cache > Proxy/Server Proxy Settings в NGINX - proxy_buffering, proxy_buffers и proxy_buffer_size

5.2.9. Поддержка долгоживущих соединений между сервером приложений и сервером СУБД (Oracle или Postgres)
При длительном неиспользовании TCP соединения, роутеры между этими серверами могут начать оптимизировать использование своих ресурсов. Для этого они будут закрывать соединения, которые долго простаивали, обычно порогом является 2 ч. При этом ни сервер приложений, ни сервер СУБД не уведомляются о том, что их соединение оборвалось, и по-прежнему считают его активным. Результат подобных обрывов соединений является нежелательным ни для сервера приложений, ни для сервера СУБД и будут приводить к многочисленным проблемам, например: при необходимости воспользоваться соединением, вызывающая сторона не сразу узнает, что соединение уже неактивно, и будет выжидать таймаут, особенно длительный в ОС Linux (около 15 мин. - см. параметр tcp_retries2) когда сервер приложений поймет, что соединение неактивно, то будет установлено новое соединение, но все данные сброшенного соединения будут потеряны: все активные транзакции текущего соединения, начавшиеся, но еще не завершенные, будут отменены. А это значит, что все выполненные, но еще не подтвержденные действия будут отменены. А также, при последующих запросах клиента в рамках текущей транзакции, он получит ошибку, и будет вынужден выполнять запрос заново. недофетченные селективные запросы сброшены, как на стороне СУБД, так и на стороне сервера приложений. А это значит, что при запросе клиента следующей порции данных из длительных селективных запросов, которые клиент еще не дофетчил до конца, он получит ошибку, и будет вынужден выполнять запрос заново. Для того чтобы избежать подобных нежелательных обрывов соединений, предлагается ряд административных мер по настройке сервера СУБД для поддержания соединений в активном состоянии. Проверка и поддержание соединения активным осуществляется следующим образом. На серверной стороне СУБД, по истечению какого-то времени, клиенту посылаются специальные пакеты определенное количество раз. Как только клиент ответит на эти пакеты проверки соединения, то сервер признает это соединение живым и останавливает этот механизм на определенное время, через которое проверка осуществляется снова. Если клиент не отвечает на проверочные пакеты, то сервер отправляет эти пакеты в течение определенного времени, а затем, если ответ так и не поступил, признает соединение разорванным и закрывает его со своей серверной стороны. В результате пересылки таких пакетов на простаивающих соединениях будет создаваться трафик и промежуточные роутеры будут считать, что соединение необходимо и еще используется, и не будут обрывать соединения, со своей стороны. В Oracle, начиная с 12-й версии для этой механики используется настройки TCP соединений, которые хорошо описаны в следующей документации Oracle - Dead connection detection: TCP_KEEPIDDLE - время простоя соединения после которого начинаются попытки проверки соединения (отправка спец. пакетов). Значение берется из параметра SQLNET.EXPIRE_TIME, умолчательное значение 0, измеряется в минутах. TCP_KEEPCNT - количество попыток проверки соединения (отправка спец. пакетов). Зафиксированное значение (нельзя задать вручную) в Oracle - 10 раз. TCP_KEEPINTVL - интервал времени между попытками проверки соединения (отправка спец. пакетов). Зафиксированное значение (нельзя задать вручную) в Oracle - 6 сек. Таким образом, в Oracle всем этим можно управлять только через настройку SQLNET.EXPIRE_TIME. Умолчательное значение 0, т.е. выключено. Для случаев когда необходимо включить механику поддержки активности соединений, рекомендуемое значение 10 минут. В Postgres, (в 9.6 эти настройки точно уже присутствуют) есть аналогичные настройки в файле postgres.conf: tcp_keepalives_idle - измеряется в секундах. Умолчательное значение 0, в таком случае используется системное значение, которое в Linux и в Windows равняется 2-м часам. tcp_keepalives_count - умолчательное значение 0, в таком берется системное значение, которое в Linux равняется 9 раз tcp_keepalives_interval - измеряется в секундах. Умолчательное значение 0, в таком берется системное значение, которое в Linux равняется 75 сек. Таким образом, в Postgres всем этим можно управлять через вышеуказанные настройки в файле конфигурации postgres.conf. Для случаев, когда необходимо включить механику поддержки активности соединений, рекомендуется начать со значений, применяемых Oracle, т.к. они более продуманные и приближенные к жизни, а именно: tcp_keepalives_idle - 600 сек, т.е. как и в SQLNET.EXPIRE_TIME, рекомендуется 10 мин tcp_keepalives_count - 10 раз tcp_keepalives_interval - 6 сек
Важно! | Применять вышеуказанные настройки необходимо на серверной стороне СУБД, для того чтобы сразу охватить все клиентские соединения.

5.3. Ограничения и несовместимости

5.3.1. Механизм описателей атрибутов документов
- Поддержка механизма "Описателей атрибутов документов" реализована для следующих разделов: Первичные/сводные отчёты Подотчёты Отчёты (состав свода) Отчёты (история состояний) Первичные/сводные отчёты (История статусов) Протоколы проверок Протоколы проверок (спецификация) Реализация поддержки этого механизма имеет следующие ограничения: Функция-описатель может принимать один или два параметра типа number. Если параметр один, то он интерпретируется как регистрационный номер записи раздела, если параметров два, то первый интерпретируется как регистрационный номер организации, второй - как регистрационный номер записи раздела:
  Правильно |
      1create or replace function
      2        F_ATTR_DESCRIPTOR(nRN in number)
      3        ....
      1create or replace function
      2          F_ATTR_DESCRIPTOR(nCOMPANY in number, nRN in number)
      3          ....
  Неправильно |
      1create or replace function
      2          F_ATTR_DESCRIPTOR(nRN in number, nAGENT in number)
      3          ....
      1create or replace function
      2          F_ATTR_DESCRIPTOR(nRN in number, nCOMPANY in number)
      3          ....
- Функция-описатель должна возвращать значение типа varchar2, number или date :
  Правильно |
      1create or replace function
      2          F_ATTR_DESCRIPTOR(nRN in number) return varchar2
      3          ....
      1create or replace function
      2          F_ATTR_DESCRIPTOR(nCOMPANY in number, nRN  in number) return number
      3          ....
  Неправильно |
      1create or replace function
      2          F_ATTR_DESCRIPTOR(nRN  in number) return clob
      3          ....
      1create or replace function
      2          F_ATTR_DESCRIPTOR(nRN  in number) return varchar
      3          ....
Важно! | Если вы пользуетесь СУБД PostgreSQL, то необходимо зарегистрировать функции-описатели в метаданных конвертера PPC. Для этого необходимо выполнить например, такой блок:
    01do$$
    02declare
    03  nfunction numeric;
    04begin
    05
    06select coalesce(max(idx), -1) + 1 into nfunction from ppc$cnv$functions;
    07
    08insert into ppc$cnv$functions(
    09  idx,ppc$name,ppc$packagename,ppc$typename,ppc$functionindex,ppc$triggerindex,
    10  ppc$signatureindex,ppc$resultdatatype,ppc$over100parameters,
    11  ppc$autonomous,ppc$stable,ppc$dynamic,ppc$standard,ppc$public,ppc$frompackagebody,
    12  ppc$current_user,ppc$lostbody,ppc$member,ppc$definition)
    13values(nfunction, 'F_ATTR_DESCRIPTOR','','',-1,-1,0,'varchar2',0,0,1,0,0,0,0,0,0,0,'f_attr_descriptor(numeric)');
    14--                 имя функции                       тип результата                 описатель функции postgres
    15
    16
    17--для первого параметра
    18insert into ppc$cnv$parameters(idx,ppc$functionidx,ppc$cursoridx,ppc$name,ppc$datatype,
    19ppc$inout,ppc$localcontext,ppc$hasdefault,ppc$defaultnode)
    20values(0,nfunction,-1,'nCOMPANY ',     'number',0,0,0,'');
    21---                   имя параметра    тип параметра
    22
    23/*если параметров два, то необходим оператор insert для второго параметра: */
    24insert into ppc$cnv$parameters(idx,ppc$functionidx,ppc$cursoridx,ppc$name,ppc$datatype,
    25ppc$inout,ppc$localcontext,ppc$hasdefault,ppc$defaultnode)
    26values(1,nfunction,-1,'nRN',           'number',0,0,0,'');
    27---    номер          имя параметра    тип параметра
    28
    29end;$$
После регистрации всех функций-описателей необходимо выполнить команду командной строки
    ppcrebuild Пользователь/пароль@[Хост[:Порт]/]БазаДанных
или, если у вас установлено соответствующее расширение, вызвать функцию SQL:
    select ppc$cnv$rebuild()

5.3.2. Механизм пользовательских пересчетов
Поддержка механизмов пользовательских пересчетов реализована для раздела "Первичные/сводные отчеты". Поддерживаются только пользовательские пересчеты, основанные на хранимых процедурах (не на пользовательских). Не забудьте создать псевдоним в схеме PUBLIC для процедуры пересчета, и предоставить пользователю PUBLIС права на вызов процедуры пересчета.

5.3.3. Механизм пользовательских приложений
2. Реализована поддержка механизмов пользовательских приложений. Поддерживаются пользовательские приложения на основе модулей, разработанных на языке VBscript . Скрипт выполняется в адресном пространстве сервиса. Поддерживаются доступные объекты, переменные, функции, описанные в документации ПП Парус 8 для скриптовых модулей пользовательских приложений, с учетом следующих ограничений и дополнений: Функции MsgBox, InputBox, ShowDocument и прочие, предполагающие взаимодействие с пользователем, не поддерживаются. Доступна переменная Silent, всегда имеющая значение True при выполнении сервисом скрипта пользовательского приложения. Вы можете "развязать" поток выполнения вашего скрипта, например, следующим образом:
   Пример |
       1if Silent then
       2   Message "Работа пользовательского приложения завершилась с большим успехом."
       3 else
       4   MsgBox "Работа пользовательского приложения завершилась с большим успехом."
       5 end if
3. Доступна процедура Message с единственным строковым параметром. Вызов этой процедуры обеспечит передачу пользователю сообщения, заданного параметром, после завершения работы скрипта. В тексте сообщения можно использовать html-разметку:
   Пример |
       Message "Невозможно обработать. Обратитесь в <a href='http://domain.com/support'>техподдержку</a>."
Доступна процедура DebugString с единственным строковым параметром. Вызов этой процедуры обеспечит передачу сообщения, заданного параметром, в "Отладочный монитор". Механизм автоматической загрузки и регистрации зависимых модулей не поддерживается. Администратор сервера обязан самостоятельно обеспечить доступность COM-объектов, используемых в скриптах пользовательских приложений, с учетом разрядности редакции сервиса. Например, вы создали COM-сервер с программным идентификатором "MyProg.MyObj". Для использования библиотеки этого COM-сервера с пользовательскими приложениями ПП Парус 8 вы должны собрать модуль MyProg.DLL в 32-битной редакции, и загрузить его в зависимые модули пользовательского приложения, использующего вызов CreateObject("MyProg.MyObj") (подробности в документации ПП Парус 8). Для использования этого пользовательского приложения в сервисе вам необходимо: Для 32-разрядной редакции - разместить 32-разрядный модуль MyProg.DLL в каталоге, доступном для сервиса, и зарегистрировать COM-сервер вручную командой regsvr32 MyProg.DLL Для 64-разрядной редакции - собрать 64-разрядную редакцию модуля MyProg.DLL, разместить 64-разрядный модуль MyProg.DLL в каталоге, доступном для сервиса, и зарегистрировать COM-сервер вручную командой regsvr32 MyProg.DLL

5.3.4. Механизм детального контроля прав доступа
Механизм поддерживается в разделах "Первичные/Сводные очеты", "Формы отчетов" и "Контрагенты". Поддерживаются только предикаты, связанные со следующими объектами: Представление V_BLREPORTS для раздела "Первичные/Сводные очеты" Представление V_BLREPFORM для раздела "Формы отчетов" Представление V_AGNLIST для раздела "Контрагенты" Для корректной поддержки механизма ни одна из политик детального контроля прав доступа не должна быть назначена (непосредственно или через роль) пользователю - владельцу схемы данных.