Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Как правильно составить параметризованный запрос?          
andrew76 Подменю пользователя
сообщение 17.12.14, 15:53
Сообщение #1

Оратор
*****
Группа: Пользователи
Сообщений: 443
Из: Казахстан
Спасибо сказали: 43 раз
Рейтинг: 43

Добрый вечер ,
имеется следующий запрос на выборку данных из документа ГПОотгрузка:
выборка должна по идее работать в вилке дат- в периоде между ДатаНач и ДатаКон,
а на выходе в выборку попадают документы с датой в вилку не попадающие,т.е
если пользователь указывает период с 01-10-2014 по 30-10-2014 ,то в выборку лезут
данные за ноябрь 2014 года.Подозреваю ,что ,это и-за условия № 3.
Как правильно составить этот запрос?

Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
  |ГПОтгрузка.Ссылка КАК Ссылка,
  |ГПОтгрузка.НомерВагона КАК НомерВагона,
  |ГПОтгрузка.ОбъектУчета КАК Город,
  |ГПОтгрузка.Плательщик КАК Плательщик,
  |ГПОтгрузка.Получатель КАК Получатель,
  |ГПОтгрузка.Плательщик.Грп КАК ГруппаКонтрагентов,
  |ГПОтгрузка.НомерКвитанции,
  |ГПОтгрузка.ДатаКвитанции,
  |ГПОтгрузка.НомерВогона КАК НомерЦис,
  |ГПОтгрузка.ФактЖДРасходы КАК ПровознФакт,
  |ГПОтгрузка.Дата КАК Дата
  |ИЗ
  |Документ.ГПОтгрузка КАК ГПОтгрузка
  |ГДЕ
  |ГПОтгрузка.Дата МЕЖДУ &ДатаНач И &ДатаКон";
                  

Если ПустаяСтрока(ВыбГород)=0 тогда
     Запрос.Текст = Запрос.Текст +"
     |И (ГПОтгрузка.ОбъектУчета=&Город)";  
КонецЕсли;                      

//условие №3
Если ПустаяСтрока(Плат)=0 тогда
     Запрос.Текст = Запрос.Текст +"
     |И (ГПОтгрузка.Плательщик.Грп=&Плател) ИЛИ (ГПОтгрузка.Плательщик.Грп=&Плател1);"
КонецЕсли;



 ! 

Правила, п.4,5
 


Сообщение отредактировал Vofka - 22.12.14, 8:56

stark Подменю пользователя
сообщение 17.12.14, 15:59
Сообщение #2

Говорящий
***
Группа: Пользователи
Сообщений: 58
Из: Киев
Спасибо сказали: 7 раз
Рейтинг: 0

здесь
|И ((ГПОтгрузка.Плательщик.Грп=&Плател) ИЛИ (ГПОтгрузка.Плательщик.Грп=&Плател1));"

andrew76 Подменю пользователя
сообщение 17.12.14, 17:40
Сообщение #3

Оратор
*****
Группа: Пользователи
Сообщений: 443
Из: Казахстан
Спасибо сказали: 43 раз
Рейтинг: 43

не совсем понял-что не так в условии №3 запроса?

Petre Подменю пользователя
сообщение 17.12.14, 18:07
Сообщение #4

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2905
Из: Київ, Україна
Спасибо сказали: 1147 раз
Рейтинг: 1228.9

Проверьте в табло:

Ложь И (Ложь Или Истина)

и

Ложь И Ложь Или Истина


Signature
Допрацьовую:
- "Бухгалтерія для України 2.1";
- "Альфа-Авто: Автосалон+Автосервіс+Автозапчастини, українська версія".

Спасибо сказали: andrew76,

andrew76 Подменю пользователя
сообщение 18.12.14, 16:06
Сообщение #5

Оратор
*****
Группа: Пользователи
Сообщений: 443
Из: Казахстан
Спасибо сказали: 43 раз
Рейтинг: 43

Проверил -выполняются оба условия, но тогда не выполняется условие по датам.
Что делать - не знаю.
|И ((ГПОтгрузка.Плательщик.Грп=&Плател) ИЛИ (ГПОтгрузка.Плательщик.Грп=&Плател1))


Сообщение отредактировал Vofka - 22.12.14, 8:57

Petre Подменю пользователя
сообщение 18.12.14, 17:29
Сообщение #6

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2905
Из: Київ, Україна
Спасибо сказали: 1147 раз
Рейтинг: 1228.9

Цитата(andrew76 @ 18.12.14, 16:06) *
Проверил -выполняются оба условия, но тогда не выполняется условие по датам.
Что делать - не знаю.

Ничего не понятно. Расшифруйте.


Signature
Допрацьовую:
- "Бухгалтерія для України 2.1";
- "Альфа-Авто: Автосалон+Автосервіс+Автозапчастини, українська версія".

andrew76 Подменю пользователя
сообщение 19.12.14, 16:04
Сообщение #7

Оратор
*****
Группа: Пользователи
Сообщений: 443
Из: Казахстан
Спасибо сказали: 43 раз
Рейтинг: 43

Расшифровываю :
вот это условие (ниже приведённое) выполняется полностью : т.е то выражение -что после "И"- истина и то выражение что после "ИЛИ"-тоже истина.Это условие выполняется ,но в выборку лезут данные , за пределами
вилки дат(1-е условие запроса)

|И ((ГПОтгрузка.Плательщик.Грп=&Плател) ИЛИ (ГПОтгрузка.Плательщик.Грп=&Плател1))


Сообщение отредактировал Vofka - 22.12.14, 8:57

logist Подменю пользователя
сообщение 19.12.14, 16:12
Сообщение #8

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Воспроизведите вариант при котором используются все параметры, дойдите отладчиком до места где текст сформировался, и давайте сюда текст запросы который выполняется фактически.


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Petre Подменю пользователя
сообщение 19.12.14, 16:33
Сообщение #9

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2905
Из: Київ, Україна
Спасибо сказали: 1147 раз
Рейтинг: 1228.9

И еще раз внимательно перепроверьте какие даты передаете параметрами в запрос. Можно даже сделать скрин табло со всеми параметрами запроса.


Signature
Допрацьовую:
- "Бухгалтерія для України 2.1";
- "Альфа-Авто: Автосалон+Автосервіс+Автозапчастини, українська версія".

andrew76 Подменю пользователя
сообщение 19.12.14, 17:14
Сообщение #10

Оратор
*****
Группа: Пользователи
Сообщений: 443
Из: Казахстан
Спасибо сказали: 43 раз
Рейтинг: 43

Текст запроса,который выполняется фактически:
"гнать" запрос начинает,когда выполняется последнее условие.

Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
  |ГПОтгрузка.Ссылка КАК Ссылка,
  |ГПОтгрузка.НомерВагона КАК НомерВагона,
  |ГПОтгрузка.ОбъектУчета КАК Город,
  |ГПОтгрузка.Плательщик КАК Плательщик,
  |ГПОтгрузка.Получатель КАК Получатель,
  |ГПОтгрузка.Плательщик.Грп КАК ГруппаКонтрагентов,
  |ГПОтгрузка.НомерКвитанции,
  |ГПОтгрузка.ДатаКвитанции,
  |ГПОтгрузка.НомерВагона КАК НомерЦис,
  |ГПОтгрузка.ФактЖДРасходы КАК ПровознФакт,
  |ГПОтгрузка.Дата КАК Дата
  |ИЗ
  |Документ.ГПОтгрузка КАК ГПОтгрузка
  |ГДЕ
  |ГПОтгрузка.Дата МЕЖДУ &ДатаНач И &ДатаКон
  |                
  |И (ГПОтгрузка.ОбъектУчета=&Город)  
  |И (ГПОтгрузка.Плательщик.Грп=&Плател) ИЛИ (ГПОтгрузка.Плательщик.Грп=&Плател1);"


Сообщение отредактировал Vofka - 22.12.14, 8:58

Petre Подменю пользователя
сообщение 19.12.14, 17:29
Сообщение #11

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2905
Из: Київ, Україна
Спасибо сказали: 1147 раз
Рейтинг: 1228.9

Вам же не один раз сказали вложить т. н. последнее условие в скобки.
Не
И (ГПОтгрузка.Плательщик.Грп=&Плател) ИЛИ (ГПОтгрузка.Плательщик.Грп=&Плател1)

а
И ((ГПОтгрузка.Плательщик.Грп=&Плател) ИЛИ (ГПОтгрузка.Плательщик.Грп=&Плател1))


Signature
Допрацьовую:
- "Бухгалтерія для України 2.1";
- "Альфа-Авто: Автосалон+Автосервіс+Автозапчастини, українська версія".

logist Подменю пользователя
сообщение 19.12.14, 19:44
Сообщение #12

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Petre, вот правильно говорит. Вам нужно добиться того, что бы результирующий запрос имел такую последнюю строку:
|И (ГПОтгрузка.Плательщик.Грп=&Плател ИЛИ ГПОтгрузка.Плательщик.Грп=&Плател1);"

В том, варианте что у Вас срабатывает - условие ИЛИ отрабатывает как:
ГПОтгрузка.Дата МЕЖДУ &ДатаНач И &ДатаКон И ГПОтгрузка.ОбъектУчета=&Город И ГПОтгрузка.Плательщик.Грп=&Плател
ИЛИ
ГПОтгрузка.Плательщик.Грп=&Плател1

p.s. и старайтесь не думать о семершном программировании в 8-ке, писать ПустаяСтрока(Плат)=0 считается "не по стандарту" smile.gif, в 8-ке достаточно написать Если ЗначениеЗаполнено(Плат) Тогда, а так же в запросе не нужно заключать параметры в скобки.
Сделайте вот так
  |ГПОтгрузка.Дата МЕЖДУ &ДатаНач И &ДатаКон
  |И ГПОтгрузка.ОбъектУчета=&Город
  |И (ГПОтгрузка.Плательщик.Грп=&Плател ИЛИ ГПОтгрузка.Плательщик.Грп=&Плател1);"


Сообщение отредактировал logist - 19.12.14, 19:44


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Спасибо сказали: andrew76,

andrew76 Подменю пользователя
сообщение 20.12.14, 4:49
Сообщение #13

Оратор
*****
Группа: Пользователи
Сообщений: 443
Из: Казахстан
Спасибо сказали: 43 раз
Рейтинг: 43

Спасибо за советы,о результатах напишу в понедельник.

andrew76 Подменю пользователя
сообщение 22.12.14, 15:13
Сообщение #14

Оратор
*****
Группа: Пользователи
Сообщений: 443
Из: Казахстан
Спасибо сказали: 43 раз
Рейтинг: 43

Всё работает ! Дякую , паны добродии ! .«Пальцы нажал».

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 25.04.24, 1:15
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!