Sebekerga / native_api_1c

Crate for simple implementation of Component for Native API 1C:Enterprise written in rust
https://crates.io/crates/native_api_1c
62 stars 13 forks source link

Tracking. Out params #6

Open Sebekerga opened 11 months ago

Sebekerga commented 11 months ago

Ишью для отслеживания разработки out параметров

Sebekerga commented 11 months ago

Доступна начальная, минимально рабочая версия:

[dependencies]
native_api_1c = { git = "https://github.com/Sebekerga/native_api_1c", tag = "impl_out_params" }

Пример определения функции с out параметрами:

#[add_in_func(name = "TransformString", name_ru = "ПреобразоватьСтроку")]
#[arg(Str, as_in)]
#[arg(Str, as_out)]
#[returns(Bool)]
transform_str: fn(&Self, String, &mut String) -> bool,
WorldException commented 11 months ago

Проверил все типы параметров, вроде все работает, кроме случая когда Self тоже mut. Добавил запрос на слияние https://github.com/Sebekerga/native_api_1c_macro/pull/2

Sebekerga commented 11 months ago

Обсуждение здесь: https://github.com/Sebekerga/native_api_1c_macro/pull/2

Sebekerga commented 11 months ago

Сейчас остается только доделать out параметр для типа дата. Также вопрос: по идее, в тех же драйверах подключаемого оборудования, где используются параметры, у нас нет гарантии, что на вход будет подаваться значение такого же типа, какое требуется на выходе?

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

WorldException commented 10 months ago

Проверил работу драйвера для дисплея покупателя на текущей реализации, с первого взгляда все работает. Типы данных там в основном два числовой и строка, даты не попадалось. Каких то особенностей преобразования не заметил, но присмотрюсь когда буду реализовывать другие версии.