Болид Орион Про. Запрос для добавления прохода через определенную точку доступа в указанное время.

По просьбе одного из читателей моих заметок я написал запрос к базе данных Болид Орион Про для добавления прохода через определенную точку доступа в указанное время. Сразу оговорюсь — у меня не установлен Орион Про и нет генератора отчетов, поэтому данный запрос пока находится на стадии тестирования. Есть еще один момент: есть в таблице pLogData столбец NumCom который по описанию Болида отвечает за «Номер записи по конкретному компьютеру». Я не знаю на сколько для генератора отчетов важно сопоставление этого столбца и столбца TimeVal. Ведь при внесении данных в таблицу позднее, получается что большее значение NumCom соответствует раннему значению времени. Так что у кого есть возможность потестить — милости просим. К таблице, кстати, привязан триггер, который запускает хранимую процедуру. Я мельком ее посмотрел. В ней вроде бы обрабатываются только проходы со статусом «Посетитель». Пишите в комментариях что у кого получилось. Есть мысль сделать еще один запрос: UPDATE строк на предмет исправления времени.


Теперь про сам запрос. В Орион Про данные по проходу заносятся в таблицу pLogData двумя строками с разными событиями : предоставление доступа и фактический проход, например через турникет или открытие двери (по геркону), поэтому нам нужно вставить две строки. В запросе объявлено несколько переменных, которые вам нужно сначала заполнить нужными значениями. Остальные данные по по столбцам, которые указаны в запросе не меняются для конкретной точки. Вам нужно проанализировать данные вашей базы Орион Про самостоятельно и вбить их в запрос ручками. Столбец GUID является ключом. Переменные GUID1 и GUID2 это уникальные значения. Для генерации GUID кодов можно использовать данный онлайн сервис : Online GUID Generator
Конечно можно оформить это все в качестве функции, но мне лень. Если у вас есть конкретные предложения — пишите контакты в комментариях, я свяжусь с вами.


USE [Lada*****Pozharka] -- укажите имя вашей базы данных
 
DECLARE @date_time VARCHAR(23), @GUID1 VARCHAR(40), @GUID2 VARCHAR(40), @card INT, @hozorgan INT
 
SET @date_time = '2019-03-31 16:15:25.000'  --укажите время прохода
SET @GUID1 = 'a507e987-9ef2-415f-b256-cbcac4bc51dc' -- укажите GUID для 1 запроса
SET @GUID2 = 'd4f7c12b-c0bd-457b-874b-6f9b5277730d' -- укажите GUID для 2 запроса
SET @card = 43 -- укажите ID карты хозоргана из таблицы pMark 
SET @hozorgan = 39  -- укажите ID хозоргана из таблицы pList 
 
INSERT INTO [dbo].[pLogData]
           ([TimeVal]
           ,[NumCom]
           ,[IDComp]
           ,[Par1]
           ,[Par2]
           ,[Par3]
           ,[Par4]
           ,[Event]
           ,[IndexKey]
           ,[RazdIndex]
           ,[HozOrgan]
           ,[HozGuest]
           ,[Remark]
           ,[DoorIndex]
           ,[Mode]
           ,[DeviceTime]
           ,[VEvent]
           ,[ZReserv]
           ,[ZoneIndex]
           ,[ReaderIndex]
           ,[Sign]
           ,[tpRzdIndex]
           ,[IndexZone]
           ,[tpIndex]
           ,[GUID]
   )
     VALUES
           (
           CONVERT( datetime, @date_time, 121)
           ,(SELECT MAX (NumCom) FROM pLogData) + 1
           ,1
           ,3
           ,127
           ,125
           ,1
           ,28
           ,58686721
           ,0
           ,@hozorgan
           ,1
           ,'1: Вход   КПП2,   Считыватель 1, Прибор 125'
           ,1
           ,1
           ,CONVERT( datetime, @date_time, 121)
           ,0
           ,@card
           ,1
           ,3966
           ,0
           ,0
           ,3966
           ,8
           ,@GUID1
   )
 
