|
v7: Подскажите, почему в запросе не выполняется условие | ☑ | ||
---|---|---|---|---|
0
msk-07
08.10.13
✎
19:18
|
Пишу док, в который заполнялись бы все документы перемещения с одного склада на склад....Уже весь мозг себе вынес
Вот код. Процедура Сформировать() Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = "//{{ЗАПРОС(Сформировать) |Период с НачПериода по КонПериода; |Обрабатывать НеПомеченныеНаУдаление; |ТМЦ = Документ.ПеремещениеТМЦ.Номенклатура; |СклОтпр = Документ.ПеремещениеТМЦ.Склад; |СклПолуч = Документ.ПеремещениеТМЦ.СкладПолучатель; |КолВо = Документ.ПеремещениеТМЦ.Количество; |Функция Кол = Сумма(Кво); |Группировка ТМЦ без групп; // |Условие (СклОтпр = СкладОтпр); |Условие(СклПолуч = СкладПолуч); |";//}}ЗАПРОС Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли; Пока Запрос.Группировка(1) = 1 Цикл НоваяСтрока(); ТМЦ = Запрос.ТМЦ; КолПринял = Запрос.Кол; КонецЦикла; КонецПроцедуры |
|||
1
msk-07
08.10.13
✎
19:19
|
Не могу понять когда два условия, то ни чего не выводится. Но мне именно нужно выполнения двух условий не иначе
|
|||
2
KishMish
08.10.13
✎
19:24
|
|КолВо = Документ.ПеремещениеТМЦ.Количество;
|Функция Кол = Сумма(Кво); кво и колво |
|||
3
KishMish
08.10.13
✎
19:27
|
СкладОтпр и СкладПолуч точно не группы? точно заполнены, точно есть такие докумнты? с такими складами?
|
|||
4
msk-07
08.10.13
✎
19:32
|
Да в том то и дело что есть.
(2) да это я уже здесь такой касяк дал., к коде все нормально написано Не понимаю почему при выполнении двух условий не выполняется запрос, да и когда |Условие (СклОтпр = СкладОтпр); это условие раскоментировано, а Условие(СклПолуч = СкладПолуч); раскоментировано, то тоже ни чего не срабатывает. |
|||
5
KishMish
08.10.13
✎
19:41
|
|Условие ((СклОтпр = СкладОтпр) и(СклПолуч = СкладПолуч)) ;
попробуй так попроубй сравнение черз внешнюю функцию сделать типа так Функция РавнылиСклады(Скл1,Скл2) Если Скл1=Скл2 Тогда Возврат 1 Инаече Сообщить(""+Скл1+" "+Скл2); Возврат 0 КонеФункции |Условие (РавнылиСклады(СклОтпр ,СкладОтпр)) ; |Условие (РавнылиСклады(СклПолуч ,СкладПолуч)) ; |
|||
6
KishMish
08.10.13
✎
19:42
|
+(5)
|Условие (РавнылиСклады(СклОтпр ,СкладОтпр)=1) ; |Условие (РавнылиСклады(СклПолуч ,СкладПолуч)=1) ; |
|||
7
msk-07
08.10.13
✎
19:43
|
(5)
пробывал ни фига |Условие ((СклОтпр = СкладОтпр) и(СклПолуч = СкладПолуч)) ; |
|||
8
KishMish
08.10.13
✎
19:45
|
все таки проверь значения скадов в документе и переменных /реквизитов с которыми сравниваешь.
|
|||
9
zak555
08.10.13
✎
19:45
|
|Условие ((СклОтпр = СкладОтпр) ИЛИ (СклПолуч = СкладПолуч)) ;
|
|||
10
zak555
08.10.13
✎
19:45
|
фигню сморозил =)
|
|||
11
Zmich
08.10.13
✎
19:55
|
Может, нужный документ не проведен? Попробуй в текст запроса
|ОбрабатыватьДокументы Все; |
|||
12
КонецЦикла
08.10.13
✎
20:10
|
СкладПолуч - что это?
Какой тип вид у него и у реквизита СкладПолучатель? |
|||
13
msk-07
08.10.13
✎
22:22
|
(12) Справочник.склады...Сейчас отладчиком хочу еще раз пройтись
|
|||
14
msk-07
08.10.13
✎
22:46
|
(11) Да нет, все доки проведены, я же по отчету смотрю перемещение
|
|||
15
msk-07
08.10.13
✎
22:48
|
он не те склады вообще видит...тогда не понятно что он берет в запрос
|
|||
16
КонецЦикла
08.10.13
✎
23:16
|
СкладПолуч - реквизит на форме или что?
|
|||
17
msk-07
08.10.13
✎
23:23
|
Реквизит на форме, да. Типа справочник.склады
|
|||
18
msk-07
08.10.13
✎
23:26
|
он не видит именно когда идет условие на склад-отправитель
|
|||
19
msk-07
08.10.13
✎
23:34
|
моет есть у кого идеи?
|
|||
20
m-serg74
08.10.13
✎
23:37
|
(19) идей може т быть много только фиг знает что на самом деле у тебя и что ты здесь пишешь, если судя по (4)
/да это я уже здесь такой касяк дал/ хрен знает каких еще касяков ты здесь и там понаделал |
|||
21
m-serg74
08.10.13
✎
23:38
|
(19) кстати для 7ки тоже есть консоли проверь на ней
|
|||
22
KishMish
09.10.13
✎
07:55
|
давай весь код. может где обнуляешь переменные...
|
|||
23
msk-07
10.10.13
✎
10:22
|
(22) вот весь код в модуле формы
ункция ЗаголовокФормы() Перем Заголовок, Название; Заголовок = глНазваниеДокументаВЖурнале(Контекст); Название = Заголовок+" №"; Если Выбран() = 1 Тогда Если Проведен() = 1 Тогда Заголовок = Заголовок + ". Проведен"; Иначе Заголовок = Заголовок + ". Не проведен"; КонецЕсли; Иначе Заголовок = Заголовок + ". Новый"; КонецЕсли; Форма.Заголовок(Заголовок); Возврат Название; КонецФункции //_______________________________________________________________________________________________________________________ Процедура Сформировать() Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = "//{{ЗАПРОС(Сформировать) |Период с НачПериода по КонПериода; |Обрабатывать НеПомеченныеНаУдаление; |СклОтпр = Документ.ПеремещениеТМЦ.Склад; |СклПолуч = Документ.ПеремещениеТМЦ.СкладПолучатель; |ТМЦ = Документ.ПеремещениеТМЦ.Номенклатура; |КолВо = Документ.ПеремещениеТМЦ.Количество; |Функция Кол = Сумма(КолВо); |Группировка ТМЦ без групп; |Группировка СклОтпр; |Группировка СклПолуч; // |Условие (СклПолуч = СкладПолуч); |Условие (СклОтпр= СкладОтпр); |";//}}ЗАПРОС Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли; Пока Запрос.Группировка(1) = 1 Цикл НоваяСтрока(); ТМЦ = Запрос.ТМЦ; КвоПринял = Запрос.Кол; Сообщить(Запрос.СклОтпр); КонецЦикла; КонецПроцедуры //_______________________________________________________________________________________________________________________ Процедура ЗаполнитьТаблицуДокументов() Если (ПустоеЗначение(НачПериода) = 1) Или (ПустоеЗначение(КонПериода) = 1) Или (НачПериода > КонПериода) Тогда Предупреждение("Неправильно указан период отбора документов!"); Возврат; КонецЕсли; Если ПустоеЗначение(СкладОтпр) = 1 Тогда Предупреждение("Не выбран склад отправитель!"); Возврат; КонецЕсли; Если ПустоеЗначение(СкладПолуч) = 1 Тогда Предупреждение("Не выбран склад получатель!"); Возврат; КонецЕсли; Если КоличествоСтрок() > 0 Тогда Если Вопрос("Табличная часть будет очищена! Продолжить?", 4) = 6 Тогда УдалитьСтроки(); Иначе Возврат; КонецЕсли; КонецЕсли; Сформировать(); КонецПроцедуры |
|||
24
msk-07
10.10.13
✎
10:25
|
Хочу напомнить в чем косяк, если выбираешь только это условие Условие (СклПолуч = СкладПолуч); то проверка происходит,
если |Условие (СклОтпр= СкладОтпр); то документ не заполняется, номенклатурой ... не понятно вообще почему нельзя выполнить два этих условия. |
|||
25
1Сергей
10.10.13
✎
10:28
|
(24) ну, нету у тебя перемещений с этим складом отправителем
|
|||
26
msk-07
10.10.13
✎
10:29
|
(25)
я бы не парился если не было, но но они есть! |
|||
27
alexmobile
10.10.13
✎
10:31
|
(26) в том периоде что указываешь?
|
|||
28
1Сергей
10.10.13
✎
10:32
|
(26) снеси индексы. Тут дело не в коде
|
|||
29
msk-07
10.10.13
✎
10:33
|
(28) по подробнее что за индексы?
|
|||
30
alexmobile
10.10.13
✎
10:36
|
(28) маловероятно что индексы
(29) удали из каталога базы файлы *.cdx |
|||
31
msk-07
10.10.13
✎
10:41
|
(30) удалил, результата ноль :(, прям бред какой-то
|
|||
32
viktor_vv
10.10.13
✎
10:45
|
Выполни, и напиши что вернет.
Процедура Сформировать() Запрос = СоздатьОбъект("Запрос"); Сообщить(""+СкладОтпр+ " , "+ТипЗначенияСтр(СкладОтпр) + " , "+СкладОтпр.Вид()) ТекстЗапроса = |
|||
33
msk-07
10.10.13
✎
10:47
|
(32) вернул название склада "Склад1", Справочник, Склады.
|
|||
34
viktor_vv
10.10.13
✎
10:48
|
И еще кусок кода.
ДокПерем = СоздатьОбъект("ДокументПеремещение"); ДокПерем.ВыбратьДокументы(НачПериода,КонПериода); Пока ДокПерем.ПолучитьДокумент() = 1 Цикл Если ДокПерем.Склад = СкладОтпр Тогда Сообщить(""+ДокПерем.ТекущийДокумент()); КонецЕсли ; КонецЦикла ; |
|||
35
alexmobile
10.10.13
✎
10:48
|
А может у тебя реквизит Складотправитель у документа не типа Справочник.склады?
|
|||
36
msk-07
10.10.13
✎
10:49
|
(35) и там и там СкладОтпр, СкладПолуч все справочник.склады
|
|||
37
alexmobile
10.10.13
✎
10:54
|
(36) ну тогда результат выполнения кода из (34)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |