Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / [игнор отключен] [закрыт для гостей] / Парамент запроса пуст, значит - любое его значение / 8 сообщений из 8, страница 1 из 1
13.09.2011, 19:41
    #37438878
Багер
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Парамент запроса пуст, значит - любое его значение
Здравствуйте!

Часто в текстах с запросами в стандартных конфигураций встречаются похожие конструкции:
Код: plaintext
1.
2.
3.
...ГДЕ ЗарплатаКВыплатеОрганизаций.Организация = &Организация...
Если Организация.Пустая() Тогда
   Запрос.Текст= СтрЗаменить(Запрос.Текст, "ГДЕ ЗарплатаКВыплатеОрганизаций.Организация = &Организация", "");

т.е. Если Организация в отборе не указана, то убрать её и из текста условий.
Вопрос: Чем это может быть объяснено, т.к. небольшие изменения в условии запроса - выведут из строя весь запрос алгоритмом замены или не произойдёт сама замена, т.к. между "ГДЕ" и "Зарпла..." может появиться " И ".

Почему не целесообразней использовать следующую конструкцию или её аналог:
Код: plaintext
1.
2.
3.
ГДЕ (&Организация = &ПустаяОрганизация ИЛИ ЗарплатаКВыплатеОрганизаций.Организация = &Организация)
Запрос.УстановитьПараметр("ПустаяОрганизация", Справочники.Организации.ПустаяСсылка());
Запрос.УстановитьПараметр("Организация", Организация);

Как убрать параметр ПустаяОрганизация и задать это прямо в тексте запроса?

А может есть ещё более изящные конструкции, типа:
Код: plaintext
1.
2.
3.
ГДЕ  1 = 1 
Если НЕ Организация.Пустая() Тогда
   Запрос.Текст= СтрЗаменить(Запрос.Текст, "1=1", "ЗарплатаКВыплатеОрганизаций.Организация = &Организация");
...
Рейтинг: 0 / 0
13.09.2011, 19:57
    #37438910
Программист 1с
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Парамент запроса пуст, значит - любое его значение
Угу а по производительности сами догадаетесь какой вариант быстрее?

Кстати второй вариант частенько в 11 торговле встречается и помоему в зп.
...
Рейтинг: 0 / 0
13.09.2011, 20:29
    #37438949
AHDP
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Парамент запроса пуст, значит - любое его значение
Похожие, да не совсем. Обычно это связазо с использованием конструкторов запроса. Конструктор не может разобрать текст запроса, если он "составной". А так составил запрос и меняй его дальше в тексте программы...
...
Рейтинг: 0 / 0
13.09.2011, 21:38
    #37439028
Багер
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Парамент запроса пуст, значит - любое его значение
Так-то понятно, чтоб конструктором открывалось, но нельзя же ограничивать конструктор только открытием, запрос и меняться может - вот основная задача, а потом в тексте выискивать почему запрос перестал выдавать адекватные данные...

Да и к тому же, чем конструкция "1=1" или "&Организация = &ПустаяОрганизация" может затормозить выполнение, обращение к БД не происходит, должно бы на уровне парсера отработаться уборка лишних " ИЛИ ", не рабочих " И " и т.д.

Просто "&Организация = &ПустаяОрганизация" - читабельнее, чем то, что в дальнейшем здесь может появиться условие номер один, да и накосячить далее по тексту проще, нумерацию условий перепутать.

Ещё вопрос - "&ПустаяОрганизация" - можно упразднить, написав прямо в запросе что-то типа "&Организация = Справочники.Организации.ПустаяСсылка"?
...
Рейтинг: 0 / 0
14.09.2011, 04:53
    #37439247
AHDP
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Парамент запроса пуст, значит - любое его значение
Этот подход следует использовать только для последующей модификации запроса конструкторм.
Должно быть, логично != есть, реализовано.
Глядя на повсеместно появляющиеся навороты с RLS ваше замечание вполне логично. Но, похоже что там разные авторы.
Только Значение() не забудь. ;) Ах да, зачем параметры сравнивать? :)
...
Рейтинг: 0 / 0
14.09.2011, 22:54
    #37440886
Багер
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Парамент запроса пуст, значит - любое его значение
"&Организация = Значение(Справочники.Организации.ПустаяСсылка)" - это имеется в виду?
...
Рейтинг: 0 / 0
15.09.2011, 09:51
    #37441182
sWinTyz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Парамент запроса пуст, значит - любое его значение
будут отобраны только те строчки , где поле Организация не заполнено
...
Рейтинг: 0 / 0
15.09.2011, 22:09
    #37442570
Багер
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Парамент запроса пуст, значит - любое его значение
Спасибо. Сегодня ещё и в справочных материалах это встретил, а раньше внимания не обращал ))
...
Рейтинг: 0 / 0
Форумы / [игнор отключен] [закрыт для гостей] / Парамент запроса пуст, значит - любое его значение / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]