|
v7: Ошибка в простом запросе | ☑ | ||
---|---|---|---|---|
0
bas28000
05.10.12
✎
10:22
|
ТекстЗапроса =
"//{{ЗАПРОС(Сформировать) |СтатусВМС = Справочник.СтатусВМС.ТекущийЭлемент; |Группировка СтатусВМС; |Условие(СтатусВМС.СтатусВМС <> 2); |Условие(СтатусВМС.Документ.ДатаДок >= ДатаНачала); |Условие(СтатусВМС.Документ.ДатаДок <= ДатаКонец); |"//}}ЗАПРОС Ругается вот так: Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда {C:\DOCUMENTS AND SETTINGS\S.BELICHENKO\РАБОЧИЙ СТОЛ\TEMP.ERT(27)}: Условие(СтатусВМС. <<?>> Документ.ДатаДок >= ДатаНачала); Запрос[5] : Ожидается имя переменной или ее составляющая перед 'Документ' Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда {C:\DOCUMENTS AND SETTINGS\S.BELICHENKO\РАБОЧИЙ СТОЛ\TEMP.ERT(27)}: Условие(СтатусВМС.Документ.ДатаДок <= ДатаКонец <<?>> ); Запрос[6] : Ошибка в условии Подскажите, в чем проблема? Редко работаю с запросами, совершенно не понимаю, что ему не нравится. Реквизит "документ" конечно же у справочника есть. |
|||
1
ДенисЧ
05.10.12
✎
10:23
|
Условие(СтатусВМС.Документ.ДатаДок >= ДатаНачала);
так нельзя в 77 писать. Это не снеговик. |
|||
2
Нуф-Нуф
05.10.12
✎
10:23
|
переходите на 8ку
|
|||
3
bas28000
05.10.12
✎
10:25
|
(2) Спасибо, уже который год "начальство думает".
(1) Поясните, я понял что так нельзя писать, но почему тогда не ругается на предыдущее условие? |
|||
4
Sh1ko
05.10.12
✎
10:25
|
ДатаД = Справочник.СтатусВМС.Документ.ДатаДок
Условие(СДатаД >= ДатаНачала) |
|||
5
Sh1ko
05.10.12
✎
10:26
|
короче через переменную в запросе
|
|||
6
Sh1ko
05.10.12
✎
10:26
|
Можно еще через функцию извратиться
|
|||
7
Sh1ko
05.10.12
✎
10:26
|
А (2) не слушай, 8-ка сырая еще
|
|||
8
bas28000
05.10.12
✎
10:30
|
(4) А, то есть когда один уровень вложения, как в "|Условие(СтатусВМС.СтатусВМС <> 2);", то так можно, а два - уже перебор, верно?
|
|||
9
bas28000
05.10.12
✎
10:31
|
(7) Восьмерку уже под Андроид и АйОС можно использовать, а мы тут все с поделками из нулевых мучаемся :)
|
|||
10
bas28000
05.10.12
✎
10:45
|
А, ребят, еще вопрос: если пустые даты, то запрос ничего не выводит - как обычно это решается?
|
|||
11
Sh1ko
05.10.12
✎
10:51
|
(10)
Если пустоеЗначение(начдата)=0 Тогда Текстзапроса = текстЗапроса+" |Условие ... |
|||
12
bas28000
05.10.12
✎
11:11
|
Теперь другая проблема. Вот такой код:
ТекстЗапроса = "//{{ЗАПРОС(Сформировать) |СтатусВМС = Справочник.СтатусВМС.ТекущийЭлемент; |ДатаД = Справочник.СтатусВМС.Документ.ДатаДок; |Группировка СтатусВМС; |Условие(СтатусВМС.СтатусВМС <> 2); |Условие((ДатаД <= ДатаКонец) И (ДатаД >= ДатаНачала)); |"//}}ЗАПРОС Как и такой: ТекстЗапроса = "//{{ЗАПРОС(Сформировать) |СтатусВМС = Справочник.СтатусВМС.ТекущийЭлемент; |ДатаД = Справочник.СтатусВМС.Документ.ДатаДок; |Группировка СтатусВМС; |Условие(СтатусВМС.СтатусВМС <> 2); |Условие(ДатаД >= ДатаНачала); |Условие(ДатаД <= ДатаКонец); |"//}}ЗАПРОС работать не хочет. Зато хочет такой: ТекстЗапроса = "//{{ЗАПРОС(Сформировать) |СтатусВМС = Справочник.СтатусВМС.ТекущийЭлемент; |ДатаД = Справочник.СтатусВМС.Документ.ДатаДок; |Группировка СтатусВМС; |Условие(СтатусВМС.СтатусВМС <> 2); |Условие(ДатаД <= ДатаКонец); |"//}}ЗАПРОС В чем причина, не подскажете? |
|||
13
Эльниньо
05.10.12
✎
11:13
|
(7) К какому релизу испечется? К 8.8?
|
|||
14
Иоканаан
05.10.12
✎
11:21
|
(12) Такое условие:
Условие((ДатаД <= ДатаКонец) И (ДатаД >= ДатаНачала)); выглядить странновато. Я бы написал, например, так: Условие((ДатаД <= ДатаКонец) И (ДатаД > ДатаНачала)); |
|||
15
bas28000
05.10.12
✎
11:29
|
(14) Или я тупой, или в таком случае когда ДатаНачала=ДатаКонец будет пустота в запросе? А если человек периодом день выбирает?
|
|||
16
Иоканаан
05.10.12
✎
11:34
|
(15)А где он выбирает период? Вот и указал бы
Период С ДатаНачала По ДатаКонец; С заданием таким заданием условия, когда дата может быть равна одновременно и ДатаНачала, и ДатаКонец, я не сталкивался, поэтому лишь предполагаю здесь наличие ошибки компиляции при исполнении запроса. |
|||
17
bas28000
05.10.12
✎
11:36
|
(16)
В том-то и дело что "Период С ДатаНачала По ДатаКонец;" использовать не получится, выбирается-то справочник, у которого есть реквизит "Документ", и вот по датам этих документов и надо выбирать элементы справочника. |
|||
18
1Сергей
05.10.12
✎
11:41
|
|Группировка СтатусВМС Без Групп;
не? |
|||
19
Boroda
05.10.12
✎
11:43
|
Может попробовать так? :
Сперва делаем запрос по документам за нужный период. Эти документы переносим в список, а потом уже пробуем вот так: |Условие(СтатусВМС.Документ в спДок); И еще вопрос, реквизит "Документ" у справочника определенного вида? |
|||
20
bas28000
05.10.12
✎
12:07
|
(18) Не помогло.
(19) нет, просто вида документ. Попробую сейчас сделать второй запрос, да, просто переходить к варианту когда выбирается весь справочник и потом в цикле колбасится по условию совсем не хочется - тогда вкуснота запроса пропадает - время выполнения будет всегда одинаковое. |
|||
21
bas28000
05.10.12
✎
12:14
|
+(20) А как именно может влиять тот факт, что реквизит "Документ" вида "Документ", а не какого-то определенного? Ведь запрос срабатывает когда условие "|Условие(ДатаД <= ДатаКонец);", и перестает работать только когда появляется второе условие "(ДатаД > ДатаНачала)" выборка оказывается пустой.
|
|||
22
1Сергей
05.10.12
✎
12:18
|
(21) ты знаешь что реквизит ДатаДок есть у всех видов документов, а машина этого не знает
|
|||
23
Иоканаан
05.10.12
✎
12:18
|
(20)Я попытался наиграть Вашу ситуацию, но только у меня поле справочника "Документ" имеет тип конкретного документа: первый Ваш вариант в (12) прекрасно работает, т. е. запрос выполняется без ошибок. Быть может, действительно дело в типе поля справочника.
|
|||
24
bas28000
05.10.12
✎
12:20
|
(22)(23) Тогда я в очередной раз посылаю лучи ненависти разработчикам 1С в их далекий какой-то там год. Ладно, буду перебирать в цикле, судя по всему.
|
|||
25
1Сергей
05.10.12
✎
12:22
|
ТекстЗапроса =
"//{{ЗАПРОС(Сформировать) |Период с НачДата по КонДата; |Документ = Справочник.СтатусВМС.Документ; |СтатусВМС = Справочник.СтатусВМС.ТекущийЭлемент; |Группировка Документ; |
|||
26
bas28000
05.10.12
✎
12:23
|
(25) А это мысль, сейчас попробую.
|
|||
27
bas28000
05.10.12
✎
12:35
|
+(26) Условие "|Период с НачДата по КонДата;" не заработало, в таком виде:
ТекстЗапроса = "//{{ЗАПРОС(Сформировать) |Период с ДатаНачала по ДатаКонец; |Накладная = Справочник.СтатусВМС.Документ; |СтатусВМС = Справочник.СтатусВМС.ТекущийЭлемент; |Группировка Накладная; |Условие(СтатусВМС.СтатусВМС <> 2); |"//}}ЗАПРОС просто выбираются все элементы справочника. Зато заработало вот так: ТекстЗапроса = "//{{ЗАПРОС(Сформировать) |Накладная = Справочник.СтатусВМС.Документ; |СтатусВМС = Справочник.СтатусВМС.ТекущийЭлемент; |Группировка Накладная; |Условие(Накладная.ДатаДок <= ДатаКонец); |Условие(Накладная.ДатаДок >= ДатаНачала); |Условие(СтатусВМС.СтатусВМС <> 2); |"//}}ЗАПРОС Чудны дела твои, Господи. |
|||
28
bas28000
05.10.12
✎
12:35
|
Да, и всем спасибо.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |