Имя: Пароль:
1C
1С v8
НАЧАЛОПЕРИОДА() возвращает ошибку СУБД
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
У меня та же проблема.
Как решили проблему?