Вход | Регистрация


1С:Предприятие ::

Метки: 

v7: Запрос не выполняется

Я
   Milli
 
27.12.12 - 13:38
При выполнении запроса выдается ошибка и выкидывает из 1С. В чем может быть причина?
    Запрос = СоздатьОбъект("Запрос");    
    СчетЗаданный = счетпокоду("23.2"); 
    
    ТекстЗапроса = 
    "//{{ЗАПРОС(Сформировать)
 
    |Период с ДатаНачала по ДатаКонца;
    |ОбрабатыватьДокументы Проведенные;
    |Сч = Документ.РасходМатериалов.СчетЗатрат;
    |Автомобиль_ = Документ.РасходМатериалов.Субконто4;   
    |Материал = Документ.РасходМатериалов.Товар;
    |Количество_ = Документ.РасходМатериалов.Количество;
    |СумМатериал_ = Документ.РасходМатериалов.Сумма;";
    
    ТекстЗапроса = ТекстЗапроса+
    "
    |Группировка Автомобиль_ Без Упорядочивания Без Групп;";
    
    ТекстЗапроса = ТекстЗапроса+
    " 
    |Группировка Материал Без Упорядочивания Без Групп;
    |Функция Количество = Сумма(Количество_);
    |Функция СумМатериал = Сумма(СумМатериал_);
    |Условие (сч = СчетЗаданный);";
    
    если ПустоеЗначение(Автомобиль) = 0 тогда
        ТекстЗапроса = ТекстЗапроса + 
        "                            
        |Условие (Автомобиль_ в Автомобиль);";                       
    конецесли;    
    
    ТекстЗапроса = ТекстЗапроса + 
    "
    |";                       
    
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
        Возврат;
    КонецЕсли;
 
 
   ДенисЧ
 
1 - 27.12.12 - 13:40
Я НЕ стану угалывать ошибку с трёх букв...
   KishMish
 
2 - 27.12.12 - 13:41
ну я не телепат конечно, но 
1. |Материал = Документ.РасходМатериалов.Товар
   Milli
 
3 - 27.12.12 - 14:01
(2) Даже если и пропишешь Товар как Товар.Наименование все равно выдается ошибка. И ошибка указывается вот на этот участок кода:
    если ПустоеЗначение(Автомобиль) = 0 тогда
        ТекстЗапроса = ТекстЗапроса + 
        "                            
        |Условие (Автомобиль_ в Автомобиль);";                       
    конецесли;

Если ставишь в условии знак "=", все нормально формируется, а если "в", выдается ошибка.
   пипец
 
4 - 27.12.12 - 14:04
сделай Автомобиль  списком значений
   viktor_vv
 
5 - 27.12.12 - 14:04
А что такое Автомобиль ? Ревизит формы ? Какого типа ?
   Ёпрст
 
6 - 27.12.12 - 14:21
для начала, выкинуть из кода "без упорядочивания"
   Milli
 
7 - 27.12.12 - 14:38
(6)"без упорядочивания" убрала.
(4) сделала Автомобиль СЗ.
ничего не помогло.
(5) Реквизит расположен на форме. Тип "Справочник.Автомобили"
Может это все из-за того, что "Автомобиль_ = Документ.РасходМатериалов.Субконто4", а Автомобиль напрямую связан со справочником Автомобили?
   Ёпрст
 
8 - 27.12.12 - 14:41
(7) без условия, работает ?
и
"не работает" в чем именно заключается ? Выборка пустая ?
   Milli
 
9 - 27.12.12 - 14:45
Дело не в условии. В это условие попадает, смотрела в отладчике. А вот группировка пустая по Автомобилям и соответственно не попадает в группировку.
   Ёпрст
 
10 - 27.12.12 - 14:47
(9) дык всё же запрос то рабочий, просто условия не верные, не так ли ?
 
 Рекламное место пустует
   Ёпрст
 
11 - 27.12.12 - 14:47
и это, закрой жуколов.
   Milli
 
12 - 27.12.12 - 14:48
При выборке отдельного автомобиля, отчет формируется при условии "Условие ((Автомобиль_ = Автомобиль) или(Автомобиль_ в Автомобиль))". А еще нужно чтобы и по всей группе отчет формировался.
(11) что имеете ввиду под "закрой жуколов"?
   Ёпрст
 
13 - 27.12.12 - 14:50
(12) отладчик закрой
   Ёпрст
 
14 - 27.12.12 - 14:51
И это, перем Автомобиль нет в коде случаем ?
   Ganiev
 
15 - 27.12.12 - 14:52
Автомобиль = СоздатьОбъект("СписокЗначений");
Автомобиль.ДобавитьЗначения//Суеш сюда свои автомобили)
 
   
    СчетЗаданный = счетпокоду("23.2"); 
    Запрос = СоздатьОбъект("Запрос"); 
    ТекстЗапроса = 
    "//{{ЗАПРОС(Сформировать)
 
    |Период с ДатаНачала по ДатаКонца;
    |ОбрабатыватьДокументы Проведенные;
    |Сч = Документ.РасходМатериалов.СчетЗатрат;
    |Автомобиль_ = Документ.РасходМатериалов//ТУТ ИМЯ РЕКВИЗИТА КАК ОН У ТЕБЯ НАЗЫВАЕТСЯ;   
 
    |Материал = Документ.РасходМатериалов.Товар;
    |Количество_ = Документ.РасходМатериалов.Количество;
    |СумМатериал_ = Документ.РасходМатериалов.Сумма;";
    
  // ТекстЗапроса = ТекстЗапроса+
 
   //"
 
   //|Группировка Автомобиль_ Без Упорядочивания Без Групп;";
 
   //Зачем тебе 2 раза одна и таже группировка?????
 
    ТекстЗапроса = ТекстЗапроса+
    " 
    |Группировка Материал Без Упорядочивания Без Групп;
    |Функция Количество = Сумма(Количество_);
    |Функция СумМатериал = Сумма(СумМатериал_);
    |Условие (сч = СчетЗаданный);";
    
    если АвтомобильРазмерСписка() > 0 тогда
        ТекстЗапроса = ТекстЗапроса + 
        "                            
        |Условие (Автомобиль_ в Автомобиль);";                       
    конецесли;
   Milli
 
16 - 27.12.12 - 14:59
(15)
По списку значений я сделала так:
        если Автомобиль.ЭтоГруппа()=1 Тогда
            спр = создатьобъект("справочник.автомобили");  
            спр.ИспользоватьРодителя(Автомобиль,);
            спр.выбратьэлементы();
            пока спр.получитьэлемент()<>0 цикл
                СЗ = создатьобъект("списокзначений");
                сз.добавитьзначение(спр.текущийэлемент());   
            конеццикла;
            
            ТекстЗапроса = ТекстЗапроса + 
            "                            
            |Условие (Автомобиль_ в сз);";    
        иначе
            
            ТекстЗапроса = ТекстЗапроса + 
            "
            |Условие ((Автомобиль_ = Автомобиль) или(Автомобиль_ в Автомобиль));";                       
        конецесли;    

Говорю же, не помогает.

"|Автомобиль_ = Документ.РасходМатериалов//ТУТ ИМЯ РЕКВИЗИТА КАК ОН У ТЕБЯ НАЗЫВАЕТСЯ;" - на счете 23.2 Субконто4 и есть справочник Автомобили. Здесь все правильно.
 

"Зачем тебе 2 раза одна и таже группировка?????" - что-то я не вижу второй группировки по автомобилям?
   Milli
 
17 - 27.12.12 - 14:59
(14) такой переменной в модуле нет.
   Ёпрст
 
18 - 27.12.12 - 15:01
без условия что выдает ?
   ЧеловекДуши
 
19 - 27.12.12 - 15:04
По счетам лучше писать на Бух.Запросах. :)
   Milli
 
20 - 27.12.12 - 15:05
(18)
если просто пишешь:
            спр = создатьобъект("справочник.автомобили");  
            спр.ИспользоватьРодителя(Автомобиль,);
            спр.выбратьэлементы();
            пока спр.получитьэлемент()<>0 цикл
                СЗ = создатьобъект("списокзначений");
                сз.добавитьзначение(спр.текущийэлемент());   
            конеццикла;
            
            ТекстЗапроса = ТекстЗапроса + 
            "                            
            |Условие (Автомобиль_ в сз);";    

ничего не выводит

если пишешь:

            ТекстЗапроса = ТекстЗапроса + 
            "
            |Условие ((Автомобиль_ = Автомобиль) или(Автомобиль_ в Автомобиль));";                       

выводит отчет только по отдельному автомобилю, по группе пусто.
   Milli
 
21 - 27.12.12 - 15:08
(19) наверно так и сделаю, если не получится через такие запросы сделать.
   Ёпрст
 
22 - 27.12.12 - 15:10
Еще раз, выкини нахрен условие на автомобиль, что есть в выборке ?

Там есть то, что ты потом пытаешься в фильтр запихнуть, или нет ?



Список тем форума
Рекламное место пустует Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует