Сейчас предлагаются различные готовые модули для работы PerCo с 1С, как, например, вот этот http://www.perco.ru/products/sistemy-kontrolya-dostupa/sistema-kontrolya-dostupa-s-20/programmnoe-obespechenie/setevoe/1s-modul-uchet-rabochego-vremeni/. Но не всегда решение простых задач требует установки дополнительного модуля. Рассмотрим подключение для создания и изменения карт сотрудников.
Допустим перед нами стоит задача подключиться и создать новую карту (пропуск) для сотрудника. Для этого нам нужно подключится через СОМ объект к базе:
БД = Новый COMОбъект("ADODB.Connection");
БД.Provider = "LCPI.IBProvider";
БД.ConnectionString = стрПодключения;
Попытка
БД.Open();
Исключение
Сообщить("Не удалось подключиться к БД PerCo. " + ОписаниеОшибки());
КонецПопытки;
Соответственно необходимо, что бы был установлен IBProvider.
В строке подключения должно быть что-то такое:
стрПодключения = "data source = ПутьКФайлу:\Файл.fdb; ctype = WIN1251; User ID = sysdba; Password = masterkey; auto_commit = true";
Затем с помощью запросов обращаемся к базе и оперируем данными. Рассмотрим добавление карты в базу, как одно из самых простых.
ЗапросНаДобавление = Новый COMОбъект("ADODB.Recordset");
ЗапросНаДобавление.ActiveConnection = БД;
ТекстЗапросаНаДобавление = "Insert INTO STAFF (ID_STAFF, LAST_NAME, FIRST_NAME, MIDDLE_NAME, TABEL_ID, DATE_BEGIN, VALID, TEMPORARY, DELETED) " +
"VALUES (" + СокрЛП(ID_STAFF) + ", '" + Фамилия + "', '" + Имя + "', '" + Отчество + "', '" + СокрЛП(ТабельныйНомер) + "', '" + ДатаБезВремени + "' , 1, 0, 0)";
ЗапросНаДобавление.Open(ТекстЗапросаНаДобавление);
ЗапросНаДобавление.Close();
ЗапросНаДобавлениеКарты = Новый COMОбъект("ADODB.Recordset");
ЗапросНаДобавлениеКарты.ActiveConnection = БД;
ТекстЗапросаНаДобавлениеКарты = "Insert INTO STAFF_CARDS (ID_CARD, STAFF_ID, VALID, DATE_BEGIN, DATE_END, TEMPORARY, DOCUMENTS_ID, HISTORY_DATE, PROHIBIT, IDENTIFIER, TYPE_IDENTIFIER, IDENTIFIER_TRANSFORMED) " +
"values (" + СокрЛП(ID_CARD) + ", " + ID_STAFF + ", 1, '" + ДатаНачалаДействия + "', '" + ДатаОкончанияДействия + "', 0, 0, '" + ТекущаяДата() + "', 0, '" + НомерКарты + "', 0, '" + НомерКарты + "' )";
ЗапросНаДобавлениеКарты.Open(ТекстЗапросаНаДобавлениеКарты);
ЗапросНаДобавлениеКарты.Close();
Не забывайте, что мало добавить пользователя и карту, необходимо назначить ему заданные права и права доступа к контроллерам.
При замене пропуска так же нужно заменять права, при изъятии карты удаляем карту и ее права, а также помещаем карту в стоп-лист с описанием причины изъятия. В работе Вам очень пригодится программа IBExpert. В ней очень удобно просматривать таблицы, результаты своих действий, а также можно посмотреть стандартные процедуры.
В моем случае я создала отдельный документ с 4-мя видами операций (Первичная выдача пропуска, замена пропуска, изменение прав и изъятие карты) и два регистра сведений: в один попадают строки подключения для разных организаций, в другой пишу права доступа. Как видно на скриншоте, при создании документа загружается полное дерево прав доступа и контроллеры к ним, в этом дереве пользователь может галочками расставлять права доступа.