Имя: Пароль:
1C
 
Как отделить пустое числовое поле от нуля?
0 Бежечаночка
 
08.04.09
11:20
Как в 8-ке отделить пустое числовое поле от нуля? Эти ситуации мне надо обрабатывать по-разному.
1 Злобный Йожег
 
08.04.09
11:21
Что значит "пустое числовое поле"?
2 Михаил Козлов
 
08.04.09
11:21
Значение "пустого" числового поля чему равно?
3 ДенисЧ
 
08.04.09
11:22
как по-разному?
4 Господин ПЖ
 
08.04.09
11:22
брюнетка с розовым мозгом?
5 megalodon
 
08.04.09
11:23
Если тип поля простой, то никак, потому как в числовом поле пустое значение и есть нуль. Надо назначить составной тип для поля с одной галкой "Число" - тогда он сможет принимать 2 значения: Неопределено и 0 - по разному их и обрабатывай.
6 Бежечаночка
 
08.04.09
11:23
(4) Ну и дурак
7 Бежечаночка
 
08.04.09
11:24
(5) спасибо за подсказку, буду пробовать
8 Mitriy
 
08.04.09
11:27
это не запрос?
9 Defender aka LINN
 
08.04.09
11:28
Они нашли друг друга... Главное - чтобы детей не было :)
10 Бежечаночка
 
08.04.09
11:29
(5) Надо назначить составной тип для поля с ОДНОЙ галкой "Число" - тогда он сможет принимать 2 значения: Неопределено и 0 - по разному их и обрабатывай.

В этом случае галка Составной тип не сохраняется...
11 Бежечаночка
 
08.04.09
11:30
(8) нет это не запрос, числовое поле на форме, мне надо чтобы НЕзаполненное поле не считалось 0
12 Господин ПЖ
 
08.04.09
11:32
(11) ААА!!! Это вторжение разрушителей мозгов.
13 megalodon
 
08.04.09
11:32
(10) понятно, а было бы весело. Ну тогда рядом добавь еще реквизит логического типа, куда и пиши, заполнено поле или нет.
14 eklmn
 
гуру
08.04.09
11:32
15 eklmn
 
гуру
08.04.09
11:33
(11) формат поля настрой чтоб при нуле показывало пусто и все
16 eklmn
 
гуру
08.04.09
11:34
В свойствах поля -Формат
17 megalodon
 
08.04.09
11:36
господа, чего вы на девушку накинулись? бывает такая ситуация, как у нее. Например, у меня когда то при составлении бюджетов подразделений для финансиста было принципиально: запланирован по подразделению 0 или просто ничего не планировалось (то есть план не составлялся) - разные вещи при анализе.
18 Бежечаночка
 
08.04.09
11:37
(15) не подходит, мне нужно чтоб пользователь мог вводить 0 и это был бы 0, а если поле не заполнено - то пусто, а 8-ка и в этом случае считает поле 0.

(13) не совсем удобно, т.к. реже встречается 0, а пустое поле - чаще
19 Синий зуб
 
08.04.09
11:37
Введи строковый реквизит, обрабатывай его, переводи в число.
20 FanatToNight
 
08.04.09
11:38
а если реквизит строчный, его можно проверять на ПустаяСтрока() или "0"
некрасиво, но можно.. :))
21 eklmn
 
гуру
08.04.09
11:38
(18) так в чем проблема в свйсвах поля при изменении проверку делать?
22 eklmn
 
гуру
08.04.09
11:39
(18) сначала пробуй и думай, потом вопросы залавай.
23 Snorkler
 
08.04.09
11:39
(0) А у поля на форме нет в свойствах что-то вроде ОтметкаНезаполненного?
24 Бежечаночка
 
08.04.09
11:41
(22) Откуда вы знаете, что я раньше делала?  :)
просто удивилась, что в 8-ке нет легкого решения такого вопроса.
25 Defender aka LINN
 
08.04.09
11:41
(17) Дык и делается это тогда совершенно по другому.
26 Defender aka LINN
 
08.04.09
11:41
(24) В восьмерке вопроса такого нет. Он только в воспаленных розовых мозгах.
27 eklmn
 
гуру
08.04.09
11:42
(24) по (18) видно
28 Бежечаночка
 
08.04.09
11:42
(23) ввожу явно 0 - АвтоОтметкаНезаполннего также работет как и при незаполнном поле
29 eklmn
 
гуру
08.04.09
11:43
+(27) решение занимает ~30 секунд
30 Бежечаночка
 
08.04.09
11:44
(29) значит старею, и в чем же решение? очередной изврат?
31 FanatToNight
 
08.04.09
11:45
(30) - вопрос весьма частный, чтобы 1с предусматривала на него штатное решение.
предложенное - не изврат. три варианта - достаточно
32 Бежечаночка
 
08.04.09
11:47
(31) Частный? Почему же в большинстве СУБД он решен и NULL не равен 0???
33 eklmn
 
гуру
08.04.09
11:48
(32) так опредились уже че тебе нужно, NULL неопределено 0...
34 Господин ПЖ
 
08.04.09
11:49
(32) NULL также <> NULL - сюрприз...
35 eklmn
 
гуру
08.04.09
11:49
+ и при чем тут поле на форме и СУБД?
36 FanatToNight
 
08.04.09
11:49
(32) у языка 1с задачи несколько другие.
в СУБД тоже можно посетовать, что многого, чего хотелось-бы - нет..
37 Бежечаночка
 
08.04.09
11:50
(33) НЕЗАПОЛНЕННОЕ не считать нулем
38 eklmn
 
гуру
08.04.09
11:50
(30) в чем изврат так и не понял...
зайди у же в свойства поля и ВНИМАТЕЛЬНО посмотри все что там есть, а поотм думай, потом еще раз думай, а потом... ну не дано тебе ...
39 Бежечаночка
 
08.04.09
11:51
(36) какие другие? хранить данные-анализировать-удобно представлять - такие же как и везде
40 eklmn
 
гуру
08.04.09
11:52
(37) еще раз: Свойства поля-Формат-Закладка Число-предствление нуля-Отсутсвует.
41 FanatToNight
 
08.04.09
11:52
(37) ты читать умеешь? прочти еще раз (19).. я уж не говорю о (20) :))
ЗЫ. блин.. одни капризы..
42 eklmn
 
гуру
08.04.09
11:53
И все-таки опять прав ПЖ :)
43 Бежечаночка
 
08.04.09
11:55
(40) да при чем здесь ФОРМАТ? незаполнное число на форме хранится как 0 НЕЗАВИСИМО от формата.
Сами вы не в теме

Один был дельный совет - еще одно булево поле завести и хранить их парой
44 Бежечаночка
 
08.04.09
11:57
19-20 топик и представляет из себя извратное решение разве нет? Нигде мне так делать не приходилось
45 skunk
 
08.04.09
11:57
а почему бы просто строковый реквизит не зависти.... а потом просто его длину смотреть
46 Господин ПЖ
 
08.04.09
11:58
дельный совет имхо это строка с маской ввода
47 FanatToNight
 
08.04.09
11:59
(45) счас и ты получишь :) см (19,20) :))
48 Бежечаночка
 
08.04.09
11:59
А что не так?  LOL
49 Stepa86
 
08.04.09
12:00
(44) если б у Вас было мышление программиста, то таких вопросов не возникло бы... а вообще согласен, что неудобно, когда 0 считается незаполненным значением, но в 98% случаев это и требуется (когда количество товаров =0 или сумма продажи =0, то явно что то не то)...
50 Snorkler
 
08.04.09
12:00
(28) Не АвтоОтметка, а Отметка...
К примеру:


   ЭлементыФормы.ДатаОплаты.ОтметкаНезаполненного=Ложь;


Но это в 8.1, как в 8.0 не знаю...
51 Бежечаночка
 
08.04.09
12:01
АвтоОтметкаНезаполненного
52 megalodon
 
08.04.09
12:01
(45) думаю потому что как то в запросах строки хренова складываются, а получать итоги по этому полю скорее всего придется.
53 skunk
 
08.04.09
12:02
(44)в чем изврат? ... один фих в базе число храниться как строка... так что полный ответ в (46) и не придумывай гемморой
54 Serg_1960
 
08.04.09
12:02
Сегодня пятница и пятничный развод? Бежечаночка объясни для меня тупого, зачем это !?!
55 Stepa86
 
08.04.09
12:03
(53) в базе число хранится как строка????????? я об 1Ске был лучшего мнения
56 megalodon
 
08.04.09
12:03
(53) это с каких пор?
57 eklmn
 
гуру
08.04.09
12:03
(54) не в кусре что у баб на первом месте?
58 Рэйв
 
08.04.09
12:04
(0)А я что-то не понял чем не устраивает составной тип(Строка,Число).
НезаполненноеЗначение=Неопределено.
59 Бежечаночка
 
08.04.09
12:05
(54) Считаем потери в ВЛ и трансформаторах, так показание может быть 0, а может не измеряться и не вноситься вовсе, вот и все, в этом случае при расчете заменяется на номинал
60 FanatToNight
 
08.04.09
12:05
(58) изврат. Точка. :)
61 eklmn
 
гуру
08.04.09
12:06
(58) щас ляпнет типа в СУБД не вписываеться или еще ченить в таком духе, у меня изврата не хватает прдумать :)
62 Рэйв
 
08.04.09
12:06
(58)С каких это пор? нормальное штатное решение.
63 Рэйв
 
08.04.09
12:06
(62)->(60)
64 Бежечаночка
 
08.04.09
12:06
а 8-ка чисто попробовать, посмотреть, пощупать - пока не нравится
65 regniws
 
08.04.09
12:07
(58) вообще - решение не очень хорошее.

Как назначать тип полю ввода!?
66 eklmn
 
гуру
08.04.09
12:07
(59) кто мешает держать там сразу номинал?
67 regniws
 
08.04.09
12:07
(64) там много чего другого вкусно есть, кроме "представление нуля" и т.д.
68 skunk
 
08.04.09
12:08
(55)1С тут совсем не причем...

(56)с момента существования скула и дэби
69 eklmn
 
гуру
08.04.09
12:08
(64) плохому танцору...
70 regniws
 
08.04.09
12:09
я расстрою, но:
1с не хранит числа в строках в субд, если тип значения не составной.
71 regniws
 
08.04.09
12:11
Девушка, советую прислушаться все же к решению не составного типа (во-первых, это работает медленно), а к мысли ввести дополнительное поле типа булева "ИзмеренияНеПроизводились", работать с этим удобно, а, главное, система с этим работать будет быстро.
72 mikecool
 
08.04.09
12:11
(70) :)
73 megalodon
 
08.04.09
12:12
(68) глаза протри.
74 Рэйв
 
08.04.09
12:12
(65)
   МассивТипов=Новый Массив();
   МассивТипов.Добавить(Тип("Число"));
   ЭлементыФормы.Поле.ОграничениеТипа=Новый ОписаниеТипов(МассивТипов);
75 regniws
 
08.04.09
12:13
(74). И как вы в это поле введете "не заполнено"?
76 Рэйв
 
08.04.09
12:13
(65)+ а тип ручками
77 Рэйв
 
08.04.09
12:13
(75)Кнопку очистки-и все
78 regniws
 
08.04.09
12:14
(76)  вы предлагаете пользователю каждый раз при вводе числа выбирать тип вводимых данных!?? жестоко. очень..
79 regniws
 
08.04.09
12:14
(77) кнопку очистки, а после этого он захочет опять внести данные в это поле!?? Опять выбирать тип ручками!???
80 Рэйв
 
08.04.09
12:15
(79)Ну да:).А никак другим путем не получится.Только если (19).
81 mikecool
 
08.04.09
12:16
В ПриОткрытии
ПолеРедактировалось = Ложь;

В ПриИзменении
ПолеРедактировалось = Истина;
82 megalodon
 
08.04.09
12:16
+ (81) и еще в ПриОчистке ПолеРедактировалось = Ложь;
83 mikecool
 
08.04.09
12:18
(82) ненене, поле редактировалось... очистка - тоже редактирование
84 FanatToNight
 
08.04.09
12:19
)62) с каких? - отвечаю, как только этот вариант решения появился в данной ветке :)
так что "штатный" он только вне ветки :)
85 sam_sam
 
08.04.09
12:20
Если речь идет про положительные значения, то можно неопределено назначить -1. Если и в минусах и в плюсах назначить неопределено какую нибудь маловероятную величину например -0.000000918279879877239834639298359876237
86 megalodon
 
08.04.09
12:20
(83) ну это вопрос организации ввода данных, возможно ты и прав, но в этом случае надо предусмотреть другую возможность для отказа от ввода нулевого значения.
87 Snorkler
 
08.04.09
12:28
(0) Автор, таки вам надо "отделить пустое числовое поле от нуля" на форме объекта или в выборке из базы понять заполнялось поле или нет?
88 FanatToNight
 
08.04.09
12:32
(87) ты сложно спрашиваешь.. сказано-же: трансформаааатор.. в плане, или забыли запланировать. вот и всё :)
89 Zlodey1С
 
08.04.09
12:33
А что так нельзя полю назначаем составной тип. При открытии строка при начале редактирования переводим в число и все.
90 FanatToNight
 
08.04.09
12:34
кстати, запланировали "0" и не запланировали вовсе - чем от нуля отличаются?
по-моему, авторский изврат.
91 mergan
 
08.04.09
12:35
(70,73)специально для писающих паром... скул хранит число в типе numeric... который по сути является строкой
92 eklmn
 
гуру
08.04.09
12:35
(90) только дошло? :)
93 FanatToNight
 
08.04.09
12:36
+90 результат один: работы выплняться не будут.
(92) угу, честно :))
94 Рэйв
 
08.04.09
12:40
(90) В случае не запланировали -- пропьянствовали и манкировали своими обязанностями.
Запланировали 0- молодцы ребята!подумали  и решили что будет 0.Есть за что платить зп:)
95 FanatToNight
 
08.04.09
12:43
(94) тоже логично :)
скажем, с точки зрения поиска в БД инфы о вновь поступивших трансформаторах :)
а вот с точки зрения пятницы: запланировано "0 бутылок" и "не планировалось" - результат - все ходят трезвые.. как ети.. :))
96 megalodon
 
08.04.09
12:44
(91) философ? я могу еще выше подняться в стремлении абстрагироваться от всего. только вот у поля numeric можно сделать sum, а у поля "nchar" - нельзя
97 mergan
 
08.04.09
12:50
(96)теоритик? ... открой любу базу данных хексом и глянь
98 megalodon
 
08.04.09
12:51
(97) и что мне это даст?
99 Torquader
 
08.04.09
12:51
(91) грамотный SQL хранит числовое поле в формате integer + сдвиг для дробной части. И integer - это двоичное число в восемь байт длиной - такие числа складываются на ура. А numeric в integer переводится маской и сдвигом (указание дробной части).
100 Нуф-Нуф
 
08.04.09
12:52
100
101 Torquader
 
08.04.09
12:53
(97) или чего - "умная" 1С не умеет работать с числами в integer и хранит их как строки ?
102 mergan
 
08.04.09
12:55
(98)увидишь
103 mergan
 
08.04.09
12:59
(99)сделай sizeof(значение типа нумерик)

(101)вопрос к 1С
104 Torquader
 
08.04.09
13:09
(103) таки в описании, например, firebird-sql написано, как он хранит числовые данные, и как их получать в буфер из запроса, и что в том буфере будет.
Про ms-sql точно не знаю, но есть подозрение, что он работает точно также.
105 eklmn
 
гуру
08.04.09
13:12
(96)-(104) вообще не в тему пошли :)
106 Torquader
 
08.04.09
13:16
(105) почему не в тему ?
Если внутри SQL у числа нет флага NULL, то отличить незаполненное значение от выбранного за незаполненное никак не получится.
(34) В описании, например, Visual Basic написано, что при сравнении данных, если одно из сравниваемых значений равно NULL, то результат будет FALSE вне зависимости от второго выражение, поэтому получается, что NULL=NULL -> FALSE и NULL<>NULL -> FALSE и нужно использовать IsNull.
107 eklmn
 
гуру
08.04.09
13:18
(106) потому что поле на форме никак не связано с СУБД
108 eklmn
 
гуру
08.04.09
13:18
+судя по топик+(10)
109 Бежечаночка
 
08.04.09
13:20
(107) не надо заводить рака за камень, форма - есть представление хранимых данных
110 szhukov
 
08.04.09
13:21
(109)Ответ по топику (46) - я бы делал так!
"Строка с маской ввода"
111 Torquader
 
08.04.09
13:27
(109) можно ещё вместо нуля писать 0.00001 или какое-то самое маленькое число, которое не сильно влияет на расчёты, а всё, что меньше - не введено.
112 Бежечаночка
 
08.04.09
13:30
(111) ну так это тот же самый изврат
113 Ювелир
 
08.04.09
13:31
(0) Может просто дополнительный реквизит. Типа <<Измерение произведено>>/
114 Бежечаночка
 
08.04.09
13:37
Короче говоря, только через аватар Дуба
Всем спасибо.

А вопрос, как хотите, не праздный. С такой ситуацией, мне кажется, любой кодер столкнется, и в платформе д.б. штатные средства реализации.
115 Torquader
 
08.04.09
13:38
(112) у тебя же трансформатор - в нём разве ноль измерить можно ? Наверняка есть погрешность измерений, и если меньше погрешности, то это ноль.
116 Torquader
 
08.04.09
13:39
Даже в Visual Basic если явно задать тип переменной Integer, но у неё не будет значения "Неопределено".
117 Serg_1960
 
08.04.09
13:42
Угомонись :) Автор уже сказал "Всем спасибо".