Addin компонента из типовой конфигурации.
Всем привет, сегодня обновляя конфигурацию столкнулся с ранее неизвестным мне объектом или возможностью 1с платформы - работа с addin компонентой.
В предыдущей итерации конфигурации определенный набор значений собирался по конфигурации при помощи встроенной в конфигурацию обработки, а в модуле менеджера была экспортная функция для получения данного набора. При помощи расширения, в одной из функций текст запроса был изменен, чтобы получить дополнительные поля из регистра.
В новой версии этой обработки уже нет, а в том месте, где происходило обращение к ней появилось обращение к компоненте:
По коду несложно догадаться, что функции по сбору данных выполняются через ту же обработку, но она скомпилирована в компоненту и помещена в общий макет.
В качестве решения пришлось делать повторный запрос, и дополнять набор записей, дополнительными значениями, но мне бы хотелось как то получить доступ к данной компоненте и подредактировать её, что бы сразу получить все необходимые данные.
Из общего макета я могу получить лишь файлы libepf_win32.dll и libepf_win64.dll, а так же MANIFEST.XML. А что дальше делать пока что непонятно.
В предыдущей итерации конфигурации определенный набор значений собирался по конфигурации при помощи встроенной в конфигурацию обработки, а в модуле менеджера была экспортная функция для получения данного набора. При помощи расширения, в одной из функций текст запроса был изменен, чтобы получить дополнительные поля из регистра.
В новой версии этой обработки уже нет, а в том месте, где происходило обращение к ней появилось обращение к компоненте:
AddInTempate = "CommonTemplate.CodeCompletionAddIn";
AddInAttached = AttachAddIn(AddInTempate, "CodeCompletionAddIn", AddInType.Native);
If AddInAttached Then
CodeCompletionAddIn = New("AddIn.CodeCompletionAddIn.TestAddIn");
Result = CodeCompletionAddIn.Unpack();
UUID = New UUID();
BinaryData = New BinaryData(Result);
Address = PutToTempStorage(BinaryData, UUID);
BinaryData.Write(CoreMethodsTempFileName());
Показать
TempFileName = TempFilesDir()+ "ExternalDataProcessor.epf";
File = New File(TempFileName);
If Not File.Exist() Then
BinaryData = Address;
BinaryData.Write(TempFileName);
EndIf;
ProtectionDescription = New UnsafeOperationProtectionDescription();
ProtectionDescription.UnsafeOperationWarnings = False;
ExternalDataProcessor = ExternalDataProcessors.Create(TempFileName, False, ProtectionDescription);
ExternalDataProcessor.InitializeAdditionalPropertiesForPosting(DocumentRef, StructureAdditionalProperties);
ПоказатьПо коду несложно догадаться, что функции по сбору данных выполняются через ту же обработку, но она скомпилирована в компоненту и помещена в общий макет.
В качестве решения пришлось делать повторный запрос, и дополнять набор записей, дополнительными значениями, но мне бы хотелось как то получить доступ к данной компоненте и подредактировать её, что бы сразу получить все необходимые данные.
Из общего макета я могу получить лишь файлы libepf_win32.dll и libepf_win64.dll, а так же MANIFEST.XML. А что дальше делать пока что непонятно.
По теме из базы знаний
- Тюнинг типовых конфигураций 1с 8.1/8.2 (уже 7 примеров, обновлено 14.03.2013)
- Восстановление работоспособности файловой базы. 3. Конфигурация
- Внешняя компонента NativeAPI для работы с системным треем
- Обработка обслуживания ККТ АТОЛ, платформа 5.0 с драйверами v10 для 1С:ТиС 9.2 и 1С: Компл 4.5 (МАРКИРОВКА, ФФД 1.2, эквайринг Сбер)
- HTTP сервер, HTTP асинхронный клиент, клиент ГИС МТ "Честный знак" внешние компоненты для 1С 7.7
Найденные решения
(11) помимо прочтения статьи нужно знать язык С++ и уметь на нем программировать.
Не знаю как точно там сделано, но как вариант, обработка в виде двоичных данных помещена в ресурсы самой библиотеки (dll) и сохраняется в файл по вызываемому методу.
(7)
Из обработки... ну можно, наверно, запустить компилятор С++ и собрать компоненту. Только смысл. Это не 1С. Даже близко. И подходы там другие. Подсмотреть код и подправить под себя, как в обработках 1С, не получится.
Не знаю как точно там сделано, но как вариант, обработка в виде двоичных данных помещена в ресурсы самой библиотеки (dll) и сохраняется в файл по вызываемому методу.
(7)
Наверняка есть возможность из своей обработки создать компоненту и поместить её в макет?
Из обработки... ну можно, наверно, запустить компилятор С++ и собрать компоненту. Только смысл. Это не 1С. Даже близко. И подходы там другие. Подсмотреть код и подправить под себя, как в обработках 1С, не получится.
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(2) Вы верно подметили, обработка сохраняется в каталог временных файлов, с её помощью создается набор данных, а затем она очищается с другими временными файлами.
Мне нужно изменить набор данных который возвращает обработка (из общего макета) на постоянной основе. Изменив обработку во временном каталоге своей цели я не достигну, может быть вы знаете как эту обработку поместить в макет под видом внешней компоненты?
Мне нужно изменить набор данных который возвращает обработка (из общего макета) на постоянной основе. Изменив обработку во временном каталоге своей цели я не достигну, может быть вы знаете как эту обработку поместить в макет под видом внешней компоненты?
(4) По сути это уже было сделано, сейчас уже всё работает, но для меня интересно было бы узнать как изменить саму компоненту, можно ли получить доступ и исходить, посмотреть что внутри. Темы была создана что бы узнать от знающих коллег возможность такого решения и примерные к нему шаги.
(11) помимо прочтения статьи нужно знать язык С++ и уметь на нем программировать.
Не знаю как точно там сделано, но как вариант, обработка в виде двоичных данных помещена в ресурсы самой библиотеки (dll) и сохраняется в файл по вызываемому методу.
(7)
Из обработки... ну можно, наверно, запустить компилятор С++ и собрать компоненту. Только смысл. Это не 1С. Даже близко. И подходы там другие. Подсмотреть код и подправить под себя, как в обработках 1С, не получится.
Не знаю как точно там сделано, но как вариант, обработка в виде двоичных данных помещена в ресурсы самой библиотеки (dll) и сохраняется в файл по вызываемому методу.
(7)
Наверняка есть возможность из своей обработки создать компоненту и поместить её в макет?
Из обработки... ну можно, наверно, запустить компилятор С++ и собрать компоненту. Только смысл. Это не 1С. Даже близко. И подходы там другие. Подсмотреть код и подправить под себя, как в обработках 1С, не получится.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот