|
v7: API IE из 1с 7.7 | ☑ | ||
---|---|---|---|---|
0
DES
21.09.14
✎
17:52
|
имеется страница sefsdfsdf.aspx
в ней код: <INPUT id=Agreement1_AccesServiceBtn type=submit value="Сервис" name=Agreement1$AccesServiceBtn metrikaId_0.5311905="29"> делаю: objIE = createObject("InternetExplorer.Application"); жду загрузки страницы и т.д. ( на других страницах работало) выполняю: objDoc.getElementById("Agreement1_AccesServiceBtn").Submit(); 1C отвечает objDoc.getElementById("EFactura_Agreement1_AccesServiceBtn").Submit(); {Документ.Накладная.Форма.Модуль(2981)}: Поле агрегатного объекта не обнаружено (Submit) почему так ? раньше на других страницах вроде бы этот код работал. |
|||
342
Serginio1
03.10.14
✎
16:20
|
SignVerifyEnvelope у тебя имеет методы
SignXmlFile VerifyXmlFile Можешь Добавить еще статический метод public static void ПодписатьФайл(string FileName, string SignedFileName) { // Generate a signing key. RSACryptoServiceProvider Key = new RSACryptoServiceProvider(); SignXmlFile(FileName, SignedFileName, Key); } |
|||
343
DES
03.10.14
✎
16:23
|
TypeRSACryptoServiceProvider = Сборка.ПолучитьТип("System.Security.Cryptography.RSA");
{S:\LX\EXTFORMS\NETEFACTURA.ERT(97)}: Поле агрегатного объекта не обнаружено (ПолучитьТип) |
|||
344
Serginio1
03.10.14
✎
16:23
|
То есть вывести в сборку основную часть кода, для минимизации кодирования в 1С.
Для отладки библиотеки можно воспользоваться двумя путями. В проекте Свойства проекта/Отладка/Запуск Внешней Программы выбрать 1С 1cv7.exe Или Отладка/Присоединиться к процессу |
|||
345
Serginio1
03.10.14
✎
16:24
|
врап.ПолучитьТип("System.Security.Cryptography.RSA");
|
|||
346
DES
03.10.14
✎
16:27
|
Зачем "Добавить еще статический метод" ?
что дает ? мне нужно еще из хранилища ключей ключ доставать и подстаавлять |
|||
347
Serginio1
03.10.14
✎
16:28
|
(346) 344
|
|||
348
DES
03.10.14
✎
16:33
|
TypeRSACryptoServiceProvider = Врап.ПолучитьТип("System.Security.Cryptography.RSA");
и как это TypeRSACryptoServiceProvider теперь использовать ? на чем СоздатьОбъект(TypeRSACryptoServiceProvider) делать ? |
|||
349
Serginio1
03.10.14
✎
16:37
|
(348) 332
А вообще смотри про сертификаты http://msdn.microsoft.com/ru-ru/library/system.security.cryptography.x509certificates.publickey(v=vs.110).aspx |
|||
350
DES
03.10.14
✎
16:39
|
(349) как до метода SignXmlFile() достучаться ?
|
|||
351
Serginio1
03.10.14
✎
16:44
|
(350) А подумать?
1. В каком классе описан SignXmlFile? 2. Если это статический метод, то нужно вызвать метод типа. 3. Если это объектный метод то нужно воспользоваться Врап.СоздатьОбъект |
|||
352
DES
03.10.14
✎
16:54
|
как 2 выполняется ?
если 3 дает ошибку |
|||
353
Serginio1
03.10.14
✎
17:01
|
(352) Смотрим
public static void SignXmlFile(string FileName, string SignedFileName, RSA Key) И видим ключевое слово static. Как нам вызвать статический метод? |
|||
354
DES
03.10.14
✎
17:07
|
Да откуда я знаю ?
|
|||
355
DES
03.10.14
✎
17:07
|
они для меня на одно лицо
|
|||
356
Serginio1
03.10.14
✎
17:10
|
(355) Поэтому лучше на выходных взять книжку по основам C#
Кстати решение было в 35 постов ранее |
|||
357
Serginio1
03.10.14
✎
17:12
|
Вернее
Сборка.GetType("ПодписьXML.SignVerifyEnvelope").SignXmlFile(FileName, SignedFileName, Key,ElementsToSign) |
|||
358
DES
03.10.14
✎
17:18
|
откуда 4 параметр ?
|
|||
359
DES
03.10.14
✎
17:23
|
(357) так я это видел, я хотел, для системы, разбить на две части
ф = Сборка.GetType("ПодписьXML.SignVerifyEnvelope"); й = ф.SignXmlFile(FileName, SignedFileName, Key,ElementsToSign); так как то привычней |
|||
360
DES
03.10.14
✎
17:28
|
a = Сборка.GetType("ПодписьXML.SignVerifyEnvelope").SignXmlFile(FileName, SignedFileName, Key,ElementsToSign);
{S:\LX\EXTFORMS\NETEFACTURA.ERT(104)}: Неизвестная ошибка Ошибка в методе SignXmlFile Не найден метод "ПодписьXML.SignVerifyEnvelope".mscorlib |
|||
361
Serginio1
03.10.14
✎
17:28
|
(358) Там в в последнем примере был
public static void SignXmlFile(string FileName, string SignedFileName, RSA Key, string[] ElementsToSign) { // Check the arguments. if (FileName == null) throw new ArgumentNullException("FileName"); if (SignedFileName == null) throw new ArgumentNullException("SignedFileName"); if (Key == null) throw new ArgumentNullException("Key"); if (ElementsToSign == null) throw new ArgumentNullException("ElementsToSign"); // Create a new XML document. XmlDocument doc = new XmlDocument(); // Format the document to ignore white spaces. doc.PreserveWhitespace = false; // Load the passed XML file using it's name. doc.Load(new XmlTextReader(FileName)); // Create a SignedXml object. SignedXml signedXml = new SignedXml(doc); // Add the key to the SignedXml document. signedXml.SigningKey = Key; // Loop through each passed element to sign // and create a reference. foreach (string s in ElementsToSign) { // Create a reference to be signed. Reference reference = new Reference(); reference.Uri = s; // Add an enveloped transformation to the reference. XmlDsigEnvelopedSignatureTransform env = new XmlDsigEnvelopedSignatureTransform(); reference.AddTransform(env); // Add the reference to the SignedXml object. signedXml.AddReference(reference); } // Add an RSAKeyValue KeyInfo (optional; helps recipient find key to validate). KeyInfo keyInfo = new KeyInfo(); keyInfo.AddClause(new RSAKeyValue((RSA)Key)); signedXml.KeyInfo = keyInfo; // Compute the signature. signedXml.ComputeSignature(); // Get the XML representation of the signature and save // it to an XmlElement object. XmlElement xmlDigitalSignature = signedXml.GetXml(); // Append the element to the XML document. doc.DocumentElement.AppendChild(doc.ImportNode(xmlDigitalSignature, true)); if (doc.FirstChild is XmlDeclaration) { doc.RemoveChild(doc.FirstChild); } // Save the signed XML document to a file specified // using the passed string. XmlTextWriter xmltw = new XmlTextWriter(SignedFileName, new UTF8Encoding(false)); doc.WriteTo(xmltw); xmltw.Close(); } |
|||
362
Serginio1
03.10.14
✎
17:29
|
(360) Правильно потому, что у тебя нет этого метода
a = Сборка.GetType("ПодписьXML.SignVerifyEnvelope").SignXmlFile(FileName, SignedFileName,Key) |
|||
363
Serginio1
03.10.14
✎
17:31
|
Вернее правильнее будет
ф.SignXmlFile(FileName, SignedFileName, Key) |
|||
364
DES
03.10.14
✎
17:41
|
Блин, я уже перепробовал все варианты - ни один не подходит
как правильно то? |
|||
365
Serginio1
03.10.14
✎
17:47
|
Во первых ты сборку с SignXmlFile скомпилировал и скопировал в нужную директорию?
|
|||
366
Serginio1
03.10.14
✎
17:48
|
Еще раз проверь пространство имен у SignVerifyEnvelope
|
|||
367
Serginio1
03.10.14
✎
17:49
|
Давай до понедельника. Почитай книгу по C# и многое сразу всанет на свои места. Нельзя так браться с кандачка
|
|||
368
DES
03.10.14
✎
17:51
|
using System;
using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Security.Cryptography; using System.Security.Cryptography.X509Certificates; using System.Security.Cryptography.Xml; using System.Xml; namespace ПодписьXML { class SignVerifyEnvelope { // Sign an XML file and save the signature in a new file. This method does not // save the public key within the XML file. This file cannot be verified unless // the verifying code has the key with which it was signed. public static void SignXmlFile(string FileName, string SignedFileName, RSA Key) |
|||
369
Serginio1
03.10.14
✎
17:56
|
Вообще есть http://www.red-gate.com/products/dotnet-development/reflector/
программка Reflector.exe с помощью которой можно просмотреть классы и методы сборки Значит имя класса ПодписьXML.SignXmlFile Два варианта вызова a = Сборка.GetType("ПодписьXML.SignXmlFile").SignXmlFile(FileName, SignedFileName,Key) a = Врап.ПолучитьТип("ПодписьXML.SignXmlFile").SignXmlFile(FileName, SignedFileName,Key) |
|||
370
Serginio1
03.10.14
✎
17:59
|
Тьфу имя класса
и вызов ПодписьXML.SignVerifyEnvelope a = Сборка.GetType("ПодписьXML.SignVerifyEnvelope").SignXmlFile(FileName, SignedFileName,Key) a = Врап.ПолучитьТип("ПодписьXML.SignVerifyEnvelope").SignXmlFile(FileName, SignedFileName,Key) Все пока дозавтра. Читай предметную часть |
|||
371
DES
03.10.14
✎
18:06
|
ни а ни б не взлетело
a = Сборка.GetType("ПодписьXML.SignVerifyEnvelope").SignXmlFile(FileName, SignedFileName,Key); б = Врап.ПолучитьТип("ПодписьXML.SignVerifyEnvelope").SignXmlFile(FileName, SignedFileName,Key); |
|||
372
DES
03.10.14
✎
18:21
|
||||
373
DES
03.10.14
✎
18:30
|
a = Врап.ПолучитьТип("ПодписьXML.SignVerifyEnvelope").CreateSomeXml(FileName);
прошло. |
|||
374
Serginio1
03.10.14
✎
20:57
|
Значит в
б = Врап.ПолучитьТип("ПодписьXML.SignVerifyEnvelope").SignXmlFile(FileName, SignedFileName,Key); передаешь неправильные параметры. Покажи скрин ошибки |
|||
375
Serginio1
03.10.14
✎
21:00
|
Ну и SignXmlFile вообще то ничего не возвращает
просто вызов Врап.ПолучитьТип("ПодписьXML.SignVerifyEnvelope").SignXmlFile(FileName, SignedFileName,Key); смотри что в итоге у тебя в SignedFileName |
|||
376
DES
03.10.14
✎
21:22
|
да, спс. Все прокатило.
Сейчас гоняю как достать сертификат из личного хранилища. |
|||
377
Serginio1
03.10.14
✎
21:24
|
(376) Давай. Удачи.
|
|||
378
DES
03.10.14
✎
21:28
|
запускаю вот это
public static void DirCert() { X509Store store = new X509Store("MY",StoreLocation.CurrentUser); store.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly); X509Certificate2Collection collection = (X509Certificate2Collection)store.Certificates; X509Certificate2Collection fcollection = (X509Certificate2Collection)collection.Find(X509FindType.FindByTimeValid,DateTime.Now,false); X509Certificate2Collection scollection = X509Certificate2UI.SelectFromCollection(fcollection, "Test Certificate Select","Select a certificate from the following list to get information on that certificate",X509SelectionFlag.MultiSelection); Console.WriteLine("Number of certificates: {0}{1}",scollection.Count,Environment.NewLine); foreach (X509Certificate2 x509 in scollection) { try { byte[] rawdata = x509.RawData; Console.WriteLine("Content Type: {0}{1}",X509Certificate2.GetCertContentType(rawdata),Environment.NewLine); Console.WriteLine("Friendly Name: {0}{1}",x509.FriendlyName,Environment.NewLine); Console.WriteLine("Certificate Verified?: {0}{1}",x509.Verify(),Environment.NewLine); Console.WriteLine("Simple Name: {0}{1}",x509.GetNameInfo(X509NameType.SimpleName,true),Environment.NewLine); Console.WriteLine("Signature Algorithm: {0}{1}",x509.SignatureAlgorithm.FriendlyName,Environment.NewLine); Console.WriteLine("Private Key: {0}{1}",x509.PrivateKey.ToXmlString(false),Environment.NewLine); Console.WriteLine("Public Key: {0}{1}",x509.PublicKey.Key.ToXmlString(false),Environment.NewLine); Console.WriteLine("Certificate Archived?: {0}{1}",x509.Archived,Environment.NewLine); Console.WriteLine("Length of Raw Data: {0}{1}",x509.RawData.Length,Environment.NewLine); X509Certificate2UI.DisplayCertificate(x509); x509.Reset(); } catch (CryptographicException) { Console.WriteLine("Information could not be written out for this certificate."); } } store.Close(); } пишет ошибка в 142 строке. Как включить нумерацию строк? |
|||
379
DES
03.10.14
✎
21:32
|
||||
380
DES
03.10.14
✎
21:34
|
менюшка с выводом списка существующих сертиф, выводится. можно выбрать. После выбора вылетает ошибка. На отладчике тоже не тормозит. может ошибка в этой строке с точкой ?
|
|||
381
Serginio1
03.10.14
✎
21:35
|
Так на какую консоль то ты выводишь? Почитай предметную часть. Потрать время. Зато затем ты это время выиграешь.
http://msdn.microsoft.com/ru-ru/library/system.console(v=vs.110).aspx Записывай в List<string> и выводи в 1С |
|||
382
DES
03.10.14
✎
21:37
|
ну по идее консоль это экранчик как у Ошибок.
|
|||
383
Serginio1
03.10.14
✎
21:38
|
А у тебя есть сертификаты?
http://msdn.microsoft.com/ru-ru/library/bfsktky3(v=vs.110).aspx |
|||
384
Serginio1
03.10.14
✎
21:39
|
||||
385
Serginio1
03.10.14
✎
21:45
|
||||
386
Serginio1
03.10.14
✎
21:55
|
http://msdn.microsoft.com/ru-ru/library/ms229744(v=vs.110).aspx
Шифрование XML-элемента с помощью сертификата X.509 Воспользуйтесь Makecert.exe (средство создания сертификатов) для создания тестового сертификата X.509 и разместите его в хранилище локального пользователя. Необходимо создать ключ обмена и сделать его экспортируемым. Выполните следующую команду: makecert -r -pe -n "CN=XML_ENC_TEST_CERT" -b 01/01/2005 -e 01/01/2010 -sky exchange -ss my Создайте объект X509Store и инициализируйте его, чтобы открыть хранилище текущего пользователя. C#VB X509Store store = new X509Store(StoreLocation.CurrentUser); Откройте хранилище в режиме "только для чтения". C#VB store.Open(OpenFlags.ReadOnly); Инициализируйте коллекцию X509Certificate2Collection, включив в нее все сертификаты, размещенные в хранилище. C#VB X509Certificate2Collection certCollection = store.Certificates; Выполните перебор сертификатов, размещенных в хранилище, чтобы найти сертификат с соответствующим именем. В этом примере сертификат имеет имя "CN=XML_ENC_TEST_CERT". C#VB X509Certificate2 cert = null; // Loop through each certificate and find the certificate // with the appropriate name. foreach (X509Certificate2 c in certCollection) { if (c.Subject == "CN=XML_ENC_TEST_CERT") { cert = c; break; } } После нахождения нужного сертификата закройте хранилище. C#VB store.Close(); Создайте объект XmlDocument путем загрузки XML-файла с диска. Объект XmlDocument содержит XML-элемент, подлежащий шифрованию. C#VB XmlDocument xmlDoc = new XmlDocument(); Найдите указанный элемент в объекте XmlDocument и создайте новый объект XmlElement, который будет представлять элемент, подлежащий шифрованию. В этом примере производится шифрование элемента "creditcard". C#VB XmlElement elementToEncrypt = Doc.GetElementsByTagName(ElementToEncrypt)[0] as XmlElement; Создайте новый экземпляр класса EncryptedXml и используйте его для шифрования указанного элемента с помощью сертификата X.509. Метод Encrypt возвращает зашифрованный элемент в виде объекта EncryptedData. C#VB EncryptedXml eXml = new EncryptedXml(); // Encrypt the element. EncryptedData edElement = eXml.Encrypt(elementToEncrypt, Cert); Замените элемент из исходного объекта XmlDocument элементом EncryptedData. C#VB EncryptedXml.ReplaceElement(elementToEncrypt, edElement, false); Сохраните объект XmlDocument. C#VB xmlDoc.Save("test.xml"); Пример В этом примере предполагается, что файл с именем "test.xml" существует в том же каталоге, что и скомпилированная программа. Также предполагается, что файл "test.xml" содержит элемент "creditcard". Можно поместить следующий XML-код в файл с именем test.xml и использовать его в данном примере. <root> <creditcard> <number>19834209</number> <expiry>02/02/2002</expiry> </creditcard> </root> C#VB using System; using System.Xml; using System.Security.Cryptography; using System.Security.Cryptography.Xml; using System.Security.Cryptography.X509Certificates; class Program { static void Main(string[] args) { try { // Create an XmlDocument object. XmlDocument xmlDoc = new XmlDocument(); // Load an XML file into the XmlDocument object. xmlDoc.PreserveWhitespace = true; xmlDoc.Load("test.xml"); // Open the X.509 "Current User" store in read only mode. X509Store store = new X509Store(StoreLocation.CurrentUser); store.Open(OpenFlags.ReadOnly); // Place all certificates in an X509Certificate2Collection object. X509Certificate2Collection certCollection = store.Certificates; X509Certificate2 cert = null; // Loop through each certificate and find the certificate // with the appropriate name. foreach (X509Certificate2 c in certCollection) { if (c.Subject == "CN=XML_ENC_TEST_CERT") { cert = c; break; } } if (cert == null) { throw new CryptographicException("The X.509 certificate could not be found."); } // Close the store. store.Close(); // Encrypt the "creditcard" element. Encrypt(xmlDoc, "creditcard", cert); // Save the XML document. xmlDoc.Save("test.xml"); // Display the encrypted XML to the console. Console.WriteLine("Encrypted XML:"); Console.WriteLine(); Console.WriteLine(xmlDoc.OuterXml); } catch (Exception e) { Console.WriteLine(e.Message); } } public static void Encrypt(XmlDocument Doc, string ElementToEncrypt, X509Certificate2 Cert) { // Check the arguments. if (Doc == null) throw new ArgumentNullException("Doc"); if (ElementToEncrypt == null) throw new ArgumentNullException("ElementToEncrypt"); if (Cert == null) throw new ArgumentNullException("Cert"); //////////////////////////////////////////////// // Find the specified element in the XmlDocument // object and create a new XmlElemnt object. //////////////////////////////////////////////// XmlElement elementToEncrypt = Doc.GetElementsByTagName(ElementToEncrypt)[0] as XmlElement; // Throw an XmlException if the element was not found. if (elementToEncrypt == null) { throw new XmlException("The specified element was not found"); } ////////////////////////////////////////////////// // Create a new instance of the EncryptedXml class // and use it to encrypt the XmlElement with the // X.509 Certificate. ////////////////////////////////////////////////// EncryptedXml eXml = new EncryptedXml(); // Encrypt the element. EncryptedData edElement = eXml.Encrypt(elementToEncrypt, Cert); //////////////////////////////////////////////////// // Replace the element from the original XmlDocument // object with the EncryptedData element. //////////////////////////////////////////////////// EncryptedXml.ReplaceElement(elementToEncrypt, edElement, false); } } Компиляция кода Для компиляции этого примера может потребоваться включить ссылку на System.Security.dll. Включите следующие пространства имен: System.Xml, System.Security.Cryptography и System.Security.Cryptography.Xml. Безопасность Сертификат X.509, использованный в данном примере, предназначен только для тестирования. Приложения должны использовать сертификаты X.509, созданные доверенным центром сертификации или сервером сертификации Microsoft Windows. |
|||
387
DES
03.10.14
✎
22:02
|
да - это я и тестирую
|
|||
388
Serginio1
03.10.14
✎
23:10
|
Так ты тестируй внутри VS
|
|||
389
Serginio1
03.10.14
✎
23:12
|
Или смотри 344
|
|||
390
Serginio1
03.10.14
✎
23:24
|
||||
391
DES
03.10.14
✎
23:27
|
так по 344 и делаю
|
|||
392
DES
04.10.14
✎
00:02
|
только не могу остановиться на точке останова под отладчиком
сделал сборку в режиме отладки, поставил точку, не тормозит... |
|||
393
Serginio1
04.10.14
✎
00:09
|
И какой способ подключения используешь?
А вообще создай приложение и отлаживай напрямую. |
|||
394
Serginio1
04.10.14
✎
00:34
|
||||
395
DES
04.10.14
✎
12:32
|
А вот почему 1С не находит ?
public static X509Certificate2 DirCert2(string LableKey, int NumKey) RCAkey = Врап.ПолучитьТип("ПодписьXML.SignVerifyEnvelope").DirCert2("TIGHINA",1); пишет не найден метод Reflector http://prntscr.com/4srsuf |
|||
396
DES
04.10.14
✎
22:57
|
без параметров находит а делаю параметры - не находит
|
|||
397
Serginio1
04.10.14
✎
22:57
|
Потому что из-за перегрузок методов нужно передавать нужные типы
В семерке нет типа инт. Поэтому нужно приводить RCAkey = Врап.ПолучитьТип("ПодписьXML.SignVerifyEnvelope").DirCert2("TIGHINA",Врап.ChangeType(Врап.ChangeType("System.Int32",1); |
|||
398
Serginio1
04.10.14
✎
22:59
|
Либо
Парам=врап.ToInt(Строка(1)); RCAkey = Врап.ПолучитьТип("ПодписьXML.SignVerifyEnvelope").DirCert2("TIGHINA",парам); Смотри примеры и читай то, что я пишу. |
|||
399
Serginio1
04.10.14
✎
23:01
|
Парам=Врап.ChangeType("System.Int32",1);
RCAkey = Врап.ПолучитьТип("ПодписьXML.SignVerifyEnvelope").DirCert2("TIGHINA",Парам); |
|||
400
Serginio1
04.10.14
✎
23:02
|
Опятьже децимал беззнаковые не поддерживаются семеркой поэтому такие типы возвращается ввиде строки
|
|||
401
DES
04.10.14
✎
23:07
|
ну могли бы написать про не соответсвие параметров, а не отсутствие модуля
|
|||
402
DES
05.10.14
✎
00:33
|
а как привести тип
public enum StoreLocation ? |
|||
403
Serginio1
05.10.14
✎
01:16
|
свойства enum аналогичны статическм свойствам
врап.ПолучитьТип(Пространствоимен+"StoreLocation").ИмяПеречисления |
|||
404
DES
05.10.14
✎
11:25
|
А как выглядит в 1с ?
byte[] rawdata = x509.RawData; |
|||
405
Faust1976
05.10.14
✎
12:10
|
Может пропустить пункт с работой с ИЕ как с СОМ и отправить данные POST запросом ... реально быстрее работает.
Касательно вашего вопроса у меня в подобной ситуации помогала замена конструкции objDoc.getElementById("EFactura_Agreement1_AccesServiceBtn").Submit(); на лКол = objDoc.getElementById("EFactura_Agreement1_AccesServiceBtn"); лКол.click(); И еще, с таким ID лдин элемент на странице или 2 ? |
|||
406
Serginio1
05.10.14
✎
12:50
|
(404)
http://msdn.microsoft.com/ru-ru/library/system.security.cryptography.x509certificates.storelocation(v=vs.110).aspx ПространствоИмен="System.Security.Cryptography.X509Certificates"; врап.ПолучитьТип(Пространствоимен+"StoreLocation").CurrentUser или StoreLocation=врап.ПолучитьТип(Пространствоимен+"StoreLocation"); значение=StoreLocation.LocalMachine; byte[] rawdata = x509.RawData; в 1С rawdata = x509.RawData; Почитай книгу по основам 1С, рефлексию. Станет намного проще и времени тратить станешь меньше. |
|||
407
DES
05.10.14
✎
15:33
|
(406) да я все понял. я не понял про byte[] rawdata = x509.RawData;
|
|||
408
Serginio1
05.10.14
✎
15:49
|
byte[] это тип.
Еще в шарпе может быть такая запись var rawdata = x509.RawData; так как тип выводится из свойчтва |
|||
409
DES
05.10.14
✎
16:31
|
(408) ну так я не понимаю как в нотации 1С это записать
|
|||
410
DES
05.10.14
✎
16:33
|
(406) Поле агрегатного объекта не обнаружено (Click)
а отладчике кнопка.Type() = "submit" |
|||
411
Serginio1
05.10.14
✎
16:43
|
Так и пиши
rawdata = x509.RawData; Если бы книжку почитал то и таких вопросов не было бы. |
|||
412
DES
05.10.14
✎
18:30
|
(411)
Блин, книжка по Mikrotik ревнует к книжкам по Сертификатам, по C#? по VS и по 1с 8.3 |
|||
413
DES
05.10.14
✎
18:36
|
а как можно элемент enum вывести в 1с в текстовом виде ?
например сообщить ("" + врап.ПолучитьТип(Пространствоимен+"StoreLocation").CurrentUser) |
|||
414
DES
05.10.14
✎
18:41
|
нашел TypeCurrentUser.ToString()
|
|||
415
Serginio1
05.10.14
✎
19:07
|
414 Вообще проще переменную типа лучше называть как называется тип. Тогда все вызовы статических методов и свойств будут как на C#
StoreLocation=врап.ПолучитьТип(Пространствоимен+"StoreLocation"); Сообщить(StoreLocation.CurrentUser.ToString()); При сравнении объектов нужно применять не = А объект1.Equals(Object2)<>0 |
|||
416
Serginio1
05.10.14
✎
19:08
|
||||
417
Serginio1
05.10.14
✎
19:15
|
Для сравнения на больше меньше IComparable CompareTo
http://msdn.microsoft.com/ru-ru/library/System.IComparable(v=vs.110).aspx Если что не забываем метод врап.ПолучитьИнтерфейс(object obj, string InterfaseName) |
|||
418
DES
06.10.14
✎
00:27
|
(417) это для чего например?
|
|||
419
Serginio1
06.10.14
✎
10:17
|
(418) Для сравнения объектов. В C# есть перегрузка не только методов но и операторов.
в 1С ты не сможешь сравнить эти объекты используя <>= В Net нет множественного наследования, но есть поддержка интерфейсов. Так объект может не иметь публичных методов интерфейса, но всегда можно привести объект к определенному интерфейсу и вызвать его методы и свойства |
|||
420
DES
06.10.14
✎
11:39
|
о, спс.
|
|||
421
DES
07.10.14
✎
16:21
|
(381) поясни плиз
Записывай в List<string> и выводи в 1С как выводить отладочные сообщения из DLL ? |
|||
422
Serginio1
07.10.14
✎
16:32
|
(421) Можешь в функции DLL заполнять список отладочной информации и возвращать его в виде результата функции
http://msdn.microsoft.com/ru-ru/library/vstudio/system.collections.specialized.stringcollection(v=vs.110).aspx http://msdn.microsoft.com/ru-ru/library/System.String.Format(v=vs.110).aspx#Format1_Example |
|||
423
Dolphinbet
07.10.14
✎
16:43
|
а такой объект "InternetExplorer.Application" можно создать на сервере?
|
|||
424
DES
07.10.14
✎
17:49
|
на сервере или на чем еще ?
|
|||
425
Serginio1
07.10.14
✎
18:04
|
(424) Он тему праильно не прочитал. в 1С 7.7 нет сервера.
(423) Если нстроить права DCOM должно работать. InternetExplorer.Application ничем не хуже Экселя |
|||
426
Serginio1
07.10.14
✎
18:39
|
||||
427
DES
07.10.14
✎
20:39
|
Блин, никак не соображу соотношение типов
RCA и X509Certificate2 как из одного получить другое ? а то в одних примерах просит одно в других другое. а мне нужно один пример с другим параметром |
|||
428
Serginio1
07.10.14
✎
23:11
|
Тебе нужен AsymmetricAlgorithm для поля SigningKey
http://msdn.microsoft.com/ru-ru/library/system.security.cryptography.xml.signedxml.signingkey(v=vs.110).aspx у X509Certificate2 есть 2 свойства public AsymmetricAlgorithm PrivateKey { get; set; } для подписи http://msdn.microsoft.com/ru-ru/library/system.security.cryptography.x509certificates.x509certificate2.privatekey(v=vs.110).aspx и X509Certificate2.PublicKey для верификации http://msdn.microsoft.com/ru-ru/library/system.security.cryptography.x509certificates.x509certificate2.publickey(v=vs.110).aspx |
|||
429
Serginio1
07.10.14
✎
23:16
|
||||
430
Serginio1
07.10.14
✎
23:20
|
||||
431
DES
07.10.14
✎
23:46
|
а RCA что такое?
|
|||
432
Serginio1
07.10.14
✎
23:57
|
http://www.cryptopro.ru/blog/2012/05/16/podpis-soobshchenii-soap-dlya-smev-s-ispolzovaniem-kriptopro-net
(431) http://msdn.microsoft.com/ru-ru/library/system.security.cryptography.rsa(v=vs.110).aspx public abstract class RSA : AsymmetricAlgorithm |
|||
433
DES
09.10.14
✎
16:29
|
Где то тут было вроде бы как подключиться к существующему экземпляру IE ?
|
|||
434
DES
09.10.14
✎
16:44
|
Так удалось им подключится или нет ?
|
|||
435
Serginio1
09.10.14
✎
17:00
|
||||
436
DES
09.10.14
✎
20:53
|
а как закрыть задачу IE через API ?
|
|||
437
Torquader
09.10.14
✎
22:48
|
Ie.Quit()
|
|||
438
DES
10.10.14
✎
00:58
|
(437) что подразумевают под "ослом"?
|
|||
439
Serginio1
10.10.14
✎
10:20
|
||||
440
DES
12.10.14
✎
00:10
|
вот же ж блин,
через AHK ie.document.getElementById("ctl00_body_EFactura_Agreement1_AccesServiceBtn").click() работает а через 1С ie.document.getElementById("ctl00_body_EFactura_Agreement1_AccesServiceBtn").click() пишет что кнопка не click |
|||
441
DES
12.10.14
✎
20:25
|
Может есть какие другие библиотеки для доступа к IE ?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |