Имя: Пароль:
1C
1С v8
Ошибка выполнения запроса на новой платформе
0 rema85
 
06.12.19
10:17
Добрый день. При переходе с платформы 8.3.10 на 8.3.16  при выполнении различных запросов появилась ошибка приводящая к закрытию базы.

Ошибка следующая:
Ошибка СУБД:
Microsoft SQL Server Native Client 11.0: Недопустимый аргумент масштаба. Допустимыми выражениями для аргумента масштаба типа данных datetime2 являются целочисленные константы и выражения с целочисленными константами.
HRESULT=80040E14, SQLSrvr: SQLSTATE=42000, state=1, Severity=10, native=10760, line=1

Также были испробованы платформы 8.3.15 и 8.3.14. Результат тот же.
Опытным путем установлено, что база крошится если в условиях связи двух таблиц написать конструкцию соединения типа НачалоПериода(РегламентированныйПроизводственныйКалендарь.ДатаКалендаря, Месяц). Точно такая же конструкция, но в поле выполняется без проблем. Также без проблем выполняется конструкция КонецПериода(РегламентированныйПроизводственныйКалендарь.ДатаКалендаря, Месяц). Валится только в условиях связи и только при использовании НачалоПериода.
Кстати ошибка возникает на 2 базах (сильно доработанная УПП и абсолютно переработанная CRM). Базы на mssql. Уже даже sql переустановили. Стоял 2014, а поставили 2017. Может кто-то сможет натолкнуть на мысль куда дальше копать.
1 FIXXXL
 
06.12.19
10:22
НачалоПериода(РегламентированныйПроизводственныйКалендарь.ДатаКалендаря, Месяц)
РегламентированныйПроизводственныйКалендарь.ДатаКалендаря - заполнено?
2 rema85
 
06.12.19
10:24
Да. Пустых дат в регистре нет.
Валится вот такой запрос с заполненными параметрами дат:

ВЫБРАТЬ
    &Дата1 КАК Дата1
ПОМЕСТИТЬ вр1
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    &Дата2 КАК Дата2
ПОМЕСТИТЬ вр2
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    вр1.Дата1 КАК Дата1,
    вр2.Дата2 КАК Дата2
ИЗ
    вр1 КАК вр1
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ вр2 КАК вр2
        ПО вр1.Дата1 = НачалоПериода(вр2.Дата2, Месяц)
3 dka80
 
06.12.19
10:25
Собрать дамп и отправить в 1С?
4 shuhard
 
06.12.19
10:28
(0)[Может кто-то сможет натолкнуть на мысль куда дальше копать.]
если код типовой - в саппорт 1С
иначе - переписать запрос
5 Ёпрст
 
06.12.19
10:28
6 Ёпрст
 
06.12.19
10:32
Ну и ..

ПО вр1.Дата1 = НачалоПериода(ДОБАВИТЬКДАТЕ(вр2.Дата2, день, 0), Месяц)

пробуй.
7 rema85
 
06.12.19
10:36
(5) Там эта проблема решена в стиле "не делай так и все будет ок".
Такой вариант конечно же хорош, но базы огромные и переписать кучу запросов накопленных за годы будет проблематично.
8 Ёпрст
 
06.12.19
10:37
(7) ну, тогда оставайся на старой платформе
9 rema85
 
06.12.19
10:38
(6) Если так переписать, то на ошибку не сваливается. Но хотелось бы обойтись без переписки запросов
10 rema85
 
06.12.19
10:38
(8) Хотелось бы двигаться вперед хоть чуть-чуть...
11 Ёпрст
 
06.12.19
10:40
(10) пиши в саппорт в 1с- может, поправят, или используй Конецпериода, он не дает ошибки
12 Ёпрст
 
06.12.19
10:41
И..на 2008 скуле, тоже, такой ошибки нема
13 rema85
 
06.12.19
10:43
(12) хм... это интересно. может и попробуем.
14 rema85
 
06.12.19
10:43
огромное спасибо за кучу идей
15 kumena
 
06.12.19
11:20
1С:Предприятие 8.3 (8.3.14.1779) + Microsoft SQL Server 2012 - 11.0.5532.0 (X64)   Jul 14 2014 15:00:27   Copyright (c) Microsoft Corporation  Developer Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) (Hypervisor)

ваш запрос на этой связке работает.
16 shuhard
 
06.12.19
11:24
(15)Service Pack 1, возможно дело в нём
17 rema85
 
06.12.19
11:49
(15)  ставили разные платформы 1С (8.3.14, 8.3.15, 8.3.16) и меняли sql с 2014 на 2017. Не помогает.
18 SSSSS_AAAAA
 
06.12.19
11:51
(17) Еще не пробовали разные драйверы доступа.
"Microsoft SQL Server Native Client 11.0: Недопустимый аргумент масштаба" ни о чем не говорит?
19 rema85
 
06.12.19
12:36
(18) нативный клиент поставился автоматом при установке новой версии sql. Отдельно не переустанавливали.
1С:Предприятие 8.3 (8.3.12.1924) - на этой платформе ошибки нет (последняя 12-я).
Еще один интересный факт. На 14-й платформе (где ошибка возникает). Был проведен эксперимент. Создана новая пустая база. Выполнен тот же эталонный запрос. ошибка не возникает. Как это вообще работает....
20 rema85
 
18.12.19
17:53
На той же 14-й платформе была создана новая БД. В нее загружен сильно порезанный dt-шник из рабочей базы. И о чудо! Ошибка не возникает. По всей видимости на sql есть некие таблички принадлежащие платформе. И когда делаем заливку sql бэкапа, то эти таблички тянутся с старой платформы, которые потом и приводят к ошибке на новой платформе. Заливка копии через dt по всей видимости эти таблички не тащит. Теперь только остался вопрос возможности выгрузки базы на 250гиг в dt...
21 hhhh
 
18.12.19
17:57
(20) ну может тии решит вопрос. реиндексация и реструктуризация
22 Cyberhawk
 
18.12.19
18:05
"была создана новая БД" // Может в смещении дат, указываемом при создании БД, дело?
23 rema85
 
18.12.19
18:23
(22) Нет. Смещение одинаковое. Найти бы ту подлую табличку... и подменить ее средствами sql.
24 peeton
 
20.01.20
15:04
данная ошибка была и на типовой конфе Бух после обновления, после танцев с бубном решено:
1 выгрузил в архив(средствами 1С)
2. Создал новую пустую базу на сервере
3. залил из архива.
Вывод: Проблема в кэше сервера 1С. (не буду описывать почему именно в нем, могут читать и дети, с учетом того, что до сдачи НДС остается кропаль времени, и именно там у меня не хотело работать - иначе как матом описать мои танцы с бубном не выйдет)