Компилирование внешней компоненты AddInNative в ОС Linux

Публикация № 323372

Разработка - Разработка внешних компонент

В статье отражены некоторые моменты, которые нужно учесть, чтобы скомпилировать пример 1С-вской внешней компоненты AddInNative в ОС Linux.

Решил посмотреть, как работает внешняя компонента для 1С в Linux-е, благо под рукой уже была настроенная виртуалка с Xubuntu и установленной там платформой 8.3.5.1383.

Скопировал в виртуалку с диска ИТС папку VNCOMP83/example/NativeAPI/, зашёл в эту папку, набрал команду "make" и:

$ make

In file included from AddInNative.cpp:15:0:
AddInNative.h:4:27: фатальная ошибка: ComponentBase.h: Нет такого файла или каталога
компиляция прервана.
make: *** [AddInNative.o] Ошибка 1

Посмотрел, где расположен файл ComponentBase.h - как оказалось, он (и ряд других заголовочных файлов) находится в папке VNCOMP83/include/.

Вывод 1: с диска ИТС нужно копировать 2 папки - VNCOMP83/example/NativeAPI/ и VNCOMP83/include/

Пробую скомпилировать ещё раз:

$ make

In file included from AddInNative.cpp:15:0:
AddInNative.h:73:5: ошибка: «HANDLE» не является именем типа
AddInNative.h:74:5: ошибка: «HANDLE» не является именем типа
...

make: *** [AddInNative.o] Ошибка 1

Действительно, в файле AddInNative.h в самом конце присутствуют следующие определения:

    HANDLE              m_hTimer;
    HANDLE              m_hTimerQueue;

Linux про тип HANDLE ничего не знает. Смотрю где используются m_hTimer и m_hTimerQueue - они используются в файле AddInNative.cpp - один раз в CAddInNative::CAddInNative(), ещё один раз в CAddInNative::Done() и, наконец, в CAddInNative::CallAsProc(...) в ветках "case eMethStartTimer" и "case eMethStopTimer". Причём в последней процедуре код, связанный с этими переменными, выделен как Windows-специфичный (#ifndef __linux__ ... #endif). Отсюда можно сделать вывод, что в других местах разработчики просто забыли выделить код с помощью директив. Сделаем это самостоятельно.

В AddInNative.h меняю:

    HANDLE              m_hTimer;
    HANDLE              m_hTimerQueue;

на

#ifndef __linux__
    HANDLE              m_hTimer;
    HANDLE              m_hTimerQueue;
#endif

В AddInNative.cpp меняю:

CAddInNative::CAddInNative()
{
    m_iMemory = 0;
    m_iConnect = 0;
    m_hTimerQueue = 0;
}

на

CAddInNative::CAddInNative()
{
    m_iMemory = 0;
    m_iConnect = 0;
#ifndef __linux__
    m_hTimerQueue = 0;
#endif
}

после чего

void CAddInNative::Done()
{
    if(m_hTimerQueue )
    {
        DeleteTimerQueue(m_hTimerQueue);
        m_hTimerQueue = 0;
    }
}

меняю на

void CAddInNative::Done()
{
#ifndef __linux__
    if(m_hTimerQueue )
    {
        DeleteTimerQueue(m_hTimerQueue);
        m_hTimerQueue = 0;
    }
#endif
}

Как вариант, можно просто закомментировать "linux-неугодный" код, но тогда исходники перестанут компилироваться под Windows.

Вывод 2: перед компилированием нужно убрать Windows-специфичный код из исходников.

Очередная попытка:

$ make

...

AddInNative.cpp:438:49: ошибка: нет подходящей функции для вызова «IMsgBox::Alert(const wchar_t [3])»
...

make: *** [AddInNative.o] Ошибка 1

Тут уже даже разбираться не хочется, поэтому просто в файле AddInNative.cpp в функции CAddInNative::CallAsProc() комментирую строки:

//                        if (succeed)
//                            imsgbox->Alert(L"OK");
//                        else
//                            imsgbox->Alert(L"Cancel");

Вывод 3: перед компилированием нужно убрать ещё кое-какой код.

И ещё раз:

$ CXXFLAGS="-D __linux__" make

...

g++ -MM -D __linux__ -I../include -m32 -finput-charset=WINDOWS-1251 -fPIC AddInNative.cpp >  AddInNative.d
g++ -c  -D __linux__ -I../include -m32 -finput-charset=WINDOWS-1251 -fPIC dllmain.cpp -o dllmain.o
g++ -MM -D __linux__ -I../include -m32 -finput-charset=WINDOWS-1251 -fPIC dllmain.cpp >  dllmain.d
g++ -c  -D __linux__ -I../include -m32 -finput-charset=WINDOWS-1251 -fPIC stdafx.cpp -o stdafx.o
g++ -MM -D __linux__ -I../include -m32 -finput-charset=WINDOWS-1251 -fPIC stdafx.cpp >  stdafx.d
g++ -D __linux__ -I../include -m32 -finput-charset=WINDOWS-1251 -fPIC -shared AddInNative.o dllmain.o stdafx.o -o AddInNative.so -lpthread

Аллилуйя!!! Наконец-то, в каталоге появился долгожданный AddInNative.so!!!

Теперь попробую подключить эту внешнюю компоненту. Создаю новую внешнюю обработку, добавляю на форму команду Команда1 и пишу обработчик:

&НаСервере
Процедура Команда1НаСервере()

	Ок = ПодключитьВнешнююКомпоненту("/путь/к/файлу/внешней/компонеты/AddInNative.so", "AddInNative", ТипВнешнейКомпоненты.Native);
	Если НЕ Ок Тогда
		Сообщение = Новый СообщениеПользователю;
		Сообщение.Текст = "Ошибка подключения ВК!";
		Сообщение.Сообщить();
		Возврат;
	КонецЕсли;

	ОбъектВК = Новый("AddIn.AddInNative.AddInNativeExtension");
	ДвДанные = ОбъектВК.ЗагрузитьКартинку("/usr/share/backgrounds/space-01.jpg");
	Сообщение = Новый СообщениеПользователю;
	Сообщение.Текст = "Прочитано байт: " + ДвДанные.Размер();
	Сообщение.Сообщить();

КонецПроцедуры

&НаКлиенте
Процедура Команда1(Команда)

	Команда1НаСервере();

КонецПроцедуры

И она таки вертится:

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. jobkostya1c8 15.01.15 08:09 Сейчас в теме
Хоть и стороняя эта тема по разработке внешних компонент да еще в линуксе поставлю плюс.
3. webester 34 17.01.15 11:53 Сейчас в теме
(1)Очень ценное и нужное замечание, держите нас в курсе. Весь инфостарт испереживался, я сам как на иголках, нервы на пределе, обновляю страницу, каждые 15секунд, Внимание! Опасный момент! И да! Да дорогие друзья, kostyaomsk таки поставил плюс и оставил об этом комментарий. Как мы все долго этого ждали, этого бесполезного никому не нужного комментария "поставил +". И вот он наконец то! Спасибо тебе kostyaomsk за твой флуд ради флуда.
14. jaroslav.h 23.01.15 10:11 Сейчас в теме
(1) kostyaomsk, сколько вам можно писать "ХВАТИТЬ ПИСАТЬ, ПОЧТИ В КАЖДОМ СООБЩЕНИИ СВОЕЙ БЕЗПОЛЕЗНЫЙ КОММЕНТАРИЙ?????!!!!!", вы по другому не умете зарабатывать $m? Взрослый мужик, а хитрун еще тот. Стыдно!
AlexanderKai; +1 Ответить
15. q_i 425 23.01.15 17:44 Сейчас в теме
(14) myr4ik07, во-первых, беСполезный, а во-вторых, для выяснения отношений есть ЛС, форум, обращение к модераторам и т.п.
Это касается и (3)
Надеюсь на Ваше понимание.
17. webester 34 25.01.15 13:55 Сейчас в теме
(15)А че ему можно писать че попало, а мне нельзя?
А че это вы тут указываете, если:
для выяснения отношений есть ЛС, форум, обращение к модераторам и т.п.
я предлагаю вам воспользоваться вашим же советом.
2. caponid 16.01.15 10:09 Сейчас в теме
4. Yagodka.Andrey 19.01.15 14:33 Сейчас в теме
За статью спасибо, камрад.
Сейчас компоненты забросил, но... чем черт не шутит )
5. q_i 425 19.01.15 17:30 Сейчас в теме
(4) Yagodka.Andrey, если будет интерес - можно будет попробовать скооперироваться.
И вообще, если у кого-нибудь есть какая-нибудь практическая задача - пишите - может что-нибудь сделаем. А то сейчас у меня весь интерес чисто академический (единственный клиент с линуксовым сервером перешёл на винду ещё год назад). ))
6. vslimv 20.01.15 10:57 Сейчас в теме
(5) Давно мечтаю о telnet'e на сервере. Правда в ВК дуб)
Но очень радостно, что подобные технологии развиваются, а то в моем окружении никто не решился на com в лине)
7. q_i 425 20.01.15 12:58 Сейчас в теме
(6) vslimv, ну на com в лине не решился даже microsoft ))
А какую задачу хочется решить с помощь telnet'а на сервере?
10. servs 70 21.01.15 12:33 Сейчас в теме
(7) например для управления Asterisk используя AMI, нужен клиент telnet.
Есть ROM-Asterisk-Native, но там закрытый код.
11. q_i 425 21.01.15 13:14 Сейчас в теме
(10) servs, я Пастернака не читал с Astetisk-ом не работал, но судя по http://xgu.ru/wiki/AMI там можно обойтись или встроенным телнет клиентом в связке с expect, или написать что надо на python (благо, биндинги, судя по всему, есть). А запускать опять же банально через ЗапуститьПриложение().
Если есть конкретная задача, можем посмотреть варианты решения.
13. vslimv 22.01.15 13:06 Сейчас в теме
(11)
встроенным телнет клиентом в связке с expect

Немного не понял))
ЗапуститьПриложение() не канает. Нужно слушать события по telnet'у, причем желательно асинхронное поступление событий в 1с.
Хотя может я просто Вас не понял)
16. q_i 425 23.01.15 17:46 Сейчас в теме
(13) vslimv, это скорее я не понял. Т.е. нужно открыть сокет, слушать его, а полученные данные передавать в 1С? Так? А кто и что будет в этот сокет писать/читать с другой стороны (со стороны клиента)?
18. vslimv 26.01.15 07:47 Сейчас в теме
(16) Все именно так.Со стороны сервера asterisk висит AMI(Asterisk Manager API). Будет отсылать тебе после авторизации, все события в текстовом виде. Более подробно о нем и на русском тут .
Со стороны клиента ВК и события из нее)
В общем задача ее принимать текст из 1С и отправлять в AMI и наоборот из AMI в 1С. Сама ничего уметь не должна, разве что отправлять в 1С ошибку при подключении к сокету, если таковая имеется.
12. vslimv 22.01.15 13:01 Сейчас в теме
(10) servs, ROM-Asterisk-Native насколько я знаю виндовый, а для линукса есть только у мико(далеко не бесплатно+куча **рни в подарок)+ она работает через богопротивный AJAM.
8. pumbaE 641 20.01.15 13:22 Сейчас в теме
sleep, добавь sleep
регулярки
поддрежку webcosket , дабы можно было-бы в тонком клиенте прогресс бар нарисовать.
rabbitmq
9. q_i 425 20.01.15 19:24 Сейчас в теме
(8) pumbaE,
sleep:
ЗапуститьПриложение("sleep 5", , Истина);

Регулярки аналогично через perl/grep.

Вообще, есть мысль написать статью про вызов линуксовых команд из 1С. В простейшем варианте через ЗапуститьПриложение() с перенаправлением stdout во временный файл с последующим разгребанием этого файла средствами 1С. Но хочется ещё реализовать компоненту для работы без временного файла, т.е. вызывается команда и её stdout читается прямо в строку 1С (возможная опция - запись в stdin). В примитивном варианте это можно сделать в компоненте через popen(), в более продвинутом через pipe()/fork()/exec(). Собственно, и статья родилась когда решил попробовать реализовать эту простенькую задачку и начал компилить сырцы 1с. Впрочем, popen() чего-то не захотел тогда работать (fread() сразу же возвращал 0, а feof(), соответственно, 1).

WebSocket и RabbitMQ - а что с ними делать? )))
19. q_i 425 16.02.15 20:02 Сейчас в теме
Проблема с Alert-ами заключалась в том, что в в include/AddInDefBase.h в прототипе метода ожидается WCHAR_T* (строка 2-хбайтовых символов), а передаётся wchar_t* (строка 4-хбайтовых символов; L"OK" - это 4-хбайтовые символы):
virtual bool ADDIN_API Alert(const WCHAR_T* text)

Поэтому нужно поменять
if (succeed)
    imsgbox->Alert(L"OK");
else
    imsgbox->Alert(L"Cancel");

на
WCHAR_T *msg = NULL;
if (succeed)
    ::convToShortWchar(&msg, L"OK");
else
    ::convToShortWchar(&msg, L"Cancel");
imsgbox->Alert(msg);
delete[] msg;
minimajack; +1 Ответить
20. michael512 24.01.20 09:48 Сейчас в теме
Скудновато. Где можно нарыть литературы и примеров по программированию NativeAPI внешней компоненты в формате Linux (выходной файл по-моему должен быть .so) ? Причина, скорый перевод офиса на импортозамещающие ПО, а конкретно на Astra Linux
21. q_i 425 25.01.20 00:43 Сейчас в теме
(20) Я знаю только один источник информации по этой теме - ИТС. Кстати, они (фирма 1С) по-моему собрались с силами и облагородили исходники.
А что Вам за компоненты нужно будет писать, если конечно это не военная (или иная очень охраняемая) тайна? Просто сейчас вроде в тренде web-сервисы, rest-интерфейсы и прочая смузня.
22. michael512 25.01.20 13:43 Сейчас в теме
(21)
А что Вам за компоненты нужно будет писать, если конечно это не военная (или иная очень охраняемая) тайна? Просто сейчас вроде в тренде web-сервисы, rest-интерфейсы и прочая смузня.
компонента связи через adb планшета на андроид, проще говоря, перекидывание файлов туда-сюда, установка/удаление приложения и т.п. Андроид-приложение нативное
Оставьте свое сообщение

См. также

Использование классов .Net в 1С для новичков Промо

Практика программирования Разработка внешних компонент Универсальные функции v7.7 v8 Бесплатно (free)

Руководство для новичков. Написав статью http://infostart.ru/public/238584/, я понял, что многие не понимают того, что написано. Поэтому в этой статье постараюсь более подробно остановиться на азах и без кода на вражеском языке (C#)

27.01.2016    79148    Serginio    113    

.Net Core, обмен с 1C по TCP/IP между различными устройствами

Разработка внешних компонент v8 Бесплатно (free)

Часто нужно обмениваться данными с клиентом 1С из различных устройств, между клиентами 1С, а также при виртуализации между разными ОС на компьютере. Это кроссплатформенная ВК, позволяющая обмениваться сообщениями по TCP/IP между различными устройствами по определенному протоколу.

28.09.2016    21919    Serginio    12    

Net Core. Динамическая компиляция класса обертки для получения событий .Net объекта в 1С

Разработка внешних компонент v8 Бесплатно (free)

Часто нужно использовать события объектов .Net. Например событие от COM порта, поступление сообщений по WhatsAp, сообщение об изменение в директории итд. Напрямую этого сделать нельзя, но можно сделать класс обертку и через него получать ВнешнееСобытие

14.09.2016    16277    Serginio    1    

.Net Core, 1C, динамическая компиляция, Scripting API

Разработка внешних компонент Практика программирования v8 Бесплатно (free)

Очень часто приходится использовать динамический код в 1С, используя Выполнить или Вычислить. Аналогичная задача и для использования скриптов на .Net. Я постарался показать, как можно скрестить ежа с ужом и получить удобный код. В этой статье много вражеского кода для чистого одноэсника, но все когда-то бывает впервые.

07.09.2016    19200    Serginio    7    

1С, Linux, Excel, Word, OpenXML, ADO, Net Core

Разработка внешних компонент v8 Бесплатно (free)

В данной статье показаны примеры кроссплатформенной работы с файлами Excel и Word (xlsx,docx) с помощью библиотеки OpenXML и Net Core

22.08.2016    21911    Serginio    15    

Асинхронное программирование в 1С через использование классов .Net из Native ВК

Разработка внешних компонент v8 Бесплатно (free)

Это продолжение статьи Кроссплатформенное использование классов .Net в 1С через Native ВК. Или замена COM на Linux II http://infostart.ru/public/541518/ В этой статье покажу, как можно асинхронно вызывать асинхронные методы и вызывать ВнешнееСобытие в 1С из сборки .Net

09.08.2016    17814    Serginio    3    

.Net в 1С. Асинхронные HTTP запросы, отправка Post нескольких файлов multipart/form-data, сжатие трафика с использованием gzip, deflate, удобный парсинг сайтов и т.д.

Разработка внешних компонент Практика программирования WEB v7.7 v8 Бесплатно (free)

Очень часто нужно при работе с HTTP сервисами или сайтами использовать Асинхронные HTTP запросы, отправку на сервер нескольких файлов, использование сжатия трафика. Эта статья про то, как этого легко добиться.

09.03.2016    32680    Serginio    22    

Быстрое создание Внешних Компонент на C#. Примеры использования Глобального Контекста, IAsyncEvent, IExtWndsSupport, WinForms и WPF

Практика программирования Разработка внешних компонент v8 Бесплатно (free)

В большинстве случаев хватает и обычного COM объекта, учитывая, что в 8.х можно использовать события. Но иногда нужно использовать Глобальный Контекст для вызова глобальных функций, таких как Сообщить, NewObject и т.д. Кроме того, для использования форм нужен дескриптор окна 1С. Это продолжение статей Использование сборок .NET в 1С 7.x b 8.x. Создание внешних Компонент. http://infostart.ru/public/238584/ Там же лежат и исходники .NET(C#) для 1С. Динамическая компиляция класса обертки для использования .Net событий в 1С через ДобавитьОбработчик или ОбработкаВнешнегоСобытия http://infostart.ru/public/417830/ 1C Messenger для отправки сообщений, файлов и обмена данными между пользователями 1С, вэб страницы, мобильными приложениями а ля Skype, WhatsApp http://infostart.ru/public/434771/ Использование классов .Net в 1С для новичков http://infostart.ru/public/448668/

15.02.2016    30181    Serginio    13    

Подсветка синтаксиса 1С в текстовых редакторах Atom, Sublime Text, VS Code

Инструментарий разработчика Разработка внешних компонент v8 1cv8.cf Бесплатно (free)

Пакеты, добавляющие поддержку синтаксиса языка 1С:Предприятие 8 в текстовые редакторы Atom, Sublime Text и VS Code. И не только.

02.02.2016    28422    nixel    38    

.NET(C#) для 1С. Динамическая компиляция класса обертки для использования .Net событий в 1С через ДобавитьОбработчик или ОбработкаВнешнегоСобытия

Разработка внешних компонент Математика и алгоритмы v7.7 v8 Бесплатно (free)

Динамическая компиляция класса обертки для использования .Net событий в 1С через ДобавитьОбработчик или ОбработкаВнешнегоСобытия, а так же генерация модулей на C# и 1С для подключения к событиям. Использование DynamicMethod и ILGenerator. Представлены примеры для использовании событий System.IO.FileSystemWatcher (Ожидает уведомления файловой системы об изменениях и инициирует события при изменениях каталога или файла в каталоге.) и SerialPort (обработка сканера штрих кода подключенного к COM порту). Обертка позволяет использовать классы .Net только на языке 1С. Реализация 1C Messenger описанного здесь http://infostart.ru/public/434771/

12.11.2015    47465    Serginio    36    

1С с "плюсами"

Разработка внешних компонент Математика и алгоритмы Универсальные функции v8 Бесплатно (free)

- Разработана методика подключения внешней компоненты, снимающая ограничения на типы данных аргументов и возвращаемого значения. - Проведено документирование основных типов данных (объектов, интерфейсов) платформы. - Разработан объект «Делегат» для реализации функциональных объектов (указатель-на-функцию). - Разработана концепция итератора произвольного доступа для основных контейнеров платформы с целью сопряжения со стандартной C++ библиотекой. - В процессе разработки механизм 1С классов (наследование, интерфейсы) для возможности использования парадигм объектно-ориентированного программирования на уровне кода.

14.10.2015    23459    IntelInside    48    

Генерация штрих-кода для вставки его в 1С при работе в Linux

Разработка внешних компонент v8 1cv8.cf Бесплатно (free)

В Linux есть отличная команда barcode, которая генерирует штрих-коды в векторном формате ps. Но 1С не понимает такие форматы. Более того, barcode генерирует штрих-код на размер листа А4 или Letter. Установка пользовательского размера листа не увенчалась успехом. Но не будем же мы вставлять изображение штрих-кода размером с лист А4… Однако есть способ, как решить данные проблемы.

01.07.2015    16817    rudjuk    4    

Простейший способ создания штрих-кода в формате PNG из командной строки в Linux Ubuntu

Разработка внешних компонент v8 1cv8.cf Бесплатно (free)

В Linux есть огромное количество способов создания линейного штрих-кода. В данной статье мы рассмотрим, как сгенерировать графическое изображение штрих-кода прямо из командной строки. При этом, решение будет совершенно бесплатным и очень простым как в установке, так и в использовании.

29.06.2015    12416    rudjuk    15    

Использование внешних COM-компонент (.dll) или любых клиентских методов в регламентных заданиях серверной базы.

Практика программирования Разработка внешних компонент Математика и алгоритмы v8 1cv8.cf Бесплатно (free)

Для расширения возможностей платформы 1С существует огромное количество внешних компонент (дополнительные функции, взаимодействие с софтом и железом других производителей, ключи защиты). К сожалению, большинство из них написано на технологии .COM и не могут использоваться на сервере. Для использования в регламентных заданиях серверной базы их приходится переписывать на Native API. Однако, иногда нет возможности переписать компоненту на новую технологию, но нужно вызвать ее в регламентном задании на сервере.

10.12.2014    47429    ekaruk    51    

Обработка изображений 1С средствами .Net framework

Разработка внешних компонент v8 1cv8.cf Бесплатно (free)

1С:Предприятие не предоставляет штатных средств работы с изображениями по изменению размеров и наложению водяных знаков. Данный функционал часто востребован, например, в Интернет-магазинах, когда из 1С происходит экспорт товаров с фотографиями. Раньше для этого использовали выгрузку фотографий на диск и вызов утилит через командную строку. Понятно, что гибкостью и скоростью такой вариант не обладает, плюс еще могут возникнуть проблемы с безопасностью и учетом временных файлов.

19.04.2013    20980    Elisy    13    

Подсистема "COMExchange": ускорение выгрузки запросов ADO или «игра с огнём».

Практика программирования Разработка внешних компонент v8 1cv8.cf Россия Бесплатно (free)

Описана поддержка подсистемой "COMExchange"работы с ВК GameWhithFire.dll и в частности ускоренная выгрузка результата запроса ADO средствами ВК.

11.03.2013    20172    yuraos    4    

Простой пример создания ActiveX-control на Qt

Практика программирования Разработка внешних компонент v8 1cv8.cf Бесплатно (free)

Мне была поставлена задача разработать некий ActiveX-control. Так как основным языком программирования для разработки у нас используется C++, то C# не рассматривался. Я решил выбрать Qt, так как он мне интересен. Создание ActiveX объектов на Qt достаточно простой процесс, в примерах к QtCreator есть несколько вариантов, показывающих как можно использовать ActiveQt (например этот). При написании компонента пришлось много времени потратить на поиск ответов на казалось бы простые вопросы, по крупицам их собирать. В результате я получил, что требовалось и решил написать простой пример, чтобы ускорить процесс старта разработки ActiveX-control другим. Сразу обращу внимание, что не описываю всю технологию ActiveQt, подробную информацию можно получить в документации Qt Assistant и в интернете (например здесь), это пример и пара интересных на мой взгляд моментов.

25.02.2013    9315    theshadowco    3    

Finger-биометрия в 1С

Разработка внешних компонент v8 Россия Бесплатно (free)

О различных методиках использования сканеров отпечатков пальцев в 1С.

02.07.2012    27987    fixin    22    

Решение проблем с регистрацией внешних компонент в терминале

Разработка внешних компонент Розничная торговля Учет ТМЦ Розничная торговля Учет ТМЦ v8 УТ10 Россия УУ Бесплатно (free)

Зачастую у программистов возникают проблемы с подключением внешних компонент (например, драйверов торгового оборудования), когда пользователи работают с 1С, подключаясь к серверу через терминал. Это связано с некоторыми особенностями работы функции глобального контекста ПодключитьВнешнююКомпоненту().

22.09.2011    71662    Spacer    41    

Новая версия 1С:Предприятие 8.2 конфликтует с C# и .Net framework

Практика программирования Разработка внешних компонент v8 1cv8.cf Бесплатно (free)

Суть конфликта 1С 8.2 с C# и .Net framework в следующем. В версии 8.2 1С анонсировала новый способ написания внешних компонент 1С с использованием так называемого Native API. Самое интересное, что на C# предложенный подход реализовать невозможно, а реализация Native API на VC++/CLI теоретически возможна, но при попытке подключения DLL, скомпилированных с опцией /CLR, происходит зависание 1С (версия 8.2.13.202). Еще один конфликт – в новой версии 1С нет поддержки технологии ActiveX, на основе которой многие разработчики вставляли в формы 1С свои WinForms-приложения.

15.12.2010    21457    Elisy    128    

Учим внешнюю компоненту правильному склонению не только ФИО, но и должностей, и подразделений (ЗУП 2.5)

Разработка внешних компонент Практика программирования v8 ЗУП2.5 Россия Бесплатно (free)

Многие из нас сталкивались с проблемой неверного склонения должностей и подразделений внешней компонентой склонения ФИО. Результат при этом может напоминать следующее: 1.Именительный "Главный специалист" 2.Родительный "Главныя специалиста" 3.Дательный "Главныю специалисту " 4.Винительный "Главныя специалиста " 5.Творительный "Главныем специалистом " 6.Предложный "Главные специалисте " Метод борьбы с данным недугом предлагаю ниже.

21.11.2010    62036    director04    64