|
Ошибка при сравнении двух полей дата | ☑ | ||
---|---|---|---|---|
0
Ly_Alena
20.10.14
✎
13:11
|
Есть такой фрагмент кода:
Если ДатаОтгрузки<>Null Тогда Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ЗаказПокупателя.ДатаОтгрузки, | ЗаказПокупателя.СрокРезерва |ИЗ | Документ.НакладнаяНаОтгрузку КАК НакладнаяНаОтгрузку | ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПокупателя КАК ЗаказПокупателя | ПО НакладнаяНаОтгрузку.ДокументОснование = ЗаказПокупателя.Ссылка | И НакладнаяНаОтгрузку.Сделка = ЗаказПокупателя.Ссылка |ГДЕ | ЗаказПокупателя.ДокументОснование = &ЗаказПокупателя"; Запрос.УстановитьПараметр("ЗаказПокупателя", ДокументОснование); Результат = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = Результат.Выбрать(); Если ЭлементыФормы.ДатаОтгрузки.Значение>ВыборкаДетальныеЗаписи.СрокРезерва Тогда Сообщить ("Условие выполняется. Документ нельзя проводить!"); Иначе Сообщить ("Условие НЕ выполняется. Документ можно провести!"); КонецЕсли; КонецЕсли; Выдает сообщение при попытке провести. Оба поля тип дата. {Документ.НакладнаяНаОтгрузку.Форма.ФормаДокумента.Форма(2298)}: Операции сравнения на больше-меньше допустимы только для значений совпадающих примитивных типов (Булево, Число, Строка, Дата) Если ЭлементыФормы.ДатаОтгрузки.Значение>ВыборкаДетальныеЗаписи.СрокРезерва Тогда |
|||
1
Godofsin
20.10.14
✎
13:12
|
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
|
|||
2
КтоКакБог
20.10.14
✎
13:12
|
Если ДатаОтгрузки >ВыборкаДетальныеЗаписи.СрокРезерва Тогда
|
|||
3
Ly_Alena
20.10.14
✎
13:16
|
(2) Такой вариант был начальный. А потом начала мудрить. СПасибо!
|
|||
4
Maxus43
20.10.14
✎
13:18
|
(3) обхода выборки всё равно нет
|
|||
5
Ly_Alena
20.10.14
✎
13:21
|
(4) Да почему-то не проверяет условие
|
|||
6
Maxus43
20.10.14
✎
13:22
|
(5) см (1)
|
|||
7
Ly_Alena
20.10.14
✎
13:23
|
В цикле тоже не попадает (6)
|
|||
8
Godofsin
20.10.14
✎
13:23
|
(7) Выложи код с циклом
|
|||
9
Ly_Alena
20.10.14
✎
13:24
|
Если ДатаОтгрузки<>Null Тогда
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ЗаказПокупателя.ДатаОтгрузки, | ЗаказПокупателя.СрокРезерва |ИЗ | Документ.НакладнаяНаОтгрузку КАК НакладнаяНаОтгрузку | ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПокупателя КАК ЗаказПокупателя | ПО НакладнаяНаОтгрузку.ДокументОснование = ЗаказПокупателя.Ссылка | И НакладнаяНаОтгрузку.Сделка = ЗаказПокупателя.Ссылка |ГДЕ | ЗаказПокупателя.ДокументОснование = &ЗаказПокупателя"; Запрос.УстановитьПараметр("ЗаказПокупателя", ДокументОснование); Результат = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = Результат.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Если ДатаОтгрузки>ВыборкаДетальныеЗаписи.СрокРезерва Тогда Сообщить ("Условие выполняется. Документ нельзя проводить!"); Иначе Сообщить ("Условие НЕ выполняется. Документ можно провести!"); КонецЕсли; КонецЦикла; КонецЕсли; КонецЕсли; (8) |
|||
10
Godofsin
20.10.14
✎
13:26
|
Если ничего не выводит, значит результат запроса пустой
|
|||
11
Maxus43
20.10.14
✎
13:26
|
>>Если ДатаОтгрузки<>Null Тогда
выкинь, никогда оно null не будет |
|||
12
Godofsin
20.10.14
✎
13:27
|
(11) Кстати, да
|
|||
13
Ly_Alena
20.10.14
✎
13:27
|
(10) Должен хотя бы сообщение вывести.
|
|||
14
Godofsin
20.10.14
✎
13:27
|
Ну и вообще, научись пользоваться отладчиком
|
|||
15
Cube
20.10.14
✎
13:28
|
(9) На NULL потому что надо в запросе затычки делать:
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ЕстьNULL(ЗаказПокупателя.ДатаОтгрузки, ДатаВремя(1, 1, 1)) КАК ДатаОтгрузки, | ЕстьNULL(ЗаказПокупателя.СрокРезерва, ДатаВремя(1, 1, 1)) КАК СрокРезерва |ИЗ | Документ.НакладнаяНаОтгрузку КАК НакладнаяНаОтгрузку | ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПокупателя КАК ЗаказПокупателя | ПО НакладнаяНаОтгрузку.ДокументОснование = ЗаказПокупателя.Ссылка | И НакладнаяНаОтгрузку.Сделка = ЗаказПокупателя.Ссылка |ГДЕ | ЗаказПокупателя.ДокументОснование = &ЗаказПокупателя"; |
|||
16
Godofsin
20.10.14
✎
13:28
|
(13) Если выборка пустая - цикл отрабатываться не будет, значит, не будет никаких сообщений. И см (11)
|
|||
17
ObjectRelation Model
20.10.14
✎
13:30
|
(15) верно, но тогда такие документы попадут в
Сообщить ("Условие выполняется. Документ нельзя проводить!"); |
|||
18
Ly_Alena
20.10.14
✎
13:33
|
Без Null в цикл попадает, а условие все равно не отрабатывает.
(14) Отладчиком считала что умею пользоваться до Вашей реплики ) |
|||
19
Godofsin
20.10.14
✎
13:34
|
(18) Вот если бы умела, то тогда легко бы узнала, почему твое условие не отрабатывается =)
|
|||
20
Ly_Alena
20.10.14
✎
13:37
|
(19) Ну а что делать? ) В цикл попадает и сразу в конецесли;
|
|||
21
Cube
20.10.14
✎
13:41
|
(20) Задачу опиши, а то не понятно, для чего это надо всё...
|
|||
22
Godofsin
20.10.14
✎
13:44
|
(20) Ставишь точку остановы на "Если" и смотришь, что там у тебя в ДатаОтгрузки и ВыборкаДетальныеЗаписи.СрокРезерва
|
|||
23
Ly_Alena
20.10.14
✎
13:44
|
Есть документ ЗаказПокупателя на основании его вводятся данные в документ НакладнаяНаОтгрузку. В документе НакладнаяНаОтгрузку вводится дата отгрузки. В документе ЗаказПокупателя вводится дата закрытия заказа (СрокРезерва).
НакладнаяНаОтгрузку не должна проводиться, если дата отгрузки больше даты закрытия заказа. |
|||
24
Ly_Alena
20.10.14
✎
13:45
|
(22) Так и делала - в если не попадает и значения не показывает.
|
|||
25
Godofsin
20.10.14
✎
13:46
|
(23) ахахах))))
Если ДатаОтгрузки > ДокументОснование.ДатаРезерва тогда ..... КонецЕсли; |
|||
26
Godofsin
20.10.14
✎
13:46
|
(24) Значит выборка пустая ))))
|
|||
27
Cube
20.10.14
✎
13:49
|
(23) Зачем тебе запрос тогда? Решение в (25) вполне нормальное.
|
|||
28
Godofsin
20.10.14
✎
13:54
|
+(25) Ну вот так еще на всякий случай:
Если ТипЗнч(ДокументОснование) = Тип("ДокументСсылка.ЗаказПокупателя") И ДатаОтгрузки > ДокументОснование.ДатаРезерва тогда |
|||
29
Cube
20.10.14
✎
13:57
|
+(28) И ещё:
Если ТипЗнч(ДокументОснование) = Тип("ДокументСсылка.ЗаказПокупателя") И НЕ ДокументОснование.Пустая() И ДатаОтгрузки > ДокументОснование.ДатаРезерва Тогда |
|||
30
Godofsin
20.10.14
✎
13:59
|
(29) +1 =)
|
|||
31
ObjectRelation Model
20.10.14
✎
14:00
|
(29) осподи...
|
|||
32
Ly_Alena
20.10.14
✎
14:02
|
А че-то у меня не пошло без запроса. Попробую то что предложили.
|
|||
33
Ly_Alena
20.10.14
✎
14:41
|
Тада-да-дааам!
Если ЗначениеЗаполнено(ДокументОснование) И ЗначениеЗаполнено(ДатаОтгрузки) И ДатаОтгрузки > ДокументОснование.СрокРезерва Тогда Предупреждение("Дата отгрузки позднее даты закрытия заказа!"); Отказ=Истина; Иначе Отказ=Ложь; КонецЕсли; Cube Отдельное спасибо! |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |