Addin компонента из типовой конфигурации.

1. user1075930 28.09.22 17:29 Сейчас в теме
Всем привет, сегодня обновляя конфигурацию столкнулся с ранее неизвестным мне объектом или возможностью 1с платформы - работа с addin компонентой.
В предыдущей итерации конфигурации определенный набор значений собирался по конфигурации при помощи встроенной в конфигурацию обработки, а в модуле менеджера была экспортная функция для получения данного набора. При помощи расширения, в одной из функций текст запроса был изменен, чтобы получить дополнительные поля из регистра.
В новой версии этой обработки уже нет, а в том месте, где происходило обращение к ней появилось обращение к компоненте:
        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. А что дальше делать пока что непонятно.
По теме из базы знаний
Найденные решения
12. spacecraft 29.09.22 10:20 Сейчас в теме
(11) помимо прочтения статьи нужно знать язык С++ и уметь на нем программировать.
Не знаю как точно там сделано, но как вариант, обработка в виде двоичных данных помещена в ресурсы самой библиотеки (dll) и сохраняется в файл по вызываемому методу.
(7)
Наверняка есть возможность из своей обработки создать компоненту и поместить её в макет?

Из обработки... ну можно, наверно, запустить компилятор С++ и собрать компоненту. Только смысл. Это не 1С. Даже близко. И подходы там другие. Подсмотреть код и подправить под себя, как в обработках 1С, не получится.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Sashares 35 28.09.22 18:30 Сейчас в теме
(1) Судя по коду, из компоненты внешняя обработка сохраняется во временные файлы.
Ну так поставьте точку останова после того как обработка сохраняется во временные файлы и возьмите обработку из этого каталога.
3. user1075930 28.09.22 18:57 Сейчас в теме
(2) Вы верно подметили, обработка сохраняется в каталог временных файлов, с её помощью создается набор данных, а затем она очищается с другими временными файлами.
Мне нужно изменить набор данных который возвращает обработка (из общего макета) на постоянной основе. Изменив обработку во временном каталоге своей цели я не достигну, может быть вы знаете как эту обработку поместить в макет под видом внешней компоненты?
4. Sashares 35 28.09.22 19:22 Сейчас в теме
(3)А зачем?
Сделайте расширение - добавьте в него рабочую доработанную обработку.
Замените вызов типовой процедуры, которая использует обработку из компоненты на вашу обработку из расширения.
5. user1075930 28.09.22 21:04 Сейчас в теме
(4) По сути это уже было сделано, сейчас уже всё работает, но для меня интересно было бы узнать как изменить саму компоненту, можно ли получить доступ и исходить, посмотреть что внутри. Темы была создана что бы узнать от знающих коллег возможность такого решения и примерные к нему шаги.
6. spacecraft 28.09.22 23:37 Сейчас в теме
(5) это dll на с++. Изменять без исходников... теоретически конечно можно, дизассемблером пройтись. В лучшем случае получите код на языке ассемблера.
7. user1075930 29.09.22 08:15 Сейчас в теме
(6) Наверняка есть возможность из своей обработки создать компоненту и поместить её в макет?
8. RustamZz 29.09.22 08:36 Сейчас в теме
(7) Можно и саму обработку поместить в макет - но смысл? Они придумали супер защиту от мамкиных хакеров: обработку прятать в dll. Вы лучше напишите кто разработчик и что за конфигурация. Что бы другие не вляпались.
12. spacecraft 29.09.22 10:20 Сейчас в теме
(11) помимо прочтения статьи нужно знать язык С++ и уметь на нем программировать.
Не знаю как точно там сделано, но как вариант, обработка в виде двоичных данных помещена в ресурсы самой библиотеки (dll) и сохраняется в файл по вызываемому методу.
(7)
Наверняка есть возможность из своей обработки создать компоненту и поместить её в макет?

Из обработки... ну можно, наверно, запустить компилятор С++ и собрать компоненту. Только смысл. Это не 1С. Даже близко. И подходы там другие. Подсмотреть код и подправить под себя, как в обработках 1С, не получится.
13. user1075930 29.09.22 11:17 Сейчас в теме
(12)
Хорошо, видимо это действительно не так необходимо для 1Сника, будем считать за ответ - необходимость знать C++ и разбираться в его использовании для связки с компонентами 1С.
9. user1075930 29.09.22 08:46 Сейчас в теме
(8)
(8) Просто интересно узнать как это делается, в будущем может пригодится или на собеседовании могут спросить.
Поставщик 1C International, конфигурация Drive 1.4
10. Sashares 35 29.09.22 09:24 Сейчас в теме
(9)
Просто интересно узнать как это делается

Вот документация https://its.1c.ru/db/metod8dev/content/3221/hdoc
11. user1075930 29.09.22 09:53 Сейчас в теме
(10)
Вчера прочёл данную статью. Про внешную обработку там к сожалению ни чего не сказано.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот