• Paranoid - курс по анонимности и безопасности в сети от команды codeby. Защита персональных данных, анонимность в сети интернет, настройка виртуальных машин, безопасная передача данных, анти форензика и еще много всего полезного. Подробнее ...

Условие отбора в запросе

  • Автор темы Irsis
  • Дата начала
I

Irsis

#1
Всем, здравстуйте.
В табличной части документа есть поле с типом значения дата. Не получается создать запрос в который попадали бы только те строки табличной части документа в которых поле с датой пустое. Сам запрос работает. Если в условии пишу
|Условие (ДатаПол='01.08.08');
Красиво выбирает нужные строки.
Т.е. проблема в том, что я не могу понять чему равно значение поля, когда там пусто.
 

KiR

НЕ шибка опытный програмер)
11.09.2007
1 581
0
#2
Всем, здравстуйте.
В табличной части документа есть поле с типом значения дата. Не получается создать запрос в который попадали бы только те строки табличной части документа в которых поле с датой пустое. Сам запрос работает. Если в условии пишу
|Условие (ДатаПол='01.08.08');
Красиво выбирает нужные строки.
Т.е. проблема в том, что я не могу понять чему равно значение поля, когда там пусто.
Если настроек нет то так |Условие (ДатаПол='01.01.01');
Особенно если у тебя восьмерка
или можно поэксперементировать так |Условие (ДатаПол=Null);
 
I

Irsis

#3
Если настроек нет то так |Условие (ДатаПол='01.01.01');
Особенно если у тебя восьмерка
или можно поэксперементировать так |Условие (ДатаПол=Null);
Ну да, именно так я и решила ситуацию, только не =, а <
|Условие (ДатаПол<'01.01.01'); :rolleyes:

Попробую с Null, но мне кажется такой вариант не работал. Я начала свои попытки с
|Условие (ДатаПол=Is Null);
А потом пошли вариации на тему. Просто интересно, неужели в 1С (у меня 7.7.) нельзя выбрать именно пустые ячейки?

С Null не работает.

NULL<<?>>
Переменная не определена (NULL)
Если Запрос.Выполнить(ТекстЗапрса)=0 тогда
{C:\TIRDZNIECIBA\EXTFORMS\RDP.ERT(41)}: Условие (ДатаПол=Null <<?>> );
Запрос[18] : Ошибка в выражении 'Null'
 
H

Hryv

#4
Можно попытаться использовать ПолучитьПустоеЗначение() или ПустоеЗначение()

|Условие (ДатаПол=ПолучитьПустоеЗначение());
или
|Условие (ПустоеЗначение(ДатаПол)=1);
 

KiR

НЕ шибка опытный програмер)
11.09.2007
1 581
0
#5
Ну не знаю. Учитывая тупость семерки - может быть NULL и не воспринимается ей... В восмьерке возспринимается и NULL и Неопределено
 
H

Hryv

#6
Ну не знаю. Учитывая тупость семерки - может быть NULL и не воспринимается ей... В восмьерке возспринимается и NULL и Неопределено
Если вы привыкли после других языков к подобным конструкциям, то в глобальном модуле напишите что-то типа

Код:
Перем Да Экспорт;
Перем Нет Экспорт;
Перем Истина Экспорт;
Перем Ложь Экспорт;
Перем NULL Экспорт;
Перем Неопределено Экспорт;


...
...

Да = Перечисление.Булево.Да;
Нет = Перечисление.Булево.Нет; 
Истина = Перечисление.Булево.Да;
Ложь = Перечисление.Булево.Нет;
NULL = ПолучитьПустоеЗначение();
Неопределено = ПолучитьПустоеЗначение();
ЗЫ естественно 'Перечисление.Булево' должно существовать в конфигураторе
 

KiR

НЕ шибка опытный програмер)
11.09.2007
1 581
0
#7
2 Hryv
Спасибо! классная мысль кстати. как-то я об этом не подумал)
 
I

Irsis

#8
Если вы привыкли после других языков к подобным конструкциям,
:rolleyes:
Спасибо! Как раз проблема в том, что привыкла, а в 1С не получалось. Ну а когда решаешь задачу всегда одним и тем же способом, ну а потом вдруг так не получается, очень как-то обидно :rolleyes:
 
H

Hryv

#9
2 Hryv
Спасибо! классная мысль кстати. как-то я об этом не подумал)
Незачто
Через глобальный модуль можно много удобных вещей сделать, типа курсов валют, наиболее используемого MessageBox с кнопками ДаНет и т.п.

Кстати, в моем примере была опечатка, я уже исправил
 
F

Floydik

#10
Привет.
Вообще пустое значение даты зависит от настройки даты в системе.
Может быть <' . . '> (между точками пробелы) при двухначном годе или <' . . '> при четырехзначном.
Но надежнее проверять чему равно ПустоеЗначение()
В 7.7 так, в восьмерке не знаю

Флойд

И, кстати, семерка не такаю уж тупая, как уверяют, просто надо умело пользоваться.
 

KiR

НЕ шибка опытный програмер)
11.09.2007
1 581
0
#11
Привет.
Вообще пустое значение даты зависит от настройки даты в системе.
Может быть <' . . '> (между точками пробелы) при двухначном годе или <' . . '> при четырехзначном.
Но надежнее проверять чему равно ПустоеЗначение()
В 7.7 так, в восьмерке не знаю

Флойд

И, кстати, семерка не такаю уж тупая, как уверяют, просто надо умело пользоваться.
По тупости сравниваю ее с восьмеркой а не вообще))
 

vitfil

IT-интегратор
02.04.2004
2 062
0
#13
KiR
Семерка и восьмерка просто разные. ИМХО некорректно сравнивать их и говорить, что семерка тупая.
Если не согласны, напишите, в чем выражается тупость, а мы постараемся развенчать ваше мнение о тупости семерки.
Кста, восьмерка настолько тупа, что ей не хватает оперативки<512 для нормальной работы. Да и с 512 не особо шустро будет работать.
Единственная глупость, с моей точки зрения, отсутствие строгой типизированности и регистронезависимость в языке программирования. Но, насколько мне известно, восьмерка тоже тупит в этом направлении... :rolleyes:
 
H
#14
А я вот ожидал от восьмерки, что там будет возможность наследования и возможность вызывать методы объектов

Например, у меня есть док, и в нем довольно сложный расчет суммы. Позже понадобилось сделть обработку для изменения скидки.
Было бы круто сделать примерно так
Код:
Пока Док.ПолучитьДокумент()=1 Цикл
Док.Скидка=НоваяСкидка;
Док.ПересчетСуммы(); //где ПересчетСуммы() процедура в модуле формы
Док.Записать();
КонецЦикла
А пришлось заниматься ерундой и переносить расчет суммы в глобальный модуль

В результате, после беглого знакомства с 8 я не нашел ни одного нужного мне преимущества, не получил ничего, что ожидал, и от расстройства так до сих пор только с 7.7 и работаю
 

vitfil

IT-интегратор
02.04.2004
2 062
0
#15
Hryv
Причем, в 7.7 это реализовано, если использовать turboBL.dll
7.7 - 8.х
1 : 0
 

KiR

НЕ шибка опытный програмер)
11.09.2007
1 581
0
#17
vitfil
Тупость семерки на мой вкус с сложном написании кода. взять к примеру запрос, который в семерке - просто мрак! Хотя если посудить трезво - это не тупость, а недоразвитость, которая восьмеркой и закрылась. а насчет ресурсов - я согласен полностью согласен - тут семерка выигрывает
 
H
#18
Нашел инфо по turboBL.dll
Уже читаю :)

Ура!

Завтра же начну тестировать!!!
Как же много усилий было приложено впустую из-за того, что я не знал об этой замечательной DLL

Там еще есть упоминание о 1С++
О нем тоже кое-что уже нашел

Похоже открываются новые горизонты!!! :)
 

vitfil

IT-интегратор
02.04.2004
2 062
0
#19
KiR
На счет "недоразвитости" частично соглашусь, потому как вся известная недоразвитость с лихвой компенсируется небольшим набором ВК. Запросы? Поставьте 1С++ и используйте прямые запросы.
 
K
#20
Неужели
|Условие (ПустоеЗначение(Док.ДатаЫ)=1);

неработает :)