Группа: Пользователи
Сообщений: 443
Из: Казахстан
Спасибо сказали: 43 раз
Рейтинг: 43
Добрый вечер , имеется следующий запрос на выборку данных из документа ГПОотгрузка: выборка должна по идее работать в вилке дат- в периоде между ДатаНач и ДатаКон, а на выходе в выборку попадают документы с датой в вилку не попадающие,т.е если пользователь указывает период с 01-10-2014 по 30-10-2014 ,то в выборку лезут данные за ноябрь 2014 года.Подозреваю ,что ,это и-за условия № 3. Как правильно составить этот запрос?
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ |ГПОтгрузка.Ссылка КАК Ссылка, |ГПОтгрузка.НомерВагона КАК НомерВагона, |ГПОтгрузка.ОбъектУчета КАК Город, |ГПОтгрузка.Плательщик КАК Плательщик, |ГПОтгрузка.Получатель КАК Получатель, |ГПОтгрузка.Плательщик.Грп КАК ГруппаКонтрагентов, |ГПОтгрузка.НомерКвитанции, |ГПОтгрузка.ДатаКвитанции, |ГПОтгрузка.НомерВогона КАК НомерЦис, |ГПОтгрузка.ФактЖДРасходы КАК ПровознФакт, |ГПОтгрузка.Дата КАК Дата |ИЗ |Документ.ГПОтгрузка КАК ГПОтгрузка |ГДЕ |ГПОтгрузка.Дата МЕЖДУ &ДатаНач И &ДатаКон";
Если ПустаяСтрока(ВыбГород)=0 тогда Запрос.Текст = Запрос.Текст +" |И (ГПОтгрузка.ОбъектУчета=&Город)"; КонецЕсли;
//условие №3 Если ПустаяСтрока(Плат)=0 тогда Запрос.Текст = Запрос.Текст +" |И (ГПОтгрузка.Плательщик.Грп=&Плател) ИЛИ (ГПОтгрузка.Плательщик.Грп=&Плател1);" КонецЕсли;
Группа: Пользователи
Сообщений: 443
Из: Казахстан
Спасибо сказали: 43 раз
Рейтинг: 43
Расшифровываю : вот это условие (ниже приведённое) выполняется полностью : т.е то выражение -что после "И"- истина и то выражение что после "ИЛИ"-тоже истина.Это условие выполняется ,но в выборку лезут данные , за пределами вилки дат(1-е условие запроса)
|И ((ГПОтгрузка.Плательщик.Грп=&Плател) ИЛИ (ГПОтгрузка.Плательщик.Грп=&Плател1))
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0
Воспроизведите вариант при котором используются все параметры, дойдите отладчиком до места где текст сформировался, и давайте сюда текст запросы который выполняется фактически.
Личные бесплатные консультации не даю, для этого есть форум!
Группа: Пользователи
Сообщений: 443
Из: Казахстан
Спасибо сказали: 43 раз
Рейтинг: 43
Текст запроса,который выполняется фактически: "гнать" запрос начинает,когда выполняется последнее условие.
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ |ГПОтгрузка.Ссылка КАК Ссылка, |ГПОтгрузка.НомерВагона КАК НомерВагона, |ГПОтгрузка.ОбъектУчета КАК Город, |ГПОтгрузка.Плательщик КАК Плательщик, |ГПОтгрузка.Получатель КАК Получатель, |ГПОтгрузка.Плательщик.Грп КАК ГруппаКонтрагентов, |ГПОтгрузка.НомерКвитанции, |ГПОтгрузка.ДатаКвитанции, |ГПОтгрузка.НомерВагона КАК НомерЦис, |ГПОтгрузка.ФактЖДРасходы КАК ПровознФакт, |ГПОтгрузка.Дата КАК Дата |ИЗ |Документ.ГПОтгрузка КАК ГПОтгрузка |ГДЕ |ГПОтгрузка.Дата МЕЖДУ &ДатаНач И &ДатаКон | |И (ГПОтгрузка.ОбъектУчета=&Город) |И (ГПОтгрузка.Плательщик.Грп=&Плател) ИЛИ (ГПОтгрузка.Плательщик.Грп=&Плател1);"
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0
Petre, вот правильно говорит. Вам нужно добиться того, что бы результирующий запрос имел такую последнюю строку:
|И (ГПОтгрузка.Плательщик.Грп=&Плател ИЛИ ГПОтгрузка.Плательщик.Грп=&Плател1);"
В том, варианте что у Вас срабатывает - условие ИЛИ отрабатывает как: ГПОтгрузка.Дата МЕЖДУ &ДатаНач И &ДатаКон И ГПОтгрузка.ОбъектУчета=&Город И ГПОтгрузка.Плательщик.Грп=&Плател ИЛИ ГПОтгрузка.Плательщик.Грп=&Плател1
p.s. и старайтесь не думать о семершном программировании в 8-ке, писать ПустаяСтрока(Плат)=0 считается "не по стандарту" , в 8-ке достаточно написать Если ЗначениеЗаполнено(Плат) Тогда, а так же в запросе не нужно заключать параметры в скобки. Сделайте вот так
|ГПОтгрузка.Дата МЕЖДУ &ДатаНач И &ДатаКон |И ГПОтгрузка.ОбъектУчета=&Город |И (ГПОтгрузка.Плательщик.Грп=&Плател ИЛИ ГПОтгрузка.Плательщик.Грп=&Плател1);"
Сообщение отредактировал logist - 19.12.14, 19:44
Личные бесплатные консультации не даю, для этого есть форум!
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!