Closed AleksandrSmith7 closed 1 year ago
Пару моментов:
1) Обверните пж в кодовые блоки, а то читается тяжело. Пример
2) Можете так же приложить ваш файл Cargo.toml
?
3) И результат команды cargo expand > expand.rs
(сохранится в файл expand.rs
)
По возможности так же кидайте длинные файлы под спойлер. Пример:
<details>
<summary>Кодовый блок под сполйером</summary>
Описание
```rust
"Ваш длинный кусок кода"
То, что у вас не работает - странно, давайте разбираться. Я не тестил на бубунте, тестил только на манжаре, но не думаю, что там есть какие-то существенно влияющие отличия, так что скорее всего какая-то бага
У меня вроде б завелся ваш код, хотя обращаться по имени процедуры "ОбработатьДанные" получается почему-то через раз (мб из-за языка системы или чего-то еще), но в любом случае, у вас ошибка не в этом. Поэтому будем смотреть дальше
Файлы для разбора.zip Добавил все файлы в архив. Если хотите могу предоставить Анидеск например. Спасибо за замечания, учту, я на гит новичок.
Да ничего страшного :)
Я кажется увидел у вас проблему в коде на стороне 1С:
ПодключитьВнешнююКомпонентуАсинх("ОбщийМакет.VK","Test2",ТипВнешнейКомпоненты.Native);
ВК = Новый("AddIn.Test2.Test2");
Вы вызываете асинхронную функцию ПодключитьВнешнююКомпонентуАсинх
, но не ожидаете ее завершения, после сразу же пытаетесь создать новый объект компоненты. Добавьте оператор Ждать
:
Ждать ПодключитьВнешнююКомпонентуАсинх("ОбщийМакет.VK","Test2",ТипВнешнейКомпоненты.Native);
//^^^^^
ВК = Новый("AddIn.Test2.Test2");
Если это не исправит проблему, будем копать дальше :)
Все оказалось проще чем я думал Нужно было включить режим использования синхронных вызовов в конфигурации. Спасибо за помощь) Работает все на Линукс.
Отлично
Добрый день на Линукс так и не хочет работать библиотека, не могу понять в чем дело. Ubuntu 22.04.3 LTS Тестил на платформе для Линукс. 1С:Предприятие 8.3, учебная версия (8.3.23.1688) &НаКлиенте Процедура НаписатьСообщение(Команда) Попытка НачатьУстановкуВнешнейКомпоненты(,"ОбщийМакет.VK"); Сообщить("ОК");
Исключение Сообщить("Нет") КонецПопытки;
ПодключитьВнешнююКомпонентуАсинх("ОбщийМакет.VK","Test2",ТипВнешнейКомпоненты.Native); ВК= Новый("AddIn.Test2.Test2"); Результат = ВК.ОбработатьДанные("Тел","ФИО"); Сообщить (Результат); КонецПроцедуры Результат на скриншоте Описание ошибки: Тип не определен (AddIn.Test2.Test2) {Документ.СвязьСКлиентом.Форма.ФормаДокумента.Форма(26)}:ВК= Новый("AddIn.Test2.Test2");
[ОшибкаВоВремяВыполненияВстроенногоЯзыка, ОшибкаИспользованияВстроенногоЯзыка]
Тестовый код
use std::{ // fs::{metadata, File}, // io::Read, sync::Arc, }; use native_api_1c::{ native_api_1c_core::ffi::connection::Connection, native_api_1c_macro::AddIn };
[derive(AddIn)]
pub struct Test2 {
[add_in_con] // соединение с 1С для вызова внешних событий
}
impl Test2 { pub fn new() -> Self { Self { connection: Arc::new(None), read_bytes: Self::read_bytes, } }
}