|
Во вложеном запросе ошибка на сравнение строк неограниченной длинны | ☑ | ||
---|---|---|---|---|
0
Boudybuilder
08.12.12
✎
12:58
|
Вот запрос:
Запрос = Новый Запрос; МенеджерВТ = Новый МенеджерВременныхТаблиц; Запрос.МенеджерВременныхТаблиц = МенеджерВТ; Запрос.Текст="ВЫБРАТЬ РАЗРЕШЕННЫЕ | ТабПрайс."+КолонкаКод+" КАК Код, | ТабПрайс."+КолонкаЦена+" КАК Цена |ПОМЕСТИТЬ ТабПрайс |ИЗ | &ТабПрайс КАК ТабПрайс |ГДЕ | ТабПрайс."+КолонкаКод+" НЕ ПОДОБНО """""; Запрос.УстановитьПараметр("ТабПрайс",ТабПрайс); Запрос.Выполнить(); Так хочется поставить вместо "НЕ ПОДОБНО" знак не равно "<>" , ведь это в разы ускорит отработку запроса . Но... НЕЛЬЗЯ СРАВНИВАТЬ ПОЛЯ НЕОГРАНИЧЕННОЙ ДЛИННЫ И НЕСОВМЕСТИМЫХ ТИПОВ ! Проверяю отладчиком , и там вроде все ок. ТабПрайс.Колонки[КолонкаКод] : ТипЗначения-Строка , Длинна - 20. что может быть не так? |
|||
1
Wobland
08.12.12
✎
12:59
|
поле неограниченной длины может быть не так. следующий!
|
|||
2
Wobland
08.12.12
✎
12:59
|
а длина пишется с двумя Н, только когда она очень длинная
|
|||
3
Рэйв
08.12.12
✎
12:59
|
(1)Что ты такой ехидный стал последнее время?
|
|||
4
Живой Ископаемый
08.12.12
✎
12:59
|
а ТабПрайс какой тип в отладчике?
|
|||
5
Рэйв
08.12.12
✎
13:00
|
(1)Девушки не дают?:-)
|
|||
6
mikecool
08.12.12
✎
13:00
|
используй Выразить
|
|||
7
Wobland
08.12.12
✎
13:00
|
(3) болею
а таблица типизирована, кстати? |
|||
8
Рэйв
08.12.12
✎
13:01
|
(7)Чет долго болеешь:-)...Выздовравливай давай!
|
|||
9
Boudybuilder
08.12.12
✎
13:01
|
(4) ТаблицаЗначений
|
|||
10
Boudybuilder
08.12.12
✎
13:02
|
(3) (5) (7) Разговорчики в строю!!!!!!!!!!!!!!!!
|
|||
11
Wobland
08.12.12
✎
13:02
|
(8) рука не работает, это надолго.
хочу сказать много, а не могу. абыдно, блин ;) |
|||
12
Wobland
08.12.12
✎
13:03
|
(10) а вот на (7) ответь..
|
|||
13
Рэйв
08.12.12
✎
13:03
|
(11)Посмотри на это с другой стороны.
Нацчишься топтать клаву с обеих рук.Помакедонски мля!:-)) |
|||
14
Живой Ископаемый
08.12.12
✎
13:04
|
2(9) И запрос ты строишь тоже к таблицезначений? или к табличной части, в которой нужное тебе поле таки неограниченной длины?
|
|||
15
Живой Ископаемый
08.12.12
✎
13:05
|
а. да...
|
|||
16
Wobland
08.12.12
✎
13:05
|
(14) чо?
ИЗ | &ТабПрайс КАК ТабПрайс |
|||
17
Boudybuilder
08.12.12
✎
13:06
|
ТабПрайс = Новый ТаблицаЗначений;
Потом заполняю... |
|||
18
Wobland
08.12.12
✎
13:07
|
(17) то есть, не типизирована
|
|||
19
Wobland
08.12.12
✎
13:08
|
вот так я типизировал:
ОписаниеЧисла=Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(10, 0, ДопустимыйЗнак.Неотрицательный)); ТЗ=Новый ТаблицаЗначений; ТЗ.Колонки.Добавить("Товар", Новый ОписаниеТипов("СправочникСсылка.Номенклатура")); ТЗ.Колонки.Добавить("ДатаПрихода", Новый ОписаниеТипов("Дата")); ТЗ.Колонки.Добавить("КоличествоПрихода", ОписаниеЧисла); |
|||
20
Рэйв
08.12.12
✎
13:10
|
(19)ОписаниеЧисла
Можно вполне сделать по примеру даты овый ОписаниеТипов("Число") |
|||
21
Рэйв
08.12.12
✎
13:10
|
и строку и булево тоже:-)
|
|||
22
Boudybuilder
08.12.12
✎
13:10
|
(19) Молодчинка!
Но я то прайс читаю , а потом ему задаю где что! Вобще то все там строками должно быть , кроме цены... Вот как она заполняется: ТабПрайс = Новый ТаблицаЗначений; //Скачаем Прайс в таблицу значений Попытка Excel = Новый COMОбъект("Excel.Application"); WB = Excel.Workbooks.Open(Строка.Прайс); WS = WB.Worksheets(1);//указываем номер листа - 1 arr = WS.UsedRange.Value; WB.Close(0); Исключение Предупреждение("Внимание! Файл не открыт."+Символы.ПС+"Попробуйте открыть и пересохранить данный файл программой Эксель."); Возврат; КонецПопытки; //Узнаём данные выходные данные об листе ексель МассивКолонок = arr.Выгрузить(); колКол = МассивКолонок.ВГраница(); колСтр = МассивКолонок.Получить(0).Количество(); // ТабПрайс.Колонки.Добавить("Номер", ,"Номер").Ширина=5; //Добавим новый столбец номер строки Для кол = 0 По колКол Цикл назКолМК = "Колонка"+(кол+2); //Сообщить("наз "+имяКолМК); имяКолМК = назКолМК; //Сообщить("имя "+имяКолМК); ТабПрайс.Колонки.Добавить(назКолМК, Новый ОписаниеТипов("Строка"), имяКолМК).Ширина=20; //имя-колонка1, шапка-КолИмя КонецЦикла; //Вставляем необходимое колличество колонок строк в ТабПоле Для новСтрока = 1 По колСтр Цикл новСтр = ТабПрайс.Добавить(); номСтр = ТабПрайс.Индекс(новСтр); новСтр.Установить(0,номСтр+1); КонецЦикла; //Заполняем ТЗ столбец =1; Для Каждого Колонка Из МассивКолонок Цикл СтолбецИмя = ТабПрайс.Колонки.Получить(столбец).Имя; //Сообщить("-"+СтолбецИмя); ТабПрайс.ЗагрузитьКолонку(Колонка,СтолбецИмя);//табельный номер столбец =столбец+1; КонецЦикла; //Заменим символы в коде Для Каждого Стр ИЗ ТабПрайс Цикл Стр[КолонкаКод] = СокрЛП(СтрЗаменить(Стр[КолонкаКод],Символы.НПП,"")); КонецЦикла; В конце где код , надо менять СимволыНПП , а то ведь всякие пробелы в коде попадаются. |
|||
23
Boudybuilder
08.12.12
✎
13:11
|
Может все таки Выразить?
ВЫРАЗИТЬ(ТабПрайс.Код КАК СТРОКА) КАК Код, как еще задать строке длинну тут? |
|||
24
Wobland
08.12.12
✎
13:12
|
Новый ОписаниеТипов("Строка") - неограниченная ж, не?
|
|||
25
Живой Ископаемый
08.12.12
✎
13:12
|
ой... А почему ты не откроешь Эксель через источники данных, выполнишь к нему запрос, и сразу не выгрузишь в таблицу значений?
|
|||
26
Wobland
08.12.12
✎
13:13
|
(23) подстрока
|
|||
27
Рэйв
08.12.12
✎
13:13
|
(24), там параметр для ограничения. Если не установил, то неограниченая подефолту.
|
|||
28
Wobland
08.12.12
✎
13:13
|
(27) во! я ж сказал (1) ;)
|
|||
29
Рэйв
08.12.12
✎
13:15
|
(28)Имхается мне,вряд ли тс понял, что ты сказать хотел:-)
|
|||
30
Wobland
08.12.12
✎
13:16
|
(29) будет плохо, напрягусь и сгенерирую пример, так ибыть ;)
|
|||
31
Рэйв
08.12.12
✎
13:17
|
ну флаг в руки:-)
|
|||
32
Boudybuilder
08.12.12
✎
13:17
|
(28) Правильно тебе имхается! ))) Ниче не понял.
(25) Потому что пока не умею. Так быстрее считает ? А то ведь при таком заполнении ТЗ 28 000 за 12 секунд. Это вроде много... ??? |
|||
33
Живой Ископаемый
08.12.12
✎
13:20
|
попробуй.
|
|||
34
Boudybuilder
08.12.12
✎
13:22
|
Вобще , очем я тут...
Скачал когда то обработку подключаемую к ТЧ дока ЗаполнениеЦенНоменклатурыКонтрагентов и оттуда по каждому контрагенту заполнял. Каждый док отдельно. Щас тупо в обработке создал ТЗ , в которую добавляю строку , где есть Контрагент , ТипЦены , и путь к прайсу. Настройки по колонкам прайсов предварително уже сохранены . Только путь к прайсу надо поменять и все. Нажал кнопочку ,и по каждому контрагенту создало заполненный док. Но вот с этими запросами... |
|||
35
Wobland
08.12.12
✎
13:22
|
КС=Новый КвалификаторыСтроки(20);
ОграниченнаяСтрока=Новый ОписаниеТипов("Строка", КС); ТЗ=Новый ТаблицаЗначений; ТЗ.Колонки.Добавить("ДатаПрихода", ОграниченнаяСтрока); |
|||
36
Wobland
08.12.12
✎
13:27
|
ТЗ.Колонки.Добавить("ДатаПрихода", Новый ОписаниеТипов("Строка", Новый КвалификаторыСтроки(20)));
|
|||
37
Boudybuilder
08.12.12
✎
13:36
|
(36)
Но ведь когда создается у меня ТабПрайс то я еще не знаю где у меня КолонкаКод , потому сразу не могу задать Тип. |
|||
38
petrowsky
08.12.12
✎
13:59
|
(23) бери ВРАЗИТЬ
ВЫРАЗИТЬ(ТабПрайс.Код КАК СТРОКА(1000)) КАК Код, |
|||
39
Boudybuilder
08.12.12
✎
14:34
|
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ВЫРАЗИТЬ(ТабПрайс."+КолонкаКод+" КАК СТРОКА(250)) КАК Код, | ТабПрайс."+КолонкаЦена+" КАК Цена |ПОМЕСТИТЬ ТабПрайс |ИЗ | &ТабПрайс КАК ТабПрайс |ГДЕ | ТабПрайс."+КолонкаКод+" <> """""; Запрос.УстановитьПараметр("ТабПрайс",ТабПрайс); Все равно то же самое!!!!!!!! |
|||
40
petrowsky
08.12.12
✎
14:46
|
|ГДЕ
| ВЫРАЗИТЬ(ТабПрайс."+КолонкаКод+"КАК СТРОКА(250)) <> """""; а так? |
|||
41
Живой Ископаемый
08.12.12
✎
14:54
|
2(40) пробовал?
|
|||
42
Boudybuilder
08.12.12
✎
14:59
|
О! (40)
|
|||
43
Boudybuilder
08.12.12
✎
17:24
|
Ладно вот некоторые еще непонятки...
Синтаксическая ошибка "КАК" ВЫРАЗИТЬ(ТабПрайс.Колонка10 КАК СТРОКА(100)) <<?>>КАК Колонка10, Что тут может быть не так? |
|||
44
petrowsky
08.12.12
✎
18:14
|
скинь весь код запроса
|
|||
45
Wobland
08.12.12
✎
19:32
|
(43) ничего тут не может быть не так. разве что колонка10 у тебя уже где-то естьЮ но тогда ошибка была бы другой.
раскладка? |
|||
46
Boudybuilder
09.12.12
✎
00:32
|
Запрос = Новый Запрос;
МенеджерВТ = Новый МенеджерВременныхТаблиц; Запрос.МенеджерВременныхТаблиц = МенеджерВТ; Запрос.Текст="ВЫБРАТЬ РАЗРЕШЕННЫЕ | ВЫРАЗИТЬ(ТабПрайс."+КолонкаКод+" КАК СТРОКА(250)) КАК Код, | ВЫРАЗИТЬ(ТабПрайс."+КолонкаЦена+" КАК СТРОКА(25))КАК Цена"+ТекстНал+" |ПОМЕСТИТЬ ТабПрайс |ИЗ | &ТабПрайс КАК ТабПрайс |ГДЕ | ВЫРАЗИТЬ(ТабПрайс."+КолонкаКод+" КАК СТРОКА(250)) <> """""; Запрос.УстановитьПараметр("ТабПрайс",ТабПрайс); Запрос.Выполнить(); Запрос.Текст = "ВЫБРАТЬ | МИНИМУМ(ТабПрайс.Цена) КАК Цена, | НоменклатураКонтрагентов.Номенклатура КАК Номенклатура, | НоменклатураКонтрагентов.ХарактеристикаНоменклатуры"+ТекстНал+" |ИЗ | ТабПрайс КАК ТабПрайс | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НоменклатураКонтрагентов КАК НоменклатураКонтрагентов | ПО ТабПрайс.Код = НоменклатураКонтрагентов.КодНоменклатурыКонтрагента |ГДЕ | НоменклатураКонтрагентов.Контрагент = &Контрагент | |СГРУППИРОВАТЬ ПО | НоменклатураКонтрагентов.Номенклатура, | НоменклатураКонтрагентов.ХарактеристикаНоменклатуры"+ТекстНал+" | |УПОРЯДОЧИТЬ ПО | Номенклатура" ; Запрос.УстановитьПараметр("Контрагент",Строка.Контрагент); |
|||
47
Boudybuilder
09.12.12
✎
00:37
|
А без группировки ошибки нету
Запрос = Новый Запрос; МенеджерВТ = Новый МенеджерВременныхТаблиц; Запрос.МенеджерВременныхТаблиц = МенеджерВТ; Запрос.Текст="ВЫБРАТЬ РАЗРЕШЕННЫЕ | ВЫРАЗИТЬ(ТабПрайс."+КолонкаКод+" КАК СТРОКА(250)) КАК Код, | ВЫРАЗИТЬ(ТабПрайс."+КолонкаЦена+" КАК СТРОКА(25))КАК Цена"+ТекстНал+" |ПОМЕСТИТЬ ТабПрайс |ИЗ | &ТабПрайс КАК ТабПрайс |ГДЕ | ВЫРАЗИТЬ(ТабПрайс."+КолонкаКод+" КАК СТРОКА(250)) <> """""; Запрос.УстановитьПараметр("ТабПрайс",ТабПрайс); Запрос.Выполнить(); Запрос.Текст = "ВЫБРАТЬ | ТабПрайс.Цена КАК Цена, | НоменклатураКонтрагентов.Номенклатура КАК Номенклатура, | НоменклатураКонтрагентов.ХарактеристикаНоменклатуры"+ТекстНал+" |ИЗ | ТабПрайс КАК ТабПрайс | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НоменклатураКонтрагентов КАК НоменклатураКонтрагентов | ПО ТабПрайс.Код = НоменклатураКонтрагентов.КодНоменклатурыКонтрагента |ГДЕ | НоменклатураКонтрагентов.Контрагент = &Контрагент | |УПОРЯДОЧИТЬ ПО | Номенклатура" ; Запрос.УстановитьПараметр("Контрагент",Строка.Контрагент); |
|||
48
Boudybuilder
09.12.12
✎
00:42
|
Группирую потому что в прайсах часто бывают дубли. А регистр не позволит записать док с дублями.
|
|||
49
France
09.12.12
✎
00:48
|
если сыр бор для исключения дублей - Выбрать Различные - не прет?
|
|||
50
Boudybuilder
09.12.12
✎
01:00
|
(49)
"ВЫБРАТЬ | НоменклатураКонтрагентов.Номенклатура КАК Номенклатура, | НоменклатураКонтрагентов.ХарактеристикаНоменклатуры, | ВЗ.Цена"+ТекстНал+" |ИЗ | РегистрСведений.НоменклатураКонтрагентов КАК НоменклатураКонтрагентов | ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | ТабПрайс.Код КАК Код, | МИНИМУМ(ТабПрайс.Цена) КАК Цена | ИЗ | ТабПрайс КАК ТабПрайс | | СГРУППИРОВАТЬ ПО | ТабПрайс.Код) КАК ВЗ | ПО НоменклатураКонтрагентов.КодНоменклатурыКонтрагента = ВЗ.Код |ГДЕ | НоменклатураКонтрагентов.Контрагент = &Контрагент | |УПОРЯДОЧИТЬ ПО | Номенклатура" ; А так ;)??? |
|||
51
Boudybuilder
09.12.12
✎
01:01
|
(49) Модет , но в моем примере показывает минимальную цену в прайсе. Хотя, цены там тоже дублируются, но так... на всякий случай... ;)
|
|||
52
France
09.12.12
✎
01:02
|
ну, да.. код вместо полногонаименования логично..
но все же "Различные" для того и придумали, чтобы дубли исключить) и, чем соединение будет быстрее.. |
|||
53
Boudybuilder
09.12.12
✎
01:06
|
Блин , смотрю если в прайсе цена такого формата 2'180.00
, то мне в ТЧ дока после всего приходит 0 . |
|||
54
Boudybuilder
09.12.12
✎
01:08
|
Сначала в ТЗ делал так к коду :
//Заменим символы в коде Для Каждого Стр ИЗ ТабПрайс Цикл Стр[КолонкаКод] = СокрЛП(СтрЗаменить(Стр[КолонкаКод],Символы.НПП,"")); КонецЦикла; а в запросе к цене : | ВЫРАЗИТЬ(ТабПрайс."+КолонкаЦена+" КАК СТРОКА(25))КАК Цена"+ТекстНал+" может чтото пошаманить и з ценой в ТЗ ? |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |