Стартовая страница › Форумы › Понять, как работает ПО › Использование формул › Дата время (BCD)
- В этой теме 58 ответов, 4 участника, последнее обновление 1 год, 11 месяцев назад сделано VylegzhaninD.
-
АвторСообщения
-
19.04.2022 в 13:57 #23130MikhailМодератор
Пришлите ссылки на скриншоты настроек и ошибку.
19.04.2022 в 17:25 #23143a80808УчастникВот не поленился 🙂
По ссылке измененный проект Hello World! (для версии 6 — ну нету у меня установленной пятерки 🙂 .
Там добавлено два канала с пересчетом по формулам Михаила канала 105 (аналоговый ввод — сюда нужно вводить дату в BCD). В таблице они в самом низуНу и картинки 🙂 :
Это сразу после передачи проектаВ общем все работает. Просто должен быть канал с данными BCD (тут он 105), ну и еще два канала с днем и месяцем. В канале дня пишем формулу GetDay(Val(105)), месяца соответственно GetMonth (Val(105)).
Разумеется формулы добавлены в таблицу Скрипты.
20.04.2022 в 08:55 #23145VylegzhaninDУчастникИиии! Круто!
Спасибище, Михаил и а80808, за формулы, за разъяснения и тесты!!!
Получаю то как оно и должно быть! Всё работает!20.04.2022 в 09:03 #23146a80808УчастникОбращайтесь 🙂
20.04.2022 в 09:43 #23147manjey73УчастникПо уму сделать как в описании и привести к DateTime и всего одним расчетным каналом собрать все регистры до кучи.
20.04.2022 в 14:44 #23154MikhailМодераторДобавлю: чтобы при отсутствии данных в исходном канале, данные не показывались в дорасчётном канале, нужно добавить в формулу канала
НАЧАЛО_ФОРМУЛЫ; Stat(101)
где 101 — исходный каналПо уму сделать как в описании и привести к DateTime и всего одним расчетным каналом собрать все регистры до кучи.
Да, лучше всего в итоге собрать дату и время в один канал.
20.04.2022 в 21:02 #23177a80808УчастникДа, лучше всего в итоге собрать дату и время в один канал
А как лучше — текст или UTC()?20.04.2022 в 21:07 #23178a80808УчастникХотя для UTC() не хватает года…разве что текущий подставлять
20.04.2022 в 21:48 #23182VylegzhaninDУчастникА как сделать чтобы в канале осталось последнее возвращенное значение? т.е. чтобы не «0», но и не «—» а последнее полученное значение, пока не будет получено следующее?
20.04.2022 в 21:52 #23183VylegzhaninDУчастник- Хотя для UTC() не хватает года…разве что текущий подставлять
год есть в таком же виде другим каналом если по аналогии то разбирается на начало и конец «20» и «22»
- Этот ответ был изменен 1 год, 12 месяцев назад от VylegzhaninD.
21.04.2022 в 00:31 #23185VylegzhaninDУчастникДа, было бы замечательно собрать всё в один канал и придать формат даты и времени. В текущем положении некорректно выглядят значения 0-9, так например время 1:2 (один час две минуты) дата ещё куда ни шло например 21.4.2022 но с ноликом выглядело бы лучше. ведь в базе нет формата чисел DD или DDDD
21.04.2022 в 09:21 #23186a80808Участникпоследнее полученное значение, пока не будет получено следующее
Ну разве что писать еще в один канал (к сожалению пока нет глобальных переменных в памяти, приходится обходиться каналами — ничего, в шестой версии их много 🙂 ) с проверкой на достоверность — т.е если 0 или «-«…или еще чего не так — не пишется
21.04.2022 в 19:15 #23197MikhailМодераторА как сделать чтобы в канале осталось последнее возвращенное значение?
Было здесь на форуме, поищите. Используется функция Val().
Данная тема про время BCD.Чтобы собрать дату и время воедино, нужно завести отдельный дорасчётный канал. В его формуле создать объект типа DateTime на основе других каналов и закодировать в дату с помощью EncodeDate. Настроить формат вывода канала
24.04.2022 в 21:43 #23229a80808УчастникМихаил, а в шестой версии нет EncodeDate()…. Во всяком пишет что нет такого в пространстве имен…
25.04.2022 в 09:24 #23230manjey73Участникpublic double EncodeDate(DateTime dateTime)
{
return dateTime.ToOADate();
}В скриптах есть — идентификатор 4 Date and Time
-
АвторСообщения
- Вы должны авторизироваться для ответа в этой теме.