Имя: Пароль:
1C
1С v8
Дата в запросе к справочнику
0 Aneumo
 
08.02.18
04:15
Есть запрос к справочнику, у справочника есть поле "Дата". Пользователь на форме вводит дату, создается запрос с условием поиска  ГДЕ Справочник.ФизЛицо.Дата  = ВведеннаяПользователемДата;

При запуске и вводе даты, возврат пустого запроса, если убрать условие с датой, то все стабильно выводит. Вопрос в следующем - в каком виде формировать дату, что бы запрос её корректно обрабатывал.
PS Вводимая дата в справочнике точно есть.

Сам запрос
Запрос.Текст =  "ВЫБРАТЬ
                    |    ФизЛицо.Наименование,
                    |    ФизЛицо.ДатаРождения,
                    |ИЗ
                    |    Справочник.ФизическоеЛицо КАК ФизЛицо
                    |ГДЕ
                    |    ФизЛицо.Наименование = """ + ФИОТекст + """
                    |    И
            |   ФизЛицо.ДатаРождения = """+ Формат(ДатаРождения,"ДФ=dd.MM.yyyy; ДЛФ=D") +  """";
1 Aneumo
 
08.02.18
04:20
Версия 1С 8.3 для обучения программированию
2 mehfk
 
08.02.18
04:31
Вдумайся, для чего нужна эта конструкция

Формат(ДатаРождения,"ДФ=dd.MM.yyyy; ДЛФ=D")
3 Aneumo
 
08.02.18
04:34
(2) для чего нужна понятно - для приведения того что ввел юзер из дата + время, к формату день.мес.год
что я упускаю?
4 H A D G E H O G s
 
08.02.18
04:38
(0) Язык запросов, фактически, русско-лингвистическая калька с языка запросов ms sql (SQL92), в котором вы, разработчик такой, не побоюсь этого слова, передовой системы сбора и обработки информации, которую вы не постыдились представить на научно - практической конференции "по новым компьютерным технологиям и защите компьютерных программ", должны быть как рыба в воде.
5 Aneumo
 
08.02.18
04:40
в отладчике запрос принимает вид, к примеру,  ФизЛицо.ДатаРождения = "01.01.2018";

я не могу найти формат даты, который бы возвращал мне не пустой запрос, он мне, со сравнением существующей в справочнике даты, возвращает пустую выборку, и я не могу понять как тут организовать сравнение введенной даты с полем справочника
6 Wit77
 
08.02.18
04:44
(5) Формат() - возвращает строковое представление даты. Таким образом в запросе ты сравниваешь значение типа "Дата" со значением типа "Строка". Конечно выборка будет пустая.

вместо формата тебе надо использовать конструкцию, которая будет возвращать значение типа "Дата" - тогда все будет работать корректно.
7 Aneumo
 
08.02.18
04:45
(6) Ок, понял, спасибо огромное
8 Wit77
 
08.02.18
04:48
(7) еще момент - не совсем корректно вставлять условие склейкой текста запроса.
Нужно использовать параметры, например:
ФизЛицо.Наименование = &ФИОТекст

как и что дальше - думаю разберешься сам.
9 catena
 
08.02.18
06:10
(6)Ага, прямо в текст запроса.
10 Chameleon1980
 
08.02.18
06:14
НачДня
11 Chameleon1980
 
08.02.18
06:17
блин т.е. типа:

"ВЫБРАТЬ
|    ФизическиеЛица.Ссылка,
|    ФизическиеЛица.ДатаРождения
|ИЗ
|    Справочник.ФизическиеЛица КАК ФизическиеЛица
|ГДЕ
|    НАЧАЛОПЕРИОДА(ФизическиеЛица.ДатаРождения, ДЕНЬ) = НАЧАЛОПЕРИОДА(&ДатаРождения, ДЕНЬ)";
12 Mankubus
 
08.02.18
06:19
(11) дата рождения итак всегда будет началом дня, это лишнее
13 Chameleon1980
 
08.02.18
06:21
да блин. я для примера :)
14 Chameleon1980
 
08.02.18
06:22
какой справочник под руку попался
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший