Вход | Регистрация


1С:Предприятие ::

Метки: 

Ошибка преобразования datetime в MS SQL 2016

Я
   d546
 
16.11.17 - 15:44
Проблема образовалась неожиданно.

Суть что перенесли базы на MS SQL 2016 и в разных конфигурациях начал выходить ошибки связанные в первую очередь с сохранением в регистры. Не стали проводится документы.

https://yadi.sk/i/Y6O3Nde_3Pke3u

При детальном разборе выяснил.

Ошибка при помещении таблицы значений в запрос.
Если есть поле типа Дата, то данные не передаются в SQL,
т.е. становятся равными пустой дате.

Кто нибудь сталкивался в проблемой.
 
 
   d546
 
1 - 16.11.17 - 15:47
//Таблица = Новый ТаблицаЗначений;

    //Таблица.Колонки.Добавить("Дата", Новый ОписаниеТипов("Дата"));

    //

    //НоваяСтрока = Таблица.Добавить();

    //НоваяСтрока.Дата = Дата(2006,1,1);

    
    Запрос = Новый Запрос;
    Запрос.Текст = 
    "ВЫБРАТЬ
    |    ВТ.Дата
    |ПОМЕСТИТЬ ВТ
    |ИЗ
    |    &ВТ КАК ВТ
    |;
    |
    ////////////////////////////////////////////////////////////////////////////////

    |ВЫБРАТЬ
    |    ВТ.Дата
    |ИЗ
    |    ВТ КАК ВТ";
    
    Запрос.УстановитьПараметр("ВТ", Таблица.Выгрузить());
    ТаблицаЗапроса = Запрос.Выполнить().Выгрузить();
    
    Для каждого СтрТаблицы Из ТаблицаЗапроса Цикл
        ЗаполнитьЗначенияСвойств(Таблица.Добавить(), СтрТаблицы);
    КонецЦикла;
   d546
 
2 - 16.11.17 - 15:58
и если даже не таблицей значений передавать, а просто параметр типа дата, тоже ее в нулевую превращает в запросе.
   ptiz
 
3 - 16.11.17 - 16:20
Платформа какой версии?
   d546
 
4 - 16.11.17 - 16:20
1С:Предприятие 8.3 (8.3.10.2466)
   H A D G E H O G s
 
5 - 16.11.17 - 16:22
Посмотреть профайлером запрос
   d546
 
6 - 16.11.17 - 16:23
оказалось еще проще

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

такой пример для ЗУП 31

    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ ПЕРВЫЕ 1
        |    БольничныйЛист.Дата
        |ПОМЕСТИТЬ ВТ
        |ИЗ
        |    Документ.БольничныйЛист КАК БольничныйЛист
        |;
        |
        ////////////////////////////////////////////////////////////////////////////////

        |ВЫБРАТЬ
        |    ВТ.Дата
        |ИЗ
        |    ВТ КАК ВТ";
    
    РезультатЗапроса = Запрос.Выполнить();
    
    Выборка = РезультатЗапроса.Выбрать();
    
    Если Выборка.Следующий() Тогда
        Сообщить(Выборка.Дата);
    КонецЕсли;
   ptiz
 
7 - 16.11.17 - 16:39
Попробуйте реструктуризацию таблиц сделат.
   d546
 
8 - 17.11.17 - 09:18
проблема вообще без участия данных базы может выйти.
реструктуризация не причем.

Сообщить(Выборка.Дата); выдает пустую дату

    Запрос = Новый Запрос;
    Запрос.Текст = 
    "ВЫБРАТЬ
    |    &Дата КАК Дата
    |ПОМЕСТИТЬ ВТ
    |;
    |
    ////////////////////////////////////////////////////////////////////////////////

    |ВЫБРАТЬ
    |    ВТ.Дата
    |ИЗ
    |    ВТ КАК ВТ";
    Запрос.УстановитьПараметр("Дата", ТекущаяДата());
    
    Выборка = Запрос.Выполнить().Выбрать();
    
    Если Выборка.Следующий() Тогда
        Сообщить(Выборка.Дата);
    КонецЕсли;
   VladZ
 
9 - 17.11.17 - 09:21
(0) "перенесли базы на MS SQL 2016" - зачем? Какие были причины перехода?
   d546
 
10 - 17.11.17 - 09:23
кстати, в режиме совместимости Версия 8.2.13 проблемы нет
 
 Рекламное место пустует
   vde69
 
Модератор
11 - 17.11.17 - 09:27
посмотрите на тип колонки в скуле, у меня подобное было... там был тип datetime2 вместо datetime
   d546
 
12 - 17.11.17 - 09:28
(9) прирост производительности по сравнению с 2008
   d546
 
13 - 17.11.17 - 09:28
(11) таблица временная, где посмотреть тип колонки?
   d546
 
14 - 17.11.17 - 09:30
(11) если смотреть (8) то там нет данных из базы.
используется виртуальная таблица.

где посмотреть тип колонки?
   Dotoshin
 
15 - 17.11.17 - 09:30
(0) Возможно проблема в смещении дат. Посмотрите, какие у вас настройки установлены.

Установка смещения дат в информационной базе на Microsoft SQL Server

В диалоге "Добавление информационной базы/группы" при создании информационной базы на СУБД Microsoft SQL Server доступна установка параметра "Смещение дат". Раздел содержит дополнительную информацию о влиянии значения этого параметра на работу информационной базы.
https://its.1c.ru/db/metod8dev/content/4055/hdoc
   vde69
 
Модератор
16 - 17.11.17 - 09:30
"ВЫБРАТЬ ПЕРВЫЕ 1 
        |    БольничныйЛист.Дата
        |ПОМЕСТИТЬ ВТ
        |ИЗ
        |    Документ.БольничныйЛист КАК БольничныйЛист
        |;
        |



соответсвенно в Документ.БольничныйЛист.Дата
   d546
 
17 - 17.11.17 - 09:32
(15) смещение стоит 2000, не должно быть проблем
   vde69
 
Модератор
18 - 17.11.17 - 09:34
я у себя не смог победить, писал в 1с, еще делал кучу фигню... у меня проблема была именно на ЗУП е с регистрами расчета... при чем танцы с бубном в самой базе SQL то же не принесли плодов, после реструктуризации востановлялось...

как я понял проблемы была непосредственно в кривых метаданных, в результате я перенес данные на пустую базу...
   Широкий
 
19 - 17.11.17 - 09:35
а в скульнике что стоит?
   d546
 
20 - 17.11.17 - 09:42
(18) глянул в sql у таблицы поле тип datetime
   d546
 
21 - 17.11.17 - 09:44
(19) версия интересует или что-то другое?

другие программы или что вообще интересует, можно конкретнее?
   vde69
 
Модератор
22 - 17.11.17 - 09:51
какие права в SQL у пользователя под которым работает база?

создай нового пользователя в SQL, установи его DBO для базы и перенастрой на него сервер 1с
   vde69
 
Модератор
23 - 17.11.17 - 09:54
ну и еще глянь в файле adojavas на сервере 

var adDBTime = 134;

если на сервере не стандартные настройки - там возможно будет другое...

ну и еще региональные настройки сервера по дате проверь, возможно там используется не стандартный формат дат...
   d546
 
24 - 17.11.17 - 09:57
   vde69
 
Модератор
25 - 17.11.17 - 09:57
выполни на SQL запрос типа (синтаксис по памяти, наверняка там ошибки)

select * from convert('20150101',,134)
   d546
 
26 - 17.11.17 - 09:58
   vde69
 
Модератор
27 - 17.11.17 - 10:01
(26) повторяется ошибка под ним?
   d546
 
28 - 17.11.17 - 13:41
проблема с Microsoft SQL Server Native Client

на одном сервере 1С стоит старая версия для подключения к SQL2005, отдельные сервера для 1с и SQL.

и вот с этого сервера 1С, где стоит старый Native Client пробовали подключится к третьему серверу с SQL2016.

из-за этого и выходит эта ошибка.

запускали базу на сервере 1с с правильной версией Native Client и ошибки нет.
   vde69
 
Модератор
29 - 17.11.17 - 13:44
я вообще сразу нативный клиент выключаю всегда...
   d546
 
30 - 17.11.17 - 13:44
(29) где выключаешь и как?
   vde69
 
Модератор
31 - 17.11.17 - 13:48
   d546
 
32 - 17.11.17 - 14:47



Список тем форума
Рекламное место пустует Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует