Имя: Пароль:
1C
1C 7.7
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
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
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 ?