|
Ошибка сравнения на поля несовместимых типов |
☑ |
0
falselight
23.10.17
✎
15:05
|
Решил использовать границу за место даты в периоде запроса.
Выходит ошибка. Подскажите можно это как то исправить?
Или нельзя применять границу для сравнения с датой документа,
выбирая в запросе документы?
{ВнешнийОтчет.СтатистикаЗаказовКлиента.Форма.ФормаОтчета.Форма(70)}: Ошибка при вызове метода контекста (Выполнить)
Рез = Запрос.Выполнить();
по причине:
{(9, 50)}: Неверные параметры в операции сравнения. Нельзя сравнивать поля
неограниченной длины и поля несовместимых типов.
ЗаказКлиентаДополнительныеРеквизиты.Ссылка.Дата <<?>>МЕЖДУ &НачДата И &КонДата
//
Граница_1 = Новый Граница(НачалоДня(ПериодОтчета.ДатаНачала), ВидГраницы.Включая);
//
Запрос.УстановитьПараметр("НачДата", Граница_1);
//
Граница_2 = Новый Граница(КонецДня(ПериодОтчета.ДатаОкончания), ВидГраницы.Включая);
//
Запрос.УстановитьПараметр("КонДата", Граница_2);
//
|
|
1
igork1966
23.10.17
✎
15:25
|
(0) Потому что такой тип параметра можно использовать в виртуальных таблицах регистра
|
|
2
SpellKeeper
23.10.17
✎
15:26
|
Во-первых, при использовании границы в условии получаются данные разных типов. Из документа берется тип Дата и сравнивается с типами Граница. По ходу запрос это не понимает.
Во-вторых, в данном случае, по-моему, использование Границы бессмысленно. Т.к. устанавливаются начало и конец дня, и конкретно это условие и так включит моменты начало и конец дня в выборку. Т.е. будут захвачены все документы с датой начала периода и все документы с датой конца периода.
Границу хорошо применять в выборках из виртуальных таблиц регистров. Например, нужно получить остатки на момент перед проведенным документом.
Как получить этот момент? Если указать дату документа, то запрос захватит движения данного документа. Если указать -1 сек, то можно потерять документы, которые попали в ту же секунду, но все-таки стоят по времени до нужного документа.
Вот в этом случае Граница очень подходит. Указываем в первом параметре МоментВремени документа, а во втором Исключая. Получаем правильный ответ.
|
|
3
igork1966
23.10.17
✎
15:29
|
(1) +
ЗаказКлиентаДополнительныеРеквизиты.Ссылка.Дата МЕЖДУ НачалоПериода(&НачДата, День) И КонецПериода(&КонДата, День)
|
|
4
falselight
23.10.17
✎
15:44
|
Ясно. Ну или так тогда КонецДня(Дата2)
|
|
5
falselight
23.10.17
✎
15:45
|
(3) НачалоПериода(&НачДата, День) И КонецПериода(&КонДата, День)
А что это за новые методы????
|
|
6
Филиал-msk
23.10.17
✎
15:46
|
(5) Браво, Андрей!
|
|
7
Lexey_
23.10.17
✎
16:01
|
(5) свежак, вчера только подвезли, до Новосибирска еще не добрались
|
|
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший