![]() |
![]() |
![]() |
|
Отбор по типу документа в запросе | ☑ | ||
---|---|---|---|---|
0
Viktor Zull
20.12.06
✎
21:21
|
Уважаемые участники форума, подскажите как можно сделать в запросе (в построителе) отбор по типу документа, но так, чтобы пользователь мог сам выбирать тип.
Например есть запрос: ВЫБРАТЬ Хозрасчетный.Регистратор ИЗ РегистрБухгалтерии.Хозрасчетный КАК Хозрасчетный В качестве регистратора могут выступать документы нескольких типов. Мне извесна конструкция, которая позволяет отобрать данные по типу документа: ВЫБРАТЬ Хозрасчетный.Регистратор ИЗ РегистрБухгалтерии.Хозрасчетный КАК Хозрасчетный ГДЕ Хозрасчетный.Регистратор ССЫЛКА Документ.ПоступлениеТоваровУслуг Но это не динамический отбор. Я пробовал сделать поле с типом значения ОписаниеТипов и передавать выбранное значение как параметр, но так запрос не понимается: ВЫБРАТЬ Хозрасчетный.Регистратор ИЗ РегистрБухгалтерии.Хозрасчетный КАК Хозрасчетный ГДЕ Хозрасчетный.Регистратор ССЫЛКА &СсылкаНаОбъект Сделать поле типа документа тоже не получается: ВЫБРАТЬ Хозрасчетный.Регистратор, ССЫЛКА(Регистратор) //? может по другому надо как-то записывать ... Можно конечно при в ВЫБРАТЬ подставлять конструкцию: ВЫБОР КОГДА Хозрасчетный.Регистратор ССЫЛКА Документ.<...> ТОГДА ... //Строковое значение ИНАЧЕЕСЛИ ... ... ... КОНЕЦ КАК ТипДокумента Но это тоже не универсально, если при дальнейшей разработке расширить список документов для регистратора, придется дописывать новые условия, и отбирать по строковому значению неудобно. Что Вы можете посоветовать? |
|||
1
ТелепатБот
гуру
20.12.06
✎
21:21
|
||||
2
Neco
20.12.06
✎
21:41
|
||||
3
PR
20.12.06
✎
23:31
|
ВЫБОР или спецреквизит в каждом документе
|
|||
4
Genius
20.12.06
✎
23:55
|
(3) Спец реквизит это ты конечно загнул
(0) натравить СтрЗаменить на ТекстЗапроса |
|||
5
PR
21.12.06
✎
00:19
|
Если просто отбор по типу, тогда вообще ТаблицаИсточник.Ссылка ССЫЛКА Документ.ЧегоТоТам.
А вот если нужны группировки, множественные отборы, сортировки и пр., то (3) |
|||
6
Кредит
21.12.06
✎
00:26
|
(5)ВЫБОР КОГДА Ренистратор ССЫЛКА Документ.РТУ ТОГДА РТУ ИНАЧЕ ПТУ КОНЕЦ КАК ТипДока
По полю ТипДока можно группировать, мотреть итоги ... |
|||
7
PR
21.12.06
✎
00:33
|
(6) Да ты че, правда что ли? А (3) ты читал? :)))
|
|||
8
Viktor Zull
21.12.06
✎
11:21
|
(6) Выбором не совсем то что нужно, я же говорил в сообщении (1). При добавлении новых типов документов в составной тип регистратора, в запросе каждый раз придется дописывать новые условия в выборе. К тому же на выходе получается текстовое значение, которое пользователю вводить будет неудобно. Нужно, чтобы пользователь выбирал ТИП документа и поэтому типу документа шла выборка, ВЫБИРАЛ, а не вводил.
В уловии ГДЕ Регистратор.Ссылка ССЫЛКА Документ.ЧеготоТам, также придется добавлять условия при изменении составного типа регистратора. (3) Мысль о добавлении в документ специального реквизита ТипДокумента была, но это уже изменение конфигурации. Интересно, можноли во внешнем отчете, в запросе это продумать. Вопрос тогда такой, можно ли получить поле тип которого ОписаниеТиов в запросе в разделе ВЫБРАТЬ. Нет никакого хитрого способа написать что-то вроде: ВЫБРАТЬ Таблица.Регистратор КАК СамДокумент, ТипЗначения(Таблица.Регистратор) КАК ТипДока ... Тогда ТипДока имел бы тип ОписаниеТипов и при отборе пользователю открывалось окно выбора типов (такое же какое открывается на этапе программирования в конфигураторе при назначении типа реквизитам). Как можно это сделать? Если никак, то просто скажите мне об этом. |
|||
9
Scooter
21.12.06
✎
12:58
|
(8)можно, информации достаточно
(4)п1 +1 |
|||
10
PR
21.12.06
✎
13:03
|
(8) Тогда только допреквизит, думаю
|
|||
11
Scooter
21.12.06
✎
13:08
|
(8) п1 - 1."Состав" поля Регистратор можно определить по метаданным
2.Если нужно выбирать один тип дока тогда на формы ложишь поле выбора, далее (4.2), если несколько то ... непроблема |
|||
12
Viktor Zull
21.12.06
✎
14:20
|
Нужно предусмотреть возможность возможность выбора нескольких документов. Scooter, как сделать? Подскажите как поля Регистратор определить по метаданным. Не совсем ясно.
|
|||
13
Viktor Zull
21.12.06
✎
14:28
|
Я предполагаю, что нужно положить на форму полеввода поле; установить Тип значения как СписокВыбора, а тип значений списка установить ОписаниеТипа.
Тогда как выбранные типы передать в запрос? |
|||
14
Рэйв
21.12.06
✎
14:28
|
на форме список ИМЕНАМИ документов(через метаданные ), который заполняется при открытии.
Запрос.Текст=" ВЫБРАТЬ Хозрасчетный.Регистратор ИЗ РегистрБухгалтерии.Хозрасчетный КАК Хозрасчетный ГДЕ Хозрасчетный.Регистратор ССЫЛКА Документ."+ВыбранноеЗначениеВСписке. |
|||
15
Viktor Zull
21.12.06
✎
14:43
|
А если положить на форму поле ввода; установить тип значения как СписокВыбора, а тип значений списка установить ОписаниеТипа, то конструкция из (14) сработает.
Или мне потом в цикле выбранные значения перебирать и добавлять к тексту запроса используя ИЛИ: ТекстЗапроса = "ВЫБРАТЬ Хозрасчетный.Регистратор ИЗ РегистрБухгалтерии.Хозрасчетный КАК Хозрасчетный ГДЕ"; Для Инд = 0 По ЭлементыФормы.СписокВыбора.Количество()-1 Цикл ТекстЗапроса = ТекстЗапроса + "Хозрасчетный.Регистратор ССЫЛКА Документ."+ ЭлементыФормы.СписокВыбора.Получить[Инд] + "ИЛИ"; КонецЦикла Что-то подобное должно быть? |
|||
16
Viktor Zull
22.12.06
✎
16:43
|
Задача решена. Всем спасибо.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |