Имя: Пароль:
1C
1С v8
Запрос вылетает с ошибкой
,
0 vse_serjezno
 
05.10.15
12:18
День добрый.
Платформа 8.2
Собственно, ошибка следующая -
запускаю в консоли пакетный запрос, на 9-м пакете он вылетает с ошибкой СУБД.
Все предыдущие пакеты поочередно запустила, проверила, что выполняются. Сам 9-й состоит из соединения 3-х временных таблиц из предыдущих проверенных пакетов запросов, и одного вложенного запроса, который я отдельно запустила и так же проверила, что работает.
Вместе это все выдает ошибку:

Ошибка при выполнении запроса POST к ресурсу /e1cib/cmi/command/0:b768d4c7-648d-4777-b5e6-cfa6d0bb6691:
по причине:
Ошибка СУБД:
Microsoft OLE DB Provider for SQL Server: String or binary data would be truncated.
HRESULT=80040E57, SQLSrvr: SQLSTATE=22001, state=D, Severity=10, native=8152, line=1

Подскажите, пожалуйста, с чем это может быть связано?
Если кто-то сталкивался с подобной проблемой, как справлялись?
1 Fragster
 
гуру
05.10.15
12:19
зеленый!
2 vse_serjezno
 
05.10.15
12:29
Я была бы рада более конструктивному ответу.
3 Buster007
 
05.10.15
12:30
String or binary data would be truncated
можно в гугле перевести
4 Steini
 
05.10.15
12:31
вангую: в соединении участвуют строки или т.п.?
5 Fragster
 
гуру
05.10.15
12:33
(2) текст запроса мы должны придумать?
6 vhl
 
05.10.15
12:38
(5) 9 пакетов? Нет спасибо :)
7 Nuobu
 
05.10.15
12:39
8 vse_serjezno
 
05.10.15
12:48
(4) 3 соединение по ссылке номенклатуры и одно по строке, но там поле типа строка длинной не больше 36 символов.
9 vse_serjezno
 
05.10.15
12:49
На небольшом объеме данных запрос работает... О_о
10 vse_serjezno
 
05.10.15
12:57
(7) к сожалению, способ не сработал.
11 Тoлько_
Просмотр
 
05.10.15
13:02
(10) Точно? То есть строка в ВТ получается в результате ВЫРАЗИТЬ, потом индексирование по этой колонке и всё равно не работает?
12 vse_serjezno
 
05.10.15
13:08
(11) дело в том, что ошибка возникает даже если я убираю эту таблицу и связь из этого пакета запроса.
13 vse_serjezno
 
05.10.15
13:11
Условие связи:

ИЗ
    втДанныеПоДокументу_Предыдущие КАК ДанныеПоДокументу_Предыдущие
        ЛЕВОЕ СОЕДИНЕНИЕ втСтатьи КАК Статьи
        ПО ДанныеПоДокументу_Предыдущие.UID = Статьи.UID
        ЛЕВОЕ СОЕДИНЕНИЕ втНГруппы КАК НГруппы
        ПО ДанныеПоДокументу_Предыдущие.Номенклатура.НоменклатурнаяГруппа = НГруппы.Номенклатура
        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            ЗапросОбъединение.НоменклатураИсключение КАК НоменклатураИсключение
        ИЗ
            (ВЫБРАТЬ
                Номенклатура.Ссылка КАК НоменклатураИсключение
            ИЗ
                Справочник.Номенклатура КАК Номенклатура
            ГДЕ
                Номенклатура.Ссылка В ИЕРАРХИИ
                        (ВЫБРАТЬ
                            ИсключенияИзГрупп.НоменклатураИсключение КАК НоменклатураИсключение
                        ИЗ
                            РегистрСведений.ИсключенияИзГрупп КАК ИсключенияИзГрупп
                        ГДЕ
                            ИсключенияИзГрупп.НоменклатураИсключение.ЭтоГруппа)
                И Номенклатура.ПГод <> 2013
            
            ОБЪЕДИНИТЬ ВСЕ
            
            ВЫБРАТЬ
                ИсключенияИзГрупп.НоменклатураИсключение
            ИЗ
                РегистрСведений.ИсключенияИзГрупп КАК ИсключенияИзГрупп) КАК ЗапросОбъединение
        
        СГРУППИРОВАТЬ ПО
            ЗапросОбъединение.НоменклатураИсключение) КАК ТаблицаИсключений
        ПО ДанныеПоДокументу_Предыдущие.Номенклатура = ТаблицаИсключений.НоменклатураИсключение
        ЛЕВОЕ СОЕДИНЕНИЕ СводНГ_Реверс КАК СводНГ_Реверс
        ПО ДанныеПоДокументу_Предыдущие.Номенклатура = СводНГ_Реверс.Ссылка
14 Тoлько_
Просмотр
 
05.10.15
13:16
(13) Ого, ну во-первых, вот так
"ПО ДанныеПоДокументу_Предыдущие.Номенклатура.НоменклатурнаяГруппа = НГруппы.Номенклатура" негоже делать.

Сделай лучше отдельную колонку НоменклатурнаяГруппа, проиндексируй её и по ней соединяй.

Во-вторых, вот это:
(ВЫБРАТЬ
            ЗапросОбъединение.НоменклатураИсключение КАК НоменклатураИсключение
        ИЗ
            (ВЫБРАТЬ
                Номенклатура.Ссылка КАК НоменклатураИсключение
            ИЗ
                Справочник.Номенклатура КАК Номенклатура
            ГДЕ
                Номенклатура.Ссылка В ИЕРАРХИИ
                        (ВЫБРАТЬ
                            ИсключенияИзГрупп.НоменклатураИсключение КАК НоменклатураИсключение
                        ИЗ
                            РегистрСведений.ИсключенияИзГрупп КАК ИсключенияИзГрупп
                        ГДЕ
                            ИсключенияИзГрупп.НоменклатураИсключение.ЭтоГруппа)
                И Номенклатура.ПГод <> 2013
            
            ОБЪЕДИНИТЬ ВСЕ
            
            ВЫБРАТЬ
                ИсключенияИзГрупп.НоменклатураИсключение
            ИЗ
                РегистрСведений.ИсключенияИзГрупп КАК ИсключенияИзГрупп) КАК ЗапросОбъединение
        
        СГРУППИРОВАТЬ ПО
            ЗапросОбъединение.НоменклатураИсключение) КАК ТаблицаИсключений

помести сначала в отдельную временную таблицу.


Дальше по результатам.
15 maximus77
 
05.10.15
13:26
Проблема в том, что у вас в таблице размер поля меньше, чем данные, которые вы пытаетесь туда вставить. Не видя запроса сказать где это может быть невозможно.
16 vse_serjezno
 
05.10.15
14:59
ПРоблема возникает при помещении результата во временную таблицу... Если убрать из текста запроса
"Поместить в ВТ" и вывести результат, то результат выводится..
17 maximus77
 
05.10.15
15:04
Что такое "Поместить в ВТ" это СОЗДАНИЕ виртуальной таблицы с определенными полями на сервере SQL. Просто Select НЕ СОЗДАЕТ таблицу, а выводит данные поэтому и нет ошибки.
18 hhhh
 
05.10.15
15:06
НоменклатураИсключение какого типа?