Помогите решить проблему: Операции сравнения на больше-меньше допустимы только над значениями совпадающих базовых типов (число, строка, дата)

1. Pilot741 17.06.14 21:43 Сейчас в теме
Добрый день.

Сегодня при восстановлении последовательности документов вдруг выдалось сообщение:

Если ДатаПолучения >= '01.01.2008' Тогда
{Глобальный модуль(628)}: Операции сравнения на больше-меньше допустимы только над значениями совпадающих базовых типов (число, строка, дата)

это сообщение выдается по нескольким документам Перенос денежных средств. заполнены они как все, бух-и говорят верно.

Подскажите, что можно посмотреть/проверить, что бы сообщение перестало появляться и все заработало?
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. jack19 148 17.06.14 22:14 Сейчас в теме
(1) Pilot741, Обычно такая ошибка выдается, если одна из сравниваемых переменных (в данном случае ДатаПолучения) перед операцией сравнения оказывется неопределенной. В отладчике это легко проверить. А можно вставить перед операцией сравнения:
Сообщить(ДатаПолучения);
5. Pilot741 18.06.14 12:34 Сейчас в теме
(3) jack19, к сожалению я не пользуюсь отладчиком
а вот Сообщить(ДатаПолучения); не работает, не выводится ничего кроме самой ошибки.
12. GPetr 22 18.06.14 13:19 Сейчас в теме
(1) Pilot741, для сравнения дат, пример:
сорри.
ошибся с темой(((
13. vcv 89 18.06.14 13:21 Сейчас в теме
(12) Зачудительный код для ПУБ 7.7 :)
14. vcv 89 18.06.14 13:23 Сейчас в теме
(12) Кстати, а почему ">" и "<" ? Разве дата/время документа не может быть равна началу или концу дня?
15. Cooler 22 18.06.14 13:24 Сейчас в теме
(12) Угу, очччень поможет при сравнении пустой даты.
(11) Как и следовало ожидать.

Если вслепую, не анализируя код и возможные последствия, то можно изменить 628 строку на такую:

Если ?(ТипЗначенияСтр(ДатаПолучения)="Дата", ДатаПолучения, Дата(0)) >= '01.01.2008' Тогда
Pilot741; +1 Ответить
16. vcv 89 18.06.14 13:30 Сейчас в теме
(15) Просто
Если Дата(ДатаПолучения) >= '01.01.2008' Тогда
Pilot741; +1 Ответить
2. Cooler 22 17.06.14 22:13 Сейчас в теме
что можно посмотреть/проверить
Например, ТипЗначенияСтр(ДатаПолучения)
4. Pilot741 17.06.14 22:31 Сейчас в теме
6. Cooler 22 18.06.14 12:51 Сейчас в теме
Сообщить(ДатаПолучения); не работает, не выводится ничего кроме самой ошибки.
Значит, ДатаПолучения пустая, вот и кажется, что "ничего не выводится".

В этом можно удостовериться, например, так:

Сообщить(">"+Строка(ДатаПолучения)+"<");

P.S. Надеюсь, хоть вставляете эту строку перед 628-й строкой?
7. Pilot741 18.06.14 13:11 Сейчас в теме
(6) Cooler, конечно перед сравнением (строка 627)
8. Cooler 22 18.06.14 13:15 Сейчас в теме
(7) Еще лучше попробуйте в 627 строке:

Сообщить(ТипЗначенияСтр(ДатаПолучения)+": "+Строка(ДатаПолучения));
11. Pilot741 18.06.14 13:17 Сейчас в теме
(8) Cooler, тип Строка сообщилось
9. Pilot741 18.06.14 13:15 Сейчас в теме
да, ДатаПолучения пустая.
Я все равно не соображаю откуда эта самая датаПолучения берется ТТ
10. vcv 89 18.06.14 13:16 Сейчас в теме
Бывает, когда где-то по итогам в регистрах/счетах пустая ссылка на документ встречается. Тогда ДатаПолучения = ТекДок.ДатаДок может дать не пустую дату, а пустое значение неопределенного типа.
17. Cooler 22 18.06.14 13:32 Сейчас в теме
Не нравится мне преобразование даты в дату. Хотя работает, да.
18. vcv 89 18.06.14 13:42 Сейчас в теме
(17) Тогда использовал бы хотя бы ТипЗначения вместо ТипЗначенияСтр. Работает заметно быстрее.
19. Cooler 22 18.06.14 13:48 Сейчас в теме
Тогда использовал бы хотя бы ТипЗначения вместо ТипЗначенияСтр
Это да, только я не помню по памяти какое возвращаемое значение соответствует типу "Дата". А ты помнишь? :-)
20. vcv 89 18.06.14 13:52 Сейчас в теме
(19) На эти случаи нам Его Святейшеством Санкт-Борисом Нуралиевичем дано Сервис / Табло
21. Pilot741 18.06.14 14:10 Сейчас в теме
Все же решила в коде не менять ничего. Просто бух-р не корректно ввел документ Ввод остатков по расч. с поставщ-и и там-то дата становилась "пустой строкой".
Всем большущее спасибо, советы взяла на заметку!
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот