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

Тема в разделе "1C и всё что с ней связано", создана пользователем Irsis, 5 авг 2008.

  1. Irsis

    Irsis Гость

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

    KiR НЕ шибка опытный програмер)
    1C Team

    Регистрация:
    11 сен 2007
    Сообщения:
    1.581
    Симпатии:
    0
    Если настроек нет то так |Условие (ДатаПол='01.01.01');
    Особенно если у тебя восьмерка
    или можно поэксперементировать так |Условие (ДатаПол=Null);
     
  3. Irsis

    Irsis Гость

    Ну да, именно так я и решила ситуацию, только не =, а <
    |Условие (ДатаПол<'01.01.01'); :rolleyes:

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

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

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

    Hryv Гость

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

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

    KiR НЕ шибка опытный програмер)
    1C Team

    Регистрация:
    11 сен 2007
    Сообщения:
    1.581
    Симпатии:
    0
    Ну не знаю. Учитывая тупость семерки - может быть NULL и не воспринимается ей... В восмьерке возспринимается и NULL и Неопределено
     
  6. Hryv

    Hryv Гость

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

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


    ...
    ...

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

    KiR НЕ шибка опытный програмер)
    1C Team

    Регистрация:
    11 сен 2007
    Сообщения:
    1.581
    Симпатии:
    0
    2 Hryv
    Спасибо! классная мысль кстати. как-то я об этом не подумал)
     
  8. Irsis

    Irsis Гость

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

    Hryv Гость

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

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

    Floydik Гость

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

    Флойд

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

    KiR НЕ шибка опытный програмер)
    1C Team

    Регистрация:
    11 сен 2007
    Сообщения:
    1.581
    Симпатии:
    0
    По тупости сравниваю ее с восьмеркой а не вообще))
     
  12. Irsis

    Irsis Гость

    Так тоже пробовала - не работает :rolleyes: Это была следующая попытка после IS NULL и NULL.
     
  13. vitfil

    vitfil IT-интегратор

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

    Hryv Гость

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

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

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

    vitfil IT-интегратор

    Регистрация:
    2 апр 2004
    Сообщения:
    2.070
    Симпатии:
    0
    Hryv
    Причем, в 7.7 это реализовано, если использовать turboBL.dll
    7.7 - 8.х
    1 : 0
     
  16. Hryv

    Hryv Гость

    А можно по подробнее
    Или хоть ссылочку, где есть информация
     
  17. KiR

    KiR НЕ шибка опытный програмер)
    1C Team

    Регистрация:
    11 сен 2007
    Сообщения:
    1.581
    Симпатии:
    0
    vitfil
    Тупость семерки на мой вкус с сложном написании кода. взять к примеру запрос, который в семерке - просто мрак! Хотя если посудить трезво - это не тупость, а недоразвитость, которая восьмеркой и закрылась. а насчет ресурсов - я согласен полностью согласен - тут семерка выигрывает
     
  18. Hryv

    Hryv Гость

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

    Ура!

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

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

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

    vitfil IT-интегратор

    Регистрация:
    2 апр 2004
    Сообщения:
    2.070
    Симпатии:
    0
    KiR
    На счет "недоразвитости" частично соглашусь, потому как вся известная недоразвитость с лихвой компенсируется небольшим набором ВК. Запросы? Поставьте 1С++ и используйте прямые запросы.
     
  20. kaa

    kaa Гость

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

    неработает :)
     
Загрузка...
Похожие Темы - Условие отбора запросе
  1. wowa
    Ответов:
    6
    Просмотров:
    3.659
  2. Dimm
    Ответов:
    11
    Просмотров:
    227
  3. shilovec5377
    Ответов:
    0
    Просмотров:
    1.036
  4. zdrastes
    Ответов:
    0
    Просмотров:
    1.122
  5. era1fgg
    Ответов:
    1
    Просмотров:
    1.301

Поделиться этой страницей