Имя: Пароль:
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
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn