Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 10:26

Как сравнить Типы Значений в запросе?

Автор barabambler, 30 сен 2016, 11:49

0 Пользователей и 1 гость просматривают эту тему.

barabambler

В платформе версии 8.2 в запросе стоит условие:

ГДЕ ТипЗначения(Регистратор) В (&ТипыДокументов)
параметр "ТипыДокументов" - это список значений из типов документов-регистраторов.

В платформе версии 8.1 запрос не работает, я так понимаю, что функция "ТипЗначения" еще не была реализована, так как же прописать подобное условие в 8.1?

LexaK

попробуйте такой метод


Где
    Регистратор Ссылка Документ.РеализацияТоваровУслуг
//при необходимости отбора по нескольким типам
//или Регистратор Ссылка Документ.ПоступлениеТоваровУслуг
//и т.д.
если помогло нажмите: Спасибо!

barabambler

Цитата: LexaK от 30 сен 2016, 11:58
попробуйте такой метод


Где
    Регистратор Ссылка Документ.РеализацияТоваровУслуг
//при необходимости отбора по нескольким типам
//или Регистратор Ссылка Документ.ПоступлениеТоваровУслуг
//и т.д.


Поможет, если список фиксированный, у меня же он динамический - пользователь флагами выбирает нужные документы-регистраторы и по ним формирует движения. Я так понимаю можно как-то применить функцию "Выразить", но я не пойму как ею пользоваться, может кто подскажет?

ilyay

ВЫРАЗИТЬ преобразует значение поля к нужному типу. Не подойдет.

Может быть "ТипЗНч(Регистратор) = Тип(вашТип)" или даже "В (Тип(первый тип), Тип(второй тип))"

LexaK

ну вы как будто первый раз 1С видите!
любую конфигурацию открываете и там куча примеров динамического формирования условия запроса
вот как это выглядит на примере
Есть ТЗ где галочками отмечены ваши виды документов


//ваш запрос
Запрос.Текст = "
    |Выбрать
    |...
    |Где
    |   0 = 1
";
//тзВидыДокументов  - ваша ТЗ с отмеченными видами документов
//колонки
//Отметка - (булево) там где пользователь галочки поставил
//ВидДокумента - (строка) вид документа, напр. РеализацияТоваровУслуг
Для каждого лкСтр Из тзВидыДокументов Цикл

Если лкСтр.Отметка Тогда
Запрос.Текст = СтрЗаменить(Запрос.Текст, "0 = 1", "0 = 1 или Регистратор Ссылка Документ." + лкСтр.ВидДокумента);
КонецЕсли;

КонецЦикла;

лкРезультат = Запрос.Выполнить().Выгрузить();



такой фокус точно на 8.1 работает, сам помню когда-то делал так.
если помогло нажмите: Спасибо!

barabambler

О! Попробую обязательно. Я эту проверку реализовал в обходе результата запроса, но хочется в самом запросе.
Заранее спасибо!

Afinogen

Добавьте в таблицу из которой пользователь выбирает документы скрытую колонку, в которую инициализируйте при открытии формы "хвосты" текста запроса в формате "Документ.ИмяДокумента"
Запрос переделайте следующим образом
Запрос = Новый Запрос
Запрос.Текст = "Выбрать
|текст запроса
| ГДЕ "+Условие;

Перед тем как запустить запрос просто формируйте строку условия

Для Каждого Стр ИЗ ТаблицаСДокументами Цикл
    Условие = Условие +?(ЗначениеЗаполнено(Условие),""," ИЛИ ")+" Регистратор ССЫЛКА "+Стр.ИмяСкрытойКолонки
КонецЦикла
;)


barabambler

Да! Получилось, всем по спасибке :ooifh:

Теги: #1С 8.2 #1С 8.1 

Похожие темы (5)

Рейтинг@Mail.ru

Поиск