1с создание внешних компонент delphi
Откройте этот файл (например, двойным щелчком мыши из Проводника). Нажмите сочетание клавиш Ctrl-F9 (или пункт меню Project-Compile). Если все прошло нормально, в этой же папке образуется готовая внешняя компонента TestVK.dll (для проверки, а все ли хорошо, ее можно удалить, и получить готовую TestVK.dll еще раз).
Проверка работоспособности DLL
Переименование DLL
Первое, что я делаю при создании новой внешней компоненты – переименовываю уже существующий образец. Переименуйте TestVK.dpr так, как вы хотите (например, MyVK.dpr). Произведите замену всех вхождений подстроки TestVK в файлах проекта на нужное вам имя внешней компоненты.
Подсказка: чтобы открыть другие модули проекта, используйте пункт меню View-Units…
Программный код 1С, разумеется, также нужно не забыть изменить так, чтобы заменить все подстроки «TestVK».
Важно: замените значение CLSID внешней компоненты, чтобы новая DLL, с точки зрения Windows, стала действительно новой.
Чтобы сгенерировать новый CLSID, нажмите сочетание клавиш Ctrl-Shift-G. Попробуйте скомпилировать новый проект – 1С должна «увидеть» вашу новую внешнюю компоненту, которая создана на основе другой ВК, но содержит полный набор ее свойств и методов.
Что такое свойства и методы?
Новички могут задаться вопросом, а что такое свойства и что такое методы? В коде 1С свойства выглядят как, своего рода, «переменные», объекта, доступные через точку, например
Здесь объект – имеет имя vk (посмотрите, как он объявляется и инициализируется в глобальном модуле 1С). Этот объект поддерживает свойства и методы.
В этом коде я установил свойству "Заголовок" текстовое значение (посмотрите, как будет работать пример, если установить этому свойству другое значение заголовка, например, «Здесь был romix», или не устанавливать его вовсе).
Изменение списка свойств и методов ВК
В модуле AddinObj.pas за количество свойств отвечают участки кода, которые я пометил (*2*), (*5*), (*6*), (*8*), (*11*) а за количество методов - (*3*), (*7*), (*9*), (*10*), (*12*). Я завел в шаблон по 5 свойств и методов, но что нужно сделать, чтобы их стало 6, например, в приведенном ниже фрагменте кода, - я надеюсь, понятно без объяснений.
Вы можете завести свойства и методы «с запасом» - лишние заготовки не повредят (их можно будет оставить пустыми).
Программирование функциональности свойств
Откройте (через меню View – Units…) модуль vk_object.pas
Для свойств вы увидите примерно такой код, продублированный, с небольшими отличиями, несколько раз: Это самая важная часть наших действий, которую важно постараться понять.
Что я здесь делаю?
Вот здесь 1С и узнает, что свойство называется именно Пиктограмма (а не как-то иначе). Попробуйте переименовать свойство (например, в Псиграмма), и посмотрите, что получится.
Что это за переменная? А это та переменная (точнее, свойство класса), где я решил запоминать идентификатор своей пиктограммы.
Программирование функциональности методов
Для методов код похожий:
Этот абзац можно воспроизвести несколько раз (что и сделано в примере), заменив meth1 на meth2, meth3 и т.д. Приведенные ниже строчки устанавливают русское и английское имя метода.
Попробуйте изменить то или другое, перекомпилировать проект и посмотреть, что получится. В строчке
я устанавливаю количество параметров метода. Попробуйте изменять это количество (например, установить значение 3) и посмотреть, что получится. Блок
Отладочная печать
Вы можете в качестве теста вписать в функциональность метода что-то свое, например,
Этот вызов покажет стандартное окно предупреждения с кнопкой ОК. Или вот так:
Во втором случае, если Delphi будет ругаться при компиляции, добавьте Dialogs в раздел uses модуля.
Получение параметров функции
В своей функции я завел две переменные для хранения параметров:
Параметры нумеруются, начиная с 0 (давняя традиция программистов на языке С). Чем отличаются AsString и AsInteger, надеюсь, понятно. Этот код можно было бы написать и так:
Отладочная печать параметров
При отладке полученные из 1С значения полезно выводить на экран. Но как это сделать? Я обычно использую следующий прием. Чтобы показать строковые переменные, я пишу так:
А числовые значения и значение типа "дата-время" я отображаю примерно так:
Функциональность методов
Получив все значения из 1С, можно приступать к собственно написанию полезного кода.
Насколько мне известно, многие 1С-ники хотели бы изучить написание внешних компонент, чтобы поднять свое магическое искусство 1С на качественно иную ступень.
Что этому может помешать? Во-первых, известный синдром компонентофобии (который исторически берет свое начало от криво написанных внешних компонент). Во-вторых –синдром клинически запутанного кода. OLE-программирование – это не самая простая штука, и, как говорится, «не всякая птица долетит до середины Днепра» (особенно, если эта «птица» – программист 1С).
Я предлагаю вашему вниманию шаблон внешней компоненты, который, как я надеюсь, достаточно прост для понимания (я постарался его значительно упростить по сравнению с типовым примером из «Технологии создания внешних компонент») и стабилен (везде, где это возможно, я использую обработку исключительных ситуаций).
Сборка проекта
Для компиляции примера потребуется среда разработки Delphi 6 или 7.
Файл проекта - TestVK.dpr.
Откройте этот файл (например, двойным щелчком мыши из Проводника).
Нажмите сочетание клавиш Ctrl-F9 (или пункт меню Project-Compile). Если все прошло нормально, в этой же папке образуется готовая внешняя компонента TestVK.dll (для проверки, а все ли хорошо, ее можно удалить, и получить готовую TestVK.dll еще раз).
Проверка работоспособности DLL
В комплект примера входит тестовая конфигурация 1С:Предприятие 7.7.
Переименование DLL
Первое, что я делаю при создании новой внешней компоненты – переименовываю уже существующий образец.
Переименуйте TestVK.dpr так, как вы хотите (например, MyVK.dpr).
Произведите замену всех вхождений подстроки TestVK в файлах проекта на нужное вам имя внешней компоненты.
Подсказка: чтобы открыть другие модули проекта, используйте пункт меню View-Units…
Программный код 1С, разумеется, также нужно не забыть изменить так, чтобы заменить все подстроки «TestVK».
Важно: замените значение CLSID внешней компоненты, чтобы новая DLL, с точки зрения Windows, стала действительно новой.
Чтобы сгенерировать новый CLSID, нажмите сочетание клавиш Ctrl-Shift-G.
Попробуйте скомпилировать новый проект – 1С должна «увидеть» вашу новую внешнюю компоненту, которая создана на основе другой ВК, но содержит полный набор ее свойств и методов.
Что такое свойства и методы?
Новички могут задаться вопросом, а что такое свойства и что такое методы?
В коде 1С свойства выглядят как, своего рода, «переменные», объекта, доступные через точку, например
Здесь объект – имеет имя vk (посмотрите, как он объявляется и инициализируется в глобальном модуле 1С).. Этот объект поддерживает свойства и методы.
В этом коде я установил свойству "Заголовок" текстовое значение (посмотрите, как будет работать пример, если установить этому свойству другое значение заголовка, например, «Здесь был romix», или не устанавливать его вовсе).
Метод объекта – это, своего рода, «функция» объекта, доступная «через точку».
Изменение списка свойств и методов ВК
В модуле AddinObj.pas за количество свойств отвечают участки кода, которые я пометил (*2*), (*5*), (*6*), (*8*), (*11*) а за количество методов - (*3*), (*7*), (*9*), (*10*), (*12*).
Я завел в шаблон по 5 свойств и методов, но что нужно сделать, чтобы их стало 6, например, в приведенном ниже фрагменте кода, - я надеюсь, понятно без объяснений.
Вы можете завести свойства и методы «с запасом» - лишние заготовки не повредят (их можно будет оставить пустыми).
Программирование функциональности свойств
Откройте (через меню View – Units…) модуль vk_object.pas
Для свойств вы увидите примерно такой код, продублированный, с небольшими отличиями, несколько раз: Это самая важная часть наших действий, которую важно постараться понять.
Что я здесь делаю?
Программирование функциональности методов
Для методов код похожий:
Этот абзац можно воспроизвести несколько раз (что и сделано в примере), заменив meth1 на meth2, meth3 и т.д.
Приведенные ниже строчки устанавливают русское и английское имя метода.
Попробуйте изменить то или другое, перекомпилировать проект и посмотреть, что получится.
я устанавливаю количество параметров метода. Попробуйте изменять это количество (например, установить значение 3) и посмотреть, что получится.
Подробнее код я опишу ниже – но сначала полезно потренироваться со вставкой в него отладочной печати (именно так я исследую код).
Возвращаемое значение функции
Чтобы вернуть значение из функции, надо установить переменную g_Value, например:
Отладочная печать
Вы можете в качестве теста вписать в функциональность метода что-то свое, например,
Этот вызов покажет стандартное окно предупреждения с кнопкой ОК. Или вот так:
Во втором случае, если Delphi будет ругаться при компиляции, добавьте Dialogs в раздел uses модуля.
Получение параметров функции
В своей функции я завел две переменные для хранения параметров:
Сейчас мы их заполним значениями, полученными из 1С.
Параметры нумеруются, начиная с 0 (давняя традиция программистов на языке С).
Чем отличаются AsString и AsInteger, надеюсь, понятно.
Этот код можно было бы написать и так:
Отладочная печать параметров
При отладке полученные из 1С значения полезно выводить на экран. Но как это сделать?
Я обычно использую следующий прием:
Чтобы показать строковые переменные, я пишу так:
А числовые значения и значение типа "дата-время" я отображаю примерно так:
Функциональность методов
Получив все значения из 1С, можно приступать к собственно написанию полезного кода.
Узнавать, как работают те или иные функции API, можно в поисковых машинах или в сборниках Delphi FAQ, которые в изобилии выложены в сети Интернет.
2.Г енератор проекта внешней компоненты, позволяющий получить готовый проект за несколько секунд. Остается только добавлять свойства и методы своей компоненты с помощью визуального редактора. Все идентификаторы, имена, интерфейсы уже прописаны генератором проекта.
Введение
Что это такое:
- Это компонент для DELPHI (любой версии), позволяющий значительно упростить создание внешних компонент 1С (технология COM)
- Это генератор проекта внешней компоненты, позволяющий получить готовый проект за несколько секунд. Остается только добавлять свойства и методы своей компоненты с помощью визуального редактора. Все идентификаторы, имена, интерфейсы уже прописаны генератором проекта.
Почему до сих пор создавать по технологии COM
- Эта технология дает возможность написания универсальной компоненты, которая будет работать для всех версий 1С:Предприятия под windows 7.7/8.0/8.1/8.2/8.3
- Многие старые компоненты написаны по этой технологии. Для создания их современной замены без изменения конфигурации 1С необходимо использовать именно эту технологию.
- Например, для подключения новых видов торгового оборудования к типовым программам, лишенным теперь внешних обработок обслуживания оборудования.
Почему DELPHI
- Относительно невысокая стоимость самой среды разработки.
- Обилие в сети бесплатных или дешевых компонент для работы с чем угодно.
- Наименьшее время разработки.
- Многие программисты 1С перешли с паскаля и им достаточно просто освоить DELPHI.
Почему мой проект, ведь полно в сети различных проектов на эту тему в том числе, бесплатных
- Включены все исходные коды.
- Готовый проект внешней компоненты 1С можно получить за несколько секунд, не разбираясь в том, как там что устроено.
- Экспортируются и используются все документированные 1С интерфейсы.
- Свойства и методы внешней компоненты можно добавлять визуально, как объекты обычной коллекции.
- Подробная документация
Начало работы
Содержимое архива
- 1C_ADDIN_HELPER. Компонент для DELPHI. Его надо установить. Инструкция ниже.
- 1C_ADDIN_ProjectCreator. Генератор проекта внешней компоненты. Инструкция ниже.
- 1C_ADDIN_DEMO. Демо-проект внешней компоненты, сделанный по данной технологии. Также включены обработки 1С 7.7 и 1С 8.2 для проверки работы компоненты. Инструкция ниже.
ШАГ 1. Установка компонента DELPHI
Добавляем путь к папке1C_ADDIN_HELPER в библиотеку DELPHI.
Меню: Tools – Environment options - Library path
Добавляем путь к папке1C_ADDIN_HELPER в библиотеку DELPHI.
Меню: Tools – options - Library –library path
Компонент появляется в палитре DELPHI
Компонент появляется в палитре DELPHI
Данный шаг необходимо выполнить один раз.
ШАГ 2. Генерация проекта внешней компоненты.- Запускаем PrCreator.exe из папки 1C_ADDIN_ProjectCreator
- Указываем:
- Путь к папке, в которой будет создан проект внешней компоненты
- Имя библиотеки внешней компоненты (имя dll-ки)
- Имя объекта внешней компоненты. Т.е имя, под которым ее объект можно будет создавать в 1С с помощью функций Новый() или СоздатьОбъект().
- Если у компоненты должна быть страница свойств, ставим галочку «Нужна страница свойств».
- Нажимаем большую кнопку «Создать». В указанной папке появляется DELPHI-проект внешней компоненты 1С с указанными параметрами.
- Его можно открывать в DELPHI.
ШАГ 3. Как добавлять функционал внешней компоненты.
- Весь функционал компоненты реализуется в модуле Un_DM_List.pas, основной объект которого унаследован от TDataModule. Это дает возможность простого использования компонентов из палитры компонент DELPHI.
- Добавление свойств и методов внешней компоненты осуществляется через коллекции (T1CMethCollection) и (T1CPropCollection) объекта AddinFPList уже добавленного в проект генератором проектов.
- Чтобы добавить свойство внешней компоненты 1С, щелкаем по (T1CPropCollection)
Добавляем элемент в коллекцию и прописываем его свойства:
- Английское название
- Русское название
- Признак «IsReadOnly» запрещает 1С записывать в это свойство что либо.
Описываем события у нашего свойства:
procedure TDM_List.AddinFPListProps0Get(var OldValue: OleVariant);
Это событие возникает, когда 1С пытается прочитать что либо из данного свойства. Прочитает она ровно то, что мы передадим в параметр OldValue. Тип OleVariant позволяет передавать строки, числа, даты, а также более сложные структуры, поддерживаемые 1С.
procedure TDM_List.AddinFPListProps0Set(var NewValue: OleVariant);
Это событие возникает, когда 1С пытается записать что либо в данное свойство. Значение, которое 1С хочет записать, содержится в переменной NewValue. Мы можем обработать его, как хотим. Например, сохранить в одном из свойств нашего объекта. Тип OleVariant может быть преобразован в строку, число, или дату явным присваиванием. Компилятор DELPHI в этом случае берет работу по преобразованию типов на себя.
- Чтобы добавить метод внешней компоненты 1С, щелкаем по (T1CMethCollection)
Добавляем элемент в коллекцию и прописываем его свойства:
- Английское название
- Русское название
- Количество параметров
- Признак «IsFunction» сообщит 1С, что этот метод может возвращать значения.
Описываем событие у нашего метода:
procedure TDM_List.AddinFPListMethods0Execute(var Params: PSafeArray;
В переменную Params 1C передает параметры метода. Получить их можно, используя функцию GetNParam , добавленную в проект генератором. Эта функция имеет два параметра. В первый передается массив Params, во второй – номер параметра, который мы хотим получить. Нумерация параметров с нуля!
Param1:=GetNParam(Params,0); //Получаем первый параметр из массива
Можно также записать в Params значение некоторого параметра. Тогда 1С получит это значение после вызова метода (параметры передаются по ссылке). Для этого можно использовать функцию PutNParam, также имеющуюся в проекте. Онаимеет три параметра. В первый передается массив Params, во второй – номер устанавливаемого параметра, в третий – значение, которое мы хотим передать. Нумерация параметров с нуля!
PutNParam(Params,0,Param1); //Установим значение первого параметра для 1С
Ну и в случае, если наш метод может возвращать значения, можно передать возвращаемое значение в переменную Ret. Тип OleVariant позволяет передавать строки, числа, даты, а также более сложные структуры, поддерживаемые 1С.
Ret:='Тест'; //Передаем строковое значение в качестве результата работы метода
Дополнительные возможности
- Объект DM_List экспортрует стандартные интерфейсы 1С:
- _pEvent : IAsyncEvent;
- _pErrorLog : IErrorLog;
- _pProfile : IPropertyProfile;
- _pStatusLine : IStatusLine;
Ими можно пользоваться в соответствии с их стандартным 1С-ким описанием. В поставляемом демо-проекте есть пример их использования.
- ВАЖНО: 1С-8 не реализует возможности интерфейса ExtWndSupport. Поэтому генератор проекта не добавляет экспорт этого интерфейса в проект. Вы можете сделать это самостоятельно в методе Init, описанном в AddInObj.pas.
- Опционально генератор проекта может добавить в проект страницу свойств компоненты.
Обмен данными между объектом компоненты и страницей свойств осуществляется через унаследованный интерфейс IPropertyLink. В модуле страницы свойств описаны два метода:
- UpdatePropertyPage. Запрашивает свойства из объекта и отображает их на форме страницы свойств.
- Вызывается метод get_Config объекта DM_List, описанный в модуле Un_DM_List.pas
- Передается структура TConfig, описанная в проекте в модуле AddInLib.pas . По сути это запись (RECORD).
- Что нужно сделать для того, чтобы добавить какой-либо параметр для передачи из компоненты в страницу свойств:
- Добавить элемент в структуру TRecord
- В методе get_Config объекта DM_List прописать его заполнение.
- В методе UpdatePropertyPage страницы свойств прописать его отображение на форме.
- Вызывается метод put_Config объекта DM_List, описанный в модуле Un_DM_List.pas
- Передается та же структура TConfig.
- Что нужно сделать для того, чтобы добавить какой-либо параметр для передачи со страницы свойств в компоненту:
- В методе UpdateObject страницы свойств прописать заполнение элемента структуры CFG по данным формы.
- В методе put_Config объекта DM_List прописать реакцию на изменение настройки со стороны страницы свойств.
- Методы LoadProps() и SaveProps() объекта DM_List.
- Данные методы вызываются автоматически при создании и уничтожении объекта, соответственно
Полезные знания
- Для того, чтобы в 1С-8 компоненту можно было подключать по имени объекта, т.е писать ПодключитьВнешнююКомпоненту(«Addin.MyObj»), файл внешней компоненты надо зарегистрировать в реестре с помощью команды regsvr32. В проекте, создаваемом генератором, добавлен командный файл Register.cmd, выполняющий это действие.
- Сложности могут возникнуть с передачей типа БУЛЕВО между 1С и внешней компонентой. 1С 7.7 такого типа вообще не знает. 1С-8 передает его в COM-компоненты в странном виде.
Описание демо-проекта, включенного в поставку
Причины купить
1. На создание проекта внешней компоненты всегда уходит время.
2. Добавлять свойства и методы внешней компоненты стандартными средствами долго и неудобно.
3. Мой проект позволит Вам сэкономить кучу времени
4. Ваше время дороже тысячи рублей:)
Достоинства
1.Включены все исходные коды.
2.Готовый проект внешней компоненты 1С можно получить за несколько секунд, не разбираясь в том, как там что устроено.
3.Экспортируются и используются все документированные 1С интерфейсы.
4.Свойства и методы внешней компоненты можно добавлять визуально, как объекты обычной коллекции.
5.Подробная документацияГарантия возврата денег
ООО "Инфостарт" гарантирует Вам 100% возврат оплаты, если программа не соответствует заявленному функционалу из описания. Деньги можно вернуть в полном объеме, если вы заявите об этом в течение 14-ти дней со дня поступления денег на наш счет.
Программа настолько проверена в работе, что мы с полной уверенностью можем дать такую гарантию. Мы хотим, чтобы все наши покупатели оставались довольны покупкой.
2.Г енератор проекта внешней компоненты, позволяющий получить готовый проект за несколько секунд. Остается только добавлять свойства и методы своей компоненты с помощью визуального редактора. Все идентификаторы, имена, интерфейсы уже прописаны генератором проекта.
Введение
Что это такое:
- Это компонент для DELPHI (любой версии), позволяющий значительно упростить создание внешних компонент 1С (технология COM)
- Это генератор проекта внешней компоненты, позволяющий получить готовый проект за несколько секунд. Остается только добавлять свойства и методы своей компоненты с помощью визуального редактора. Все идентификаторы, имена, интерфейсы уже прописаны генератором проекта.
Почему до сих пор создавать по технологии COM
- Эта технология дает возможность написания универсальной компоненты, которая будет работать для всех версий 1С:Предприятия под windows 7.7/8.0/8.1/8.2/8.3
- Многие старые компоненты написаны по этой технологии. Для создания их современной замены без изменения конфигурации 1С необходимо использовать именно эту технологию.
- Например, для подключения новых видов торгового оборудования к типовым программам, лишенным теперь внешних обработок обслуживания оборудования.
Почему DELPHI
- Относительно невысокая стоимость самой среды разработки.
- Обилие в сети бесплатных или дешевых компонент для работы с чем угодно.
- Наименьшее время разработки.
- Многие программисты 1С перешли с паскаля и им достаточно просто освоить DELPHI.
Почему мой проект, ведь полно в сети различных проектов на эту тему в том числе, бесплатных
- Включены все исходные коды.
- Готовый проект внешней компоненты 1С можно получить за несколько секунд, не разбираясь в том, как там что устроено.
- Экспортируются и используются все документированные 1С интерфейсы.
- Свойства и методы внешней компоненты можно добавлять визуально, как объекты обычной коллекции.
- Подробная документация
Начало работы
Содержимое архива
- 1C_ADDIN_HELPER. Компонент для DELPHI. Его надо установить. Инструкция ниже.
- 1C_ADDIN_ProjectCreator. Генератор проекта внешней компоненты. Инструкция ниже.
- 1C_ADDIN_DEMO. Демо-проект внешней компоненты, сделанный по данной технологии. Также включены обработки 1С 7.7 и 1С 8.2 для проверки работы компоненты. Инструкция ниже.
ШАГ 1. Установка компонента DELPHI
Добавляем путь к папке1C_ADDIN_HELPER в библиотеку DELPHI.
Меню: Tools – Environment options - Library path
Добавляем путь к папке1C_ADDIN_HELPER в библиотеку DELPHI.
Меню: Tools – options - Library –library path
Компонент появляется в палитре DELPHI
Компонент появляется в палитре DELPHI
Данный шаг необходимо выполнить один раз.
ШАГ 2. Генерация проекта внешней компоненты.- Запускаем PrCreator.exe из папки 1C_ADDIN_ProjectCreator
- Указываем:
- Путь к папке, в которой будет создан проект внешней компоненты
- Имя библиотеки внешней компоненты (имя dll-ки)
- Имя объекта внешней компоненты. Т.е имя, под которым ее объект можно будет создавать в 1С с помощью функций Новый() или СоздатьОбъект().
- Если у компоненты должна быть страница свойств, ставим галочку «Нужна страница свойств».
- Нажимаем большую кнопку «Создать». В указанной папке появляется DELPHI-проект внешней компоненты 1С с указанными параметрами.
- Его можно открывать в DELPHI.
ШАГ 3. Как добавлять функционал внешней компоненты.
- Весь функционал компоненты реализуется в модуле Un_DM_List.pas, основной объект которого унаследован от TDataModule. Это дает возможность простого использования компонентов из палитры компонент DELPHI.
- Добавление свойств и методов внешней компоненты осуществляется через коллекции (T1CMethCollection) и (T1CPropCollection) объекта AddinFPList уже добавленного в проект генератором проектов.
- Чтобы добавить свойство внешней компоненты 1С, щелкаем по (T1CPropCollection)
Добавляем элемент в коллекцию и прописываем его свойства:
- Английское название
- Русское название
- Признак «IsReadOnly» запрещает 1С записывать в это свойство что либо.
Описываем события у нашего свойства:
procedure TDM_List.AddinFPListProps0Get(var OldValue: OleVariant);
Это событие возникает, когда 1С пытается прочитать что либо из данного свойства. Прочитает она ровно то, что мы передадим в параметр OldValue. Тип OleVariant позволяет передавать строки, числа, даты, а также более сложные структуры, поддерживаемые 1С.
procedure TDM_List.AddinFPListProps0Set(var NewValue: OleVariant);
Это событие возникает, когда 1С пытается записать что либо в данное свойство. Значение, которое 1С хочет записать, содержится в переменной NewValue. Мы можем обработать его, как хотим. Например, сохранить в одном из свойств нашего объекта. Тип OleVariant может быть преобразован в строку, число, или дату явным присваиванием. Компилятор DELPHI в этом случае берет работу по преобразованию типов на себя.
- Чтобы добавить метод внешней компоненты 1С, щелкаем по (T1CMethCollection)
Добавляем элемент в коллекцию и прописываем его свойства:
- Английское название
- Русское название
- Количество параметров
- Признак «IsFunction» сообщит 1С, что этот метод может возвращать значения.
Описываем событие у нашего метода:
procedure TDM_List.AddinFPListMethods0Execute(var Params: PSafeArray;
В переменную Params 1C передает параметры метода. Получить их можно, используя функцию GetNParam , добавленную в проект генератором. Эта функция имеет два параметра. В первый передается массив Params, во второй – номер параметра, который мы хотим получить. Нумерация параметров с нуля!
Param1:=GetNParam(Params,0); //Получаем первый параметр из массива
Можно также записать в Params значение некоторого параметра. Тогда 1С получит это значение после вызова метода (параметры передаются по ссылке). Для этого можно использовать функцию PutNParam, также имеющуюся в проекте. Онаимеет три параметра. В первый передается массив Params, во второй – номер устанавливаемого параметра, в третий – значение, которое мы хотим передать. Нумерация параметров с нуля!
PutNParam(Params,0,Param1); //Установим значение первого параметра для 1С
Ну и в случае, если наш метод может возвращать значения, можно передать возвращаемое значение в переменную Ret. Тип OleVariant позволяет передавать строки, числа, даты, а также более сложные структуры, поддерживаемые 1С.
Ret:='Тест'; //Передаем строковое значение в качестве результата работы метода
Дополнительные возможности
- Объект DM_List экспортрует стандартные интерфейсы 1С:
- _pEvent : IAsyncEvent;
- _pErrorLog : IErrorLog;
- _pProfile : IPropertyProfile;
- _pStatusLine : IStatusLine;
Ими можно пользоваться в соответствии с их стандартным 1С-ким описанием. В поставляемом демо-проекте есть пример их использования.
- ВАЖНО: 1С-8 не реализует возможности интерфейса ExtWndSupport. Поэтому генератор проекта не добавляет экспорт этого интерфейса в проект. Вы можете сделать это самостоятельно в методе Init, описанном в AddInObj.pas.
- Опционально генератор проекта может добавить в проект страницу свойств компоненты.
Обмен данными между объектом компоненты и страницей свойств осуществляется через унаследованный интерфейс IPropertyLink. В модуле страницы свойств описаны два метода:
- UpdatePropertyPage. Запрашивает свойства из объекта и отображает их на форме страницы свойств.
- Вызывается метод get_Config объекта DM_List, описанный в модуле Un_DM_List.pas
- Передается структура TConfig, описанная в проекте в модуле AddInLib.pas . По сути это запись (RECORD).
- Что нужно сделать для того, чтобы добавить какой-либо параметр для передачи из компоненты в страницу свойств:
- Добавить элемент в структуру TRecord
- В методе get_Config объекта DM_List прописать его заполнение.
- В методе UpdatePropertyPage страницы свойств прописать его отображение на форме.
- Вызывается метод put_Config объекта DM_List, описанный в модуле Un_DM_List.pas
- Передается та же структура TConfig.
- Что нужно сделать для того, чтобы добавить какой-либо параметр для передачи со страницы свойств в компоненту:
- В методе UpdateObject страницы свойств прописать заполнение элемента структуры CFG по данным формы.
- В методе put_Config объекта DM_List прописать реакцию на изменение настройки со стороны страницы свойств.
- Методы LoadProps() и SaveProps() объекта DM_List.
- Данные методы вызываются автоматически при создании и уничтожении объекта, соответственно
Полезные знания
- Для того, чтобы в 1С-8 компоненту можно было подключать по имени объекта, т.е писать ПодключитьВнешнююКомпоненту(«Addin.MyObj»), файл внешней компоненты надо зарегистрировать в реестре с помощью команды regsvr32. В проекте, создаваемом генератором, добавлен командный файл Register.cmd, выполняющий это действие.
- Сложности могут возникнуть с передачей типа БУЛЕВО между 1С и внешней компонентой. 1С 7.7 такого типа вообще не знает. 1С-8 передает его в COM-компоненты в странном виде.
Описание демо-проекта, включенного в поставку
Причины купить
1. На создание проекта внешней компоненты всегда уходит время.
2. Добавлять свойства и методы внешней компоненты стандартными средствами долго и неудобно.
3. Мой проект позволит Вам сэкономить кучу времени
4. Ваше время дороже тысячи рублей:)
Достоинства
1.Включены все исходные коды.
2.Готовый проект внешней компоненты 1С можно получить за несколько секунд, не разбираясь в том, как там что устроено.
3.Экспортируются и используются все документированные 1С интерфейсы.
4.Свойства и методы внешней компоненты можно добавлять визуально, как объекты обычной коллекции.
5.Подробная документацияГарантия возврата денег
ООО "Инфостарт" гарантирует Вам 100% возврат оплаты, если программа не соответствует заявленному функционалу из описания. Деньги можно вернуть в полном объеме, если вы заявите об этом в течение 14-ти дней со дня поступления денег на наш счет.
Программа настолько проверена в работе, что мы с полной уверенностью можем дать такую гарантию. Мы хотим, чтобы все наши покупатели оставались довольны покупкой.
Простая внешняя компонента для 1С:Предприятие 7.7 с исходниками (Delphi-5).
Выполняет одну функцию: сделать снимок экрана и положить в файл с заданной компрессией.
Возвращает =1 - успешно, =0 - не успешно.Простая внешняя компонента для 1С:Предприятие 7.7 с исходниками (Delphi-5).
Выполняет одну функцию: сделать снимок экрана и положить в файл с заданной компрессией.
Возвращает =1 - успешно, =0 - не успешно. Пример использования:
AddIn_V7MyScreenShot.zip - dll'ка и обработка для иллюстрации работы
Pas_V7MyScreenShot.zip - исходники (Delphi-5)Специальные предложения
Просмотры 19041
Загрузки 476
Рейтинг 14
Создание 22.02.08 13:04
Обновление 24.10.08 21:41
№ Публикации 15562
Конфигурация Конфигурации 1cv7
Операционная система Windows
Страна Россия
Вид учета Не имеет значения
Доступ к файлу Абонемент ($m)
Код открыт Не указано
См. также
1 стартмани
28.11.2013 97639 303 Serginio 77
Внешняя компонента для преобразования файлов из/в кодировку Base64 в 1С 7.7
Эта внешняя компонента Base64.dll предназначена для платформы 1С версии 7.7. Используется для преобразования файлов из/в кодировку Base64 из встроенного языка 1С Предприятие. Компонента тестировалась на базе конфигурации Бухгалтерский учет для Казахстана, редакции 7.70.257.
2 стартмани
06.04.2021 4346 8 softmaker 7
Криптография: внешняя компонента для 1С 7.7
Цифровые подписи, шифрование, просмотр сертификатов ключей ЭЦП, работа с различными криптопровайдерами (в т.ч. КриптоПРО ГОСТ 2012) в 1С 7.7.
1 стартмани
08.06.2020 5722 14 mdbruyfn 5
Протокол UDP: внешняя компонента для 1С 7.7
1 стартмани
23.05.2020 4951 3 mdbruyfn 0
Компоненты распознавания и печати штрих-кодов Промо
Комплект программного обеспечения для реализации функций оптического распознавания штрих-кодов различных систем при помощи обычной web-камеры, а также их отображения в печатных формах. Программы могут работать в составе конфигураций, созданных на базе платформ «1С-Предприятие» версий 7.7, 8.2, 8.3. Компонент чтения кодов реализован в виде внешней компоненты 1С с COM-интерфейсом. Компонент отображения создан по стандартной технологии ActiveX для Windows, и может быть встроен в любое приложение, поддерживающее встраивание ActiveX элементов управления, например в документ Word или Excel, или форму VBA. P.S. Добавлена новая версия программы распознавания. Новые функции: обработка видео в реальном режиме (а не по таймеру, как раньше), добавлена возможность распознавания штрих-кодов из графических файлов JPEG, PNG, GIF, BMP, а также передавать для распознавания картинки из 1С, теперь можно получить в 1С захваченное с камеры или файла изображение, как с выделением мест, содержащих коды, так и без, а также отдельные фрагменты изображений, содержащие код. Добавлены новые свойства и методы для программирования. Обновлена документация.
Читайте также:
- UpdatePropertyPage. Запрашивает свойства из объекта и отображает их на форме страницы свойств.
- UpdatePropertyPage. Запрашивает свойства из объекта и отображает их на форме страницы свойств.