Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Ошибка СУБД: Ошибка Sql: Неправильные параметры функции 'datediff'
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.1 (8.0)
kasya
Доброго времени суток.
"ВЫБРАТЬ
    |    ОбъектыПрокатаУКлиентовОстатки.Клиент,
    |    ОбъектыПрокатаУКлиентовОстатки.ОбъектПроката,
    |    ПередачаВПрокат.Дата,
    |    ПередачаВПрокатДанныеПередачиВПрокат.КоличествоДнейПроката,
    |    ПередачаВПрокатДанныеПередачиВПрокат.Сумма,
    |    ОбъектыПрокатаУКлиентовОстатки.КоличествоОстаток,
    |   ДОБАВИТЬКДАТЕ(ПередачаВПрокат.Дата, ДЕНЬ, ПередачаВПрокат.ДанныеПередачиВПрокат.КоличествоДнейПроката) КАК ДатаВозврата,        
    |   РАЗНОСТЬДАТ(ДОБАВИТЬКДАТЕ(ПередачаВПрокат.Дата, ДЕНЬ, ПередачаВПрокат.ДанныеПередачиВПрокат.КоличествоДнейПроката), &Дата, ДЕНЬ) КАК Просрочка
    |ИЗ
    |    РегистрНакопления.ОбъектыПрокатаУКлиентов.Остатки КАК ОбъектыПрокатаУКлиентовОстатки
    |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПередачаВПрокат.ДанныеПередачиВПрокат КАК ПередачаВПрокатДанныеПередачиВПрокат
    |            ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПередачаВПрокат КАК ПередачаВПрокат
    |            ПО ПередачаВПрокатДанныеПередачиВПрокат.Ссылка = ПередачаВПрокат.Ссылка
    |        ПО ОбъектыПрокатаУКлиентовОстатки.Клиент = ПередачаВПрокат.ДанныеПередачиВПрокат.Клиент
    |            И ОбъектыПрокатаУКлиентовОстатки.ОбъектПроката = ПередачаВПрокат.ДанныеПередачиВПрокат.ОбъектПроката";
    Запрос.УстановитьПараметр("Дата", ТекущаяДата());
    Результат = Запрос.Выполнить();

при выполнении данного запроса появляется оршибка "Ошибка СУБД: Ошибка SQL: Неправильные параметры функции 'DateDiff' ".
Что я делаю неверно?
logist
ПередачаВПрокат.Дата - значение является Датой или ДатаИвремя? Насколько я в курсе 1С хочет видеть дату в секундах.
kasya
Цитата(logist @ 05.02.12, 20:52) необходимо зарегистрироваться для просмотра ссылки
ПередачаВПрокат.Дата - значение является Датой или ДатаИвремя? Насколько я в курсе 1С хочет видеть дату в секундах.
Дата и время, верно.
logist
у Вас в РАЗНОСТЬДАТ первый параметр получается наверное число, а должно быть время. Вообщем проблема именно в этой функции
kasya
Цитата(logist @ 05.02.12, 22:06) необходимо зарегистрироваться для просмотра ссылки
у Вас в РАЗНОСТЬДАТ первый параметр получается наверное число, а должно быть время. Вообщем проблема именно в этой функции

ДОБАВИТЬКБАТЕ - я должна получить новую дату (это срок возврата)
РАЗНОСТЬДАТ - я должна получить количество дней (это просрочка)
Batchir
Здесь проблема:
|РАЗНОСТЬДАТ(ДОБАВИТЬКДАТЕ(ПередачаВПрокат.Дата, ДЕНЬ, ПередачаВПрокат.ДанныеПередачиВПрокат.КоличествоДнейПроката), &Дата, ДЕНЬ) КАК Просрочка


в РАЗНОСТЬДАТ не правильные параметры, а именно ДОБАВИТЬКДАТЕ возвращает не то что нужно.
Для примера следующий запрос отработал без проблем:

|ВЫБРАТЬ
|    РАЗНОСТЬДАТ(ДОБАВИТЬКДАТЕ(&ТекДата, ДЕНЬ, 10), &ТекДата, ДЕНЬ) КАК Просрочка
kasya
все еще актуально, т.к. не работает..
Batchir
Если ничего не делать то оно и не заработает. Вам указали где ошибка.
Смотрите типы данных которые используются в "ДОБАВИТЬКДАТЕ" и "РАЗНОСТЬДАТ".
Я специально привел рабочий текст запроса что бы показать это.
kasya
Цитата(Batchir @ 06.02.12, 16:53) необходимо зарегистрироваться для просмотра ссылки
Если ничего не делать то оно и не заработает. Вам указали где ошибка.
Смотрите типы данных которые используются в "ДОБАВИТЬКДАТЕ" и "РАЗНОСТЬДАТ".
Я специально привел рабочий текст запроса что бы показать это.
ПередачаВПрокат.Дата - тип Дата, ПередачаВПрокат.ДанныеПередачиВПрокат.КоличествоДнейПроката - тип Число. Тут все в порядке.
Batchir
Ну я не знаю, чудес ведь не бывает и врятили тут баг платформы.
Цитата
ПередачаВПрокат.Дата - тип Дата
а состав даты какой?

Собственно, пример который я привел работает, а на пальцах гадать почему у Вас так а у нас не так - тяжело
Что бы сказать конкретно нужен ЦФ.
kasya
Цитата(Batchir @ 06.02.12, 19:29) необходимо зарегистрироваться для просмотра ссылки
Ну я не знаю, чудес ведь не бывает и врятили тут баг платформы.
а состав даты какой?

Собственно, пример который я привел работает, а на пальцах гадать почему у Вас так а у нас не так - тяжело
Что бы сказать конкретно нужен ЦФ.
а что такое ЦФ?


а, поняла. афйл конфигурации


**туплю
yaroslav78
Т.к. соединенние "левое" я бы вместо
ДОБАВИТЬКДАТЕ(ПередачаВПрокат.Дата, ДЕНЬ, ПередачаВПрокат.ДанныеПередачиВПрокат.КоличествоДнейПроката)

писал бы
ДОБАВИТЬКДАТЕ(ЕСТЬNULL(ПередачаВПрокат.Дата, &Дата), ДЕНЬ, ЕСТЬNULL(ПередачаВПрокат.ДанныеПередачиВПрокат.КоличествоДнейПроката,0))


Да и вообще - странно записаны соединения.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.