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

Неправильная конвертация даты #11

Closed Toveal closed 10 months ago

Toveal commented 10 months ago

Если в компоненту передать дату (тестил только с аргументов функции) то получим не то что передавали. ОС windows 10. Конвертация даты в строку просто для примера

rust

#[derive(AddIn)]
pub struct TestDate{
    #[add_in_con] // соединение с 1С для вызова внешних событий
    connection: Arc<Option<&'static Connection>>, // Arc для возможности многопоточности

    #[add_in_func(name = "SimpleTestDate", name_ru = "ТестДаты")]
    #[arg(Date)]
    #[returns(Str)]
    simple_test_date: fn(&Self, chrono::DateTime<chrono::FixedOffset>) -> String,
}

impl TestDate {
    pub fn new() -> Self {
        Self {
            connection: Arc::new(None),
            simple_test_date: Self::simple_test_date,
        }
    }

    pub fn simple_test_date(&self, date: chrono::DateTime<chrono::FixedOffset>) -> String {
        date.to_string()
    }
}

cargo.toml

[dependencies]
chrono = "0.4.31"
native_api_1c = { git = "https://github.com/Sebekerga/native_api_1c" }
utf16_lit = "2.0.2"

ОбВК = Новый("Addin.MyAddin.TestDate");

ДатаТест = Дата(2023, 04, 18, 17, 30, 25);
Результат = ОбВК.ТестДаты(ДатаТест);
// Результат = 0123-03-18 17:30:25 +00:00 
Toveal commented 10 months ago

Для исправления ошибки создан пулл-реквест

Sebekerga commented 10 months ago

Принял пулл, хорошо замечено. Вообще время, по-хорошему, переделать на chrono::NaiveDateTime, так как 1Сное время таким и является. Но мне каж, не срочно.

Хз, я думаю всё же убрать подмодуль ядра, как и подмодуль макроса, слишком много гемора получается при коллаборации.