Тип Число и "не введено"

1. podder 24.10.22 07:14 Сейчас в теме
Добрый день, уважаемые специалисты и эксперты.
Задача: нужно отобразить данные в ячейке с типом "Число" так, чтобы отличать значение 0 от значения "нет ввода". Насколько я понял, если у ячейки в ТЧ тип "Число", то пустая ячейка в любом случае понимается системой как "0", следовательно, она будет участвовать в расчетах. Т.е. нужен "прозрачный подход" - если пропустил ячейку, то "не введено", если вписал в ячейку 0 - тогда там будет 0. Есть задумка, как обойти это в форме, но как хранить значение "не введено" в базе? Это вообще возможно (навскидку) без составного типа данных? Очень хотелось бы обойтись без него.
Всем спасибо за любые наводящие ответы.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. nomad_irk 81 24.10.22 07:38 Сейчас в теме
(1)вы подойдите к решению задачи с другой стороны: не включать в расчет значения 0.
3. podder 24.10.22 07:42 Сейчас в теме
В расчет - это да, но исключение из расчета - это уже решено, это подзадача.
Основная задача: отличить "0" от "Не введено" без того, чтобы городить составной тип данных. Пока что есть идея "кодировать" значение "не введено" определенным, редко встречающимся числовым значением. Возможно, есть более гладкий способ это сделать, потому что костыль еще тот.
4. nomad_irk 81 24.10.22 07:44 Сейчас в теме
(3)так не надо ничего городить. Не ввели - 0. Зачем вводить именно 0, что бы что?
6. podder 24.10.22 07:58 Сейчас в теме
Надо, чтобы "не ввели" - было не "0", а "не введено".
10. nomad_irk 81 24.10.22 08:32 Сейчас в теме
(6)это понятно из (1)

представим себе вариант: когда 50 из 100 значений 0, потому что не ввели, и 50 значений 0, потому что ввели именно 0
дальше что с этим всем делать?

что будет в случае заполнения документа программным способом?
user1831019; +1 Ответить
12. WasiliyMay 8 24.10.22 09:21 Сейчас в теме
(3)Можно использовать какое то числовое значение, которое точно не встретится, но к документу нужен еще Регистр накопления, который при проведении документа будет заполняться введенными значениями. Использовать в расчетах данные напрямую из документа да еще с какими то левыми значениями не очень правильно. Нужно будет всегда помнить об этих не введенных ячейках.
5. dehro 12 24.10.22 07:50 Сейчас в теме
(1)Ещё одна колонка: "ФлагВвода" типа "Булево". При инициализации таблицы заполнить значением "Ложь". Колонку на форму не выводить, но после ввода числа в соответствующей строка изменять значение в колонке на "Истина"
7. podder 24.10.22 08:01 Сейчас в теме
Я так делал для контроля некоторых других видов ввода, но эта задача чуть другая: когда надо вводить в шахматку, где произвольно по условию устанавливается видимость тех или иных колонок, получается очень много "дополнительных" колонок (а набор колонок может меняться). Спасибо за совет. Я от него окончательно еще не отказался.
13. spacecraft 24.10.22 09:31 Сейчас в теме
(1) Дополнительная ТЧ, в которой и хранить введенные данные. Нет ключа - выводить "нет ввода".
15. lmnlmn 69 24.10.22 11:04 Сейчас в теме
(1) А в базе-то где хранить собираетесь? Если, к примеру, регистр сведений, то и проблем нет. Есть запись - введено, нет записи - нет.
16. glek 119 24.10.22 12:28 Сейчас в теме
(1) Отрицательные числа могут быть?
20. podder 24.10.22 13:48 Сейчас в теме
8. odinsmot 24.10.22 08:07 Сейчас в теме
Если ячейка в динамическом списке, можно попробовать использовать NULL.
9. podder 24.10.22 08:19 Сейчас в теме
Ввод происходит непосредственно в ячейки таблицы, насколько я понимаю, Динамический список тут не подойдет, или я ошибаюсь?
11. starjevschik 24.10.22 08:41 Сейчас в теме
Я бы заполнял пустые ячейки каким-нибудь невозможным числом вроде -99999
правда придется возиться с отображением и дальнейшей обработкой.
19. podder 24.10.22 13:47 Сейчас в теме
Ну вот пока на ум больше ничего не приходит. Да, вопрос пространства будет решен, но как-то "некрасиво", что ли.
14. user5300 1081 24.10.22 10:33 Сейчас в теме
А составной тип почему не хотите ?
17. podder 24.10.22 13:40 Сейчас в теме
После гугления выяснилось, что это слишком много места занимает, ведь пространство, насколько я понял, отводится сразу под все включенные типы.
18. podder 24.10.22 13:46 Сейчас в теме
Поясню: Документа не будет, будет "обработка" для заполнения регистра. Т.е. в обработку вписываем данные, они там "обрабатываются" и записываются в регистр сведений. Суть в том, что нельзя "не создавать" запись в регистре. Впоследствии, когда будет получен отчет по введенным данным за период - в отчете должно фигурировать "не введено" (если не вводилось). И "0", если был введен "0". Ну и хочется прозрачность логики для простого пользователя сохранить. Т.е. пустая ячейка - это именно "пустая ячейка", в которой нет значения. А значение "0" - это когда в ячейку вписан "0". В интерфейсе это можно решить, а вот как в базе на уровне данных хранить "пустое число" - пока идей нет.
21. lmnlmn 69 24.10.22 14:04 Сейчас в теме
(18) А в отчете, там где нет записи, будет NULL вместо 0. Красота! Разве нет?
24. podder 25.10.22 07:43 Сейчас в теме
Не, ну то программно будет обрабатываться :) главное, дать системе понять, что "не введено" и "0" - это разные значения и при этом максимально сэкономить ресурсы.
22. user5300 1081 24.10.22 14:52 Сейчас в теме
(18) А произвольный тип не рассматриваете ?
23. kuzev 48 24.10.22 15:55 Сейчас в теме
(1) Числа целые? Если да, то в качестве "не введено" записывайте значение 0.1.
Если не целые и есть X десятичных знаков после запятой, то записывайте значение 1 / 10 ^ (Х+1).
25. podder 25.10.22 07:44 Сейчас в теме
Ну вот что-то подобное и вырисовывается в итоге, спасибо.
26. podder 06.03.23 08:50 Сейчас в теме
В итоге было решено закодировать специальные значения (0, не введено, да, нет) числами и написать пару общих процедур, "прогоняющих" значения при записи и при чтении из регистра и в зависимости от значения преобразующих их согласно правилу. Примитивный шифр. Числовые значения для спецзначений были подобраны таким образом, чтобы их никому не пришло в голову ввести (в рамках текущей задачи они просто не могут случиться).
Как вариант рассматривалось создание отдельного регистра сведений под каждый тип, но так как их всего три - число, null и булево - то решено было обойтись кодированием.
Всем спасибо за внимание к моей задаче.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот