На главную страницу
Русский English
 


Поддержка
Форум
Техподдержка
Закрытый разделПерсональная

Авторизация

Запомнить меня на этом компьютере
  Забыли свой пароль?
  Регистрация



Поиск по сайту


Подписка

Изменение параметров

Hits 39915811
3384
Hosts 1593334
602
Visitors 29613111
3119

30


Главная / Поддержка / Форумы / RUStab

Форум «RUStab»

Версия для печати Версия для печати

Список форумов
Новые темы
Список тем
Поиск по форумам
Помощь
Войти
Регистрация

Сообщения 26 - 31 из 31
Начало | Пред. | 1 2 | След. | Конец 

Тема: «Формы Автоматика и Сценарий » в форуме: RUStab   Просмотров: 16980
 
Евгений Машалов
Администратор

 
Всего сообщений: 885
Дата регистрации: 23.04.2007
Создано: 06.06.2019 13:51:33
 
 
Здравствуйте Олег,

abs в правилах парсера стоит в последних строках. Может появился не одновременно с тем что описывалось в 11.4.

Если мы про формулы автоматики/сценария RUSTab то в них про равенства вообще ничего нет, потому что единственный тип, который в нем работает - double. И даже если Вы забираете поле целого типа в формулу - то оно кастится в double.
 
Профиль
Наверх
Олег Бельцов
Посетитель
 
Всего сообщений: 34
Дата регистрации: 14.05.2012
Создано: 06.06.2019 18:17:39
 
 
Спасибо.
 
Профиль
Наверх
Олег Бельцов
Посетитель
 
Всего сообщений: 34
Дата регистрации: 14.05.2012
Создано: 07.06.2019 11:05:25
 
 
Вспомнил, может не к месту, но раз уж разговор зашёл про типы и формулы в сценариях.

Выявил такую особенность:
Если из внешнего скрипта (у меня python, но вдруг ещё кто столкнётся) делаешь column.Z(row_id) = value, при этом value имеет тип c плавающей запятой, а поле, которому присваиваем -- "строка", то, почему то происходит потеря дробной части. Т.е. float 13.2 преобразуется в string "13,2" (через запятую), а из строки получается float 13.0.
Скорее всего эта особенность обусловлена вашим кодом, так как если я явно преобразую value в строку, а у меня по умолчанию получается "13.2", и делаю column.Z(row_id) = value, где value -- строка, то такой ошибки не возникает.

Менял как раз поле Formula в таблице DFWAutoActionScn.

 
Профиль
Наверх
Станислав Богданов
Модератор
 
Всего сообщений: 42
Дата регистрации: 11.10.2012
Создано: 07.06.2019 12:56:05
 
 
Цитата
почему то происходит потеря дробной части


Ошибки здесь нет.
Надо учитывать локаль ОС и скрипт машины, они могут быть разными. В питоне скорее всего локаль "en-us", где разделитель точка.
Не надо надеяться на автоматическое преобразование, конвертируйте средствами питона str(value).
Либо, измените разделитель на запятую в настройках ОС, или измените локаль в скрипт машине - locale.setlocale(locale.L­C_ALL, 'ru_RU')
 
Профиль
Наверх
Евгений Машалов
Администратор

 
Всего сообщений: 885
Дата регистрации: 23.04.2007
Создано: 07.06.2019 13:00:50
 
 
И к тому же поле "Formula" - текстовое. В формулах разделитель разрядов чисел - точка, вне зависимости от локали. Запятая - разделитель параметров в функциях. Как примерно в исходниках.
 
Профиль
Наверх
Олег Бельцов
Посетитель
 
Всего сообщений: 34
Дата регистрации: 14.05.2012
Создано: 07.06.2019 15:50:46
 
 
Собственно это был не вопрос, но спасибо за пояснения.

Решение я нашёл (я думал из описания проблемы это понятно).
Преобразовывать к строке -- не универсальное решение, так я не смогу сделать повторно используемый код, например класс, который сможет работать с любым полем из БД Растра.

Пока что сделал так:
Код

    def set(self, value = None):
        # Если значение не пусто, то присваиваем его.
        if value <> None:
            if self.column.Prop(1) == 2: value = str(value) # если тип "строка", то преобразовываем к строке
            self.column.SetZ(self.row­_id, value) # вместо column.Z(row_id) = value


Но полдня я потратил на то чтобы осознать ошибку в расчётах, и выяснить причину и найти решение.

В идеале хочется видеть единообразное поведение Растра, а то приходиться городить костыли у себя.
В интерфейсе Растра ведь та же проблема: где-то надо писать через запятую, где-то через точку.
Хотя конечно, причина записи через точку для поля "Formula" понятна. Видимо остаётся только задокументировать, что собственно мы тут совместными усилиями и сделали. Для этого и написал.

Ещё раз спасибо.

P.S. Задокументированный Баг является Фичей.
 
Профиль
Наверх


Сообщения 26 - 31 из 31
Начало | Пред. | 1 2 | След. | Конец 

Читают тему
гостей: 1, пользователей: 0, из них скрытых: 0


Список форумов
Новые темы
Список тем
Поиск по форумам
Помощь
Войти
Регистрация







Программный комплекс «RasrWin»
Программный комплекс «RastrWin»
© «RastrWin», 1988-2019