|
Сравнение в запросе. | ☑ | ||
---|---|---|---|---|
0
Boudybuilder
16.10.12
✎
22:58
|
Гуглил , думал , но уже нервов не хватает самому это рвать! К тому же не могу отладчиком посмотреть , так как это внешняя обработка заполнения табличной части.
Братиши , выручайте. Создаю предварительную таблицу : ТаблицаПредварительная = Новый ТаблицаЗначений; ТаблицаПредварительная.Колонки.Добавить("Код",Новый ОписаниеТипов("Строка"), "Код", 15); Потом заполняю ее: Для каждого ТекСтрокаЗагрузки Из ТаблицаЗагрузки Цикл НовСтрока = ТаблицаПредварительная.Добавить(); Для каждого ТС Из СоответствиеКолонок Цикл Если ЗначениеЗаполнено(ТС.КолонкаСоответствия) Тогда Значение = Вычислить("ТекСтрокаЗагрузки."+ТС.КолонкаСоответствия); Если ТаблицаПредварительная.Колонки.Найти(ТС.Колонка+"Контрагента") <> Неопределено Тогда НовСтрока[ТС.Колонка+"Контрагента"] = Значение; Иначе НовСтрока[ТС.Колонка] = Значение; КонецЕсли; КонецЕсли; КонецЦикла; КонецЦикла; Колонку Код очищаю от лишних знаков Для Каждого ТС Из ТаблицаПредварительная Цикл ТС.Код = СокрЛП(СтрЗаменить(ТС.Код,Символы.НПП,"")); КонецЦикла; И преливаю ее в табличное поле: ТаблВыставленияСоответствия = ТаблицаПредварительная.Скопировать(); А дальше ищу соответствия из регистра Запрос = Новый Запрос; МенеджерВТ = Новый МенеджерВременныхТаблиц; Запрос.МенеджерВременныхТаблиц = МенеджерВТ; Запрос.Текст = "ВЫБРАТЬ | ТЗ.Код |ПОМЕСТИТЬ ТЗ |ИЗ | &ТЗ КАК ТЗ"; Запрос.УстановитьПараметр("ТЗ",ТаблВыставленияСоответствия); Запрос.Выполнить(); Запрос.Текст = "ВЫБРАТЬ | НоменклатураКонтрагентов.Номенклатура КАК Номенклатура, | НоменклатураКонтрагентов.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры, | ТЗ.Код КАК Код |ИЗ | РегистрСведений.НоменклатураКонтрагентов КАК НоменклатураКонтрагентов | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТЗ КАК ТЗ | ПО НоменклатураКонтрагентов.КодНоменклатурыКонтрагента = ТЗ.Код |ГДЕ | НоменклатураКонтрагентов.Контрагент = &Контрагент"; Запрос.УстановитьПараметр("Контрагент",Контрагент); Рез = Запрос.Выполнить(); Выборка = Рез.Выбрать(); Пока Выборка.Следующий() Цикл НовСтр = ТаблВыставленияСоответствия.Найти(Выборка.Код, "Код"); Если НовСтр = Неопределено Тогда НовСтр = ТаблВыставленияСоответствия.Добавить(); КонецЕсли; ЗаполнитьЗначенияСвойств(НовСтр, Выборка); КонецЦикла; И тут проблема: Неверные параметры в операции сравнения. Нельзя сравнивать поля неограниченной длины и поля несовместимых типов. ПО НоменклатураКонтрагентов.КодНоменклатурыКонтрагента <<?>>= ТЗ.Код Если ставить "ПОДОБНО" , то работает. Но при таком методе сравнения запрос отрабатывается на порядок медленнее чем "=". Где что не так? |
|||
1
XLife
16.10.12
✎
23:00
|
выразить?
|
|||
2
Шифровальщик2012
16.10.12
✎
23:02
|
Выразить(НоменклатураКонтрагентов.КодНоменклатурыКонтрагента КАК СТРОКА(20))
|
|||
3
Лефмихалыч
16.10.12
✎
23:13
|
(0) квалификатор строки добавь в описание типа, будь мужиком, блеать. Платформа русским же языком говорит "Нельзя сравнивать поля неограниченной длины"
|
|||
4
Boudybuilder
16.10.12
✎
23:23
|
ТаблицаПредварительная.Колонки.Добавить("Код",Новый ОписаниеТипов("Строка",,Новый КвалификаторыСтроки(25)), "Код", 25);
Так? Работает! ;) Ура!!! Спасибо , Братиши!!! Лев Михайлович, отдельное спасибо! |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |