Интеграция PERCo-S-20 с 1С 8.3

Конфигурация 1С PERCo-S-20 Версия 3.9.2.0 предназначена для мониторинга входов/выходов сотрудников, зарегистрированных в СКУД PERCo-S-20, а также для отображения Организаций/Подразделений в виде дерева. На одном из внедрений пришлось столкнуться с интеграцией 1С ЗУП и СКУД PERCo-S-20.
Т.к. основной интерфейс PERCo-S-20 не давал больших возможностей для модификации данных перекинутых из ЗУПа, то пришлось пробежаться по структуре самой базы данных  PERCo (Firebird).
Одним из результатов изучения и явилось написание данной конфигурации.

Конфигурация состоит из Константы (хранится строка подключения) и единственной обработки.

При запуске 1С Предприятия необходимо в константе прописать строку подключения вида: "DRIVER={Firebird/InterBase(r) driver};DBNAME= TagertComp/:C:SCUD.FDB;UID=SYSDBA;PWD=masterkey;CHARSET=WIN1251;client=C:FBCLIENT.dll"
где:
TagertComp — имя сервера Перко,
C:SCUD.FDB — путь к базе на сервере,
также на компе пользователя д.б. установлен клиент Firebird (можно скачать с сайта). В данном случае client=C:FBCLIENT.dll
также д.б. установлен драйвер ODBC (инструкции установки описывать не буду)

След шаг-открытие обработки из подсистемы Перко.

При открытии заполняется таб часть "Сотрудники". В таб части "События (Входы/Выходы)" будут отображены проходы, зарегистрированные в Перко на текущую дату для активной строки Сотрудников.

В табличной части "События (Входы/Выходы)" есть возможность изменять/удалять выбранные записи.

Алгоритм работает с двумя таблицами PERCo (staff (Сотрудники) и TABEL_INTERMEDIADATE(Проходы). Также есть отображение Организаций/Подразделений в виде дерева (таблица subdiv_ref).

Прим: в   PERCo  есть ещё таблица проходов reg_events, но не нашел как используются её данные. По крайней мере в моём случае удалось обойтись таблицей TABEL_INTERMEDIADATE.

Разработано на платформе 1С 8.3.10.2580.

5 Comments

  1. dimaster

    доброе!

    мой пример константы для подключения

    ====

    DRIVER={Firebird/InterBase® driver};DBNAME= 192.168.2.133:D:Perco_S20SCD17K.FDB;UID=SYSDBA;PWD=masterkey;CHARSET=WIN1251;client=C:WindowsSystem32fbclient.dll

    ====

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

    проверил пользовательским DSN, добился подключения, потом уже в константу внес.

    если кому нужно — выложил как у меня.

    но, видимо структура бд не та, хотя тоже perco s-20

    ругается

    —-

    {Обработка.PERCo_S_20.Форма.Форма.Форма(44)}: Ошибка при вызове метода контекста (Execute)

    ВыборкаПодразделения = Соединение.Execute(ТекстЗапросаПодразделения);

    по причине:

    Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [ODBC Firebird Driver][Firebird]Dynamic SQL Error

    SQL error code = -206

    Column unknown

    P1.N_LEVEL

    At line 4, column 4

    —-

    возможно, есть идеи, как победить?

    Reply
  2. kindly73

    (2)

    Добрый! Первое, что бросается в глаза, то это:

    В строке после IP сервера перко не указали слэш:

    192.168.2.133/

    Попробуйте, если не поможет, то дальше разруливать надо…

    Reply
  3. kindly73

    (2) Методом исключения можно попробовать закомментить в коде ОбновитьПодразделенияНаСервере();

    Reply
  4. dimaster

    все, разобрался. ibexpert показал, что этого поля нет вовсе.

    Reply
  5. dimaster

    (3) вот как раз и написал строку подключения, что со слешом вообще ошибка была. этот пример верный. ругалось уже после установки соединения. почему-то в моей перке нет поля level в той таблице. заремарил, дальше в коде просто ноль присвоил.

    это выборка подразделений, уровень в иерархии.

    ТекстЗапросаПодразделения = »

    |select p1.ID_REF, p1.N_LEFT,

    |p1.N_RIGHT,

    //p1.N_LEVEL,

    | p1.DISPLAY_NAME

    | from subdiv_ref p1 order by N_LEFT»;

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *