Имя: Пароль:
1C
1С v8
Ошибка на Запрос.УстановитьПараметр String or binary data would be truncated
,
0 PVS_Mtl
 
03.07.15
09:40
Добрый день! Очень нужна помощь.
При выполнении процедуры
процедура РазложитьСтрокиТаблицыНаПодстроки(ТЗ=Неопределено,
                                            мвт = Неопределено,
                                            ИмяВТ = "ТаблицаСоСтрокой",
                                            ИмяКолонки = "СтрокаСРазделителями",
                                            ТЗРез = Неопределено,
                                            ИмяВТРез = "ТаблицаСоСтрокойИСтроками",
                                            ИмяКолонкиРез = "Элемент",
                                            Разделитель=",") Экспорт
    
    ЕстьМВТ = Не (мвт = Неопределено);                                                        
                                                        
    Если ТЗ<>Неопределено Тогда
        Если Не ЕстьМВТ Тогда
            мвт = новый менеджерВременныхТаблиц();    
        конецЕсли;
        мс_временныеТаблицы.ПреобразоватьТЗвВТ(ТЗ,МВТ,ИмяВТ);
    конецЕсли;
    
    запрос = новый Запрос();
    ЗАПРОС.МенеджерВременныхТаблиц = мвт;
        
    запрос.Текст = "ВЫБРАТЬ 0 КАК Номер
                  |ПОМЕСТИТЬ Цифры
                  |ОБЪЕДИНИТЬ
                  |ВЫБРАТЬ 1                                
                  |ОБЪЕДИНИТЬ
                  |ВЫБРАТЬ 2
                  |ОБЪЕДИНИТЬ
                  |ВЫБРАТЬ 3
                  |ОБЪЕДИНИТЬ
                  |ВЫБРАТЬ 4
                  |ОБЪЕДИНИТЬ
                  |ВЫБРАТЬ 5
                  |ОБЪЕДИНИТЬ
                  |ВЫБРАТЬ 6
                  |ОБЪЕДИНИТЬ
                  |ВЫБРАТЬ 7
                  |ОБЪЕДИНИТЬ
                  |ВЫБРАТЬ 8
                  |ОБЪЕДИНИТЬ
                  |ВЫБРАТЬ 9
                  |;
                  |
                  |////////////////////////////////////////////////////////////////////////////////
                  |ВЫБРАТЬ
                  |    Н1.Номер * 100 + Н2.Номер * 10 + Н3.Номер КАК Номер
                  |ПОМЕСТИТЬ Номера
                  |ИЗ
                  |    Цифры КАК Н1
                  |        ЛЕВОЕ СОЕДИНЕНИЕ Цифры КАК Н2
                  |        ПО (ИСТИНА)
                  |        ЛЕВОЕ СОЕДИНЕНИЕ Цифры КАК Н3
                  |        ПО (ИСТИНА)
                  |;
                  |
                  |////////////////////////////////////////////////////////////////////////////////
                  |ВЫБРАТЬ
                  |    "+ИмяВт+"."+ИмяКолонки+" + &Разделитель КАК Текст,
                  |    "+ИмяВт+"."+ИмяКолонки+" КАК ПервоначальныйТекст
                  |ПОМЕСТИТЬ Строка
                  |ИЗ "+ИмяВт+";
                  |
                  |////////////////////////////////////////////////////////////////////////////////
                  |ВЫБРАТЬ
                  |    ВЗ.ПервоначальныйТекст,
                  |    ПОДСТРОКА(ВЗ.Текст, ВЗ.Н + 1, ВЗ.К - ВЗ.Н - 1) КАК Элемент
                  |ПОМЕСТИТЬ РазделенныеСтроки
                  |ИЗ
                  |    (ВЫБРАТЬ
                  |        Номера.Номер КАК Н,
                  |        МИНИМУМ(Н.Номер) КАК К,
                  |        МАКСИМУМ(Н.Номер) КАК Макс,
                  |        Строка.Текст КАК Текст,
                  |        Строка.ПервоначальныйТекст КАК ПервоначальныйТекст
                  |    ИЗ
                  |        Номера КАК Номера
                  |            ВНУТРЕННЕЕ СОЕДИНЕНИЕ Строка КАК Строка
                  |            ПО (ПОДСТРОКА(Строка.Текст, Номера.Номер, 1) ПОДОБНО ""["" + &Разделитель + ""]""
                  |                    ИЛИ Номера.Номер = 0)
                  |            ВНУТРЕННЕЕ СОЕДИНЕНИЕ Номера КАК Н
                  |            ПО (ПОДСТРОКА(Строка.Текст, Н.Номер, 1) ПОДОБНО ""["" + &Разделитель + ""]"")
                  |                И (Н.Номер > Номера.Номер)
                  |    
                  |    СГРУППИРОВАТЬ ПО
                  |        Номера.Номер,
                  |        Строка.Текст,
                  |        Строка.ПервоначальныйТекст) КАК ВЗ
                  |;
                  |УНИЧТОЖИТЬ Строка;
                  |УНИЧТОЖИТЬ Цифры;
                  |УНИЧТОЖИТЬ Номера;
                  |ВЫБРАТЬ "+ИмяВт+".*,
                  |            РазделенныеСтроки.Элемент как "+ИмяКолонкиРез+" "+
                  ?(ТЗРез = Неопределено, "ПОМЕСТИТЬ "+ИмяВТРез, "")+"
                  |ИЗ "+ИмяВт+"
                  |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РазделенныеСтроки
                  |        ПО "+ИмяВт+"."+ИмяКолонки+"=РазделенныеСтроки.ПервоначальныйТекст                                
                  |;
                  |УНИЧТОЖИТЬ РазделенныеСтроки;";
    
    Запрос.УстановитьПараметр("Разделитель",Разделитель); /////здесь ошибка!!!!
    
    Если ТЗРез=Неопределено Тогда
        Запрос.Выполнить();    
    Иначе
        ТЗРез = Запрос.Выполнить().Выгрузить();
    конецЕсли;
    
    Если Не ЕстьМВТ Тогда
        мвт.Закрыть();    
    конецЕсли;    
конецПроцедуры

на строке
Запрос.УстановитьПараметр("Разделитель",Разделитель);
возникает ошибка усечения данных String or binary data would be truncated и 1С вылетает, даже не доходя до выполнения запроса. СУБД SQL Server 2005, 8.2.19.90, УПП, клиент-сервер, толстый клиент. На локальной файловой копии все работает нормально (что и неудивительно).

Очень срочно нужна помощь! Подскажите, что нужно исправить. На форуме искала, похоже нужно ограничить длину к-либо выводимых полей или самого параметра? Параметр Разделитель с типом Строка, равен ",".
1 PVS_Mtl
 
03.07.15
09:53
Вверх
2 PVS_Mtl
 
03.07.15
10:18
up
3 Альбатрос
 
03.07.15
10:24
Ну хз...
Попробовать без УстановитьПараметр()? Заменить в тексте &Разделитель на ","?
4 Господин ПЖ
 
03.07.15
10:30
>СУБД SQL Server 2005

все апдейты и сервис-пуки стоят?
5 PVS_Mtl
 
03.07.15
10:46
(4) 9.00.3042.00 x64 servise pack 1.
Если возможно, хотелось бы решить проблему, не трогая SQL Server
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.