helpf.pro
Регистрация

Результат одного запроса через SQL-сервер и локальный компьютер

theelectric
28.10.2010 11:04Прочитано: 1650
Возникла такая ситуация:

- в отчете выполняется запрос, а в этом запросе используется функция ГОД();
- сам запрос перебирает даты и ищет среди них пустые, т.е. 0001-01-01, путем сравнения ГОД(РегистрСведений.Сотрудники.ДатаУвольнения)=1;
- при открытии отчета в локальной базе функция ГОД() от пустой даты выдает 1 - условие срабатывает;
- но открывая отчет на серверной базе (работающей через SQL), условие на идет, а результат от функции ГОД() равен 1753.

Мне подсказали, что, наверное, есть какие-то настройки в связи между SQL и Сервером 1С...
Кто встречался с такой ситуацией или знает решение, ответьте, пожалуйста...
Yandex
Возможно, вас также заинтересует
Реклама на портале
E_Migachev
28.10.2010 11:59Ответ № 1
у SQL расчет начинается с 01.01.1753 *13

Настроек нет, единственное что - при создании базы нужно было указать смещение дат 2000

Покажи код запроса...
theelectric
28.10.2010 12:20Ответ № 2
"ВЫБРАТЬ
| ФизическиеЛица.Код КАК ТабНомер,
| ФизическиеЛица.Ссылка КАК Наименование,
| ЛицевыеСчетаРаботниковОрганизации.НомерЛицевогоСчета,
| СотрудникиОрганизаций.ВидДоговора
|ИЗ
| Справочник.ФизическиеЛица КАК ФизическиеЛица
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций
| ПО ФизическиеЛица.Ссылка = СотрудникиОрганизаций.Физлицо
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЛицевыеСчетаРаботниковОрганизации КАК ЛицевыеСчетаРаботниковОрганизации
| ПО (ЛицевыеСчетаРаботниковОрганизации.ФизЛицо = ФизическиеЛица.Ссылка)
|ГДЕ
| (СотрудникиОрганизаций.ДатаУвольнения > &Дата
| ИЛИ ГОД(СотрудникиОрганизаций.ДатаУвольнения) = 1)
| И СотрудникиОрганизаций.ДатаПриемаНаРаботу < &Дата
|
|УПОРЯДОЧИТЬ ПО
| ТабНомер";
theelectric
28.10.2010 12:30Ответ № 3
Проблему-то я решил указав четко нулевую дату, без вычисления года:

|ГДЕ
| (СотрудникиОрганизаций.ДатаУвольнения > &Дата
| ИЛИ (СотрудникиОрганизаций.ДатаУвольнения = &НульДата)
| И СотрудникиОрганизаций.ДатаПриемаНаРаботу < &Дата
|
|УПОРЯДОЧИТЬ ПО
| ТабНомер";

Запрос.УстановитьПараметр("НульДата",'0001-01-01');
Запрос.УстановитьПараметр("Дата",Дата);
theelectric
28.10.2010 12:32Ответ № 4
Но сама суть ситуации интересна... )
E_Migachev
28.10.2010 12:37Ответ № 5
(2) у меня на SQL 2005 такой код свободно работает, но у меня стоит смещение дат 2000!
Замени в запросе
Код 1C v 8.х
 | ИЛИ ГОД(СотрудникиОрганизаций.ДатаУвольнения) = 1)     

на
Код 1C v 8.х
 | ИЛИ СотрудникиОрганизаций.ДатаУвольнения =ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)   

и все будет *13
E_Migachev
28.10.2010 12:38Ответ № 6
(3) так тоже можно, но нужно использовать параметры, проще сразу в запросе указать пустую дату как в (5)
theelectric
28.10.2010 12:48Ответ № 7
Спасибо! Благодарю за ответ! *13
theelectric
28.10.2010 12:49Ответ № 8
Попробую!
Подсказка: Для быстрого перемещения к последнему ответу или к вопросу используйте или .
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.