JohnyDeath писал(а) 19. Января 2011 :: 09:49:Если вариант 2 хочешь хранить в базе 1С, то лучше от него сразу отказаться.
Сейчас массив записан в файл и этот файл собираюсь хранить в sql таблице базы 1С
Вот так привязываю к ФИО человека
рс=СоздатьОбъект("ODBCRecordset");
ТекстЗапроса = "
|Set nocount on;
|
|IF NOT EXISTS (SELECT name FROM dbo.sysobjects where name = '__templatefinger' and xtype = 'U ')
|CREATE TABLE __templatefinger
|(
|id int IDENTITY(1,1) ,
|sotrudnik varchar(10) ,
|finger varchar(2) ,
|template varbinary(max) ,
|)
|";
рс.ВыполнитьИнструкцию(ТекстЗапроса);
рс.Подготовить("
|IF EXISTS
| (SELECT * FROM [__templatefinger]
| WHERE sotrudnik='"+Сотр.ФИО+"'
| )
| UPDATE [__templatefinger]
| SET
| finger='0',
| template=?
| WHERE sotrudnik='"+Сотр.ФИО+"'
|ELSE
| INSERT INTO [__templatefinger]
| ([sotrudnik],[finger],[template]) VALUES ('"+Сотр.ФИО+"','0',?)
|");
рс.Отладка(1);
рс.ДобПараметр(1,19,0,0);
рс.ДобПараметр(1,19,0,0);
Данные=СоздатьОбъект("BinaryData");
Данные.ЗагрузитьИзФайла("c:\str2.txt");
рс.УстПараметр(1,Данные);
рс.УстПараметр(2,Данные);
рс.ВыполнитьИнструкцию();
так вывожу в ФормеСписка, есть или нет скан
Функция ПроверитьТемплате()
ТекстЗапроса = "
|SELECT count([id])
| FROM [__templatefinger] (nolock)
| WHERE sotrudnik='"+ФИО+"'
|";
Возврат(рс.ВыполнитьСкалярный(ТекстЗапроса));
КонецФункции // ПроверитьТемплате
а когда надо сверить, выгружаю в файл
и
Процедура Проверка()
scriptCtrl = СоздатьОбъект("MSScriptControl.ScriptControl");
Wscript = СоздатьОбъект("WScript.Shell");
scriptCtrl.Language="jscript";
ТекстСкрипта=ТекстФункцияСканирование+"
|
|function StartScan()
|{
| var factory = new ActiveXObject('Biolink.Biometrics2.Factory');
| var license = factory.CreateLicense();
| var deviceList = factory.CreateDeviceList();
|
| if (deviceList.Size == 0) throw new Error(0,'Scanner was not found');
|
| var deviceDescriptor = deviceList.DeviceDescriptor(0);
| var scanner = factory.CreateScanner(deviceDescriptor);
| WScript.Popup('Пальчег');
| var image1 = ScanImage(scanner);
| var bmp = image1.Bitmap();
| bmp.Save('c:\\strOk.bmp');
|
| WScript.Popup('Ок');
| var imageSet = factory.CreateimageSet();
| imageSet.AddImage(image1, 0);
| var imgPrc = factory.CreateImageProcessor();
| var templateScan = imgPrc.CreateTemplate(imageSet);
| imageSet.Clear();
|
| var stream = new ActiveXObject('ADODB.Stream');
| stream.Type = 1;
| stream.Open();
| stream.LoadFromFile( 'c:\\str3.txt' );
| stream.Position = 0;
| var templateFile = stream.Read(-1);
| stream.Close();
|
| var templateOk = factory.CreateTemplate();
| templateOk.Load(templateFile);
|
| var matcher = factory.CreateMatcher();
| var score = matcher.Compare(templateScan, templateOk);
|
| license.Dispose();
| delete factory;
|
| return score;
|}
|";
Попытка
scriptCtrl.AddCode(ТекстСкрипта);
scriptCtrl.AddObject("WScript",WScript);
Исключение
Сообщить("Текст ошибки: "+scriptCtrl.Error.Text);
Сообщить("Строка ошибки: "+scriptCtrl.Error.Line);
КонецПопытки;
Скоре = scriptCtrl.Run("StartScan");
Картинки=СоздатьОбъект("GFLAx.GFLAx");
Картинки.LoadBitmap("c:\strOk.bmp");
Картинки.SaveFormat=4;
Картинки.SaveBitmap("c:\strOk.bmp");
Пикт.РежимРисования(3);
Пикт.Загрузить("c:\strOk.bmp");
Сообщить(Скоре);
КонецПроцедуры // Проверка
это пока еще разработка, поэтому не исключений ни причесываний нет