• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

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

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

Irsis

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

KiR

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

Irsis

Если настроек нет то так |Условие (ДатаПол='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

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

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

KiR

Ну не знаю. Учитывая тупость семерки - может быть NULL и не воспринимается ей... В восмьерке возспринимается и NULL и Неопределено
 
H

Hryv

Ну не знаю. Учитывая тупость семерки - может быть NULL и не воспринимается ей... В восмьерке возспринимается и NULL и Неопределено

Если вы привыкли после других языков к подобным конструкциям, то в глобальном модуле напишите что-то типа

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


...
...

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

ЗЫ естественно 'Перечисление.Булево' должно существовать в конфигураторе
 
K

KiR

2 Hryv
Спасибо! классная мысль кстати. как-то я об этом не подумал)
 
I

Irsis

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

Hryv

2 Hryv
Спасибо! классная мысль кстати. как-то я об этом не подумал)

Незачто
Через глобальный модуль можно много удобных вещей сделать, типа курсов валют, наиболее используемого MessageBox с кнопками ДаНет и т.п.

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

Floydik

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

Флойд

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

KiR

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

Флойд

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

vitfil

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

Hryv

А я вот ожидал от восьмерки, что там будет возможность наследования и возможность вызывать методы объектов

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

А пришлось заниматься ерундой и переносить расчет суммы в глобальный модуль

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

vitfil

Hryv
Причем, в 7.7 это реализовано, если использовать turboBL.dll
7.7 - 8.х
1 : 0
 
K

KiR

vitfil
Тупость семерки на мой вкус с сложном написании кода. взять к примеру запрос, который в семерке - просто мрак! Хотя если посудить трезво - это не тупость, а недоразвитость, которая восьмеркой и закрылась. а насчет ресурсов - я согласен полностью согласен - тут семерка выигрывает
 
H

Hryv

Нашел инфо по turboBL.dll
Уже читаю :)

Ура!

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

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

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

vitfil

KiR
На счет "недоразвитости" частично соглашусь, потому как вся известная недоразвитость с лихвой компенсируется небольшим набором ВК. Запросы? Поставьте 1С++ и используйте прямые запросы.
 
K

kaa

Неужели
|Условие (ПустоеЗначение(Док.ДатаЫ)=1);

неработает :)
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!