INSERT INTO [dbo].[pLogData]
           ([TimeVal]
           ,[NumCom]
           ,[IDComp]
           ,[Par1]
           ,[Par2]
           ,[Par3]
           ,[Par4]
           ,[Event]
           ,[IndexKey]
           ,[RazdIndex]
           ,[HozOrgan]
           ,[HozGuest]
           ,[Remark]
           ,[DoorIndex]
           ,[Mode]
           ,[DeviceTime]
           ,[VEvent]
           ,[ZReserv]
           ,[ZoneIndex]
           ,[ReaderIndex]
           ,[Sign]
           ,[tpRzdIndex]
           ,[IndexZone]
           ,[tpIndex]
           ,[GUID]
   )
     VALUES
           (
	   CONVERT( datetime, @date_time, 121) --GETDATE()
           ,(SELECT MAX (NumCom) FROM pLogData) + 1
           ,1
           ,3
           ,127
           ,125
           ,1
           ,32
           ,58686721
           ,0
           ,@hozorgan
           ,1
           ,'1: Вход   КПП2,   Считыватель 1, Прибор 125'
           ,1
           ,1
           ,CONVERT( datetime, @date_time, 121)
           ,0
           ,@card
           ,1
           ,3966
           ,0
           ,0
           ,3966
           ,8
           ,@GUID2
   )

Оцените пожалуйста статью:

ПечальноТак себеНе плохоХорошоОтличная статья! 3 оценок.
Загрузка...

18 Replies to “Болид Орион Про. Запрос для добавления прохода через определенную точку доступа в указанное время.

  1. Огромное спасибо за запрос, немного его модифицировал, используя
    SET @date_time = convert(varchar, getdate(), 20) — current time
    После этого загнал всё это в SQLCMD и поставил в шедулер на нужное время + произвольное время до 20мин — это даёт рандомное время прихода, что выглядит правдоподобно при составлении отчётов для кадровиков 🙂

  2. SET @date_time = convert(varchar, getdate(), 20) —время прохода
    SET @GUID1 = NEWID() — генерирует GUID для 1 запроса
    SET @GUID2 = NEWID() — генерирует GUID для 2 запроса
    Всё работает!

  3. Добрый день.
    Возможно ли путем SQL запросов управлять возможностью прохода отдельно взятого сотрудника через определенную точку в системе Болид? То есть мне надо, чтобы оператор с помощью программы (используя SQL запрос) запрещал или разрешал проход для отдельного пропуска.
    Спасибо.

    1. Думаю возможно. Залейте куда-нибудь дамп вашей базы, что-нибудь придумаем. Я пришлю вам письмо на почту, а вы мне в ответном пришлите ссылку на дамп.

  4. Здравствуйте, Александр. Как с вами связаться для консультации по базе Орион Про.
    Есть проблема с событиями по проходу сотрудников.

  5. Добрый день, подскажите как SQL-запросом получить список сотрудников находившихся на объекте с.. по.. (например вчера с 7 утра и до 8 вечера) со следующими данными: организация, подразделение, должность. В итоге хочу подцепить запрос в FastReport и там дальше уже сгруппировать по организациям и count-ом посчитать по должностям.
    Вид отчета примерно такой:
    11.01.2022 с 07.00 по 20.00
    ООО «Рога и Копыта» — водитель — 5 чел.
    ООО «Рога и Копыта» — экспедитор — 11 чел
    ИП «Васечкин» — грузчик — 18 чел.

  6. Спасибо автору за такую замечательную статью.
    Можете подсказать такой момент, если мене в ручную нужно изменить время прохода, при этом я знаю номер [HozOrgan] и [Remark], как составить такого рода запрос?

  7. Добрый день! Подскажите есть у кого-нибудь запрос по опоздавшим за месяц? Я не знаю sql, а задачу поставили не могу решить. Или по отдельным id? Заранее спасибо

Добавить комментарий