helpf.pro
Регистрация

Формирование запроса по условию 1С 8

snfr1c
19.05.2011 13:45Прочитано: 13756
Здравствуйте.
У меня в диалоге есть поле с реквизитом, мне необходимо формировать запрос с учетом реквизита при условии что он выбран, если не выбран, то на него не обращать внимания в запросе
в 7.7 писал запрос так
Код 1C v 7.x
  Если РеквизитВДиалоге.Выбран() = 1 Тогда
ТекстЗапроса = ТекстЗапроса + "
|Условие(РеквизитЗапроса = РеквизитДиалога);
|";
КонецЕсли;

а вот в 8.* есть возможность в самом запросе указать выполнени только при условии выбора реквизита. Но к сожалению я не мог найти ни в синтаксе 1С ни в инете пример такого использования.
а выше перечисленную схему, хотелось бы не применять к 8.*
подскажите пример кто знает.
Yandex
Возможно, вас также заинтересует
Реклама на портале
E_Migachev
19.05.2011 14:19Ответ № 1
(0) snfr1c, точно так же *13
Код 1C v 8.х
  ИмяДока = СсылкаНаОбъект.Метаданные().Имя;

Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Ссылка", СсылкаНаОбъект);

ТекстЗапроса = "ВЫБРАТЬ
| Док.НомерСтроки
|ИЗ
| Документ." + ИмяДока + "." + ИмяТабЧасти + " КАК Док
|ГДЕ
| Док.Ссылка = &Ссылка И (";
СтрокаКолонок = "";

Если СсылочныеКолонки <> Неопределено Тогда

Для каждого Колонка Из СсылочныеКолонки Цикл
ТекстЗапроса = ТекстЗапроса + " Док." + Колонка.Ключ + " = &" + Колонка.Ключ + " ИЛИ";
СтрокаКолонок = СтрокаКолонок + Колонка.Ключ + ", ";
Запрос.УстановитьПараметр(Колонка.Ключ, Колонка.Значение);
КонецЦикла;

КонецЕсли;

Для каждого Колонка Из СписокКолонок Цикл
ТекстЗапроса = ТекстЗапроса + " Док." + Колонка + " = 0 ИЛИ";
СтрокаКолонок = СтрокаКолонок + Колонка + ", ";
КонецЦикла;

ТекстЗапроса = СтрЗаменить(ТекстЗапроса, Колонка + " = 0 ИЛИ", Колонка + " = 0)");

Запрос.Текст = ТекстЗапроса;
Результат = Запрос.Выполнить().Выбрать();
IKSparrow
19.05.2011 17:35Ответ № 2
Возьми вообще такую конструкцию ТекстЗапроса = ТекстЗапроса+СекцияУсловия;
В тексте запроса секцию "ГДЕ" оставь пустой. А все условия можешь в текстовом поле реквизита "СекцияУсловия" описать. )
RuslanAbiev
28.09.2013 23:43Ответ № 3
ТекстЗапроса =
Код 1C v 8.х
 "ВЫБРАТЬ
| Док.НомерСтроки
|ИЗ
| Документ." + ИмяДока + "." + ИмяТабЧасти + " КАК Док
|ГДЕ
| Док.Ссылка = &Ссылка ИЛИ &Ссылка = Значение(Документ.РеализацияТоваровУслуг.ПустаяСсылка)";

Изменено 28.09.13 23:49:05
Подсказка: Для быстрого поиска ответов - используйте 'Поиск'
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.