powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / [игнор отключен] [закрыт для гостей] / RLS и ошибка: Arithmetic overflow error converting expression to data type int.
5 сообщений из 5, страница 1 из 1
RLS и ошибка: Arithmetic overflow error converting expression to data type int.
    #36923252
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ситуация такая:
Есть 1С 8.1.15.14, SQL 2005 SP3 и нетиповой журнал документов в 1С УПП, на который накладывается такой RLS запрос:

Код: plaintext
#Если &ИспользоватьОграничениеПоКонтрагенты ИЛИ &ИспользоватьОграничениеПоОрганизации \n\t\tИЛИ &ИспользоватьОграничениеПоПодразделения\n\t\tИЛИ &ИспользоватьОграничениеПоСклады #Тогда\n\tТекущаяТаблица\nИЗ\n\t#ТекущаяТаблица КАК ТекущаяТаблица\n\t\tЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ РАЗЛИЧНЫЕ\n\t\t\tСоставГруппы.Ссылка КАК ГруппаПользователей\n\t\tИЗ\n\t\t\tСправочник.ГруппыПользователей.ПользователиГруппы КАК СоставГруппы\n\t\tГДЕ\n\t\t\tСоставГруппы.Пользователь = &ТекущийПользователь) КАК ГруппыПользователей\n\t\tПО (ИСТИНА)\nГДЕ\n\t(НЕ ГруппыПользователей.ГруппаПользователей ЕСТЬ NULL )\n\t\n\tИ (НЕ  1  В\n\t\t\t\t(ВЫБРАТЬ ПЕРВЫЕ  1 \n\t\t\t\t\t 1 \n\t\t\t\tИЗ\n\t\t\t\t\tРегистрСведений.НазначениеВидовОбъектовДоступа КАК НазначениеВидовОбъектовДоступа \n\t\t\t\t\tЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ОбъектыДоступаДокументов КАК ОбъектыДоступаДокументов\n\t\t\t\t\t\tПО ОбъектыДоступаДокументов.ДокументСсылка = ТекущаяТаблица.Ссылка\n\t\t\t\t\t\t\tИ ОбъектыДоступаДокументов.ВидОбъектаДоступа = НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t#Если &ИспользоватьОграничениеПоКонтрагенты #Тогда\n\t\t\t\t\t\tЛЕВОЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК Контрагенты\n\t\t\t\t\t\tПО Контрагенты.Ссылка  = ОбъектыДоступаДокументов.ОбъектДоступа\n\t\t\t\t\t\t\tИ НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Контрагенты) \n\t\t\t\t\t\t#КонецЕсли\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\tЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НастройкиПравДоступаПользователей КАК НастройкиПравДоступаПользователей\n\t\t\t\t\t\tПО НастройкиПравДоступаПользователей.ОбъектДоступа = ВЫБОР\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t#Если &ИспользоватьОграничениеПоКонтрагенты #Тогда\n\t\t\t\t\t\t\t\t\tКОГДА НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Контрагенты)\n\t\t\t\t\t\t\t\t\t\tТОГДА ЕСТЬNULL(Контрагенты.ГруппаДоступаКонтрагента, ЗНАЧЕНИЕ(Справочник.ГруппыДоступаКонтрагентов.ПустаяСсылка))\n\t\t\t\t\t\t\t\t\t#КонецЕсли\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t#Если &ИспользоватьОграничениеПоОрганизации #Тогда\n\t\t\t\t\t\t\t\t\tКОГДА НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Организации)\n\t\t\t\t\t\t\t\t\t\tТОГДА ТекущаяТаблица.Организация\n\t\t\t\t\t\t\t\t\t#КонецЕсли\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t#Если &ИспользоватьОграничениеПоПодразделения #Тогда\n\t\t\t\t\t\t\t\t\tКОГДА НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Подразделения)\n\t\t\t\t\t\t\t\t\t\tТОГДА ТекущаяТаблица.Подразделение\n\t\t\t\t\t\t\t\t\t#КонецЕсли\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tКОГДА ЛОЖЬ\n\t\t\t\t\t\t\t\t\t\tТОГДА NULL\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tИНАЧЕ ОбъектыДоступаДокументов.ОбъектДоступа\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tКОНЕЦ\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tИ НастройкиПравДоступаПользователей.ВидОбъектаДоступа = НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа\n\t\t\t\t\t\t\t\tИ\n\t\t\t\t\t\t\t\tНастройкиПравДоступаПользователей.ОбластьДанных =\n\t\t\t\t\t\t\t\t#Если &ИспользоватьОграничениеПоКонтрагенты #Тогда\n\t\t\t\t\t\t\t\t\tВЫБОР КОГДА НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Контрагенты)\n\t\t\t\t\t\t\t\t\t\tТОГДА ЗНАЧЕНИЕ(Перечисление.ОбластиДанныхОбъектовДоступа.КонтрагентыДанные)\n\t\t\t\t\t\t\t\t\tИНАЧЕ\n\t\t\t\t\t\t\t\t\t\tЗНАЧЕНИЕ(Перечисление.ОбластиДанныхОбъектовДоступа.ПустаяСсылка)\n\t\t\t\t\t\t\t\t\tКОНЕЦ\n\t\t\t\t\t\t\t\t#Иначе\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tЗНАЧЕНИЕ(Перечисление.ОбластиДанныхОбъектовДоступа.ПустаяСсылка)\n\t\t\t\t\t\t\t\t#КонецЕсли\n\t\t\t\t\t\t\t\tИ НастройкиПравДоступаПользователей.Пользователь = ГруппыПользователей.ГруппаПользователей\n\t\t\t\tГДЕ\n\t\t\t\t\tНазначениеВидовОбъектовДоступа.ГруппаПользователей = ГруппыПользователей.ГруппаПользователей\n\t\t\t\t\tИ (НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа В (\n\t\t\t\t\t\t\t\t\t\t\t\tЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.ПустаяСсылка)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t#Если &ИспользоватьОграничениеПоОрганизации  #Тогда\n\t\t\t\t\t\t\t\t\t\t\t\t, ВЫБОР\n\t\t\t\t\t\t\t\t\t\t\t\tКОГДА (НЕ ТекущаяТаблица.Организация ЕСТЬ NULL )\n\t\t\t\t\t\t\t\t\t\t\t\tТОГДА ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Организации)\n\t\t\t\t\t\t\t\t\t\t\t\tКОНЕЦ\n\t\t\t\t\t\t\t\t\t\t\t\t#КонецЕсли\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t#Если &ИспользоватьОграничениеПоПодразделения #Тогда\n\t\t\t\t\t\t\t\t\t\t\t\t, ВЫБОР\n\t\t\t\t\t\t\t\t\t\t\t\tКОГДА (НЕ ТекущаяТаблица.Подразделение ЕСТЬ NULL )\n\t\t\t\t\t\t\t\t\t\t\t\tТОГДА ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Подразделения)\n\t\t\t\t\t\t\t\t\t\t\t\tКОНЕЦ\n\t\t\t\t\t\t\t\t\t\t\t\t#КонецЕсли\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\tИЛИ НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа В\n\t\t\t\t\t\t\t(ВЫБРАТЬ\n\t\t\t\t\t\t\t\tРегистрСведений.ОбъектыДоступаДокументов.ВидОбъектаДоступа\n\t\t\t\t\t\t\tИЗ\n\t\t\t\t\t\t\t\tРегистрСведений.ОбъектыДоступаДокументов\n\t\t\t\t\t\t\tГДЕ\n\t\t\t\t\t\t\t\tРегистрСведений.ОбъектыДоступаДокументов.ДокументСсылка = ТекущаяТаблица.Ссылка))\n\t\t\t\t\tИ НастройкиПравДоступаПользователей.ОбъектДоступа ЕСТЬ NULL ))\n#КонецЕсли\n

При попытке записи любого вида документа из входящих в этот журнал видов, с датой отличной от сегодняшней (задним числом), возникает ошибка "У пользователя недостаточно прав на исполнение операций над базой данных", при записи текущим числом все записывается нормально при этом в некоторых (не во всех) задних числах запись происходит то же нормально.
Стал смотреть трассу запроса:
Код: plaintext
DECLARE @P1 varbinary( 16 )\nDECLARE @P2 numeric( 1 , 0 )\nDECLARE @P3 varbinary( 16 )\nDECLARE @P4 varbinary( 1 )\nDECLARE @P5 datetime\nDECLARE @P6 varbinary( 4 )\nDECLARE @P7 datetime\nSET @P1 = 0x91830017A40E2E7811DF010318D673B1\nSET @P2 =  1  \nSET @P3 = 0x00000000000000000000000000000000\nSET @P4 = 0x08\nSET @P5 = {ts \'2010-10-15 00:00:00\'}\nSET @P6 = 0x0000626F\nSET @P7 = {ts \'2010-10-15 23:59:59\'}\n\n\n\n\n\nSELECT TOP  100 \n_DocumentJournal25510._Date_Time AS f_6,\n_DocumentJournal25510._DocumentTRef AS f_7,\n_DocumentJournal25510._DocumentRRef AS f_8,\nCASE\n   WHEN _DocumentJournal25510._Date_Time = _DocumentJournal25510._Date_Time OR\n   _DocumentJournal25510._Date_Time IS NULL\n   THEN CASE\n        WHEN EXISTS(\n        SELECT\n        CAST( 0 . AS NUMERIC( 1 , 0 )) AS f_4\n        FROM\n        (\n        SELECT\n        0x01 AS _f_1\n        ) #V8TblAli1\n        LEFT OUTER JOIN (\n        SELECT DISTINCT\n        _Reference40_VT1046_Q_001_T_001._Reference40_IDRRef AS _Q_001_F_000RRef\n        FROM\n        _Reference40_VT1046 _Reference40_VT1046_Q_001_T_001 WITH(NOLOCK)\n        WHERE\n        _Reference40_VT1046_Q_001_T_001._Fld1048RRef = @P1 \n        ) #V8TblAli1_Q_000_T_002\n        ON 0x01 = 0x01\n        WHERE NOT #V8TblAli1_Q_000_T_002._Q_001_F_000RRef IS NULL AND NOT CAST(@P2 AS NUMERIC( 1 , 0 )) \n        IN (SELECT TOP  1 \n            CAST( 1  AS NUMERIC( 1 , 0 )) AS _Q_002_F_000\n            FROM\n            _InfoReg22259 _InfoReg22259_Q_002_T_001 WITH(NOLOCK)\n            LEFT OUTER JOIN _InfoReg14099 _InfoReg14099_Q_002_T_002 WITH(NOLOCK)\n            ON _InfoReg14099_Q_002_T_002._Fld14100_TYPE = 0x08 AND _InfoReg14099_Q_002_T_002._Fld14100_RTRef = _DocumentJournal25510._DocumentTRef AND _InfoReg14099_Q_002_T_002._Fld14100_RRRef = _DocumentJournal25510._DocumentRRef AND \n            _InfoReg14099_Q_002_T_002._Fld24029RRef = _InfoReg22259_Q_002_T_001._Fld22261RRef\n            LEFT OUTER JOIN _InfoReg22246 _InfoReg22246_Q_002_T_003 WITH(NOLOCK)\n            ON _InfoReg22246_Q_002_T_003._Fld22247_TYPE = \n              CASE\n              WHEN _InfoReg22259_Q_002_T_001._Fld22261RRef = 0x909d005e4caf2e8d472c07d30d9d40af\n              THEN CASE\n                   WHEN _DocumentJournal25510._Fld25515RRef IS NOT NULL\n                   THEN 0x08\n                   ELSE NULL\n                   END\n              WHEN _InfoReg22259_Q_002_T_001._Fld22261RRef = 0x9e80a570b3b742fb44770fc3b9c6accd\n              THEN CASE\n                   WHEN _DocumentJournal25510._Fld25516RRef IS NOT NULL\n                   THEN 0x08\n                   ELSE NULL\n                   END\n              ELSE CASE\n                   WHEN _InfoReg14099_Q_002_T_002._Fld14101_TYPE = 0x01 OR\n                        _InfoReg14099_Q_002_T_002._Fld14101_TYPE = 0x08 AND _InfoReg14099_Q_002_T_002._Fld14101_RTRef IS NOT NULL AND _InfoReg14099_Q_002_T_002._Fld14101_RRRef IS NOT NULL\n                   THEN _InfoReg14099_Q_002_T_002._Fld14101_TYPE\n                   ELSE NULL\n                   END\n              END \n              AND _InfoReg22246_Q_002_T_003._Fld22247_RTRef = \n              CASE\n                 WHEN _InfoReg22259_Q_002_T_001._Fld22261RRef = 0x909d005e4caf2e8d472c07d30d9d40af\n                 THEN CASE\n                      WHEN _DocumentJournal25510._Fld25515RRef IS NOT NULL\n                      THEN 0x00000069\n                      ELSE NULL\n                      END\n               WHEN _InfoReg22259_Q_002_T_001._Fld22261RRef = 0x9e80a570b3b742fb44770fc3b9c6accd\n               THEN CASE\n                      WHEN _DocumentJournal25510._Fld25516RRef IS NOT NULL\n                      THEN 0x00000076\n                      ELSE NULL\n                      END\n               ELSE CASE\n                      WHEN _InfoReg14099_Q_002_T_002._Fld14101_TYPE = 0x08\n                      THEN _InfoReg14099_Q_002_T_002._Fld14101_RTRef\n                      WHEN _InfoReg14099_Q_002_T_002._Fld14101_TYPE IS NULL OR\n                           _InfoReg14099_Q_002_T_002._Fld14101_TYPE NOT IN (0x01,0x08)\n                      THEN NULL\n                      ELSE 0x00000000\n                      END\n               END \n               AND _InfoReg22246_Q_002_T_003._Fld22247_RRRef = \n               CASE\n               WHEN _InfoReg22259_Q_002_T_001._Fld22261RRef = 0x909d005e4caf2e8d472c07d30d9d40af\n               THEN _DocumentJournal25510._Fld25515RRef\n               WHEN _InfoReg22259_Q_002_T_001._Fld22261RRef = 0x9e80a570b3b742fb44770fc3b9c6accd\n               THEN _DocumentJournal25510._Fld25516RRef\n               ELSE CASE\n                    WHEN _InfoReg14099_Q_002_T_002._Fld14101_TYPE = 0x08\n                    THEN _InfoReg14099_Q_002_T_002._Fld14101_RRRef\n                    WHEN _InfoReg14099_Q_002_T_002._Fld14101_TYPE IS NULL OR\n                    _InfoReg14099_Q_002_T_002._Fld14101_TYPE NOT IN (0x01,0x08)\n                    THEN NULL\n                    ELSE 0x00000000000000000000000000000000\n                    END\n               END \n               AND _InfoReg22246_Q_002_T_003._Fld22248RRef = _InfoReg22259_Q_002_T_001._Fld22261RRef \n               AND _InfoReg22246_Q_002_T_003._Fld22249RRef = 0x00000000000000000000000000000000 \n               AND _InfoReg22246_Q_002_T_003._Fld22250RRef = #V8TblAli1_Q_000_T_002._Q_001_F_000RRef\n            WHERE _InfoReg22259_Q_002_T_001._Fld22260RRef = #V8TblAli1_Q_000_T_002._Q_001_F_000RRef \n             AND (_InfoReg22259_Q_002_T_001._Fld22261RRef = \n               CASE\n               WHEN NOT _DocumentJournal25510._Fld25515RRef IS NULL\n               THEN 0x909d005e4caf2e8d472c07d30d9d40af\n               END \n               OR\n               _InfoReg22259_Q_002_T_001._Fld22261RRef = \n               CASE\n               WHEN NOT _DocumentJournal25510._Fld25516RRef IS NULL\n               THEN 0x9e80a570b3b742fb44770fc3b9c6accd\n               END \n               OR\n               _InfoReg22259_Q_002_T_001._Fld22261RRef IN (@P3) OR\n               _InfoReg22259_Q_002_T_001._Fld22261RRef IN (SELECT\n                                                           _InfoReg14099_Q_003_T_001._Fld24029RRef AS _Q_003_F_000RRef\n                                                           FROM\n                                                           _InfoReg14099 _InfoReg14099_Q_003_T_001 WITH(NOLOCK)\n                                                           WHERE\n                                                           _InfoReg14099_Q_003_T_001._Fld14100_TYPE = @P4 AND _InfoReg14099_Q_003_T_001._Fld14100_RTRef = _DocumentJournal25510._DocumentTRef AND _InfoReg14099_Q_003_T_001._Fld14100_RRRef = _DocumentJournal25510._DocumentRRef)) AND \n                                                           _InfoReg22246_Q_002_T_003._Fld22247_RRRef IS NULL AND _InfoReg22246_Q_002_T_003._Fld22247_RTRef IS NULL AND _InfoReg22246_Q_002_T_003._Fld22247_TYPE IS NULL))\n        THEN  0 \n        ELSE  2000000000 \n        END +  2000000000 \n   END AS _f_3\nFROM\n_DocumentJournal25510 WITH(NOLOCK)\nWHERE\n(_DocumentJournal25510._Date_Time > @P5 OR\n_DocumentJournal25510._Date_Time = @P5 AND (_DocumentJournal25510._DocumentTRef > @P6 OR\n_DocumentJournal25510._DocumentTRef = @P6 AND _DocumentJournal25510._DocumentRRef > @P3)) AND _DocumentJournal25510._Date_Time <= @P7 AND (_DocumentJournal25510._DocumentTRef <> @P6 OR\n_DocumentJournal25510._DocumentRRef <> @P3)\nORDER BY\n_DocumentJournal25510._Date_Time DESC,\n_DocumentJournal25510._DocumentTRef DESC,\n_DocumentJournal25510._DocumentRRef DESC

Ошибка происходит в этом месте :
Код: plaintext
THEN  0 \n        ELSE  2000000000 \n        END +  2000000000 \n
т.е. если EXISTS истина, тогда будет 0+2000000000 и ошибки не возникает, иначе будет 2000000000+2000000000 и возникает ошибка :
Msg 8115, Level 16, State 2, Line 24
Arithmetic overflow error converting expression to data type int.

Как я понял, суть запроса определить время последнего документа в журнале.
Если запись ведеться текущим числом, такой запрос не выполняется.

При этом при обычных запросах и открытии журнала ошибки не возникает, и запрос отрабатывает правильно.

Так же данный точно такой же запрос используются в стандартном журнале из которого в последствии был сделан свой журнал. В стандартном журнале ошибки не возникает.

Нарыл в инете топики с обсуждением такой проблемы здесь и здесь но в них решения проблемы не описанно, а сам уже себе всю голову сломал не могу понять как обойти проблему.

Если кто либо сталкивался или\\и решал данную проблему буду очень признателен за помощь, так же буду признателен сообществу за ваши мысли по возможным путям решения данной проблемы.
...
Рейтинг: 0 / 0
RLS и ошибка: Arithmetic overflow error converting expression to data type int.
    #36923835
Паля
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vitkhv,
вот тут похожее чот было
http://www.sql.ru/forum/actualthread.aspx?tid=771549

Как я понял, суть запроса определить время последнего документа в журнале.

Если такой запрос(на проверку времени последнего документа) выполняется где-то в коде то у него не прописано слово РАЗРЕШЕННЫЕ из-за чего и возникает ошибка когда в отбор попадают недоступные документы.

Если в коде такого нет и это какой-то автоматический системный запрос 1с (не понимаю для чего) - тогда хз как исправлять!
...
Рейтинг: 0 / 0
RLS и ошибка: Arithmetic overflow error converting expression to data type int.
    #36923848
Паля
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А. вспомнил ещё по тому топику. системные поля дата и ссылка должны быть доступны, а RLS накладываются на остальные поля. (Посмотрите на типовые RLS - так ли это)
Запрос вылетает потому что требует доступ к дате и ссылке всех документов (т.е. либо менять запрос и писать слово РАЗРЕШЕННЫЕ либо давать доступ к системным полям без ограничений).
...
Рейтинг: 0 / 0
RLS и ошибка: Arithmetic overflow error converting expression to data type int.
    #36924866
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Паля

Если такой запрос(на проверку времени последнего документа) выполняется где-то в коде то у него не прописано слово РАЗРЕШЕННЫЕ из-за чего и возникает ошибка когда в отбор попадают недоступные документы.

Если в коде такого нет и это какой-то автоматический системный запрос 1с (не понимаю для чего) - тогда хз как исправлять!

Так в том то и дело, что до исполнения кода который я мог бы контролировать дело не доходит, т.е. данный запрос выполняется еще до ПередЗаписью().

Единственный способ как я могу повлиять на этот запрос генерируемый 1С к SQL серверу, это каким то образом переписать RLS запрос, он как раз и находиться внутри EXSIST этого злополучного SQL запроса:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
CASE
        WHEN EXISTS(
        SELECT
        CAST( 0 . AS NUMERIC( 1 , 0 )) AS f_4
        FROM
        (
        SELECT
        0x01 AS _f_1
        ) #V8TblAli1
        LEFT OUTER JOIN (
        SELECT DISTINCT
        _Reference40_VT1046_Q_001_T_001._Reference40_IDRRef AS _Q_001_F_000RRef
        FROM
        _Reference40_VT1046 _Reference40_VT1046_Q_001_T_001 WITH(NOLOCK)................
       
        ...................................................................
        ...................................................................
        ...................................................................
        ...................................................................
                                            ..............WHERE
                                                           _InfoReg14099_Q_003_T_001._Fld14100_TYPE = @P4 AND _InfoReg14099_Q_003_T_001._Fld14100_RTRef = _DocumentJournal25510._DocumentTRef AND _InfoReg14099_Q_003_T_001._Fld14100_RRRef = _DocumentJournal25510._DocumentRRef)) AND 
                                                           _InfoReg22246_Q_002_T_003._Fld22247_RRRef IS NULL AND _InfoReg22246_Q_002_T_003._Fld22247_RTRef IS NULL AND _InfoReg22246_Q_002_T_003._Fld22247_TYPE IS NULL))
THEN  0 
ELSE  2000000000 
END +  2000000000 
но сам по себе RLS запрос является правильным так как при открытии формы самого журнала и в 1С запросах в которых используется контструкция ВЫБРАТЬ РАЗРЕШЕННЫЕ все проходит на ура и не вызывает никаких ошибок.

Вообще суть SQL запроса генерируемого 1С - получить время последнего документа внутри дня , т.е 1С определяет время самого последнего документа относящегося к журналу видмо, что бы проставлить автоматом время в документе.
Так вот если это последний по времени (внутри дня) документ недоступен по RLS для пользователя, тогда происходит эта ошибка, если же последний документ доступен, тогда ошибки не возникает!

Зачем она в определении времени последнего документа журнала лепит RLS запрос не понятно, ведь это полный бред, "браво" писателям платформы 1С!
...
Рейтинг: 0 / 0
RLS и ошибка: Arithmetic overflow error converting expression to data type int.
    #36925145
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПаляА. вспомнил ещё по тому топику. системные поля дата и ссылка должны быть доступны, а RLS накладываются на остальные поля.

А вот это действительно решает проблему, поэтому видимо всегда надо давать доступ роли "Пользователь" (Чтобы остальным ролям на них права не раздавать) на системные поля Ссылка, Номер, Дата с запретом на прочие поля.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / [игнор отключен] [закрыт для гостей] / RLS и ошибка: Arithmetic overflow error converting expression to data type int.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]