Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
12 дек 2024, 12:33

Ошибка SQL: Переполнение поля

Автор malaxit, 17 мая 2013, 09:03

0 Пользователей и 1 гость просматривают эту тему.

malaxit

Добрый день. Помогите пожалуйста устранить ошибку. В УПП редакция 1.3 (1.3.6.1)  при проведении "Отчет производства за смену" 1с выдаёт ошибку:
Ошибка при выполнении обработчика - 'ОбработкаПроведения'
по причине:
{ОбщийМодуль.УправлениеПроизводствомДвиженияПоРегистрам.Модуль(3672)}: Ошибка при вызове метода контекста (Выполнить)

по причине:
Ошибка выполнения запроса
по причине:
Ошибка при выполнении операции над данными:
Ошибка SQL: Переполнение поля
по причине:
Ошибка SQL: Переполнение поля

Предполагаю что ошибка возникает из за следующих строк запроса:
   Док.Количество *
  ТаблицаСтоимостиЗатратУУ.СтоимостьОстаток /
  ТаблицаСтоимостиЗатратУУ.КоличествоОстаток

Полный запрос имеет вид:
ВЫБРАТЬ
   ТаблицаАналитики.Подразделение,
   ТаблицаАналитики.ПодразделениеОрганизации,
   
   ТаблицаАналитики.Затрата,
   ТаблицаАналитики.ХарактеристикаЗатраты,
   ТаблицаАналитики.СерияЗатраты,
   ТаблицаАналитики.СтатьяЗатрат,
   
   ТаблицаАналитики.НоменклатурнаяГруппа,
   ТаблицаАналитики.Заказ КАК Заказ,

   ТаблицаАналитики.СчетУчета,

   //ДляРеглУчета СУММА(
   //ДляРеглУчета    ВЫБОР КОГДА ТаблицаАналитики.СчетУчетаНУ <> Неопределено ТОГДА
   //ДляРеглУчета       УчетЗатрат.СтоимостьНУОстаток
   //ДляРеглУчета    ИНАЧЕ
   //ДляРеглУчета       0
   //ДляРеглУчета    КОНЕЦ
   //ДляРеглУчета ) КАК СтоимостьНУОстаток,

   //ДляРеглУчета СУММА(
   //ДляРеглУчета    ВЫБОР КОГДА ТаблицаАналитики.СчетУчетаНУ <> Неопределено ТОГДА
   //ДляРеглУчета       УчетЗатрат.КоличествоНУОстаток
   //ДляРеглУчета    ИНАЧЕ
   //ДляРеглУчета       0
   //ДляРеглУчета    КОНЕЦ
   //ДляРеглУчета ) КАК КоличествоНУОстаток,

   СУММА(УчетЗатрат.СтоимостьОстаток) КАК СтоимостьОстаток,
   СУММА(УчетЗатрат.КоличествоОстаток) КАК КоличествоОстаток

ПОМЕСТИТЬ ТаблицаСтоимостиЗатрат
ИЗ
   РегистрНакопления.УчетЗатрат.Остатки(&КонДата,
      (
      АналитикаВидаУчета,
      АналитикаУчетаЗатрат,
      АналитикаРаспределенияЗатрат,
      АналитикаУчетаПартий
      ) В (
         ВЫБРАТЬ
             АналитикаВидаУчета,
            //ДляРеглУчета АналитикаВидаУчетаРегл,
            АналитикаУчетаЗатрат,
            АналитикаРаспределенияЗатрат,
            АналитикаУчетаПартий
         ИЗ
            ТаблицаАналитики
         )
   
   ) КАК УчетЗатрат
   
   ЛЕВОЕ СОЕДИНЕНИЕ
      ТаблицаАналитики КАК ТаблицаАналитики
   ПО
       УчетЗатрат.АналитикаВидаУчета = ТаблицаАналитики.АналитикаВидаУчета
      //ДляРеглУчета УчетЗатрат.АналитикаВидаУчета = ТаблицаАналитики.АналитикаВидаУчетаРегл
      И УчетЗатрат.АналитикаУчетаЗатрат = ТаблицаАналитики.АналитикаУчетаЗатрат
      И УчетЗатрат.АналитикаРаспределенияЗатрат = ТаблицаАналитики.АналитикаРаспределенияЗатрат
      И УчетЗатрат.АналитикаУчетаПартий = ТаблицаАналитики.АналитикаУчетаПартий

СГРУППИРОВАТЬ ПО
   ТаблицаАналитики.Подразделение,
   ТаблицаАналитики.ПодразделениеОрганизации,
   
   ТаблицаАналитики.Затрата,
   ТаблицаАналитики.ХарактеристикаЗатраты,
   ТаблицаАналитики.СерияЗатраты,
   ТаблицаАналитики.СтатьяЗатрат,
   
   ТаблицаАналитики.НоменклатурнаяГруппа,
   ТаблицаАналитики.Заказ,
   ТаблицаАналитики.СчетУчета
;
////////////////////////////////////////////////////////////////////////////


//ТекстТаблицаСтоимостиРегл

ВЫБРАТЬ
   Док.*,
   Док.СтатьяЗатрат.ВидЗатрат КАК ВидЗатрат,
   Док.СтатьяЗатрат.СтатусМатериальныхЗатрат КАК СтатусМатериальныхЗатрат,
   Неопределено КАК СпособРаспределенияЗатрат,
   Док.Номенклатура КАК Затрата,
   Док.ХарактеристикаНоменклатуры КАК ХарактеристикаЗатраты,
   Док.СерияНоменклатуры КАК СерияЗатраты,
   ВЫБОР КОГДА Док.КодОперации <> Неопределено ТОГДА
      Док.КодОперации
   ИНАЧЕ
      &ПрямыеЗатраты
   КОНЕЦ КАК КодОперации,

   ВЫБОР КОГДА Док.Заказ ССЫЛКА Документ.ЗаказПокупателя
      И Док.Заказ.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийЗаказПокупателя.Переработка)
   ТОГДА
      ЗНАЧЕНИЕ(Перечисление.ВариантыВыпускаПродукции.ПродукцияИзДавальческогоСырья)
   ИНАЧЕ
         Неопределено
   КОНЕЦ КАК ВариантВыпускаПродукции,

   &Ссылка КАК ДокументВыпуска,

      ВЫБОР КОГДА Док.ТипСтоимости = ЗНАЧЕНИЕ(Перечисление.ВидыНормативнойСтоимостиПроизводства.Фиксированная) ТОГДА
         Док.Сумма
       КОГДА ТаблицаСтоимостиЗатратУУ.КоличествоОстаток = 0
            ИЛИ ТаблицаСтоимостиЗатратУУ.КоличествоОстаток ЕСТЬ NULL ТОГДА
         0
      ИНАЧЕ
         Док.Количество *
         ТаблицаСтоимостиЗатратУУ.СтоимостьОстаток /
         ТаблицаСтоимостиЗатратУУ.КоличествоОстаток
      КОНЕЦ КАК СуммаУУ,

   //ПрямыеЗатратыБУ   ВЫБОР КОГДА Док.ТипСтоимости = ЗНАЧЕНИЕ(Перечисление.ВидыНормативнойСтоимостиПроизводства.Фиксированная) ТОГДА
   //ПрямыеЗатратыБУ      Док.СуммаРегл
   //ПрямыеЗатратыБУ    КОГДА ТаблицаСтоимостиЗатратРегл.КоличествоОстаток = 0
   //ПрямыеЗатратыБУ         ИЛИ ТаблицаСтоимостиЗатратРегл.КоличествоОстаток ЕСТЬ NULL ТОГДА
   //ПрямыеЗатратыБУ      0
   //ПрямыеЗатратыБУ   ИНАЧЕ
   //ПрямыеЗатратыБУ      Док.Количество *
   //ПрямыеЗатратыБУ      ТаблицаСтоимостиЗатратРегл.СтоимостьОстаток /
   //ПрямыеЗатратыБУ      ТаблицаСтоимостиЗатратРегл.КоличествоОстаток
   //ПрямыеЗатратыБУ   КОНЕЦ КАК СуммаБУ,

   //ПрямыеЗатратыБУ   ВЫБОР КОГДА Док.ТипСтоимости = ЗНАЧЕНИЕ(Перечисление.ВидыНормативнойСтоимостиПроизводства.Фиксированная) ТОГДА
   //ПрямыеЗатратыБУ      Док.СуммаНал
   //ПрямыеЗатратыБУ    КОГДА ТаблицаСтоимостиЗатратРегл.КоличествоНУОстаток = 0
   //ПрямыеЗатратыБУ         ИЛИ ТаблицаСтоимостиЗатратРегл.КоличествоНУОстаток ЕСТЬ NULL ТОГДА
   //ПрямыеЗатратыБУ      0
   //ПрямыеЗатратыБУ   ИНАЧЕ
   //ПрямыеЗатратыБУ      Док.Количество *
   //ПрямыеЗатратыБУ      ТаблицаСтоимостиЗатратРегл.СтоимостьНУОстаток /
   //ПрямыеЗатратыБУ      ТаблицаСтоимостиЗатратРегл.КоличествоНУОстаток
   //ПрямыеЗатратыБУ   КОНЕЦ КАК СуммаНУ,

   //ФиксСтоимость      Док.Сумма КАК СуммаУУ,
   //ФиксСтоимость      Док.СуммаРегл КАК СуммаБУ,
   //ФиксСтоимость      Док.СуммаНал КАК СуммаНУ,

   //ПоНулевойУУ       0 КАК СуммаУУ,
          0 КАК СуммаБУ,
          0 КАК СуммаНУ,

   Док.Количество

ИЗ
   ТаблицаДокумента КАК Док

      ЛЕВОЕ СОЕДИНЕНИЕ
         ТаблицаСтоимостиЗатрат КАК ТаблицаСтоимостиЗатратУУ
      ПО
         Док.Номенклатура = ТаблицаСтоимостиЗатратУУ.Затрата
         И Док.ХарактеристикаНоменклатуры = ТаблицаСтоимостиЗатратУУ.ХарактеристикаЗатраты
         И Док.СерияНоменклатуры = ТаблицаСтоимостиЗатратУУ.СерияЗатраты
         И Док.СтатьяЗатрат = ТаблицаСтоимостиЗатратУУ.СтатьяЗатрат
         И Док.НоменклатурнаяГруппаНЗП = ТаблицаСтоимостиЗатратУУ.НоменклатурнаяГруппа
         И Док.ЗаказНЗП = ТаблицаСтоимостиЗатратУУ.Заказ
         И Док.ПодразделениеНЗП = ТаблицаСтоимостиЗатратУУ.Подразделение

   //ПрямыеЗатратыБУ   ЛЕВОЕ СОЕДИНЕНИЕ
   //ПрямыеЗатратыБУ      ТаблицаСтоимостиЗатратРегл КАК ТаблицаСтоимостиЗатратРегл
   //ПрямыеЗатратыБУ   ПО
   //ПрямыеЗатратыБУ      Док.Номенклатура = ТаблицаСтоимостиЗатратРегл.Затрата
   //ПрямыеЗатратыБУ      И Док.ХарактеристикаНоменклатуры = ТаблицаСтоимостиЗатратРегл.ХарактеристикаЗатраты
   //ПрямыеЗатратыБУ      И Док.СерияНоменклатуры = ТаблицаСтоимостиЗатратРегл.СерияЗатраты
   //ПрямыеЗатратыБУ      И Док.СтатьяЗатрат = ТаблицаСтоимостиЗатратРегл.СтатьяЗатрат
   //ПрямыеЗатратыБУ      И Док.НоменклатурнаяГруппаНЗП = ТаблицаСтоимостиЗатратРегл.НоменклатурнаяГруппа
   //ПрямыеЗатратыБУ      И Док.ЗаказНЗПРегл = ТаблицаСтоимостиЗатратРегл.ЗаказРегл
   //ПрямыеЗатратыБУ      И (Док.СчетЗатрат = ТаблицаСтоимостиЗатратРегл.СчетУчета
   //ПрямыеЗатратыБУ         ИЛИ ТаблицаСтоимостиЗатратРегл.СчетУчета = Неопределено)
   //ПрямыеЗатратыБУ      И Док.ПодразделениеОрганизацииНЗП = ТаблицаСтоимостиЗатратРегл.ПодразделениеОрганизации

УПОРЯДОЧИТЬ ПО
   Док.НомерСтроки

Жукова

Попробуйте применить ВЫРАЗИТЬ: ВЫРАЗИТЬ( Док.Количество *
  ТаблицаСтоимостиЗатратУУ.СтоимостьОстаток /
  ТаблицаСтоимостиЗатратУУ.КоличествоОстаток
КАК ЧИСЛО(15,2))...
Если не поможет (а скорее всего не поможет), я бы искала какое точно поле такую ошибку выдает. Например, закомментарить все выходные поля, кроме одного. А потом по одному убирать комментарий и смотреть, есть ли ошибка.
И да, лучше отчет сохранить как внешний, чтобы конфу каждый раз не обновлять.

malaxit

Спасибо, не помогло. Интересно что ошибка проявляется не всегда, а только в том случае если в табличной части "Распределение материалов" в перечне материалов есть конкретная номенклатура, при её удалении документ можно провести.
Подскажите пожалуйста есть ли инструменты которые позволят локализовать эту ошибку.

Добавлено: 17 мая 2013, 14:19


Мои предположения подтвердились, закоментировав строки запроса:
Док.Количество *
  ТаблицаСтоимостиЗатратУУ.СтоимостьОстаток /
  ТаблицаСтоимостиЗатратУУ.КоличествоОстаток
Документ был проведён. Что делать дальше не могу понять ...


Dethmontt

Дело скорее всего не в запросе, а в одном из значений которые приходят сюда
"Док.Количество *"
  "ТаблицаСтоимостиЗатратУУ.СтоимостьОстаток /"
  "ТаблицаСтоимостиЗатратУУ.КоличествоОстаток"


Переполнение поля - это превышение размерности типа в SQL
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

malaxit

    Что такое переполнение - понятно. Но если в режиме предприятия данные можно было ввести, то получается что при выполнении в ходе манипуляций с ними произошло переполнение :-( может кто подскажет как действовать в такой ситуации, наверняка я не первый кто с этим столкнулся.

Dethmontt

Сначала найди какой из полей переполняется.

Потом смотри как оно формируется. Если выбирается из базы то косяк в ДАННЫХ и нужно смотреть регистр!
Добавлено: 20 мая 2013, 11:24


Возможно значение переполнено уже в БАЗЕ и расчет тут не причом
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

ибра06


Подскажите пожалуйста. В 1с 8.3 ЗУП , при заполнение стат отчета 57Т вылезает такая ошибка "Ошибка SQL: Переполнение поля" ,!!!!! как исправить

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск