- Главная
- /
- Статьи
- /
- Программирование на 1С:Предприятие
- /
- Ошибка SQL: переполнение поля
Переполнение поля — это превышение размерности типа в SQL.
Пример причины такой ошибки может быть следующим:
Функция ВЫРАЗИТЬ ххх КАК ЧИСЛО(5, 2) может вызывать такую ошибку, если ххх будет больше 5 разрядов то выводится данная ошибка, нельзя же 100 000 выразить как 99 999. А вот с числами после запятой все просто — они просто округляются сколько бы их там не было.
Возврат к списку
|
|||
| Santa4527
26.11.13 — 15:33 |
В Функция РешитьСЛУ() модуле объекта документа Закрытие Месяца выдает ошибку при «РасчетФактическойСебестоимости» Выдает ошибку {Обработка.ЗакрытиеМесяца.Форма.Форма.Форма(228)}: Ошибка при вызове метода контекста (Записать) ДокОбъект.Записать(РежимЗаписиДокумента.Проведение); по причине: Ошибка при выполнении обработчика — ‘ОбработкаПроведения’ по причине: {Документ.ЗакрытиеМесяца.МодульОбъекта(859)}: Ошибка при вызове метода контекста (ВыполнитьПакет) МассивРезультатов = Запрос.ВыполнитьПакет(); по причине: Ошибка выполнения запроса по причине: Ошибка при выполнении операции над данными: Ошибка SQL: Переполнение поля по причине: Ошибка SQL: Переполнение поля В чем может быть проблема? Решение наверняка СЛУ наверняка принимает очень очень большое значение. В чем такое может быть? И куда смотреть? |
||
| shuhard
1 — 26.11.13 — 15:35 |
(0) смотри в отрицательные остатки РАУЗ на них может упасть |
||
| Santa4527
2 — 26.11.13 — 15:48 |
(1)Там в результате запроса получается СуммаКвадратовОтклонений и эта переменная принимает не реальное значение. Больше 31 432 695 382 183 526 177 893 294,037480856. Это может быть из за отрицательный остатков в РегистрНакопления.Запасы |
||
| х86
3 — 26.11.13 — 15:50 |
(2)косяки в настройках |
||
| Santa4527
4 — 26.11.13 — 15:54 |
(3) а что за косяк? |
||
| х86
5 — 26.11.13 — 15:57 |
(4)предположу что ключи не правильно настроены, а так смотреть надо |
||
| Maxus43
6 — 26.11.13 — 15:59 |
у нас такое было из-за ошибок округления, на старой конфе УПП 1.2, в 1.3 это починили, а потом вобще переписали алгоритмы |
||
| Santa4527
7 — 26.11.13 — 16:09 |
Короче жесть. |
||
| Maxus43
8 — 26.11.13 — 16:17 |
(7) можно конечно найти, но надо ковырять глубоко. Например для начала узнать номер итерации, в которой гаснет, туда воткнуть запрос для разузловки, чтоб выйти на кокнретную номенклатуру и т.д. Это после всяких плясок с отчетами, если уж совсем никак |
||
| х86
9 — 26.11.13 — 16:23 |
(7)посмотри суммы по остаткам |
||
| Santa4527
10 — 26.11.13 — 16:27 |
(8) Номер итерации 47 |
||
| Maxus43
11 — 26.11.13 — 16:32 |
(10) если там точку останова поставить — можно из временных таблиц вытащить данные. Сначала проверь простые пути, отчеты, анализ данных |
||
| Santa4527
12 — 26.11.13 — 18:20 |
Запрос.Текст = «ВЫБРАТЬ | «»РешитьСЛУ»» КАК Поле1, | УзлыКорректировкиСтоимостиСписания.НомерУзла КАК НомерУзла, | СУММА(ВЫРАЗИТЬ(ВЫБОР | КОГДА УзлыКорректировкиСтоимостиСписания.Количество <> 0 | ТОГДА ТаблицаРешений.Сумма * ВЫБОР | КОГДА ВложенныйЗапрос.Количество = 0 | ТОГДА ВложенныйЗапрос.Сумма | ИНАЧЕ ВложенныйЗапрос.Количество | КОНЕЦ / УзлыКорректировкиСтоимостиСписания.Количество | ИНАЧЕ 0 | КОНЕЦ КАК ЧИСЛО(38, 10))) КАК Сумма |ПОМЕСТИТЬ ВременнаяТаблицаРешений |ИЗ | РегистрСведений.УзлыКорректировкиСтоимостиСписания КАК УзлыКорректировкиСтоимостиСписания | ЛЕВОЕ СОЕДИНЕНИЕ УчетЗатрат КАК ВложенныйЗапрос | ЛЕВОЕ СОЕДИНЕНИЕ ТаблицаРешений КАК ТаблицаРешений | ПО ВложенныйЗапрос.НомерУзла = ТаблицаРешений.НомерУзла | ПО УзлыКорректировкиСтоимостиСписания.Организация = ВложенныйЗапрос.Организация | И УзлыКорректировкиСтоимостиСписания.СтруктурнаяЕдиница = ВложенныйЗапрос.СтруктурнаяЕдиница | И УзлыКорректировкиСтоимостиСписания.СчетУчета = ВложенныйЗапрос.СчетУчета | И УзлыКорректировкиСтоимостиСписания.Номенклатура = ВложенныйЗапрос.Номенклатура | И УзлыКорректировкиСтоимостиСписания.Характеристика = ВложенныйЗапрос.Характеристика | И УзлыКорректировкиСтоимостиСписания.Партия = ВложенныйЗапрос.Партия | И УзлыКорректировкиСтоимостиСписания.ЗаказПокупателя = ВложенныйЗапрос.ЗаказПокупателя |ГДЕ | УзлыКорректировкиСтоимостиСписания.Регистратор = &Регистратор | |СГРУППИРОВАТЬ ПО | УзлыКорректировкиСтоимостиСписания.НомерУзла | |ИНДЕКСИРОВАТЬ ПО | НомерУзла |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | СУММА((ЕСТЬNULL(ТаблицаРешений.Сумма, 0) — (УзлыКорректировкиСтоимостиСписания.Сумма + ЕСТЬNULL(ВременнаяТаблицаРешений.Сумма, 0))) * (ЕСТЬNULL(ТаблицаРешений.Сумма, 0) — (УзлыКорректировкиСтоимостиСписания.Сумма + ЕСТЬNULL(ВременнаяТаблицаРешений.Сумма, 0)))) КАК СуммаКвадратовОтклонений |ИЗ | РегистрСведений.УзлыКорректировкиСтоимостиСписания КАК УзлыКорректировкиСтоимостиСписания | ЛЕВОЕ СОЕДИНЕНИЕ ВременнаяТаблицаРешений КАК ВременнаяТаблицаРешений | ПО (ВременнаяТаблицаРешений.НомерУзла = УзлыКорректировкиСтоимостиСписания.НомерУзла) | ЛЕВОЕ СОЕДИНЕНИЕ ТаблицаРешений КАК ТаблицаРешений | ПО (ТаблицаРешений.НомерУзла = УзлыКорректировкиСтоимостиСписания.НомерУзла) |ГДЕ | УзлыКорректировкиСтоимостиСписания.Регистратор = &Регистратор»; Этот запрос выдает ошибку. Я уже не знаю куда смотреть. |
||
| Santa4527
13 — 26.11.13 — 18:20 |
приблизительно после 47 итерации |
||
| Михаил Козлов
14 — 26.11.13 — 19:23 |
Попробуйте обратиться в 1С. Может матрица прямых затрат плохо обусловлена, может сам метод неустойчив. Мне кажется, 1С должна быть заинтересована разобраться. |
||
|
saaken 15 — 26.11.13 — 21:50 |
(0) отмени проведение половины документов и проверь еще раз |
![]() |
|
Прочитай, хотя бы, Митичкина «Разработка в системе 1С:Предприятие 8». Волшебник |
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку «Обновить» в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Добрый день. Помогите пожалуйста устранить ошибку. В УПП редакция 1.3 (1.3.6.1) при проведении «Отчет производства за смену» 1с выдаёт ошибку:
Ошибка при выполнении обработчика — ‘ОбработкаПроведения’
по причине:
{ОбщийМодуль.УправлениеПроизводствомДвиженияПоРегистрам.Модуль(3672)}: Ошибка при вызове метода контекста (Выполнить)
по причине:
Ошибка выполнения запроса
по причине:
Ошибка при выполнении операции над данными:
Ошибка SQL: Переполнение поля
по причине:
Ошибка SQL: Переполнение поля
Предполагаю что ошибка возникает из за следующих строк запроса:
Док.Количество *
ТаблицаСтоимостиЗатратУУ.СтоимостьОстаток /
ТаблицаСтоимостиЗатратУУ.КоличествоОстаток
Полный запрос имеет вид:
ВЫБРАТЬ
ТаблицаАналитики.Подразделение,
ТаблицаАналитики.ПодразделениеОрганизации,
ТаблицаАналитики.Затрата,
ТаблицаАналитики.ХарактеристикаЗатраты,
ТаблицаАналитики.СерияЗатраты,
ТаблицаАналитики.СтатьяЗатрат,
ТаблицаАналитики.НоменклатурнаяГруппа,
ТаблицаАналитики.Заказ КАК Заказ,
ТаблицаАналитики.СчетУчета,
//ДляРеглУчета СУММА(
//ДляРеглУчета ВЫБОР КОГДА ТаблицаАналитики.СчетУчетаНУ <> Неопределено ТОГДА
//ДляРеглУчета УчетЗатрат.СтоимостьНУОстаток
//ДляРеглУчета ИНАЧЕ
//ДляРеглУчета 0
//ДляРеглУчета КОНЕЦ
//ДляРеглУчета ) КАК СтоимостьНУОстаток,
//ДляРеглУчета СУММА(
//ДляРеглУчета ВЫБОР КОГДА ТаблицаАналитики.СчетУчетаНУ <> Неопределено ТОГДА
//ДляРеглУчета УчетЗатрат.КоличествоНУОстаток
//ДляРеглУчета ИНАЧЕ
//ДляРеглУчета 0
//ДляРеглУчета КОНЕЦ
//ДляРеглУчета ) КАК КоличествоНУОстаток,
СУММА(УчетЗатрат.СтоимостьОстаток) КАК СтоимостьОстаток,
СУММА(УчетЗатрат.КоличествоОстаток) КАК КоличествоОстаток
ПОМЕСТИТЬ ТаблицаСтоимостиЗатрат
ИЗ
РегистрНакопления.УчетЗатрат.Остатки(&КонДата,
(
АналитикаВидаУчета,
АналитикаУчетаЗатрат,
АналитикаРаспределенияЗатрат,
АналитикаУчетаПартий
) В (
ВЫБРАТЬ
АналитикаВидаУчета,
//ДляРеглУчета АналитикаВидаУчетаРегл,
АналитикаУчетаЗатрат,
АналитикаРаспределенияЗатрат,
АналитикаУчетаПартий
ИЗ
ТаблицаАналитики
)
) КАК УчетЗатрат
ЛЕВОЕ СОЕДИНЕНИЕ
ТаблицаАналитики КАК ТаблицаАналитики
ПО
УчетЗатрат.АналитикаВидаУчета = ТаблицаАналитики.АналитикаВидаУчета
//ДляРеглУчета УчетЗатрат.АналитикаВидаУчета = ТаблицаАналитики.АналитикаВидаУчетаРегл
И УчетЗатрат.АналитикаУчетаЗатрат = ТаблицаАналитики.АналитикаУчетаЗатрат
И УчетЗатрат.АналитикаРаспределенияЗатрат = ТаблицаАналитики.АналитикаРаспределенияЗатрат
И УчетЗатрат.АналитикаУчетаПартий = ТаблицаАналитики.АналитикаУчетаПартий
СГРУППИРОВАТЬ ПО
ТаблицаАналитики.Подразделение,
ТаблицаАналитики.ПодразделениеОрганизации,
ТаблицаАналитики.Затрата,
ТаблицаАналитики.ХарактеристикаЗатраты,
ТаблицаАналитики.СерияЗатраты,
ТаблицаАналитики.СтатьяЗатрат,
ТаблицаАналитики.НоменклатурнаяГруппа,
ТаблицаАналитики.Заказ,
ТаблицаАналитики.СчетУчета
;
////////////////////////////////////////////////////////////////////////////
//ТекстТаблицаСтоимостиРегл
ВЫБРАТЬ
Док.*,
Док.СтатьяЗатрат.ВидЗатрат КАК ВидЗатрат,
Док.СтатьяЗатрат.СтатусМатериальныхЗатрат КАК СтатусМатериальныхЗатрат,
Неопределено КАК СпособРаспределенияЗатрат,
Док.Номенклатура КАК Затрата,
Док.ХарактеристикаНоменклатуры КАК ХарактеристикаЗатраты,
Док.СерияНоменклатуры КАК СерияЗатраты,
ВЫБОР КОГДА Док.КодОперации <> Неопределено ТОГДА
Док.КодОперации
ИНАЧЕ
&ПрямыеЗатраты
КОНЕЦ КАК КодОперации,
ВЫБОР КОГДА Док.Заказ ССЫЛКА Документ.ЗаказПокупателя
И Док.Заказ.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийЗаказПокупателя.Переработка)
ТОГДА
ЗНАЧЕНИЕ(Перечисление.ВариантыВыпускаПродукции.ПродукцияИзДавальческогоСырья)
ИНАЧЕ
Неопределено
КОНЕЦ КАК ВариантВыпускаПродукции,
&Ссылка КАК ДокументВыпуска,
ВЫБОР КОГДА Док.ТипСтоимости = ЗНАЧЕНИЕ(Перечисление.ВидыНормативнойСтоимостиПроизводства.Фиксированная) ТОГДА
Док.Сумма
КОГДА ТаблицаСтоимостиЗатратУУ.КоличествоОстаток = 0
ИЛИ ТаблицаСтоимостиЗатратУУ.КоличествоОстаток ЕСТЬ NULL ТОГДА
0
ИНАЧЕ
Док.Количество *
ТаблицаСтоимостиЗатратУУ.СтоимостьОстаток /
ТаблицаСтоимостиЗатратУУ.КоличествоОстаток
КОНЕЦ КАК СуммаУУ,
//ПрямыеЗатратыБУ ВЫБОР КОГДА Док.ТипСтоимости = ЗНАЧЕНИЕ(Перечисление.ВидыНормативнойСтоимостиПроизводства.Фиксированная) ТОГДА
//ПрямыеЗатратыБУ Док.СуммаРегл
//ПрямыеЗатратыБУ КОГДА ТаблицаСтоимостиЗатратРегл.КоличествоОстаток = 0
//ПрямыеЗатратыБУ ИЛИ ТаблицаСтоимостиЗатратРегл.КоличествоОстаток ЕСТЬ NULL ТОГДА
//ПрямыеЗатратыБУ 0
//ПрямыеЗатратыБУ ИНАЧЕ
//ПрямыеЗатратыБУ Док.Количество *
//ПрямыеЗатратыБУ ТаблицаСтоимостиЗатратРегл.СтоимостьОстаток /
//ПрямыеЗатратыБУ ТаблицаСтоимостиЗатратРегл.КоличествоОстаток
//ПрямыеЗатратыБУ КОНЕЦ КАК СуммаБУ,
//ПрямыеЗатратыБУ ВЫБОР КОГДА Док.ТипСтоимости = ЗНАЧЕНИЕ(Перечисление.ВидыНормативнойСтоимостиПроизводства.Фиксированная) ТОГДА
//ПрямыеЗатратыБУ Док.СуммаНал
//ПрямыеЗатратыБУ КОГДА ТаблицаСтоимостиЗатратРегл.КоличествоНУОстаток = 0
//ПрямыеЗатратыБУ ИЛИ ТаблицаСтоимостиЗатратРегл.КоличествоНУОстаток ЕСТЬ NULL ТОГДА
//ПрямыеЗатратыБУ 0
//ПрямыеЗатратыБУ ИНАЧЕ
//ПрямыеЗатратыБУ Док.Количество *
//ПрямыеЗатратыБУ ТаблицаСтоимостиЗатратРегл.СтоимостьНУОстаток /
//ПрямыеЗатратыБУ ТаблицаСтоимостиЗатратРегл.КоличествоНУОстаток
//ПрямыеЗатратыБУ КОНЕЦ КАК СуммаНУ,
//ФиксСтоимость Док.Сумма КАК СуммаУУ,
//ФиксСтоимость Док.СуммаРегл КАК СуммаБУ,
//ФиксСтоимость Док.СуммаНал КАК СуммаНУ,
//ПоНулевойУУ 0 КАК СуммаУУ,
0 КАК СуммаБУ,
0 КАК СуммаНУ,
Док.Количество
ИЗ
ТаблицаДокумента КАК Док
ЛЕВОЕ СОЕДИНЕНИЕ
ТаблицаСтоимостиЗатрат КАК ТаблицаСтоимостиЗатратУУ
ПО
Док.Номенклатура = ТаблицаСтоимостиЗатратУУ.Затрата
И Док.ХарактеристикаНоменклатуры = ТаблицаСтоимостиЗатратУУ.ХарактеристикаЗатраты
И Док.СерияНоменклатуры = ТаблицаСтоимостиЗатратУУ.СерияЗатраты
И Док.СтатьяЗатрат = ТаблицаСтоимостиЗатратУУ.СтатьяЗатрат
И Док.НоменклатурнаяГруппаНЗП = ТаблицаСтоимостиЗатратУУ.НоменклатурнаяГруппа
И Док.ЗаказНЗП = ТаблицаСтоимостиЗатратУУ.Заказ
И Док.ПодразделениеНЗП = ТаблицаСтоимостиЗатратУУ.Подразделение
//ПрямыеЗатратыБУ ЛЕВОЕ СОЕДИНЕНИЕ
//ПрямыеЗатратыБУ ТаблицаСтоимостиЗатратРегл КАК ТаблицаСтоимостиЗатратРегл
//ПрямыеЗатратыБУ ПО
//ПрямыеЗатратыБУ Док.Номенклатура = ТаблицаСтоимостиЗатратРегл.Затрата
//ПрямыеЗатратыБУ И Док.ХарактеристикаНоменклатуры = ТаблицаСтоимостиЗатратРегл.ХарактеристикаЗатраты
//ПрямыеЗатратыБУ И Док.СерияНоменклатуры = ТаблицаСтоимостиЗатратРегл.СерияЗатраты
//ПрямыеЗатратыБУ И Док.СтатьяЗатрат = ТаблицаСтоимостиЗатратРегл.СтатьяЗатрат
//ПрямыеЗатратыБУ И Док.НоменклатурнаяГруппаНЗП = ТаблицаСтоимостиЗатратРегл.НоменклатурнаяГруппа
//ПрямыеЗатратыБУ И Док.ЗаказНЗПРегл = ТаблицаСтоимостиЗатратРегл.ЗаказРегл
//ПрямыеЗатратыБУ И (Док.СчетЗатрат = ТаблицаСтоимостиЗатратРегл.СчетУчета
//ПрямыеЗатратыБУ ИЛИ ТаблицаСтоимостиЗатратРегл.СчетУчета = Неопределено)
//ПрямыеЗатратыБУ И Док.ПодразделениеОрганизацииНЗП = ТаблицаСтоимостиЗатратРегл.ПодразделениеОрганизации
УПОРЯДОЧИТЬ ПО
Док.НомерСтроки
Опубликовано: 21.02.2018 /
В рамках проекта перехода с Управление торговлей 11.1 на Комплексная автоматизация 2.2 возникли с одной проблемой. Суть в следующем. Сам переход подразумевает обновление УТ на КА (как базовую бухгалтерию на проф) — никаких трудностей. Но перед переходом необходимо в УТ рассчитать себестоимость и закрыть месяца. У нас было обновление на 10 релизов примерно, после чего я и попытался сделать закрытие месяц. Вот тут и появилась ошибка:
1. При выполнении расчета возникла ошибка:
{ОбщийМодуль.УниверсальныеМеханизмыПартийИСебестоимости.Модуль(2043)}:
Ошибка при вызове метода контекста (Выполнить)
Выборка = Запрос.Выполнить().Выбрать();
по причине:
Ошибка выполнения запроса
по причине:
Ошибка при выполнении операции над данными:
Microsoft SQL Server Native Client 10.0: Ошибка арифметического переполнения при преобразовании numeric к типу данных numeric.
HRESULT=80040E57, SQLSrvr: SQLSTATE=22003, state=8, Severity=10, native=8115, line=1
С этого момента начался поиск решения проблемы. Что было проверено:
- последняя платформа 1С
- последний релиз конфигурации 1С
- полное ТиИ (и отдельно пересчет итогов)
- checkdb в ms sql server
Также был найден запрос, на котором была ошибка, и запросе, было исправлено выражение ВЫРАЗИТЬ(15,3) на ВЫРАЗИТЬ(25,3) — или что-то подобное. Такой способ рекомендуют во многих местах в сети (в том числе и на infostart). Но он тоже мне не помог.
После я решил, что нужно все понять причину, ведь не может появиться ошибка просто так.
И проанализировал регистр «ВыручкаИСебестоимостьПродаж«. И ужаснулся — в полях себестоимости были миллиарды.
Тут я понял, что проблему нужно решать с другой стороны! После чего и начал искать с чего все началось — с каких документов. Где-то исправлял ошибки, где-то просто перепроводил документы и потом закрывал месяц. И все получилось. И самый правильный залог успеха — отсутствие отрицательных остатков!
Позже выложу обработку, которая упрощает механизм поиска и исправления данных ошибок.
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 — 02.02.12 — 13:01
ну может кто нить что нить предположит для поддержания дискуссии? )))
2 — 02.02.12 — 13:07
может, действительно переполнилось поле? бывает.
3 — 02.02.12 — 13:08
(2) а где то поле и чем отчерпывать идей нету?
4 — 02.02.12 — 13:09
числа итоговые большие получаются примерно?
5 — 02.02.12 — 13:11
юзай для всех числовых полей Выразить с четким указанием разрядености, да побольше. SQL в план запроса сам вставляет это, но разрядность выбирает сам исходя из своих соображений, возможно из-за этого
6 — 02.02.12 — 13:11
а кто ж его знает? запрос то не выполняется. ошибка начала вылетать после исправления соединения с таблицей свободных остатков с внутреннего на левое. до этого все в порядке было
7 — 02.02.12 — 13:12
(5) спасибо, сейчас попробую
8 — 02.02.12 — 13:15
9 — 02.02.12 — 13:17
поставил ВЫРАЗИТЬ КАК Число(15,2), не помогло (((
там же в базе если все просуммировать, меньше получится!
10 — 02.02.12 — 13:18
(9) на все поля? покаж запрос
11 — 02.02.12 — 13:18
(9) не там значит поставил
12 — 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 — 02.02.12 — 13:20
(0) ты совесть то имей
ЕСТЬNULL(СвободныеОстаткиОстатки.рамКПоступлениюОстаток, 0)*
где ты приведение сделал ?
14 — 02.02.12 — 13:21
| ВЫРАЗИТЬ(ВЫБОР
| КОГДА ЗаказКлиентаТовары.Количество = 0
| ТОГДА 0
| ИНАЧЕ СУММА(ВЫБОР
| КОГДА ЗаказКлиентаТовары.Склад = СвободныеОстаткиОстатки.Склад
| ТОГДА ЕСТЬNULL(СвободныеОстаткиОстатки.ВРезервеОстаток, 0)
| ИНАЧЕ 0
| КОНЕЦ) * ЗаказКлиентаТовары.Сумма / ЗаказКлиентаТовары.Количество
| КОНЕЦ КАК ЧИСЛО(15, 2)) КАК ГотовоСумма
а тут СУММА(…..всё это дело) и выразить на всю её?
15 — 02.02.12 — 13:21
(13) ёпрст!
туплю, бывает. щазззз…
patapum
16 — 02.02.12 — 13:51
спасибо, помогло! плюс еще ошибка была, когда было внутреннее соединение, отбор на таблицу остатков работал и на документы. а сделал левое соединение, и поехали всю базу лопатить…
I have a table with the following schema
COLUMN_NAME, ORDINAL_POSITION,…., NUMERIC_PRECISION_INTEGER
«year»;1;»»;»YES»;»numeric»;;;17;10;17
«month_num»;2;»»;»YES»;»numeric»;;;17;10;17
«month_name»;3;»»;»YES»;»text»;;1073741824;;;
«week_of_month»;4;»»;»YES»;»numeric»;;;17;10;17
«count_of_contracts»;5;»»;»YES»;»bigint»;;;64;2;0
but when I insert the following into it
insert into contract_fact values(2011, 8, 'Aug', 1, 367)
I see the following error
ERROR: numeric field overflow
SQL state: 22003
Detail: A field with precision 17, scale 17 must round to an absolute value less than 1.
asked Sep 7, 2011 at 20:35
daydreamerdaydreamer
86.4k188 gold badges445 silver badges717 bronze badges
2
It looks like you have your year and week_of_month columns defined as numeric(17,17), which means 17 digits, 17 of which are behind the decimal point. So the value has to be between 0 and 1. You probably meant numeric(17,0), or perhaps you should use an integer type.
answered Sep 8, 2011 at 4:09
Peter EisentrautPeter Eisentraut
35k12 gold badges85 silver badges90 bronze badges
2
I had a similar problem even without having set an upper limit.
If this happens to you, you might want to look at the global PostgreSQL limits here: https://www.postgresql.org/docs/9.6/static/datatype-numeric.html
For instance TIMESTAMP are a kind of BIGINT with a limit of 9223372036854775807 so you might want to validate that the integer your are passing in your query is below that value.
answered Feb 14, 2017 at 13:57
Ошибка выполнения запроса Ошибка при выполнении операции над данными: Ошибка SQL: Переполнение поля
Описание ошибки:
Подобная ошибка возникала при выполнении разработанного отчета.
Найденные решения:
Получались значения в запросе которые выходили за пределы размерности типа. Например, в запросе было ВЫРАЗИТЬ( … , ЧИСЛО(7, 2)). Число полученное или выбранное запросом оказалось больше, поэтому замена на ЧИСЛО (15, 2) исправило ошибку.
Оцените, помогло ли Вам предоставленное описание решения ошибки?

© www.azhur-c.ru 2014-2020. Все права защищены. Использование текстов и изображений с данной страницы без письменного разрешения владельца запрещено. При использовании материалов с данной страницы обязательно указание ссылки на данную страницу.
07-05-2014
Журавлев А.С.
(www.azhur-c.ru)





