Имя: Пароль:
1C
1C 7.7
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)
Закон Брукера: Даже маленькая практика стоит большой теории.