![]() |
|
v7: Странная работа простого запроса? Не вижу где глюк. | ☑ | ||
---|---|---|---|---|
0
Alexor
06.09.13
✎
11:51
|
Всем привет.
Есть запрос. Запрос=СоздатьОбъект("Запрос"); ТекстЗапроса = "Период с НачДата по КонДата; |Номенклатура = Регистр.ОстаткиТМЦ.Номенклатура; |Док = Регистр.ОстаткиТМЦ.ТекущийДокумент; |Контрагент = Регистр.ОстаткиТМЦ.ТекущийДокумент.ПоступлениеТМЦ.Контрагент; |Количество = Регистр.ОстаткиТМЦ.количество; |Группировка Номенклатура без групп; |Группировка Док; |Функция КолПриход=Приход(Количество); |Условие (Номенклатура В ВыбНоменклатура);"; Запрос = СоздатьОбъект("Запрос"); Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли; Пока Запрос.Группировка("Номенклатура")=1 Цикл Сообщить(Запрос.Номенклатура); Пока Запрос.Группировка("Док")=1 Цикл Сообщить(Запрос.Док); КонецЦикла; КонецЦикла; В группе 6 товаров. Если в ВыбНоменклатура выбираю группу, то выдает все 6 товаров, но по товару1 не показывает документов. Если в ВыбНоменклатура выбираю товар1, то документы показывает. Уже час парюсь понять не могу. Индексы перестроил. Где я ошибся? |
|||
1
Alexor
06.09.13
✎
12:22
|
Хм. Я код не весь привел.
данный отрабатывает нормально. А вот на таком через одну номенклатуру документы не показывает, хотя они есть. Пока Запрос.Группировка("Номенклатура")=1 Цикл Сообщить(Запрос.Номенклатура); Пока Запрос.Группировка("Док")=1 Цикл Если Лев(Запрос.Док.Вид(),6)="Поступ" Тогда Сообщить(Запрос.Док); Прервать; КонецЕсли; КонецЦикла; КонецЦикла; |
|||
2
viktor_vv
06.09.13
✎
12:24
|
А это так надо ?
Сообщить(Запрос.Док); Прервать; !!! |
|||
3
viktor_vv
06.09.13
✎
12:26
|
Попробуй для проверки так
Если Лев(Запрос.Док.Вид(),6)<>"Поступ" Тогда Продолжить; Иначе Сообщить(Запрос.Док); КонецЕсли; |
|||
4
Alexor
06.09.13
✎
12:31
|
Мне надо найти первый документ поступления.
|
|||
5
Толич
06.09.13
✎
12:35
|
Товарищ. В данном участке кода косяков нет.
Посмотри может чуть ранее переменные меняются НачДата, КонДата, ВыбНоменклатура. |
|||
6
Толич
06.09.13
✎
12:37
|
ТИИ делал?
|
|||
7
Alexor
06.09.13
✎
12:38
|
(5) Нет.
У меня выдает Товар0 Док Товар1 Товар2 Док .... Я Товар0 переименовал в товар9 Теперь у меня товар1 Док Товар2 товар3 Док |
|||
8
Alexor
06.09.13
✎
12:38
|
(6) да.
|
|||
9
Толич
06.09.13
✎
12:39
|
(8) Попробуй как в (3) подсказывали.
|
|||
10
Толич
06.09.13
✎
12:40
|
Исключи прервать
|
|||
11
Ёпрст
гуру
06.09.13
✎
12:40
|
выгрузи запрос в ТЗ..
там всё есть хоть ? |
|||
12
Alexor
06.09.13
✎
12:48
|
(11) В ТЗ все есть.
Да и выборка когда без прервать, нормально проходит. |
|||
13
Alexor
06.09.13
✎
12:51
|
Если что:
Gлатформа 7.7.027 DBF Работаю в терминале 2008 сервер. Все лицензия. Дополнительно 1с++ formex есть dbeng пропатчен на работу с файлом более 1 гига. |
|||
14
Alexor
06.09.13
✎
12:57
|
(9) Попробовал. вываливает все.
А мне надо первое поступление. |
|||
15
viktor_vv
06.09.13
✎
13:03
|
А если так, это для проверки
Пока Запрос.Группировка("Док")=1 Цикл // Если Лев(Запрос.Док.Вид(),6)="Поступ" Тогда // Сообщить(Запрос.Док); Прервать; // КонецЕсли; КонецЦикла; номенклатуру пропускает через одну? |
|||
16
Alexor
06.09.13
✎
13:05
|
(15) Не проверял, но думаю номенклатуру не будет пропускать.
Он ее выдает всегда. |
|||
17
Alexor
06.09.13
✎
13:06
|
Переделал на
ТекстЗапроса = "Период с НачДата по КонДата; |Номенклатура = Регистр.ОстаткиТМЦ.Номенклатура; |Док = Регистр.ОстаткиТМЦ.ТекущийДокумент; |Количество = Регистр.ОстаткиТМЦ.количество; |Группировка Номенклатура без групп; |Группировка Док; |Функция КолПриход=Приход(Количество); |Условие (Номенклатура В ВыбНоменклатура); |Условие (Док.Вид()=""ПоступлениеТМЦ"");"; Запрос = СоздатьОбъект("Запрос"); Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли; Пока Запрос.Группировка("Номенклатура")=1 Цикл Сообщить(Запрос.Номенклатура); Если Запрос.Группировка("Док")=1 Тогда Сообщить(Запрос.Док); КонецЕсли; КонецЦикла; Один фиг. |
|||
18
viktor_vv
06.09.13
✎
13:09
|
А отладчик что говорит для (1)? Куда переходит после прервать ?
|
|||
19
Alexor
06.09.13
✎
13:22
|
пока обработку последнего запроса переделал на
Пока Запрос.Группировка("Номенклатура")=1 Цикл Сообщить(Запрос.Номенклатура); Пока Запрос.Группировка("Док")=1 Цикл Если Товар=Запрос.Номенклатура Тогда Иначе Сообщить(Запрос.Док); Товар=Запрос.Номенклатура; КонецЕсли; КонецЦикла; КонецЦикла; |
|||
20
Alexor
06.09.13
✎
13:22
|
Но вообще странно.
(18) попробую посмотреть |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |