|
Ограничение длины строки в запросе | ☑ | ||
|---|---|---|---|---|
|
0
Chubrik
14.09.11
✎
09:33
|
Запрос делается через построитель.
Нужно сделать отбор по виду документа. В поле запроса выбираю вид документа: ТИПЗНАЧЕНИЯ(ДокументОснование) Далее в отборе устанавливаю: ... ОтборПоВидуДокумента = мПостроительОтчета.Отбор.Добавить("ПоВидуДокумента"); ОтборПоВидуДокумента.Использование = ЗначениеЗаполнено(ВидДокумента); ОтборПоВидуДокумента.ВидСравнения = ВидСравнения.Содержит; // Равно не прокатывает, т. к. неогр. строка ОтборПоВидуДокумента.Значение = ВидДокумента; ... ВидДокумента - строка, такая же, как выбирается в запросе. После выполнения мПостроительОтчета.Выполнить() в мПостроительОтчета.Результат записи без учета отбора. Посему вопросы: 1. Почему не срабатывает отбор? 2. ВидДокумента я могу ограничить, скажем, строка(200). Как ограничить это поле (ПоВидуДокумента) в запросе? Сейчас там следующее: ПРЕДСТАВЛЕНИЕ(ЕСТЬNULL(ТИПЗНАЧЕНИЯ(НДС_СчетФактураПолученныйДокументыОснования.ДокументОснование), "")) Функции ПОДСТРОКА и ВЫРАЗИТЬ не работают с функцией как параметром, т. е. ПОДСТРОКА(ПРЕДСТАВЛЕНИЕ... , 1, 200) и ВЫРАЗИТЬ(ПРЕДСТАВЛЕНИЕ... КАК СТРОКА(200)) не работают, или я как-то не так пишу. Help. |
|||
|
1
Axel2009
14.09.11
✎
09:35
|
а без представления и строк?
|
|||
|
2
DmitrO
14.09.11
✎
09:40
|
ТИПЗНАЧЕНИЯ(ДокументОснование) - это вовсе не строка.
Это то что возвращает встроенная функция Тип(). |
|||
|
3
aleks-id
14.09.11
✎
09:40
|
делай через ВЫБОР КОГДА
|
|||
|
4
Chubrik
14.09.11
✎
10:10
|
(3) Каким конкретно образом?
|
|||
|
5
Axel2009
14.09.11
✎
10:21
|
(4) зачем это выражать когда нужно сравнивать одинаковые типы? а не Тип с Строкой??
|
|||
|
6
Chubrik
14.09.11
✎
10:24
|
(1) и (5) Читайте внимательнее описание про поле запроса:
Сейчас там следующее: ПРЕДСТАВЛЕНИЕ(ЕСТЬNULL(ТИПЗНАЧЕНИЯ(НДС_СчетФактураПолученныйДокументыОснования.ДокументОснование), "")) |
|||
|
7
Axel2009
14.09.11
✎
10:26
|
ну так оставить ТИПЗНАЧЕНИЯ(НДС_СчетФактураПолученныйДокументыОснования.ДокументОснование) и сравнивать с ВидДокумента одинаковые типы. не?
|
|||
|
8
aleks-id
14.09.11
✎
10:28
|
(4)
ВЫБОР КОГДА ТИПЗНАЧЕНИЯ(НДС_СчетФактураПолученныйДокументыОснования.ДокументОснование) = ТИП(Документ.Док1) ТОГДА "Док1" КОГДА ТИПЗНАЧЕНИЯ(НДС_СчетФактураПолученныйДокументыОснования.ДокументОснование) = ТИП(Документ.Док2) ТОГДА "Док2" КОНЕЦ |
|||
|
9
Chubrik
14.09.11
✎
10:31
|
(8) Там 14 типов документов. Причем может быть не всегда 14...
Формировать запрос динамически не хочу, да и неправильно это как-то в этой ситуации, должен быть другой выход. (7) Тогда не будет работать ОтборПоВидуДокумента = мПостроительОтчета.Отбор.Добавить("ПоВидуДокумента"); Будет ругаться на недопустимое значение параметра №1. |
|||
|
10
hhhh
14.09.11
✎
10:41
|
(9) да хоть 114. Увольняться то пока не собираешься, поэтому прекращай эти хочу - не хочу. Надо формировать динамически, значит формируй.
|
|||
|
11
Chubrik
14.09.11
✎
10:48
|
(10) Странная реакция на слово "хочу".
Подразумевалось, что так делать концептуально неправильно в данном случае и есть иное решение. А зачем делать абы как, если есть желание и возможность разобраться и сделать, как надо? |
|||
|
12
Chubrik
14.09.11
✎
10:49
|
Интересно, почему перестало работать добавление в отбор после того, как я оставил только функцию ТИПЗНАЧЕНИЯ в поле запроса?
|
|||
|
13
Axel2009
14.09.11
✎
11:34
|
ну попробуй
ОтборПоВидуДокумента.Значение = Строка(ВидДокумента); |
|||
|
14
Chubrik
14.09.11
✎
11:56
|
(13) Не помогло. Но спасибо за участие :)
|
|||
|
15
Axel2009
14.09.11
✎
12:10
|
значит текст в обоих случаях разный
|
|||
|
16
Chubrik
14.09.11
✎
12:20
|
(15) Одинаковый вроде... Сравнивал...
|
|||
|
17
Chubrik
16.09.11
✎
08:24
|
Если кому интересно, решил весьма топорным способом при помощи фильтрации конечного результата, выгруженного в ТЗ. Мне не нравится, но работает.
Также в запросе использовал <Регистр>Обороты.Регистратор ССЫЛКА Документ.<НазваниеДокумента>. |
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |