Вход | Регистрация
    1  2  3  4
1С:Предприятие :: 1С:Предприятие 7.7 и ранее

v7: Опять запрос.. (я не умею называть темы)

v7: Опять запрос.. (я не умею называть темы)
Я
   bananan
 
17.01.13 - 17:15
Есть готовый запрос
Текст запроса такой:
Запрос = СоздатьОбъект("Запрос");
   ТекстЗапроса =
       "//{{ЗАПРОС(Сформировать)
       |Период с ВыбНачПериода по ВыбКонПериода;
       |Обрабатывать НеПомеченныеНаУдаление;
       |ТМЦ = Регистр.Обороты.ТМЦ;
       |Клиент = Регистр.Обороты.Клиент;
       |Агент = Регистр.Обороты.Агент;
       |РасходГрн = Регистр.Обороты.РасходГрн;
       |РасходКво = Регистр.Обороты.РасходКво;
       |Функция РасходГрнСумма = Сумма(РасходГрн);
       |Функция КвоРасход = Сумма(РасходКво);
       |Группировка Агент без групп;
       |Группировка Клиент  без групп;
       |Группировка ТМЦ;
       |Условие(ТМЦ в ВыбТМЦ);
       |Условие(Клиент в ВыбКлиент);
       |Условие(Агент в ВыбАгент);";
       Если СпИнкас.ТекущаяСтрока() = 2 Тогда
           ТекстЗапроса = ТекстЗапроса +"      
           |Условие(Клиент.Инкас =0);";
       ИначеЕсли СпИнкас.ТекущаяСтрока() = 3 Тогда
           ТекстЗапроса = ТекстЗапроса +"      
           |Условие(Клиент.Инкас =1);";
       Конецесли;
   
   Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
       Возврат;
   КонецЕсли;
Так вот: нужно сюда добавить возможность выбора склада..
я сделал так:
   "//{{ЗАПРОС(Сформировать)
       |Период с ВыбНачПериода по ВыбКонПериода;
       |Обрабатывать НеПомеченныеНаУдаление;
       |Склад = Регистр.Обороты.Склад;
       |ТМЦ = Регистр.Обороты.ТМЦ;
       |Клиент = Регистр.Обороты.Клиент;
       |Агент = Регистр.Обороты.Агент;
       |РасходГрн = Регистр.Обороты.РасходГрн;
       |РасходКво = Регистр.Обороты.РасходКво;
       |Функция РасходГрнСумма = Сумма(РасходГрн);
       |Функция КвоРасход = Сумма(РасходКво);
       |Группировка Агент без групп;
       |Группировка Клиент  без групп;
       |Группировка ТМЦ;
       |Условие(Склад в выбСклад);
       |Условие(ТМЦ в ВыбТМЦ);
       |Условие(Клиент в ВыбКлиент);
       |Условие(Агент в ВыбАгент);";
       Если СпИнкас.ТекущаяСтрока() = 2 Тогда
           ТекстЗапроса = ТекстЗапроса +"      
           |Условие(Клиент.Инкас =0);";
       ИначеЕсли СпИнкас.ТекущаяСтрока() = 3 Тогда
           ТекстЗапроса = ТекстЗапроса +"      
           |Условие(Клиент.Инкас =1);";
       Конецесли;
   
   Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
НИчего в результатах не изменилось.
К тому же в форме добавил "поле" для выбора склада...
ну и кнопки к этому полю..
Когда при открытии отчета в первый раз нажимаю кнопку выбора - нормально работает. А когда после этого еще раз нажимаю на кнопку выбора - выдает ошибку:
Если выбСклад.РазмерСписка()>0 Тогда
{\\SERVER12\VPKTEST$\EXTFORMS\ОТЧЕТПОАГЕНАМСВ.ERT(436)}: Поле агрегатного объекта не обнаружено (РазмерСписка)
Ну и два впороса:
1. Что не так у меня в запросе
2. Что не так с полем выбора склада?
 
 
   Mikeware
 
301 - 23.01.13 - 19:01
(297) :-))
   Wobland
 
302 - 23.01.13 - 19:02
(299) что такое "Запрос"?
   Wobland
 
303 - 23.01.13 - 19:04
(302) какой тип у переменной? что туда присваивается?
   bananan
 
304 - 23.01.13 - 19:15
Разве запрос:
   |SELECT
            |Внутренний.ID as [Сотрудник $Справочник.Сотрудники],
            | SUM(Внутренний.Став) as Ставка
              |
              |From
              |(
              |  SELECT
              |    Сотр.ID as ID,
              |     $ПоследнееЗначение.Сотрудники.Ставка(Сотр.ID, :ДатаАктуальности) Став
              |  FROM
              |    $Справочник.Сотрудники Сотр
              |  WHERE
              |     Сотр.ID IN (SELECT Val FROM #tmpSotr)
              |    AND $Сотр.ДатаПриема> :Дат1 
              |    AND $Сотр.ДатаПриема<= :ДатаАктуальности 
              |    AND  ($Сотр.ДатаУвольнения = '01.01.1753' or  $Сотр.ДатаУвольнения>= :ДатаАктуальности )
              |) as Внутренний
            |Group by 
            |   Внутренний.ID
            |";
Вернет структуру, а не число??
   Wobland
 
305 - 23.01.13 - 19:17
(304) выбираешь ИД и ждёшь числу?
   bananan
 
306 - 23.01.13 - 19:26
Такой код:
    |SELECT
            | SUM(Внутренний.Став) as Ставка
              |
              |From
              |(
              |  SELECT
              |    Сотр.ID as ID,
              |     $ПоследнееЗначение.Сотрудники.Ставка(Сотр.ID, :ДатаАктуальности) Став
              |  FROM
              |    $Справочник.Сотрудники Сотр
              |  WHERE
              |     Сотр.ID IN (SELECT Val FROM #tmpSotr)
              |    AND $Сотр.ДатаПриема> :Дат1 
              |    AND $Сотр.ДатаПриема<= :ДатаАктуальности 
              |    AND  ($Сотр.ДатаУвольнения = '01.01.1753' or  $Сотр.ДатаУвольнения>= :ДатаАктуальности )
              |) as Внутренний
            |Group by 
            |   Внутренний.ID
            |";
выдает в любом случае 1 (единицу)!!!
   bananan
 
307 - 23.01.13 - 19:33
+(306) убрал:
|Group by
            |   Внутренний.ID
 

Теперь считает так как надо! Всем большое спасибо.!!!
   Wobland
 
308 - 23.01.13 - 19:48
Сотр.ID as ID, убери ещё
  1  2  3  4

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