Получение данных из СКУД Сигур (бывш. Сфинкс)
Обработка содержит функции получения данных из СКУД Сигур (бывш. Сфинкс) хранящиеся в MySQL.
Пример позволяет получать информацию по сотрудникам в заданных отделах и по нахождению на рабочем месте.
Обработка тестировалась на последней версии 1С (8.3.10.2561) и Win Server 2012 R2, использует только стандартные возможности платформы 1С + драйвер для СУБД MySQL.
Пример позволяет получать информацию по сотрудникам в заданных отделах и по нахождению на рабочем месте.
Обработка тестировалась на последней версии 1С (8.3.10.2561) и Win Server 2012 R2, использует только стандартные возможности платформы 1С + драйвер для СУБД MySQL.
Комментарии
Избранное
Подписка
Сортировка:
Древо
Вот пример для расшировки карт в запросе для 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
Показать
(3) А вот на примере карточки '076,07591' как "запихнуть" обратно:
Может в будующем сделаю статью по загрузке данных в СКУД.
Но вообще добавление через MySQL запрос в целом выглядит следующим образом:
.
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
Показать.
(5)
Выгрузку фото сделать несложно. Кроме вставки в таблицу PERSONAL надо еще добавлять строку в таблицу PHOTO, колонки:
ID - ID объекта. =PERSONAL.ID.
PREVIEW_RASTER - Уменьшенная копия фотографии в формате JPEG в цветовом пространстве RGB *1.
HIRES_RASTER - Полноразмерная фотография в формате JPEG в цветовом пространстве RGB *1.
TS - «Версия фотографии». Целое число, которое меняется тогда и только тогда, когда меняется сама фотография (поля _RASTER). Может быть, например, хешем от изображения или временем его создания. Используется в работе кеша фотографии на стороне клиентских мест, а также кеша биометрических дескрипторов, которые строятся системой автоматически для добавляемых или изменяемых фотографий.
*1 Уменьшенная копия фотографии используется в интерфейсе системы там, где область ее отображения минимальна. Рекомендуется в качестве уменьшенной копии записывать версию фотографии, не превышающую размера 256x256 пикселей, в качестве полноразмерной — не превышающую размера 1920x1080 пикселей.
Допускается записывать в качестве уменьшенной копии тоже самое, что и в качестве полноразмерной, в т.ч. изображение достаточно большого размера.
Выгрузку фото сделать несложно. Кроме вставки в таблицу PERSONAL надо еще добавлять строку в таблицу PHOTO, колонки:
ID - ID объекта. =PERSONAL.ID.
PREVIEW_RASTER - Уменьшенная копия фотографии в формате JPEG в цветовом пространстве RGB *1.
HIRES_RASTER - Полноразмерная фотография в формате JPEG в цветовом пространстве RGB *1.
TS - «Версия фотографии». Целое число, которое меняется тогда и только тогда, когда меняется сама фотография (поля _RASTER). Может быть, например, хешем от изображения или временем его создания. Используется в работе кеша фотографии на стороне клиентских мест, а также кеша биометрических дескрипторов, которые строятся системой автоматически для добавляемых или изменяемых фотографий.
*1 Уменьшенная копия фотографии используется в интерфейсе системы там, где область ее отображения минимальна. Рекомендуется в качестве уменьшенной копии записывать версию фотографии, не превышающую размера 256x256 пикселей, в качестве полноразмерной — не превышающую размера 1920x1080 пикселей.
Допускается записывать в качестве уменьшенной копии тоже самое, что и в качестве полноразмерной, в т.ч. изображение достаточно большого размера.
Просто достать все карты за период в формате 000,0000. время входа, выхода. справочник персонал не ведется.
Знаем только номер карты. пример 000,12345.
Хотим получить данные по этой карте.
например запрос
select id,logtime,devhint,logdata,ord(substr(logdata,5,2)) as dir from logs where substr(logdata,1,2)=0xFE07
известен только номер xxx,12345
Знаем только номер карты. пример 000,12345.
Хотим получить данные по этой карте.
например запрос
select id,logtime,devhint,logdata,ord(substr(logdata,5,2)) as dir from logs where substr(logdata,1,2)=0xFE07
известен только номер xxx,12345
if(substr(HEX(logdata), 1, 2) = 18,
CONCAT(
RIGHT(CONCAT('000', CONV(substr(HEX(logdata), 3, 6), 16, 10) DIV 65536),3),
',',
RIGHT(CONCAT('00000', CONV(substr(HEX(logdata), 3, 6), 16, 10) % 65536), 5)),
NULL)
а что данное условие делает? substr(HEX(logdata), 1, 2) = 18
CONCAT(
RIGHT(CONCAT('000', CONV(substr(HEX(logdata), 3, 6), 16, 10) DIV 65536),3),
',',
RIGHT(CONCAT('00000', CONV(substr(HEX(logdata), 3, 6), 16, 10) % 65536), 5)),
NULL)
а что данное условие делает? substr(HEX(logdata), 1, 2) = 18
(12)
Насколько помню, проверяет является ли карта в формате Wiegand-26, в противном случае возвращает null, но это было давно и не правда.
Вот как расшифровать в mysql запросе:
Смысл тут - взять кусочек HEX, превратить его в число. Поделить на 65536 и записать в формате 000
Затем взять еще кусочек HEX, снова в число, получить остаток от деления на 65536 и записать в формате 00000
Затем объединить это дело в 000,00000
Вот так функцией 1с:
Насколько помню, проверяет является ли карта в формате Wiegand-26, в противном случае возвращает null, но это было давно и не правда.
Вот как расшифровать в mysql запросе:
SEL ECT
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)
FR OM
`tc-db-main`.personal
WHERE
TYPE = 'EMP'
AND STATUS = 'AVAILABLE'
AND NAME LIKE '%Фамилия%'
LIMIT 10
ПоказатьСмысл тут - взять кусочек HEX, превратить его в число. Поделить на 65536 и записать в формате 000
Затем взять еще кусочек HEX, снова в число, получить остаток от деления на 65536 и записать в формате 00000
Затем объединить это дело в 000,00000
Вот так функцией 1с:
// Алгоритм дан только для карт Wiegand-26
Функция РасшифроватьКарту(Знач Код)
Если ТипЗнч(Код) = Тип("Строка")
И Лев(Код, 2) = "18" Тогда // Wiegand-26
Код = ЛюбаяДес(Сред(Код, 3, 6), 16);
Возврат СтрШаблон("%1,%2",
Формат(Цел(Код/65536), "ЧЦ=3; ЧВН=; ЧГ=0"),
Формат(Код%65536, "ЧЦ=5; ЧВН=; ЧГ=0"));
Иначе
Возврат Неопределено;
КонецЕсли;
КонецФункции // РасшифроватьКарту()
ПоказатьФункция СтрРазделить(Строка, Разделитель, ВключатьПустые = Ложь)
МассивЗначений = Новый Массив();
Символ = Найти(Строка, Разделитель);
Пока Символ > 0 Цикл
Если ВключатьПустые или (СтрДлина(Лев(Строка, Символ - 1)) > 0) Тогда
МассивЗначений.Добавить(Лев(Строка, Символ - 1));
КонецЕсли;
Строка = Прав(Строка, СтрДлина(Строка) - Символ);
Символ = Найти(Строка, Разделитель);
КонецЦикла;
Если (ВключатьПустые или СтрДлина(Строка) > 0) Тогда
МассивЗначений.Добавить(Строка);
КонецЕсли;
Возврат МассивЗначений;
КонецФункции
Показать
Здравствуйте. Подскажите, пожалуйста, где хранятся номера пропусков, если пропуск не один? В таблице personal хранится только одна запись по сотруднику. Соответственно, одна запись CODEKEY и одно значений пропуска. В самом приложении СИГУР вводим по сотруднику несколько пропусков. Как найти номер второго пропуска?
(32)
1) переводите 0008599310 в двоичную форму, получается:
100000110011011100001110
2) дополняете слева нулями до 24 бит:
100000110011011100001110 (в данном случае их и так было 24)
3) разбиваете по-середине на две части по 12 бит:
100000110011 011100001110
4) считаете кол-во единиц в левой и правых частях:
100000110011 => N1=5
011100001110 => N2=6
5) C1 = N1%2, т.е. остаток от деления N1 на 2.
C1 = 1
6) C2 = (N2+1)%2, т.е. остаток от деления (N2+1) на 2.
C2 = 1
7) добававляете C1 слева двоичного представления, C2 - справа:
1 100000110011 011100001110 1
8) воспринимаете результат как 26-и битное целое, переводите его в hex:
3066E1D
9) дополняете слева нулями до 12 знаков:
000003066E1D
Очевидно же все.
1) переводите 0008599310 в двоичную форму, получается:
100000110011011100001110
2) дополняете слева нулями до 24 бит:
100000110011011100001110 (в данном случае их и так было 24)
3) разбиваете по-середине на две части по 12 бит:
100000110011 011100001110
4) считаете кол-во единиц в левой и правых частях:
100000110011 => N1=5
011100001110 => N2=6
5) C1 = N1%2, т.е. остаток от деления N1 на 2.
C1 = 1
6) C2 = (N2+1)%2, т.е. остаток от деления (N2+1) на 2.
C2 = 1
7) добававляете C1 слева двоичного представления, C2 - справа:
1 100000110011 011100001110 1
8) воспринимаете результат как 26-и битное целое, переводите его в hex:
3066E1D
9) дополняете слева нулями до 12 знаков:
000003066E1D
Очевидно же все.
Спасибо за ответ. Пытаюсь собрать обработку в управляемых формах на основе выложенного кода но есть проблемы с некоторыми данными, подскажите пожалуйста, чего не хватает. Заранее благодарен. Извините если вам покажется абсурдным этот вопрос, но мне очень нужен ваш ответ.
Вот ошибки;
Обработка.Сигур.Форма.Форма.Форма(118,3)}: Переменная не определена (Connection)
<<?>>Connection.Close(); (Проверка: Сервер)
{Обработка.Сигур.Форма.Форма.Форма(132,62)}: Переменная не определена (Connection)
Подключение = ТипЗнч(Recordset) = Тип("COMОбъект") И ТипЗнч(<<?>>Connection) = Тип("COMОбъект"); (Проверка: Сервер)
{Обработка.Сигур.Форма.Форма.Форма(155,31)}: Переменная не определена (Connection)
Recordset.Open(ТекстЗапроса, <<?>>Connection, 1); (Проверка: Сервер)
{Обработка.Сигур.Форма.Форма.Форма(221,31)}: Переменная не определена (Connection)
Recordset.Open(ТекстЗапроса, <<?>>Connection, 1); (Проверка: Сервер)
{Обработка.Сигур.Форма.Форма.Форма(394,31)}: Переменная не определена (Connection)
Recordset.Open(ТекстЗапроса, <<?>>Connection, 1); (Проверка: Сервер)
{Обработка.Сигур.Форма.Форма.Форма(132,23)}: Переменная не определена (Recordset)
Подключение = ТипЗнч(<<?>>Recordset) = Тип("COMОбъект") И ТипЗнч(Connection) = Тип("COMОбъект"); (Проверка: Сервер)
{Обработка.Сигур.Форма.Форма.Форма(155,2)}: Переменная не определена (Recordset)
<<?>>Recordset.Open(ТекстЗапроса, Connection, 1); (Проверка: Сервер)
{Обработка.Сигур.Форма.Форма.Форма(221,2)}: Переменная не определена (Recordset)
<<?>>Recordset.Open(ТекстЗапроса, Connection, 1); (Проверка: Сервер)
{Обработка.Сигур.Форма.Форма.Форма(394,2)}: Переменная не определена (Recordset)
<<?>>Recordset.Open(ТекстЗапроса, Connection, 1); (Проверка: Сервер)
{Обработка.Сигур.Форма.Форма.Форма(219,11)}: Переменная не определена (Limit)
|LIMIT "+<<?>>Limit+" (Проверка: Сервер)
{Обработка.Сигур.Форма.Форма.Форма(392,11)}: Переменная не определена (Limit)
|LIMIT "+<<?>>Limit+" (Проверка: Сервер)
{Обработка.Сигур.Форма.Форма.Форма(440,6)}: Переменная не определена (Соединение)
Если <<?>>Соединение.Конструктор("MySQL ODBC 5.3 ANSI Driver") (Проверка: Сервер)
{Обработка.Сигур.Форма.Форма.Форма(441,3)}: Переменная не определена (Соединение)
И <<?>>Соединение.Деструктор() Тогда (Проверка: Сервер)
{Обработка.Сигур.Форма.Форма.Форма(451,7)}: Переменная не определена (Соединение)
ТЗ = <<?>>Соединение.ПолучитьСотрудников("Gebau", "1"); (Проверка: Сервер)
{Обработка.Сигур.Форма.Форма.Форма(461,13)}: Переменная не определена (Соединение)
Структура = <<?>>Соединение.ПолучитьПосещаемость( Период.ДатаНачала, (Проверка: Сервер)
{Обработка.Сигур.Форма.Форма.Форма(450,19)}: Переменная не определена (Драйвер)
Сигур.Конструктор(<<?>>Драйвер); (Проверка: Сервер)
{Обработка.Сигур.Форма.Форма.Форма(457,19)}: Переменная не определена (Драйвер)
Сигур.Конструктор(<<?>>Драйвер, , , , , , Структура); (Проверка: Сервер)
{Обработка.Сигур.Форма.Форма.Форма(472,19)}: Переменная не определена (Драйвер)
Сигур.Конструктор(<<?>>Драйвер); (Проверка: Сервер)
{Обработка.Сигур.Форма.Форма.Форма(457,38)}: Переменная не определена (Структура)
Сигур.Конструктор(Драйвер, , , , , , <<?>>Структура); (Проверка: Сервер)
{Обработка.Сигур.Форма.Форма.Форма(466,11)}: Переменная не определена (Структура)
ТабДок = <<?>>Структура.ТабДок; (Проверка: Сервер)
{Обработка.Сигур.Форма.Форма.Форма(461,46)}: Переменная не определена (Период)
Структура = Соединение.ПолучитьПосещаемость( <<?>>Период.ДатаНачала, (Проверка: Сервер)
{Обработка.Сигур.Форма.Форма.Форма(462,13)}: Переменная не определена (Период)
<<?>>Период.ДатаОкончания, (Проверка: Сервер)
{Обработка.Сигур.Форма.Форма.Форма(464,13)}: Переменная не определена (Сотрудник)
<<?>>Сотрудник, (Проверка: Сервер)
{Обработка.Сигур.Форма.Форма.Форма(156,7)}: Процедура или функция с указанным именем не определена (НаборЗаписейВТаблицу)
ТЗ = <<?>>НаборЗаписейВТаблицу(); (Проверка: Сервер)
{Обработка.Сигур.Форма.Форма.Форма(222,7)}: Процедура или функция с указанным именем не определена (НаборЗаписейВТаблицу)
ТЗ = <<?>>НаборЗаписейВТаблицу(); (Проверка: Сервер)
{Обработка.Сигур.Форма.Форма.Форма(395,7)}: Процедура или функция с указанным именем не определена (НаборЗаписейВТаблицу)
ТЗ = <<?>>НаборЗаписейВТаблицу(); (Проверка: Сервер)
{Обработка.Сигур.Форма.Форма.Форма(230,13)}: Процедура или функция с указанным именем не определена (КонкатенацияМассивов)
Отделы = <<?>>КонкатенацияМассивов(Новый Структура("Отделы,Строки", Отделы, Строки), Истина); (Проверка: Сервер)
{Обработка.Сигур.Форма.Форма.Форма(238,14)}: Процедура или функция с указанным именем не определена (КонкатенацияМассивов)
Отделы = <<?>>КонкатенацияМассивов(Новый Структура("Отделы,Строки", Отделы, Строки), Истина); (Проверка: Сервер)
{Обработка.Сигур.Форма.Форма.Форма(260,3)}: Процедура или функция с указанным именем не определена (РасшифроватьКарту)
<<?>>РасшифроватьКарту(Строка.CODEKEY); (Проверка: Сервер)
{Обработка.Сигур.Форма.Форма.Форма(399,3)}: Процедура или функция с указанным именем не определена (РасшифроватьКарту)
<<?>>РасшифроватьКарту(Строка.CODEKEY); (Проверка: Сервер)
{Обработка.Сигур.Форма.Форма.Форма(400,3)}: Процедура или функция с указанным именем не определена (РасшифроватьКарту)
<<?>>РасшифроватьКарту(Строка.EventCodeKey); (Проверка: Сервер)
{Обработка.Сигур.Форма.Форма.Форма(261,22)}: Процедура или функция с указанным именем не определена (ПолучитьСотрудникаПоТабелю)
Строка.Сотрудник = <<?>>ПолучитьСотрудникаПоТабелю(Строка.TABID); (Проверка: Сервер)
{Обработка.Сигур.Форма.Форма.Форма(421,24)}: Процедура или функция с указанным именем не определена (ПолучитьСотрудникаПоТабелю)
Работник.Сотрудник = <<?>>ПолучитьСотрудникаПоТабелю(Работник.Табель); (Проверка: Сервер)
{Обработка.Сигур.Форма.Форма.Форма(270,2)}: Процедура или функция с указанным именем не определена (РусифицироватьКолонкиТаблицы)
<<?>>РусифицироватьКолонкиТаблицы(ТЗ); (Проверка: Сервер)
{Обработка.Сигур.Форма.Форма.Форма(404,2)}: Процедура или функция с указанным именем не определена (РусифицироватьКолонкиТаблицы)
<<?>>РусифицироватьКолонкиТаблицы(ТЗ); (Проверка: Сервер)
{Обработка.Сигур.Форма.Форма.Форма(422,19)}: Процедура или функция с указанным именем не определена (РассчитатьПосещаемость)
Посещаемость = <<?>>РассчитатьПосещаемость(вДанные, ДатаНачала, ДатаОкончания); (Проверка: Сервер)
{Обработка.Сигур.Форма.Форма.Форма(429,11)}: Процедура или функция с указанным именем не определена (СформироватьТабДокПосещаемости)
ТабДок = <<?>>СформироватьТабДокПосещаемости(МассивРаботников, ДатаНачала, ДатаОкончания); (Проверка: Сервер)
{Обработка.Сигур.Форма.Форма.Форма(439,9)}: Переменная не определена (Обработки)
Сигур = <<?>>Обработки.Сигур.Создать(); (Проверка: Тонкий клиент)
{Обработка.Сигур.Форма.Форма.Форма(449,9)}: Переменная не определена (Обработки)
Сигур = <<?>>Обработки.Сигур.Создать(); (Проверка: Тонкий клиент)
{Обработка.Сигур.Форма.Форма.Форма(456,10)}: Переменная не определена (Обработки)
Сигур = <<?>>Обработки.Сигур.Создать(); (Проверка: Тонкий клиент)
{Обработка.Сигур.Форма.Форма.Форма(471,9)}: Переменная не определена (Обработки)
Сигур = <<?>>Обработки.Сигур.Создать(); (Проверка: Тонкий клиент)
{Обработка.Сигур.Форма.Форма.Форма(440,6)}: Переменная не определена (Соединение)
Если <<?>>Соединение.Конструктор("MySQL ODBC 5.3 ANSI Driver") (Проверка: Тонкий клиент)
{Обработка.Сигур.Форма.Форма.Форма(441,3)}: Переменная не определена (Соединение)
И <<?>>Соединение.Деструктор() Тогда (Проверка: Тонкий клиент)
{Обработка.Сигур.Форма.Форма.Форма(451,7)}: Переменная не определена (Соединение)
ТЗ = <<?>>Соединение.ПолучитьСотрудников("Gebau", "1"); (Проверка: Тонкий клиент)
{Обработка.Сигур.Форма.Форма.Форма(461,13)}: Переменная не определена (Соединение)
Структура = <<?>>Соединение.ПолучитьПосещаемость( Период.ДатаНачала, (Проверка: Тонкий клиент)
{Обработка.Сигур.Форма.Форма.Форма(450,19)}: Переменная не определена (Драйвер)
Сигур.Конструктор(<<?>>Драйвер); (Проверка: Тонкий клиент)
{Обработка.Сигур.Форма.Форма.Форма(457,19)}: Переменная не определена (Драйвер)
Сигур.Конструктор(<<?>>Драйвер, , , , , , Структура); (Проверка: Тонкий клиент)
{Обработка.Сигур.Форма.Форма.Форма(472,19)}: Переменная не определена (Драйвер)
Сигур.Конструктор(<<?>>Драйвер); (Проверка: Тонкий клиент)
{Обработка.Сигур.Форма.Форма.Форма(457,38)}: Переменная не определена (Структура)
Сигур.Конструктор(Драйвер, , , , , , <<?>>Структура); (Проверка: Тонкий клиент)
{Обработка.Сигур.Форма.Форма.Форма(466,11)}: Переменная не определена (Структура)
ТабДок = <<?>>Структура.ТабДок; (Проверка: Тонкий клиент)
{Обработка.Сигур.Форма.Форма.Форма(461,46)}: Переменная не определена (Период)
Структура = Соединение.ПолучитьПосещаемость( <<?>>Период.ДатаНачала, (Проверка: Тонкий клиент)
{Обработка.Сигур.Форма.Форма.Форма(462,13)}: Переменная не определена (Период)
<<?>>Период.ДатаОкончания, (Проверка: Тонкий клиент)
{Обработка.Сигур.Форма.Форма.Форма(464,13)}: Переменная не определена (Сотрудник)
<<?>>Сотрудник, (Проверка: Тонкий клиент)
Вот ошибки;
Обработка.Сигур.Форма.Форма.Форма(118,3)}: Переменная не определена (Connection)
<<?>>Connection.Close(); (Проверка: Сервер)
{Обработка.Сигур.Форма.Форма.Форма(132,62)}: Переменная не определена (Connection)
Подключение = ТипЗнч(Recordset) = Тип("COMОбъект") И ТипЗнч(<<?>>Connection) = Тип("COMОбъект"); (Проверка: Сервер)
{Обработка.Сигур.Форма.Форма.Форма(155,31)}: Переменная не определена (Connection)
Recordset.Open(ТекстЗапроса, <<?>>Connection, 1); (Проверка: Сервер)
{Обработка.Сигур.Форма.Форма.Форма(221,31)}: Переменная не определена (Connection)
Recordset.Open(ТекстЗапроса, <<?>>Connection, 1); (Проверка: Сервер)
{Обработка.Сигур.Форма.Форма.Форма(394,31)}: Переменная не определена (Connection)
Recordset.Open(ТекстЗапроса, <<?>>Connection, 1); (Проверка: Сервер)
{Обработка.Сигур.Форма.Форма.Форма(132,23)}: Переменная не определена (Recordset)
Подключение = ТипЗнч(<<?>>Recordset) = Тип("COMОбъект") И ТипЗнч(Connection) = Тип("COMОбъект"); (Проверка: Сервер)
{Обработка.Сигур.Форма.Форма.Форма(155,2)}: Переменная не определена (Recordset)
<<?>>Recordset.Open(ТекстЗапроса, Connection, 1); (Проверка: Сервер)
{Обработка.Сигур.Форма.Форма.Форма(221,2)}: Переменная не определена (Recordset)
<<?>>Recordset.Open(ТекстЗапроса, Connection, 1); (Проверка: Сервер)
{Обработка.Сигур.Форма.Форма.Форма(394,2)}: Переменная не определена (Recordset)
<<?>>Recordset.Open(ТекстЗапроса, Connection, 1); (Проверка: Сервер)
{Обработка.Сигур.Форма.Форма.Форма(219,11)}: Переменная не определена (Limit)
|LIMIT "+<<?>>Limit+" (Проверка: Сервер)
{Обработка.Сигур.Форма.Форма.Форма(392,11)}: Переменная не определена (Limit)
|LIMIT "+<<?>>Limit+" (Проверка: Сервер)
{Обработка.Сигур.Форма.Форма.Форма(440,6)}: Переменная не определена (Соединение)
Если <<?>>Соединение.Конструктор("MySQL ODBC 5.3 ANSI Driver") (Проверка: Сервер)
{Обработка.Сигур.Форма.Форма.Форма(441,3)}: Переменная не определена (Соединение)
И <<?>>Соединение.Деструктор() Тогда (Проверка: Сервер)
{Обработка.Сигур.Форма.Форма.Форма(451,7)}: Переменная не определена (Соединение)
ТЗ = <<?>>Соединение.ПолучитьСотрудников("Gebau", "1"); (Проверка: Сервер)
{Обработка.Сигур.Форма.Форма.Форма(461,13)}: Переменная не определена (Соединение)
Структура = <<?>>Соединение.ПолучитьПосещаемость( Период.ДатаНачала, (Проверка: Сервер)
{Обработка.Сигур.Форма.Форма.Форма(450,19)}: Переменная не определена (Драйвер)
Сигур.Конструктор(<<?>>Драйвер); (Проверка: Сервер)
{Обработка.Сигур.Форма.Форма.Форма(457,19)}: Переменная не определена (Драйвер)
Сигур.Конструктор(<<?>>Драйвер, , , , , , Структура); (Проверка: Сервер)
{Обработка.Сигур.Форма.Форма.Форма(472,19)}: Переменная не определена (Драйвер)
Сигур.Конструктор(<<?>>Драйвер); (Проверка: Сервер)
{Обработка.Сигур.Форма.Форма.Форма(457,38)}: Переменная не определена (Структура)
Сигур.Конструктор(Драйвер, , , , , , <<?>>Структура); (Проверка: Сервер)
{Обработка.Сигур.Форма.Форма.Форма(466,11)}: Переменная не определена (Структура)
ТабДок = <<?>>Структура.ТабДок; (Проверка: Сервер)
{Обработка.Сигур.Форма.Форма.Форма(461,46)}: Переменная не определена (Период)
Структура = Соединение.ПолучитьПосещаемость( <<?>>Период.ДатаНачала, (Проверка: Сервер)
{Обработка.Сигур.Форма.Форма.Форма(462,13)}: Переменная не определена (Период)
<<?>>Период.ДатаОкончания, (Проверка: Сервер)
{Обработка.Сигур.Форма.Форма.Форма(464,13)}: Переменная не определена (Сотрудник)
<<?>>Сотрудник, (Проверка: Сервер)
{Обработка.Сигур.Форма.Форма.Форма(156,7)}: Процедура или функция с указанным именем не определена (НаборЗаписейВТаблицу)
ТЗ = <<?>>НаборЗаписейВТаблицу(); (Проверка: Сервер)
{Обработка.Сигур.Форма.Форма.Форма(222,7)}: Процедура или функция с указанным именем не определена (НаборЗаписейВТаблицу)
ТЗ = <<?>>НаборЗаписейВТаблицу(); (Проверка: Сервер)
{Обработка.Сигур.Форма.Форма.Форма(395,7)}: Процедура или функция с указанным именем не определена (НаборЗаписейВТаблицу)
ТЗ = <<?>>НаборЗаписейВТаблицу(); (Проверка: Сервер)
{Обработка.Сигур.Форма.Форма.Форма(230,13)}: Процедура или функция с указанным именем не определена (КонкатенацияМассивов)
Отделы = <<?>>КонкатенацияМассивов(Новый Структура("Отделы,Строки", Отделы, Строки), Истина); (Проверка: Сервер)
{Обработка.Сигур.Форма.Форма.Форма(238,14)}: Процедура или функция с указанным именем не определена (КонкатенацияМассивов)
Отделы = <<?>>КонкатенацияМассивов(Новый Структура("Отделы,Строки", Отделы, Строки), Истина); (Проверка: Сервер)
{Обработка.Сигур.Форма.Форма.Форма(260,3)}: Процедура или функция с указанным именем не определена (РасшифроватьКарту)
<<?>>РасшифроватьКарту(Строка.CODEKEY); (Проверка: Сервер)
{Обработка.Сигур.Форма.Форма.Форма(399,3)}: Процедура или функция с указанным именем не определена (РасшифроватьКарту)
<<?>>РасшифроватьКарту(Строка.CODEKEY); (Проверка: Сервер)
{Обработка.Сигур.Форма.Форма.Форма(400,3)}: Процедура или функция с указанным именем не определена (РасшифроватьКарту)
<<?>>РасшифроватьКарту(Строка.EventCodeKey); (Проверка: Сервер)
{Обработка.Сигур.Форма.Форма.Форма(261,22)}: Процедура или функция с указанным именем не определена (ПолучитьСотрудникаПоТабелю)
Строка.Сотрудник = <<?>>ПолучитьСотрудникаПоТабелю(Строка.TABID); (Проверка: Сервер)
{Обработка.Сигур.Форма.Форма.Форма(421,24)}: Процедура или функция с указанным именем не определена (ПолучитьСотрудникаПоТабелю)
Работник.Сотрудник = <<?>>ПолучитьСотрудникаПоТабелю(Работник.Табель); (Проверка: Сервер)
{Обработка.Сигур.Форма.Форма.Форма(270,2)}: Процедура или функция с указанным именем не определена (РусифицироватьКолонкиТаблицы)
<<?>>РусифицироватьКолонкиТаблицы(ТЗ); (Проверка: Сервер)
{Обработка.Сигур.Форма.Форма.Форма(404,2)}: Процедура или функция с указанным именем не определена (РусифицироватьКолонкиТаблицы)
<<?>>РусифицироватьКолонкиТаблицы(ТЗ); (Проверка: Сервер)
{Обработка.Сигур.Форма.Форма.Форма(422,19)}: Процедура или функция с указанным именем не определена (РассчитатьПосещаемость)
Посещаемость = <<?>>РассчитатьПосещаемость(вДанные, ДатаНачала, ДатаОкончания); (Проверка: Сервер)
{Обработка.Сигур.Форма.Форма.Форма(429,11)}: Процедура или функция с указанным именем не определена (СформироватьТабДокПосещаемости)
ТабДок = <<?>>СформироватьТабДокПосещаемости(МассивРаботников, ДатаНачала, ДатаОкончания); (Проверка: Сервер)
{Обработка.Сигур.Форма.Форма.Форма(439,9)}: Переменная не определена (Обработки)
Сигур = <<?>>Обработки.Сигур.Создать(); (Проверка: Тонкий клиент)
{Обработка.Сигур.Форма.Форма.Форма(449,9)}: Переменная не определена (Обработки)
Сигур = <<?>>Обработки.Сигур.Создать(); (Проверка: Тонкий клиент)
{Обработка.Сигур.Форма.Форма.Форма(456,10)}: Переменная не определена (Обработки)
Сигур = <<?>>Обработки.Сигур.Создать(); (Проверка: Тонкий клиент)
{Обработка.Сигур.Форма.Форма.Форма(471,9)}: Переменная не определена (Обработки)
Сигур = <<?>>Обработки.Сигур.Создать(); (Проверка: Тонкий клиент)
{Обработка.Сигур.Форма.Форма.Форма(440,6)}: Переменная не определена (Соединение)
Если <<?>>Соединение.Конструктор("MySQL ODBC 5.3 ANSI Driver") (Проверка: Тонкий клиент)
{Обработка.Сигур.Форма.Форма.Форма(441,3)}: Переменная не определена (Соединение)
И <<?>>Соединение.Деструктор() Тогда (Проверка: Тонкий клиент)
{Обработка.Сигур.Форма.Форма.Форма(451,7)}: Переменная не определена (Соединение)
ТЗ = <<?>>Соединение.ПолучитьСотрудников("Gebau", "1"); (Проверка: Тонкий клиент)
{Обработка.Сигур.Форма.Форма.Форма(461,13)}: Переменная не определена (Соединение)
Структура = <<?>>Соединение.ПолучитьПосещаемость( Период.ДатаНачала, (Проверка: Тонкий клиент)
{Обработка.Сигур.Форма.Форма.Форма(450,19)}: Переменная не определена (Драйвер)
Сигур.Конструктор(<<?>>Драйвер); (Проверка: Тонкий клиент)
{Обработка.Сигур.Форма.Форма.Форма(457,19)}: Переменная не определена (Драйвер)
Сигур.Конструктор(<<?>>Драйвер, , , , , , Структура); (Проверка: Тонкий клиент)
{Обработка.Сигур.Форма.Форма.Форма(472,19)}: Переменная не определена (Драйвер)
Сигур.Конструктор(<<?>>Драйвер); (Проверка: Тонкий клиент)
{Обработка.Сигур.Форма.Форма.Форма(457,38)}: Переменная не определена (Структура)
Сигур.Конструктор(Драйвер, , , , , , <<?>>Структура); (Проверка: Тонкий клиент)
{Обработка.Сигур.Форма.Форма.Форма(466,11)}: Переменная не определена (Структура)
ТабДок = <<?>>Структура.ТабДок; (Проверка: Тонкий клиент)
{Обработка.Сигур.Форма.Форма.Форма(461,46)}: Переменная не определена (Период)
Структура = Соединение.ПолучитьПосещаемость( <<?>>Период.ДатаНачала, (Проверка: Тонкий клиент)
{Обработка.Сигур.Форма.Форма.Форма(462,13)}: Переменная не определена (Период)
<<?>>Период.ДатаОкончания, (Проверка: Тонкий клиент)
{Обработка.Сигур.Форма.Форма.Форма(464,13)}: Переменная не определена (Сотрудник)
<<?>>Сотрудник, (Проверка: Тонкий клиент)
(38)
Судя по всему вы не объявили переменные в модуле объекта:
Судя по всему вы не объявили переменные в модуле объекта:
Обработка содержит публичные переменные/реквизиты:
ВремяДома (Целое число [2]), Limit (Строка [10]), Табель (Строка [100])
Их описание дано в функции "Конструктор"
Приватные переменные:
Connection - COM Объект ADODB.Connection
Recordset - COM Объект ADODB.Recordset
Огромное спасибо. Теперь намного лучше, но появились ещё 2 ошибки помогите пожалуйста разобраться и с ними
инициализации модуля: Обработка.Сигур.Форма.Форма.Форма
по причине:
{Обработка.Сигур.Форма.Форма.Форма(5,12)}: Неопознанный оператор
Connection <<?>>- COM Объект ADODB.Connection
{Обработка.Сигур.Форма.Форма.Форма(51,1)}: Определения процедур и функций должны размещаться перед операторами тела модуля
<<?>>Функция Конструктор( Знач Драйвер,
инициализации модуля: Обработка.Сигур.Форма.Форма.Форма
по причине:
{Обработка.Сигур.Форма.Форма.Форма(5,12)}: Неопознанный оператор
Connection <<?>>- COM Объект ADODB.Connection
{Обработка.Сигур.Форма.Форма.Форма(51,1)}: Определения процедур и функций должны размещаться перед операторами тела модуля
<<?>>Функция Конструктор( Знач Драйвер,
Вот не задача, драйвер установлен и переменные указаны правильно, да вот всё равно ошибки не прекращаются
{Обработка.Сигур.МодульОбъекта(2,12)}: Неопознанный оператор
Connection <<?>>- COM Объект ADODB.Connection (Проверка: Сервер)
{Обработка.Сигур.МодульОбъекта(48,1)}: Определения процедур и функций должны размещаться перед операторами тела модуля
<<?>>Функция Конструктор( Знач Драйвер = "SQL Server", (Проверка: Сервер)
{Обработка.Сигур.МодульОбъекта(2,12)}: Неопознанный оператор
Connection <<?>>- COM Объект ADODB.Connection (Проверка: Сервер)
{Обработка.Сигур.МодульОбъекта(48,1)}: Определения процедур и функций должны размещаться перед операторами тела модуля
<<?>>Функция Конструктор( Знач Драйвер = "SQL Server", (Проверка: Сервер)
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|