Имя: Пароль:
1C
 
Ошибка сравнения на поля несовместимых типов
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) свежак, вчера только подвезли, до Новосибирска еще не добрались