Т.к. основной интерфейс 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.
доброе!
мой пример константы для подключения
====
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
—-
возможно, есть идеи, как победить?
(2)
Добрый! Первое, что бросается в глаза, то это:
В строке после IP сервера перко не указали слэш:
192.168.2.133/
Попробуйте, если не поможет, то дальше разруливать надо…
(2) Методом исключения можно попробовать закомментить в коде ОбновитьПодразделенияНаСервере();
все, разобрался. ibexpert показал, что этого поля нет вовсе.
(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»;