Получение данных из СКУД Сигур (бывш. Сфинкс)

Обмен - Обмен с другими системами

Обработка содержит функции получения данных из СКУД Сигур (бывш. Сфинкс) хранящиеся в MySQL. Пример позволяет получать информацию по сотрудникам в заданных отделах и по нахождению на рабочем месте. Обработка тестировалась на последней версии 1С (8.3.10.2561) и Win Server 2012 R2, использует только стандартные возможности платформы 1С + драйвер для СУБД MySQL.

Обработка содержит функции получения данных из СКУД Сигур (бывш. Сфинкс) хранящиеся в MySQL.

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

Обработка тестировалась на версии 1с (8.3.10.2561) и Win Server 2012 R2, использует только стандартные возможности платформы 1с + драйвер для СУБД MySQL. Создавалась для самописной конфигурации.

Внимание, если вам интересно получать информацию по номерам карточек отличных от стандарта Wiegand-26 (код карты вида XXX,YYYYY) - допишите процедуру "РасшифроватьКарту(Код)", на вход она получает HEX значение из БД. Если вам не интересна информация по номерам карт, то на остальном функционале это никак не отразиться. 

 
 Переменные

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

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

Конструктор и деструктор

Использование обработки всегда должно начинаться с вызова конструктора!
 

...
Сигур    = Обработки.Сигур.Создать();
Если Не Сигур.Конструктор(Драйвер) Тогда Возврат КонецЕсли;
...
Сигур.Деструктор();
...
 
 Листинг конструктора и деструктора

Основные функции:

ВыполнитьЗапрос()

ПолучитьСотрудников()

ПолучитьПосещаемость()

 
 Листинг основных функций

ЕСЛИ У ВАС ВОЗНИКЛИ ВОПРОСЫ, С УДОВОЛЬСТВИЕМ ОТВЕЧУ В КОММЕНТАРИЯХ ИЛИ ЛС

Скачать файлы

Наименование Файл Версия Размер
Обработка получения данных из СКУД Сигур (бывш. Сфинкс)
.epf 17,45Kb
19.10.17
7
.epf 0.1 17,45Kb 7 Скачать

См. также

Комментарии
1. Plague Fox (A1ice1990) 58 19.10.17 10:14 Сейчас в теме
Обращаю внимание, что публикация упорно съедает знаки "<>" - в техпотдержку написал, надеюсь исправят.
2. Plague Fox (A1ice1990) 58 19.10.17 15:02 Сейчас в теме
(1)Исправили, оперативненько :3
3. Plague Fox (A1ice1990) 58 23.10.17 17:34 Сейчас в теме
Вот пример для расшировки карт в запросе для W26:

SELECT
  NAME,
  if(substr(HEX(CODEKEY), 1, 2) = 18, 
    CONCAT(
      RIGHT(CONCAT('000', CONV(substr(HEX(CODEKEY), 3, 6), 16, 10) DIV 65536),3),
      ',',
      RIGHT(CONCAT('00000', CONV(substr(HEX(CODEKEY), 3, 6), 16, 10) % 65536), 5)), 
    NULL)
FROM
  `tc-db-main`.personal
WHERE
  TYPE = 'EMP'
  AND STATUS = 'AVAILABLE'
  AND NAME LIKE '%Фамилия%'
LIMIT 10
Показать
4. Plague Fox (A1ice1990) 58 30.10.17 12:07 Сейчас в теме
(3) А вот на примере карточки '076,07591' как "запихнуть" обратно:
CAST(UNHEX(LEFT(CONCAT('18', CONV((076*65536)+07591, 10, 16), '0000000000000000'), 16)) AS BINARY)


Может в будующем сделаю статью по загрузке данных в СКУД.

Но вообще добавление через MySQL запрос в целом выглядит следующим образом:


# Добавляем сотрудника
INS ERT INTO
  `tc-db-main`.personal
SET
  PARENT_ID=829, TYPE='EMP', NAME='<Имя>',
  DESCRIPTION='Добавлен напрямую в MySQL',
  POS='<Должность>', TABID='<Номер по табелю>', STATUS='AVAILABLE',
  CODEKEY=CAST(UNHEX(LEFT(CONCAT('18', CONV((076*65536)+07591, 10, 16), '0000000000000000'), 16)) AS BINARY),
  CODEKEY_DISP_FORMAT='W26', SOAA_KEY_STATUS='UPDATE_REQUIRED',
  CREATEDTIME='2017-10-30 10:54:23';

# Последний добавленный id
SEL ECT LAST_INSERT_ID() INTO @a;

# Добавляю разрешение на первую дверь
INS ERT INTO
  `tc-db-main`.devbindings
SET
  EMP_ID=@a,
  DEV_ID=1;

# Добавляю в режимы
INS ERT IN TO
  `tc-db-main`.rulebindings
SET
  PERSONAL_ID=@a,
  RULE_ID=1;

# Инициализирую синхронизацию бд
/*
# До этого было импортирован в бд следующий файл:
USE `TC-DB-MAIN`;
UPD ATE PARAMI SE T PARAMVALUE=1 WHERE NAME='SYNCDB_REQUEST_ENABLED';
 */
UPDATE `TC-DB-MAIN`.PARAMI SE T PARAMVALUE=1 WHERE NAME='SYNCDB_REQUEST';

#Смотрим результат
SELE CT
  *
FR OM
  `tc-db-main`.personal AS P
WHERE
  Name like '%<Имя>%'
  AND STATUS = 'AVAILABLE'
LIMIT 100

Показать


.
Оставьте свое сообщение