//------------------------------------------------------------------------------------------------------------------------------------
Состав комплекта
PopUp1C.exe - Программа-клиент
PopUp1C.ini - файл настроек клиента (редактируется блокнотом). Должен иметь то же название, что и исполняемый файл клиента.
PopUp1C.html - Файл общего шаблона для всех окон программы. При выводе очередных данных в этом файле строка "PopUp1C Content" заменяется на содержание.
default.css - Файл html стилей, используемых при выводе страниц клиента.
ReadMe.html - Файл этого описания.
IMG\*.png - Картинки, используемые системой.
SCR\*.png - скриншоты клиента
1Cv8.dt - Демонстрационная база данных 1С:Предприятие 8.2 с общим модулем PopUp1C, который наглядно демонстрирует возможности системы.
//------------------------------------------------------------------------------------------------------------------------------------
Быстрый старт
- Восстановить из 1Cv8.dt базу данных 1С:Предприятие (можно 8.2, а можно и 8.3, убрав все ограничения)
- Открыть блокнотом файл PopUp1C.ini и в нем прописать:
Путь к развернутой базе данных 1С (имя пользователя и пароль не менять):
;Строка подключения к базе данных
DB="File='F:\c++\PopUp1C\Db';usr='Иванов';pwd='';"
Тип Com, используемый в Вашей системе. Для 8.2 это будет "V82.Application". Для 8.3 это будет "V83.Application".
;COM объект
Application=V82.Application
- Запустить клиента и убедиться, что он не выдает в своем окне ошибок.
- После появления клиентсвого окна с основным меню все готово, можно попробовать различные режимы работы.
//------------------------------------------------------------------------------------------------------------------------------------
Алгоритм работы
По-умолчанию, клиент открывает и постоянно держит Com соединение с базой данных. Но, если период опроса выставить довольно большой, то можно указать, что соединяться нужно каждый раз при опросе базы данных (PermanentConnection=0)
[CONFIG]
;Сохранять постоянное соединение
PermanentConnection=1
Клиент после соединения вызывает в 1С глобальную функцию, указанную в настройках ini файла:
[INDEX]
;Первоначально вызываемая глобальная функция в 1С PopUpIndex(Параметр1="") Экспорт
IndexFunction = PopUpIndex
;В 1С глобальная функция получит это значение:
Parameter1=
Полученный из функции html код помещает в шаблон PopUp1C.html на место строки "PopUp1C Content" и получившийся результат выводит в свой экран.
Если пользователь свернул клиента в системный трей, но текст с последнего опроса этой функции изменился - окно клиента автоматически всплывает поверх всех приложений Windows.
Значок в системном трее имеет контекстное меню, которое позволяет управлять видимостью клиента. При выборе пункта "Update" окно клиента также показывается, если было скрыто.
По левой кнопке на значке клиента - просто показывается.
Во время работы пользователь может переходить по ссылкам или выполнять какие-либо действия в окне клиента, но, если при очередном запросе к базе данных html код от текущей функции изменится - окно клиента будет полностью обновлено!
//------------------------------------------------------------------------------------------------------------------------------------
Особенности работы и написания html кода для страниц клиента
Клиент помнит имя текущей глобальной функции 1С:Предприятия, у которой он запрашивает данные. Эта функция в процессе перехода по ссылкам и страницам может меняться.
Существует несколько перехватываемых клиентом управляющих ID объектов:
<a href="" ID="Home">Home</a> - отправляет пользователя на начальную функцию, описанную в [INDEX]IndexFunction и в дальнейшем вызывает её, пока не будет переопределения.
<a href="" ID="Update">Update</a> - запрашивает данные у текущей функции, не дожидаясь срабатывания таймера. Таймер [MAIN]TimeUpdate запускается сначала.
<a href="" ID="Cancel">Cancel</a> - cкрывает окно клиента, оставляя его в системном трее.
<a href="" ID="Exit">Exit</a> - завершает работу клиента.
<a href="" ID="Page" Name="FunctionName">Page</a> - запрашивает глобальную функцию 1С с именем FunctionName, делает её текущей и в дальнейшем вызывает её, пока не будет переопределения.
<a href="" ID="Function" Name="FunctionName">Function</a> - запрашивает глобальную функцию 1С с именем FunctionName, делает её текущей и в дальнейшем вызывает её, пока не будет переопределения. Не отличается от предыдущего.
<a href="" ID="Procedure" Name="ProcedureName">Procedure</a> - вызывает глобальную процедуру 1С с именем ProcedureName (но не запоминает её) после чего обновляется, вызывая текущую функцию.
<a href="" ID="Command" Name="CommandString">Command</a> - выполняет командную строку системы при помощи API ShellExecuteEx. В CommandString может быть даже любой URL - откроется браузер, любое имя файла с параметрами, просто командная строка.
Объектов с одинаковыми ID на одной странице может быть сколько угодно.
//------------------------------------------------------------------------------------------------------------------------------------
Передача данных в 1С:Предприятие
При вызове ID "Page", "Function" и "Procedure" в функции и процедуры 1С передается один параметр. Этот параметр - строка из всех управляемых элементов текущей страницы клиента. В общем виде что-то типа:
ИмяЭлемента ТипЭлемента ТэгЭлемента ЗначениеЭлемента
Doc000000001 checkbox <INPUT type=checkbox border=0 name=Doc000000001>
Doc000000002 checkbox <INPUT CHECKED type=checkbox border=0 name=Doc000000002> 1
Doc000000003 checkbox <INPUT type=checkbox border=0 name=Doc000000003>
accept button <INPUT id=Function type=button value=OK name=accept> OK
Строки разделены символом перевода строк, а колонки - табуляцией. Всего колонок четыре. В демонстрационной базе есть функция, которая преобразует эту строку в таблицу значений:
ПараметрВТаблицу(Знач Параметр, МинимумКолонок=0) Экспорт
После чего с этими данными можно работать как угодно
//------------------------------------------------------------------------------------------------------------------------------------
Известные проблемы
По непонятным пока причинам, при соединении с базами данных, запускаемыми в режиме управляемого приложения свойство соединения Visible установлено в TRUE, что приводит к появлению окна 1С. После установки соединения, мы его, конечно, спрятали, но на долю секунды оно все-равно появляется ;о((( Устанавливать свойство до соединения бесполезно. С обычными приложениями такого не наблюдается.
//------------------------------------------------------------------------------------------------------------------------------------
29.01.2015
Обновление. Клиент 1.1.1.2. Конфигурация демобазы изменена к лучшему.
- V8*.Connector без запуска экземпляра самого 1С-приложения
- Возможность включить JavaScript в окне
- Начало блока быстрого анализа OnLine/OffLine
- Добавлены параметры ini-файла настроек
- Нормальная работа в клиент-серверном режиме
- Компиляция проекта в режиме, не требующем внешних библиотек
- Исправлены ошибки по утечке памяти
- Обработка для отладки вызываемых функций
- Мелкие изменения.
//------------------------------------------------------------------------------------------------------------------------------------
18.02.2015
- Добавлена возможность работы через HttpСервис
- HttpСервис есть в демобазе. На самом деле выполняет роль "заглушки", вызывая глобальные функции
- Встроенная интерактивная авторизация
- Расширено контектное/систрейное меню
- Возможность включить JavaScript в основном окне
- Запоминает последний используемый раздел
- Добавлен отдельный таймер периода подключения
- Небольшие изменения
- Пароль Иванова 123. HttpСервис с логином, но без пароля, работать не будет