|
НАЧАЛОПЕРИОДА() возвращает ошибку СУБД | ☑ | ||
---|---|---|---|---|
0
Zak91
14.11.19
✎
11:44
|
Добрый день. После перехода на платформу 8.3.15.1489 в консоли выполняю простой запрос
ВЫБРАТЬ ЗарплатаКВыплатеОрганизаций.Ссылка, ЗарплатаКВыплате.Ссылка КАК Ссылка1 ИЗ Документ.ЗарплатаКВыплатеОрганизаций КАК ЗарплатаКВыплатеОрганизаций ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗарплатаКВыплате КАК ЗарплатаКВыплате ПО (НАЧАЛОПЕРИОДА(ЗарплатаКВыплатеОрганизаций.Дата, месяц) = НАЧАЛОПЕРИОДА(ЗарплатаКВыплате.Дата, месяц)) выдает ошибку СУБД Scale argument is not valid. Valid expression for data type datetime2 scale argument are integer constants and integer constant expressions. HRESULT=80040E14, SQLSrvr: SQLSTATE=42000, state=1, Severity=10, native=10760, line=1 На старой платформе 8.3.8.2322 данной ошибки не возникает. Может кто сталкивался? |
|||
1
Zak91
14.11.19
✎
11:45
|
Причем если вместо НАЧАЛОПЕРИОДА(, месяц)) использовать НАЧАЛОПЕРИОДА(, минута)) - то ошибки нету
|
|||
2
palsergeich
14.11.19
✎
11:50
|
(0) с датой все хорошо?
Имхо если на старой платформе работает, а на новой нет и в пресс релизе нововведения по этой функции нет - то тебе на партнёрку и на багтрекер. |
|||
3
SSSSS_AAAAA
14.11.19
✎
11:51
|
(1) Попробуй вместо месяц написать month
|
|||
4
Zak91
14.11.19
✎
12:16
|
изменение на month не помогло
|
|||
5
pasha_d
14.11.19
✎
12:20
|
Сделай 2 запроса отдельно - к ЗарплатаКВыплатеОрганизаций и ЗарплатаКВыплате и добавь соответсвующие поля без соединений:
НАЧАЛОПЕРИОДА(ЗарплатаКВыплатеОрганизаций.Дата, месяц) НАЧАЛОПЕРИОДА(ЗарплатаКВыплате.Дата, месяц) |
|||
6
pasha_d
14.11.19
✎
12:21
|
посмотри на чем будет валится запрос (если вообще будет валиться)
|
|||
7
Ненавижу 1С
гуру
14.11.19
✎
12:21
|
сервер SQL меняли?
|
|||
8
Ненавижу 1С
гуру
14.11.19
✎
12:22
|
смещение дат меняли?
|
|||
9
Zak91
14.11.19
✎
12:51
|
(5) Два отдельных запроса без соединений с использованием НАЧАЛОПЕРИОДА(*.Дата, месяц) выполняются без ошибки
валится только когда любые соединения используются |
|||
10
Zak91
14.11.19
✎
12:55
|
Смещение дат ставили -2000 когда в кластере создавали
|
|||
11
Zak91
14.11.19
✎
22:22
|
пока вышли из ситуации с помощью конструкции ДобавитьКДате
ДОБАВИТЬКДАТЕ(вт1.ПериодРегистрации, день, 0) (НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(вт1.ПериодРегистрации, день, 0), МЕСЯЦ) |
|||
12
Zak91
14.11.19
✎
22:22
|
ошибка ушла
|
|||
13
palsergeich
14.11.19
✎
22:35
|
(11) О как, спасибо
|
|||
14
breezee
15.11.19
✎
05:13
|
(0) ПО (НАЧАЛОПЕРИОДА(ЗарплатаКВыплатеОрганизаций.Дата, месяц) = НАЧАЛОПЕРИОДА(ЗарплатаКВыплате.Дата, месяц))
Нельзя так писать, выберите данные на начало месяца во временных таблицах, потом заджойнитесь по ним. У вас оптимизатор навряд ли нормально запрос построит на скуле по такому сложному условию |
|||
15
assasu
15.11.19
✎
07:13
|
(0)"ПО (НАЧАЛОПЕРИОДА(ЗарплатаКВыплатеОрганизаций.Дата, месяц) = НАЧАЛОПЕРИОДА(ЗарплатаКВыплате.Дата, месяц))" - эта конструкция под запретом. Нельзя так. Даты надо выбрать отдельно что бы не ломать голову оптимизатору
|
|||
16
craxx
15.11.19
✎
07:36
|
(0) Джойнить так нельзя. потому что при левом соединении справа может быть null, тогда все рушится.
|
|||
17
mzelensky
15.11.19
✎
08:23
|
(0) Еще как вариант - прогони ЧекДБ на скуле.
Что-то похожее мне попадалось, но давно. |
|||
18
Zak91
15.11.19
✎
10:35
|
(16) Дело в том, что такие конструкции используются в стандартном механизме при расчете ЗП :), а это просто как пример
|
|||
19
Zak91
15.11.19
✎
10:38
|
|ЛЕВОЕ СОЕДИНЕНИЕ ВТНеоплаченныеБольничные КАК НеоплаченныеБольничные
|ПО Основной.Сотрудник = НеоплаченныеБольничные.Сотрудник | И НАЧАЛОПЕРИОДА(Основной.БазовыйПериодНачало, МЕСЯЦ) = НеоплаченныеБольничные.ПериодРегистрации |
|||
20
Zak91
15.11.19
✎
10:38
|
рушилось на строке стандартного механизма ниже
НАЧАЛОПЕРИОДА(Основной.БазовыйПериодНачало, МЕСЯЦ) |
|||
21
rema85
06.12.19
✎
10:41
|
У меня та же проблема.
Как решили проблему? |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |