Имя: Пароль:
1C
1С v8
Ошибка SQL: Переполнение поля => Что это?
0 patapum
 
02.02.12
12:48
Подскажите, кто встречался с подобной ошибкой! Что она означает? База файловая... УТ 11.0.7.8, доработанная, движок 8.2.15.294.

{ОбщийМодуль.рамМодульСервер.Модуль(119)}: Ошибка при вызове метода контекста (Выполнить)
   Выборка = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
по причине:
Ошибка выполнения запроса
по причине:
Ошибка при выполнении операции над данными:
Ошибка SQL: Переполнение поля
по причине:
Ошибка SQL: Переполнение поля

   Запрос = Новый Запрос;
   Запрос.УстановитьПараметр("СписокЗаказов", СписокЗаказов);
   Запрос.Текст = "ВЫБРАТЬ
                  |    ЗаказКлиентаТовары.Ссылка КАК ЗаказКлиента,
                  |    ЗаказКлиентаТовары.Номенклатура,
                  |    ЗаказКлиентаТовары.Характеристика,
                  |    СУММА(ВЫБОР
                  |            КОГДА ЗаказКлиентаТовары.Количество = 0
                  |                ТОГДА 0
                  |            ИНАЧЕ (ЕСТЬNULL(СвободныеОстаткиОстатки.ВРезервеОстаток, 0) + ЕСТЬNULL(СвободныеОстаткиОстатки.рамКПоступлениюОстаток, 0)) * ЗаказКлиентаТовары.Сумма / ЗаказКлиентаТовары.Количество
                  |        КОНЕЦ) КАК ЗарезервированоСумма,
                  |    ЗаказКлиентаТовары.Количество,
                  |    ЗаказКлиентаТовары.Сумма,
                  |    ЕСТЬNULL(рамУтверждениеСтрокЗаказовСрезПоследних.СтатусУтверждения, ЗНАЧЕНИЕ(Перечисление.рамСтатусыУтверждения.УтверждениеОтменено)) КАК СтатусУтверждения,
                  |    СУММА(ВЫБОР
                  |            КОГДА ЗаказКлиентаТовары.Количество = 0
                  |                ТОГДА 0
                  |            ИНАЧЕ ЕСТЬNULL(СвободныеОстаткиОстатки.рамВЗаказеКлиентаОстаток, 0) * ЗаказКлиентаТовары.Сумма / ЗаказКлиентаТовары.Количество
                  |        КОНЕЦ) КАК ЗаказаноСумма,
                  |    ВЫБОР
                  |        КОГДА ЗаказКлиентаТовары.Количество = 0
                  |            ТОГДА 0
                  |        ИНАЧЕ СУММА(ВЫБОР
                  |                    КОГДА ЗаказКлиентаТовары.Склад = СвободныеОстаткиОстатки.Склад
                  |                        ТОГДА ЕСТЬNULL(СвободныеОстаткиОстатки.ВРезервеОстаток, 0)
                  |                    ИНАЧЕ 0
                  |                КОНЕЦ) * ЗаказКлиентаТовары.Сумма / ЗаказКлиентаТовары.Количество
                  |    КОНЕЦ КАК ГотовоСумма
                  |ИЗ
                  |    Документ.ЗаказКлиента.Товары КАК ЗаказКлиентаТовары
                  |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.рамУтверждениеСтрокЗаказов.СрезПоследних КАК рамУтверждениеСтрокЗаказовСрезПоследних
                  |        ПО ЗаказКлиентаТовары.Ссылка = рамУтверждениеСтрокЗаказовСрезПоследних.ЗаказКлиента
                  |            И ЗаказКлиентаТовары.Номенклатура = рамУтверждениеСтрокЗаказовСрезПоследних.Номенклатура
                  |            И ЗаказКлиентаТовары.Характеристика = рамУтверждениеСтрокЗаказовСрезПоследних.Характеристика
                  |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СвободныеОстатки.Остатки(, рамДокументРезерва В (&СписокЗаказов)) КАК СвободныеОстаткиОстатки
                  |        ПО (СвободныеОстаткиОстатки.рамДокументРезерва = ЗаказКлиентаТовары.Ссылка)
                  |            И (СвободныеОстаткиОстатки.Номенклатура = ЗаказКлиентаТовары.Номенклатура)
                  |            И (СвободныеОстаткиОстатки.Характеристика = ЗаказКлиентаТовары.Характеристика)
                  |
                  |СГРУППИРОВАТЬ ПО
                  |    ЗаказКлиентаТовары.Количество,
                  |    ЗаказКлиентаТовары.Сумма,
                  |    ЕСТЬNULL(рамУтверждениеСтрокЗаказовСрезПоследних.СтатусУтверждения, ЗНАЧЕНИЕ(Перечисление.рамСтатусыУтверждения.УтверждениеОтменено)),
                  |    ЗаказКлиентаТовары.Ссылка,
                  |    ЗаказКлиентаТовары.Номенклатура,
                  |    ЗаказКлиентаТовары.Характеристика
                  |ИТОГИ
                  |    СУММА(ЗарезервированоСумма),
                  |    СУММА(ЗаказаноСумма),
                  |    СУММА(ГотовоСумма)
                  |ПО
                  |    ЗаказКлиента";
   Выборка = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
1 patapum
 
02.02.12
13:01
ну может кто нить что нить предположит для поддержания дискуссии? )))
2 НЕА123
 
02.02.12
13:07
может, действительно переполнилось поле? бывает.
3 patapum
 
02.02.12
13:08
(2) а где то поле и чем отчерпывать идей нету?
4 Maxus43
 
02.02.12
13:09
числа итоговые большие получаются примерно?
5 Maxus43
 
02.02.12
13:11
юзай для всех числовых полей Выразить с четким указанием разрядености, да побольше. SQL в план запроса сам вставляет это, но разрядность выбирает сам исходя из своих соображений, возможно из-за этого
6 patapum
 
02.02.12
13:11
а кто ж его знает? запрос то не выполняется. ошибка начала вылетать после исправления соединения с таблицей свободных остатков с внутреннего на левое. до этого все в порядке было
7 patapum
 
02.02.12
13:12
(5) спасибо, сейчас попробую
8 shuhard
 
02.02.12
13:15
(7) попробуй
ибо зло от ЕстьNULL, лни разрядность рушат
http://www.google.ru/search?as_sitesearch=forum.mista.ru&q=%CE%F8%E8%E1%EA%E0+SQL%3A+%CF%E5%F0%E5%EF%EE%EB%ED%E5%ED%E8%E5+%EF%EE%EB%FF+
9 patapum
 
02.02.12
13:17
поставил ВЫРАЗИТЬ КАК Число(15,2), не помогло (((
там же в базе если все просуммировать, меньше получится!
10 Maxus43
 
02.02.12
13:18
(9) на все поля? покаж запрос
11 shuhard
 
02.02.12
13:18
(9) не там значит поставил
12 patapum
 
02.02.12
13:19
Запрос.Текст = "ВЫБРАТЬ
                  |    ЗаказКлиентаТовары.Ссылка КАК ЗаказКлиента,
                  |    ЗаказКлиентаТовары.Номенклатура,
                  |    ЗаказКлиентаТовары.Характеристика,
                  |    СУММА(ВЫРАЗИТЬ(ВЫБОР
                  |                КОГДА ЗаказКлиентаТовары.Количество = 0
                  |                    ТОГДА 0
                  |                ИНАЧЕ (ЕСТЬNULL(СвободныеОстаткиОстатки.ВРезервеОстаток, 0) + ЕСТЬNULL(СвободныеОстаткиОстатки.рамКПоступлениюОстаток, 0)) * ЗаказКлиентаТовары.Сумма / ЗаказКлиентаТовары.Количество
                  |            КОНЕЦ КАК ЧИСЛО(15, 2))) КАК ЗарезервированоСумма,
                  |    ЗаказКлиентаТовары.Количество,
                  |    ЗаказКлиентаТовары.Сумма,
                  |    ЕСТЬNULL(рамУтверждениеСтрокЗаказовСрезПоследних.СтатусУтверждения, ЗНАЧЕНИЕ(Перечисление.рамСтатусыУтверждения.УтверждениеОтменено)) КАК СтатусУтверждения,
                  |    СУММА(ВЫРАЗИТЬ(ВЫБОР
                  |                КОГДА ЗаказКлиентаТовары.Количество = 0
                  |                    ТОГДА 0
                  |                ИНАЧЕ ЕСТЬNULL(СвободныеОстаткиОстатки.рамВЗаказеКлиентаОстаток, 0) * ЗаказКлиентаТовары.Сумма / ЗаказКлиентаТовары.Количество
                  |            КОНЕЦ КАК ЧИСЛО(15, 2))) КАК ЗаказаноСумма,
                  |    ВЫРАЗИТЬ(ВЫБОР
                  |            КОГДА ЗаказКлиентаТовары.Количество = 0
                  |                ТОГДА 0
                  |            ИНАЧЕ СУММА(ВЫБОР
                  |                        КОГДА ЗаказКлиентаТовары.Склад = СвободныеОстаткиОстатки.Склад
                  |                            ТОГДА ЕСТЬNULL(СвободныеОстаткиОстатки.ВРезервеОстаток, 0)
                  |                        ИНАЧЕ 0
                  |                    КОНЕЦ) * ЗаказКлиентаТовары.Сумма / ЗаказКлиентаТовары.Количество
                  |        КОНЕЦ КАК ЧИСЛО(15, 2)) КАК ГотовоСумма
                  |ИЗ
                  |    Документ.ЗаказКлиента.Товары КАК ЗаказКлиентаТовары
                  |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.рамУтверждениеСтрокЗаказов.СрезПоследних КАК рамУтверждениеСтрокЗаказовСрезПоследних
                  |        ПО ЗаказКлиентаТовары.Ссылка = рамУтверждениеСтрокЗаказовСрезПоследних.ЗаказКлиента
                  |            И ЗаказКлиентаТовары.Номенклатура = рамУтверждениеСтрокЗаказовСрезПоследних.Номенклатура
                  |            И ЗаказКлиентаТовары.Характеристика = рамУтверждениеСтрокЗаказовСрезПоследних.Характеристика
                  |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СвободныеОстатки.Остатки(, рамДокументРезерва В (&СписокЗаказов)) КАК СвободныеОстаткиОстатки
                  |        ПО (СвободныеОстаткиОстатки.рамДокументРезерва = ЗаказКлиентаТовары.Ссылка)
                  |            И (СвободныеОстаткиОстатки.Номенклатура = ЗаказКлиентаТовары.Номенклатура)
                  |            И (СвободныеОстаткиОстатки.Характеристика = ЗаказКлиентаТовары.Характеристика)
                  |
                  |СГРУППИРОВАТЬ ПО
                  |    ЗаказКлиентаТовары.Количество,
                  |    ЗаказКлиентаТовары.Сумма,
                  |    ЕСТЬNULL(рамУтверждениеСтрокЗаказовСрезПоследних.СтатусУтверждения, ЗНАЧЕНИЕ(Перечисление.рамСтатусыУтверждения.УтверждениеОтменено)),
                  |    ЗаказКлиентаТовары.Ссылка,
                  |    ЗаказКлиентаТовары.Номенклатура,
                  |    ЗаказКлиентаТовары.Характеристика
                  |ИТОГИ
                  |    СУММА(ЗарезервированоСумма),
                  |    СУММА(ЗаказаноСумма),
                  |    СУММА(ГотовоСумма)
                  |ПО
                  |    ЗаказКлиента";
   Выборка = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
13 shuhard
 
02.02.12
13:20
(0) ты совесть то имей
ЕСТЬNULL(СвободныеОстаткиОстатки.рамКПоступлениюОстаток, 0)*
где ты приведение сделал ?
14 Maxus43
 
02.02.12
13:21
|    ВЫРАЗИТЬ(ВЫБОР
                  |            КОГДА ЗаказКлиентаТовары.Количество = 0
                  |                ТОГДА 0
                  |            ИНАЧЕ СУММА(ВЫБОР
                  |                        КОГДА ЗаказКлиентаТовары.Склад = СвободныеОстаткиОстатки.Склад
                  |                            ТОГДА ЕСТЬNULL(СвободныеОстаткиОстатки.ВРезервеОстаток, 0)
                  |                        ИНАЧЕ 0
                  |                    КОНЕЦ) * ЗаказКлиентаТовары.Сумма / ЗаказКлиентаТовары.Количество
                  |        КОНЕЦ КАК ЧИСЛО(15, 2)) КАК ГотовоСумма

а тут СУММА(.....всё это дело) и выразить на всю её?
15 patapum
 
02.02.12
13:21
(13) ёпрст!
туплю, бывает. щазззз...
16 patapum
 
02.02.12
13:51
спасибо, помогло! плюс еще ошибка была, когда было внутреннее соединение, отбор на таблицу остатков работал и на документы. а сделал левое соединение, и поехали всю базу лопатить...