| 
    
            
         
         | 
    
    
  | 
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)     
         | 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |