Имя: Пароль:
1C
1C 7.7
v7: 1sqlite: Отбрасывается дробная часть, База DBF
,
0 Volodja
 
22.01.22
17:45
При выполнении запроса возвращается результат с отбрасыванием дробной части (СпрАбоненты_ОбщаяПлощадь):
SELECT
    СпрАбоненты.[ID] AS [СпрАбоненты_Ссылка :Справочник.Абоненты]
    ,СпрАбоненты.[ОбщаяПлощадь]  as [СпрАбоненты_ОбщаяПлощадь :Число.7.2]
FROM
    [Справочник.Абоненты] AS СпрАбоненты

Как это победить?
Версия sqlite 3.36.0.25 ( пробовал и более ранние)
1 Volodja
 
22.01.22
18:25
(0) Если Периодический реквизит (Цена), то нормально все. Возвращается с дробной частью
SELECT
    СпрНоменклатура.[ID] AS [СпрНоменклатура_Ссылка :Справочник.Номенклатура]
    ,(Select Value
      From Константы
      Where (OBJID=    СпрНоменклатура.ID) AND (ID=:ИсторияРеквизита.Номенклатура.Цена) AND (Date <= '20220101')
      Order By Date Desc
      Limit 1) AS [СпрНоменклатура_Цена :Число.15.2]

FROM
    [Справочник.Номенклатура] AS СпрНоменклатура
2 Ёпрст
 
22.01.22
23:33
ОбщаяПлощадь - какой тип в метаданных задан ?
3 Ёпрст
 
22.01.22
23:37
ну и.. если .15.2 поставить (мало ли, переполнение разряда у тебя там
4 Ёпрст
 
22.01.22
23:37
или вообще выкинь типизацию, просто
,СпрАбоненты.ОбщаяПлощадь СпрАбоненты_ОбщаяПлощадь че кажет ?
5 Volodja
 
23.01.22
07:46
(4) Реквизит ОбщаяПлощадь Число(7.2)
В запросе и больше ставил.
Типизацию тоже убирал, также.
6 Volodja
 
23.01.22
08:02
(4) Может кто у себя проверит? Может тут проблема в библиотеке?
    (1) - работает как надо.
7 hhhh
 
23.01.22
08:35
(5) возможно дальше ошибка, а не здесь. Пишете в реквизит, который целое.
8 Volodja
 
23.01.22
09:12
(7) У меня в базе ОбщаяПлощадьс дробной частью. В списке это прекрасно видно. После применения запроса (0) :

    _глБД_SQLite = СоздатьОбъект("SQLiteBase");
    _глБД_SQLite.Открыть(":memory:");
    Запрос = _глБД_SQLite.НовыйЗапрос();
    //Запрос.Отладка(1);
    _тз = Запрос.ВыполнитьЗапрос(СокрЛП(ТекстЗапроса));
        _тз.ВыбратьСтроку();
В _тз колонка СпрАбоненты_ОбщаяПлощадь содержит данные без дробной части
9 Volodja
 
23.01.22
09:15
(8) Проверил и на документах (Строки), таже история.
ОС - Windows 10 pro (если это имеет значение)
10 youalex
 
23.01.22
10:03
А если не в 1С посмотреть, а в DBeaver или типа того
11 Volodja
 
23.01.22
10:06
(10) Через DBFNavigator смотрю. Есть там дробная часть.
12 youalex
 
23.01.22
10:11
А если 1.0 * СпрАбоненты.[ОбщаяПлощадь]
13 youalex
 
23.01.22
10:12
и указание типа :Число.7.2 - разве в алиасе должно быть?
14 Volodja
 
23.01.22
10:18
(13) Убирал, ставил, и 10.2 пробовал и умножал на 1.0. Нифига
Если умножаю на 10, то результат без учета дробной части.
Что за дичь?
15 Volodja
 
23.01.22
10:27
(14) Вот скрины экранов
https://wdfiles.ru/e16d3c
16 Volodja
 
23.01.22
10:40
(15) Вообще если применяю арифметическую операцию, то она выполняется с целой частью
Например:
Площадь=50.7
1.1*Площадь возвращает 55

Площадь=36.2
1.1*Площадь возвращает 39.6
17 Volodja
 
23.01.22
11:40
Может быть, 1sqlite обрабатывает числа, согласно региональным настройкам? У меня в настройках формата стоял разделитель целой и дробной части ",", я установил ".". Но это не решило проблему.
Погуглив, нашел, что на C# при обращении к sqLite решали эту проблему так:
    Thread​.​CurrentThread​.​CurrentCulture = System.​Globalization​.​CultureInfo​.​InvariantCulture​;
Может и в моем случае чтоөто подобное применить?
18 Гость из Мариуполя
 
гуру
23.01.22
11:50
(17) но ты же сам говоришь, что Номенклатура.Цена отрабатывает нормально? если бы дело было в региональных настройках, наверно бы это влияло на все дробные части везде?
19 Volodja
 
23.01.22
11:54
(18) Наверное? потому что тип Value в 1s_const это строка
20 Volodja
 
23.01.22
11:55
(19) Наверное, потому что тип Value в 1s_const это строка
21 Djelf
 
23.01.22
12:53
О подобном никто и никогда не сообщал. Увы, надо смотреть базу. Есть вот такая идея, что выводит такой код?


Реквизит = Метаданные.Справочник("Абоненты").Реквизит("ОбщаяПлощадь");
Сообщить("Тип "+Реквизит.Тип+" Длина "+Реквизит.Длина+" Точность "+Реквизит.Точность);
22 Volodja
 
23.01.22
13:56
(21)  Тип Число Длина 6 Точность 2
23 Volodja
 
23.01.22
14:01
(21) На Windows Server 2008 тоже самое происходит
Вообще любые числовые реквизиты с дробной частью с разной точностью возвращаются целыми
24 Djelf
 
23.01.22
14:07
(22) Ладно, видимо метаданные верные.
На других справочниках, документах, регистрах пробовал? Как там с числами?
А оригинальная от Орефкова https://snegopat.ru/1sqlite/index так же себя ведет?

Отключай все ВК. Kernel32, Kernel33 и т.п. стоит?
Давно дело было, но кажется после v7lua.dll такое было, не помню уже...

Да у меня даже на linux под wine оно работает! Такого поведения никогда не видел.
25 Djelf
 
23.01.22
14:13
+(24) И проверим с еще вот так, что выводит запрос

PRAGMA table_info('Справочник_Абоненты');
26 Volodja
 
23.01.22
14:21
(24) Бинго !!!
v7lua.dll чудит. А так хотелось раскраску сделать.
27 Volodja
 
23.01.22
14:23
(25) Numeric (7,2) выдает
28 Djelf
 
23.01.22
14:26
Для раскраски хватает в ВК sci хватает скорости и 1С, впрочем можешь попробовать сборку отсюда: https://code.google.com/archive/p/v7lua/downloads или мою: https://cloud.mail.ru/public/PvqV/4CNpYPW8a

Это не пригодилось: https://6bix.livejournal.com/47995.html ;)
29 Volodja
 
23.01.22
14:28
Спасибо, Djelf. Снова выручили.
(28) попробую
30 Volodja
 
23.01.22
14:50
(28) а как это использовать? -  https://cloud.mail.ru/public/PvqV/4CNpYPW8a  
https://code.google.com/archive/p/v7lua/downloads - у меня такая же.
31 Djelf
 
23.01.22
14:54
Не то, это: https://cloud.mail.ru/public/rp2u/SN2o5Lv3a
Не знаю, сейчас у меня обе работают при загрузке и до и после 1sqlite
32 Volodja
 
23.01.22
15:05
(31) С этой v7lua.dll  тоже пропадает дробная часть.
Она работает в паре с 1sci.dll ?
33 Djelf
 
23.01.22
15:17
каталог bin кидай на обменник
34 Volodja
 
23.01.22
15:27
35 Злопчинский
 
23.01.22
15:29
А что такое v7lua ?
36 Volodja
 
23.01.22
15:39
(35) https://wdfiles.ru/1a4d23
Вот так с ней можно поле ввода делать
37 Злопчинский
 
23.01.22
15:50
(36) это именно для раскраски текстов запросов?
38 Volodja
 
23.01.22
16:02
(37) с ней идут еще несколько файлов *.lua, видимо там и описываются какие слова выделяются.
39 alyuev
 
25.01.22
16:32
40 alyuev
 
25.01.22
19:27
(28) Согласен с Djelf! Всё работает и с ВК sci.dll.
41 Djelf
 
25.01.22
20:06
(40) С sci.dll работает, с луа - нет, просто загрузка луа dll ничего не делает, но если какой то ее метод вызвать, она что-то перехватывает и потом ой - все.
И как я писал в (28), эта ворона мне не пригодилась.
Если не пригодилась лет 10 назад, теперь уже точно возвращается за ней не буду, и лечить ее тоже не буду, не моя это ВК, чтобы ее лечить...

З.Ы. С sci.dll луа не нужна, код на 1С не сильно медленнее для раскраски и т.п., и 10 лет назад это не тормозило, а сейчас тем более.
42 Volodja
 
26.01.22
07:49
(41) А есть пример как раскрасить текст поля ввода без помощи Луа?
Тот пример, что у меня есть работает в связке Sci + Lua
43 Djelf
 
26.01.22
08:22
44 Ёпрст
 
26.01.22
09:54
sci.dll даже я в свои поделки включал.. валяется на нимфостарте - класс редактирования формы
45 Volodja
 
27.01.22
06:44
(44) Ссылку не покажешь?
46 Ёпрст
 
27.01.22
10:35
Независимо от того, куда вы едете — это в гору и против ветра!