All streams
Search
Write a publication
Pull to refresh
17
0
Смирнов Сергей @Serginio1

Программист

Send message
Из 8 ки и из под линукса? 1С, Linux, Excel, Word, OpenXML и Net Core

Да это не суть. В Native API есть структура

struct _tVariant
        {
            _ANONYMOUS_UNION union
            {
               .......
            IID IDVal;
            struct _tVariant *pvarVal;
            struct tm      tmVal;
            _ANONYMOUS_STRUCT struct
            {
                void* pInterfaceVal;
               IID InterfaceID;
        }
        __VARIANT_NAME_2/*iface*/;
            _ANONYMOUS_STRUCT struct
            {
                char* pstrVal;
        uint32_t strLen; //count of bytes
    }
    __VARIANT_NAME_3/*str*/;
            _ANONYMOUS_STRUCT struct
            {
                WCHAR_T* pwstrVal;
    uint32_t wstrLen; //count of symbol
    /        } __VARIANT_NAME_4/*wstr*/;
        } __VARIANT_NAME_1;
        uint32_t cbElements;    //Dimension for an one-dimensional array in pvarVal
    TYPEVAR vt;
    };



В которой можно использовать
void* pInterfaceVal;
IID InterfaceID;

А в vt; указать, что это ВК.

А у меня IIS/ Но тогда еще и MS SQL и прочие базы. Много чего нужно настраивать. Для этого существуют сис админы
Вот SQL запрос к MS SQL

 СборкаSqlClient=ъ(Врап.Сборка("System.Data.SqlClient.dll"));
    SqlConnection=ъ(СборкаSqlClient.GetType("System.Data.SqlClient.SqlConnection"));
    SqlCommand=ъ(СборкаSqlClient.GetType("System.Data.SqlClient.SqlCommand")); 
    
    connection =ъ(Врап.Новый(SqlConnection.ПолучитьСсылку(),ConnectionString));
    connection.Open();
    
    ТекстЗапроса = "Sel ect Номенклатура.DESCR Наименование  Fr om sc84 Номенклатура where DESCR Like '%'+@Строка+'%'
    |order by Номенклатура.DESCR";
    
    
    command = ъ(Врап.Новый(SqlCommand.ПолучитьСсылку(),ТекстЗапроса,connection.ПолучитьСсылку()));
    
    Parameters=ъ(command.Parameters);
    Parameters.AddWithValue("@Строка", "ДСП");
    dr = ъ(command.ExecuteReader());
    
    Пока dr.Read() Цикл
        Сообщить(dr.get_Item("Наименование"));
    КонецЦикла;




Добрый день. В технологии Внешних компонент заложен возврат объектов и передача объектов в параметрах ВК. Но пока этого сделать нельзя. Приходится возвращать строку и из неё создавать ВК
//1С при передаче по ссылке свойства ВК Список.Current

// при выходе из метода присваивает  Список.Current значение переданное изначально
// Поэтому помечаем входной параметр как Знач

//Или же делать так, если методы изменить нельзя 
// То нужно присвоить значение переменной и вызвать метод передав в параметрах эту переменную

//Стр=Список.Current; 
//Зазача=ъ(Стр);

Функция Ъ(знач Ссылка) 
     
    // Создаем объект по ссылке полученной из методов .Net классов

    //Физически это строка ёЁ<Ьъ>№_%)Э?&2 содержащее 12 символов для отделения их от других строк

    //и индекс в спике исполуемых объектов на стороне .Net

    
    рез = Новый("AddIn.NetObjectToNative.NetObjectToNative");
    // И установим ссылку

    рез.УстановитьСсылку(Ссылка);    
    возврат  рез
КонецФункции// СоздатьОбъектПоСсылке()


Так при передаче объекта в параметрах приходится получать строковую ссылку

СборкаSqlClient=ъ(Врап.Сборка("System.Data.SqlClient.dll")); 
    SqlConnection=ъ(СборкаSqlClient.GetType("System.Data.SqlClient.SqlConnection"));
    SqlCommand=ъ(СборкаSqlClient.GetType("System.Data.SqlClient.SqlCommand")); 
    
    connection =ъ(Врап.Новый(SqlConnection.ПолучитьСсылку(),ConnectionString));
    connection.Open();
    


    ТекстЗапроса = "Select Номенклатура.DESCR Наименование  From sc84 Номенклатура where DESCR Like '%'+@Строка+'%' 
    |order by Номенклатура.DESCR";
    
    
    command = ъ(Врап.Новый(SqlCommand.ПолучитьСсылку(),ТекстЗапроса,connection.ПолучитьСсылку()));
    
    Parameters=ъ(command.Parameters);
    Parameters.AddWithValue("@Строка", "ДСП");
    dr = ъ(command.ExecuteReader());
    
    Пока dr.Read() Цикл
        Сообщить(dr.get_Item("Наименование"));
    КонецЦикла;


Просили про отправку почты. Заодно исправил ошибку. Кому интересно скачайте новую версию

 smtp = "smtp.yandex.ru";
    login = "XXXX@yandex.ru";
    password = "YYYYYY";
    Кому = "YYYYYYY@XXXXXXXX.ru";
    
    
    СборкаMailKit=ъ(Врап.Сборка("MailKit.dll"));
    СборкаMimeKit=ъ(Врап.Сборка("MimeKit.dll"));
    
    MimeMessage=ъ(СборкаMimeKit.GetType("MimeKit.MimeMessage"));
    MailboxAddress=ъ(СборкаMimeKit.GetType("MimeKit.MailboxAddress"));
    TextPart=ъ(СборкаMimeKit.GetType("MimeKit.TextPart"));
    
    SmtpClient=ъ(СборкаMailKit.GetType("MailKit.Net.Smtp.SmtpClient"));
    
    
    
    message = ъНовый(MimeMessage.ПолучитьСсылку());
    From= ъ(Врап.Новый(MailboxAddress.ПолучитьСсылку(),"Сергей Смирнов", login));
    ъ(message.From).Add( From.ПолучитьСсылку());
    
    ToMail=ъ(Врап.Новый(MailboxAddress.ПолучитьСсылку(),"Сергей Смирнов", Кому));
    ъ(message.To).Add(ToMail.ПолучитьСсылку());
    message.Subject = "Как дела?";
    
    ТелоСообщения=  ъ(Врап.Новый(TextPart.ПолучитьСсылку(),"plain"));
    ТелоСообщения.Text = "Здесь любое сообщение
    | что фантазия подскажет
    | Это тест отправки почты";
    
    message.Body=ТелоСообщения.ПолучитьСсылку();
    client =ъНовый(SmtpClient.ПолучитьСсылку());
    client.Connect(smtp, 465, true);
    
    // Note: since we don't have an OAuth2 token, disable
    // the XOAUTH2 authentication mechanism.
    ъ(client.AuthenticationMechanisms).Remove("XOAUTH2");
    
    // Note: only needed if the SMTP server requires authentication
    client.Authenticate(login, password);
    
    client.Send(message.ПолучитьСсылку());
    client.Disconnect(true);
    Врап.ЗакрытьРесурс(client.ПолучитьСсылку()); 



Хотя для Linux есть 64 разрядные клиенты
Тонкий клиент 1С: Предприятия (64-bit) для DEB-based Linux-систем
Тонкий клиент 1С: Предприятия (64-bit) для RPM-based Linux-систем
Клиент 1С: Предприятия (64-bit) для DEB-based Linux-систем
Клиент 1С: Предприятия (64-bit) для RPM-based Linux-систем
http://v8.1c.ru/requirements/ Пока .Net Core для nix только под 64 разрядные. Хотя 1С сейчас выпускает 64 разрядного клиента в 8.3.9
http://www.forum.mista.ru/topic.php?id=778385&page=1
https://github.com/dotnet/cli
К сожалению у меня нет Linux. Но код кроссплатформен. Правда нужно перекомпилировать код на C++ и скачать .Net Core под Linux.
https://www.microsoft.com/net/core#windows
Спасибо. Вот если в неё встроить доступ к классам .Net, добавить замыкания аналоги await…
Но на ней действительно достаточно легко решать задачи учета. И самое главное это куча типовых конфигураций которые сейчас можно расширять не снимая с поддержки
Да. Особенно, когда приспосабливаешь код написанный на C# в 1С.

В реалии код
if (Элемент ==null) 		return ""


D 1C можно использовать англоязычные синонимы
Это великий и могучий Руслиш «Руслиш»: официальный язык МКС — МИР24

Это с непревычки. Мне например долго приходилось соображать, что к чему когда код 1С на английском Сценарное тестирование в помощь программисту 1С

Ну, а кроме Русслиша, неинтересно?
1. Использование классов .Net в нативе
2. Кроссплатформенность как замена COM
3. Использование сахара как методы расширения, вывод типа в дженерик методах, асинхронное программирование?
Да Native API возвращает Null а не неопределено
Например на C# я задаю для ToString InvariantCulture
Для таких как я можно дать ссылочку на ИТС Пример автоматизированного тестирования
Понял. Действительно отстал от жизни
ТестируемоеОкноКлиентскогоПриложения (TestedClientApplicationWindow)
Это я понимаю. Я не понимаю откуда берется TestedClientApplicationWindow с типом Общий модуль?
Я понял суть, но мне интересна и конкретика!
Я про
>> (цены, сумы и кол-ва задаются в виде строк, чтобы избежать проблем ложного срабатывания проверки теста в случае его запуска в другой локали, где разделитель триад и дробной части, например, могут отличаться)

Ну товар.Цена=89,32 выдаст ошибку на любой локали. Другое дело строковое представление числа.
Можно задавать единую локаль
Формат(Значение,«Л=en_US»)
Отстал от жизни
test = Type ( «TestedClientApplicationWindow» );

Показывает, что общий модуль. Но его найти не могу
Да уж тяжело переходить с русского на английский. Меня тут ругали за руслиш, но чистый английйский на 1С это тяжело. Обработки ->DataProcessors итд

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity