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


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

Метки: Запросы и построители

В запрос не попадают итоги по группам товаров как быть?

Я
   AlexMan
01.03.04 - 09:40
Кусок кода запроса:
|МПЗ = Регистр.МестаХранения.МПЗ;
В регистре МестаХранения измерение МПЗ имеет тип значения "Справочник" реально там могут хранится типы значений : "Справочник.Номенклатура" или "Справочник.Материалы". Итоги по группам МПЗ не попадают в Запрос , можноли слелать так чтобы итоги по группам всетаки попадали в Запрос? Заранее благодарен.
 
  Рекламное место пустует
   Дмитрий
 
1 - 01.03.04 - 10:26
(0) А влом было полность запрос показать? И структуру регистра
   AlexMan
2 - 01.03.04 - 10:48
(1) Не влом .
Структура регистра:
Измерения: ВидМПЗ-Перечисление.ВидыМПЗ
           МПЗ-Справочник
           МестоХранения-Справочник.МестаХранения
           Владелец-Справочник.Контрагенты
Ресурсы:   Количество-Число
   AlexMan
3 - 01.03.04 - 10:50
Запрос:Текст = "//{{Запрос(Складской учет МПЗ)

        |Период с ДатаНач"+ ПериодПо + ";
        |
        |ВидМПЗ = Регистр.МестаХранения.ВидМПЗ;
        |МестоХранения = Регистр.МестаХранения.МестоХранения;
        |МПЗ = Регистр.МестаХранения.МПЗ;
        |Владелец = Регистр.МестаХранения.Владелец;
        |ТекДок = Регистр.МестаХранения.ТекущийДокумент;
        |Количество = Регистр.МестаХранения.Количество;"
Текст = Текст + ?(ВыводитьНачОст = 1, "Функция КолНачОст = НачОст(Количество);", "");
    Текст = Текст + ?(ВыводитьПриход = 1, "Функция КолПриход = Приход(Количество);", "");
    Текст = Текст + ?(ВыводитьРасход = 1, "Функция КолРасход = Расход(Количество);", "");
    Текст = Текст + ?(ВыводитьКонОст = 1, "Функция КолКонОст = КонОст(Количество);", "");
Запрос.Выполнить(Текст);
   Bzzzzz
 
4 - 01.03.04 - 11:09
(3) а где у тебя группировки описываются?
   AlexMan
5 - 01.03.04 - 11:10
Совсем забыл про группировки перед Запрос.Выполнить(Текст); : еще нужно вставить: УстановитьГруппировкиЗапроса(Текст); (группировки Запроса устанавливаются отдельной функцией) .
Также достоверно установлено что в группировках нет надписи Без групп......
   AlexMan
6 - 01.03.04 - 11:12
Текст функции которая формирует группировки:Функция УстановитьГруппировкиЗапроса(Текст)
    ОтмеченныеГруппировки = "";
    ПредставлениеГруппы = "";
    Для х = 1 по Группировки.РазмерСписка() Цикл
        Если Группировки.Пометка(х) = 1 Тогда

            ПеременнаяЗапроса = Группировки.ПолучитьЗначение(х, ПредставлениеГруппы);
            
            Если ((ПоказатьОстатки.ТекущаяСтрока() = 3) или (ПоказатьОстатки.ТекущаяСтрока() = 5)) и (ПеременнаяЗапроса  = "МПЗ") Тогда
                
            Иначе
                
                Текст = Текст + "Группировка " + ПеременнаяЗапроса + ";";
                
            КонецЕсли;

            СписокГруппировок.ДобавитьЗначение(ПеременнаяЗапроса, ПредставлениеГруппы);

            ОтмеченныеГруппировки = ОтмеченныеГруппировки + ?(ОтмеченныеГруппировки = "", "", ", ") + ПредставлениеГруппы;

        КонецЕсли;
    КонецЦикла;
    Возврат ОтмеченныеГруппировки + ?(ОтмеченныеГруппировки = "", "нет.", ".");
КонецФункции// УстановитьГруппировкиЗапроса()
   AlexMan
7 - 01.03.04 - 12:50
Неужели ни кто не сталкивался с этой проблемой ? Подскажите пожалуста.
   AlexMan
 
8 - 01.03.04 - 14:35
Люди не дайте погибнуть , начальник меня трясет как грушу... Говорит любой школьник уже давно бы это сделал.... обидно блин.
   Рупор абсурда
 
9 - 01.03.04 - 14:40
(8) Покажи текст запроса в чистом виде
   AlexMan
 
10 - 01.03.04 - 15:02
Отчет строится по ПУБ и называется "Складской учет МПЗ"
ТЕКСТ ЗАПРОСА:    Если ПоказатьОстатки.ТекущаяСтрока() = 2 Тогда
        Текст = "//{{ЗАПРОС(Складской учет свободного остатка МПЗ)

        |Период с ДатаНач" + ПериодПо + ";
        |
        |ВидМПЗ = Регистр.МестаХранения.ВидМПЗ;
        |МестоХранения = Регистр.МестаХранения.МестоХранения, Регистр.Резервы.МестоХранения;
        |МПЗ = Регистр.МестаХранения.МПЗ, Регистр.Резервы.Номенклатура;
        |Владелец = Регистр.МестаХранения.Владелец;
        |ТекДок = Регистр.МестаХранения.ТекущийДокумент;
        |Количество = Регистр.МестаХранения.Количество;
        |Резерв = Регистр.Резервы.Количество;";
    Иначе
        Текст = "//{{Запрос(Складской учет МПЗ)

        |Период с ДатаНач"+ ПериодПо + ";
        |
        |ВидМПЗ = Регистр.МестаХранения.ВидМПЗ;
        |МестоХранения = Регистр.МестаХранения.МестоХранения;
        |МПЗ = Регистр.МестаХранения.МПЗ;
        |Владелец = Регистр.МестаХранения.Владелец;
        |ТекДок = Регистр.МестаХранения.ТекущийДокумент;
        |Количество = Регистр.МестаХранения.Количество;"
    КонецЕсли;


   // определяем количество и значения функций, и их условия

    Текст = Текст + ?(ВыводитьНачОст = 1, "Функция КолНачОст = НачОст(Количество);", "");
    Текст = Текст + ?(ВыводитьПриход = 1, "Функция КолПриход = Приход(Количество);", "");
    Текст = Текст + ?(ВыводитьРасход = 1, "Функция КолРасход = Расход(Количество);", "");
    Текст = Текст + ?(ВыводитьКонОст = 1, "Функция КолКонОст = КонОст(Количество);", "");
    
    Если ПоказатьОстатки.ТекущаяСтрока() =  2 Тогда
        Текст = Текст + ?(ВыводитьКонОст = 1, "Функция РезКонОст = КонОст(Резерв);", "");
    КонецЕсли;
    
    Заголовок = "Отмеченные группировки: " + УстановитьГруппировкиЗапроса(Текст);
    Заголовок = Заголовок + РазделительСтрок + "Выбранные условия: ";
    Если (ПоказатьОстатки.ТекущаяСтрока() <> 2) Тогда
        УстановитьУсловиеЗапроса(1, ФлажокУсловие1, МоноУсловие1, СписокУсловие1, "ВидМПЗ", Текст, Заголовок);
    КонецЕсли;
    УстановитьУсловиеЗапроса(2, ФлажокУсловие2, МоноУсловие2, СписокУсловие2, "МестоХранения",    Текст, Заголовок);
    УстановитьУсловиеЗапроса(3, ФлажокУсловие3, МоноУсловие3, СписокУсловие3, "МПЗ", Текст, Заголовок);
    
    Если ПоказатьОстатки.ТекущаяСтрока() = 2 Тогда
        Текст = Текст + "Условие (Владелец = ПустойКонтрагент);"
    Иначе
        УстановитьУсловиеЗапроса(4, ФлажокУсловие4, МоноУсловие4, СписокУсловие4, "Владелец", Текст, Заголовок);
    КонецЕсли;
    Если Прав(Заголовок, 19) = "Выбранные условия: " Тогда
        Заголовок = Заголовок + "нет.";
    Иначе
        Заголовок = Заголовок + ".";
    КонецЕсли;

    ПозМПЗ = СписокГруппировок.НайтиЗначение("МПЗ");
    Если (ВидОтчета = 2) и (ПоказатьОстатки.ТекущаяСтрока() >= 3) Тогда
        Если (ПозМПЗ = 0)  Тогда
            Предупреждение("Не выбрана группировка МПЗ!");
            Возврат;
        КонецЕсли;
    КонецЕсли;
    
    Запрос.Выполнить(Текст);
 
  Рекламное место пустует
   Nightmare
 
11 - 01.03.04 - 15:09
Покажи результирующий текст запроса перед выполнением 
ЗАпрос.Выполнить(Текст)
Выгрузи Текст в переменую Типа "ТЕкст" и посмотри
   AlexMan
 
12 - 01.03.04 - 15:14
(11) Я конечно извеняюсь но как выгрузить Текст в переменную типа Текст?
И еще хочю уточнить проблему :
1 Если МПЗ типа "Справочник.Номенклатура" или "Справочник.Материалы" (вобщем всеравно лишь бы конкретный справочник) тогда все прекрасно и все работает .
2 Если МПЗ типа "Справочник" вот тогда геморой с группами и проявляется.......
   Рупор абсурда
 
13 - 01.03.04 - 15:15
(12) 1. В отладчике поставь точку останова на строке:
Запрос.Выполнить(Текст);
2. Запусти процедуру в предприятии.
3. Как остановится, нажми в отладчике Shift+F9
4. Введи выражение: ВвестиСтроку(Текст,,,1)
5. Нажми "Вычислить"
6. Перейди в предприятие, скопируй текст запроса
7. Запость его сюда ...
   AlexMan
 
14 - 01.03.04 - 15:18
Парни счас вынужден убежать через часа 2 -3 буду и сделаю неисчезайте пожалуста.....
   SergeF
 
15 - 01.03.04 - 15:36
Проше перед Запрос.Выполнить(Текст); вставить Сообщить(Текст);
   AlexMan
 
16 - 01.03.04 - 19:07
Текст запроса получил из Сообщить();

//{{Запрос(Складской учет МПЗ)

Период с ДатаНач;

ВидМПЗ = Регистр.МестаХранения.ВидМПЗ;
МестоХранения = Регистр.МестаХранения.МестоХранения;
МПЗ = Регистр.МестаХранения.МПЗ;
Владелец = Регистр.МестаХранения.Владелец;
ТекДок = Регистр.МестаХранения.ТекущийДокумент;
Количество = Регистр.МестаХранения.Количество;
Функция КолНачОст = НачОст(Количество);
Функция КолПриход = Приход(Количество);
Функция КолРасход = Расход(Количество);
Функция КолКонОст = КонОст(Количество);
Группировка МестоХранения ;
Группировка МПЗ ;
   AlexMan
 
17 - 02.03.04 - 09:05
Снова поднимаю тему. На мой взгляд очень важную (не потому что мне нужен на мой вопрос срочно ответ) а потому что в ПУБе добрая половина отчетов страдает указанным мной недостатком . И если мы совместными усилиями найдем ключ к разгадке то можно смело считать что сегодняшний день прожит не зря......
   Vozhd
 
18 - 02.03.04 - 11:17
Насколько я знаю, запрос не умеет группировать справочники неопределнного вида
   AlexMan
 
19 - 02.03.04 - 18:58
А если очень надо? Рупор ты где? подскажи........
   Рупор абсурда
 
20 - 02.03.04 - 19:24
(19) Не решал такую задачу я ...
В первую очередь бы стал пробовать:
Сделать составные переменные запроса, типа:
МестоХранения = Регистр.МестаХранения.МестоХранения,
     Справочник.Номенклатура.ТекущийЭлемент,
     Справочник.Материалы.ТекущийЭлемент; 
 
Чтоб посмотреть, что получится ...
Чё дальше, не знаю пока ...
   Дмитрий
 
21 - 02.03.04 - 21:50
Может при выводе результатов группы подавляются? Колись уж полностью :) Как резы выводятся?
   AlexMan
 
22 - 03.03.04 - 09:07
(20) Жаль что не решал... Попробую составные переменные (о результатах смогу сообщить не раньше завтра сегодня в другой конторе работаю) а может надо было так:
   Справ = Регистр.МестаХранения.МПЗ,
   Справочник.Номенклатура.ТекущийЭлемент,
   Справочник.Материалы.ТекущийЭлемент;???????
(21) Не понял что значит группы подавляются?????
Колюсь полностью : если результаты запроса выгрузить в таблицу значений Запрос.Выгрузить(Таб,1,1);
тогда там также не появляются группы МПЗ......
Честно говоря вопрос поставленный мной в (0) мучает меня давно но теперь мне хотелось бы точно ответить либо это возможно либо ПРИНЦИПИАЛЬНО НЕТ , чтобы  в дальнейшем я смог заказчику сразу ответить (взглянув на текст запроса) смогу я это сделать либо не смогу.
   Zubr
 
23 - 03.03.04 - 12:24
Все дело в том, что у тебя реквизит типа "Справочник". Для типа "Справочник.КонкретныйСправочник" итоги по группах выдаются без проблем.
   Zubr
 
24 - 03.03.04 - 12:25
Все дело в том, что у тебя реквизит типа "Справочник". Для типа "Справочник.КонкретныйСправочник" итоги по группах выдаются без проблем.
   Zubr
 
25 - 03.03.04 - 12:27
Все дело в том, что у тебя реквизит типа "Справочник". Для типа "Справочник.КонкретныйСправочник" итоги по группах выдаются без проблем.
   Zubr
 
26 - 03.03.04 - 12:29
Все дело в том, что у тебя реквизит типа "Справочник". Для типа "Справочник.КонкретныйСправочник" итоги по группах выдаются без проблем.
   SnarkHunter
 
27 - 03.03.04 - 12:31
Еще раз повтори...
   Zubr
 
28 - 03.03.04 - 12:31
Сорри. Форум глючит...
   AlexMan
 
29 - 03.03.04 - 13:39
(23)-(26) А я вобщем то недвусмысленно в (0) на это и намекал.......... ну так и как можно ли в "моем варианте регистра" когда измерение имеет тип "Справочник" видеть в запросе итоги по группам элементов справочника????
   AlexMan
 
30 - 03.03.04 - 13:40
(23)-(26) А я вобщем то недвусмысленно в (0) на это и намекал.......... ну так и как можно ли в "моем варианте регистра" когда измерение имеет тип "Справочник" видеть в запросе итоги по группам элементов справочника????
   Zubr
 
31 - 03.03.04 - 16:22
2(30)В твоем случае запрос тебе этих итогов не выдаст.
Это однозначно, окончательно и обжалованию не подлежит...
   AlexMan
 
32 - 03.03.04 - 16:34
(31)Это не есть хорошо.......
   Zubr
 
33 - 03.03.04 - 17:02
Нехорошо ? Тогда ладно - разрешаю жаловаться...
 
  Рекламное место пустует
   AlexMan
 
34 - 03.03.04 - 17:07
(33) без комментариев............
   Дмитрий
 
35 - 03.03.04 - 17:31
(32) Не уверен, обязана ли функция Запрос.Выгрузить() выгружать в таблицу итоги по группам справочника. Как-то не приходилось проверять.
Перед выгрузкой поставь цикл
Пока Запрос.Группировка("МестоХранения")=1 Цикл
 Пока Запрос.Группировка("МПЗ")=1 Цикл
    А=0;
 КонецЦикла;
КонецЦикла;

И в отладчике на строчке А=0; посмотри, перебираются группы или нет.
   Рупор абсурда
 
36 - 03.03.04 - 17:40
(35) Нет
   AlexMan
 
37 - 03.03.04 - 17:45
(35) Я смотрел через Предприятие :
Если Запрос.МПЗ.ЭтоГруппа()=1 Тогда
Сообщить("Найдена группа = "+Запрос.МПЗ);
КонецЕсли;
Нету групп............
   AlexMan
 
38 - 03.03.04 - 17:47
(36) Рупор скажи ты сам не решил еще данную задачу?
   Рупор абсурда
 
39 - 03.03.04 - 17:49
(38) Господь уберёг пока ...
   Рупор абсурда
 
40 - 03.03.04 - 17:49
(39)+ Но чую, придётся ...
   AlexMan
 
41 - 03.03.04 - 17:51
Ну если решиш дай знать ....
   Рупор абсурда
 
42 - 03.03.04 - 17:52
(41) А сам то чё?
   vssoft
 
43 - 03.03.04 - 19:04
Вариант1:(кардинальный) ввести в регистр измерение \"Родитель\", прописывать туда родителя элемента справочника, по которому производится движение - можно получать любые итоги.
Вариант2:(тоже выход) выгрузить итоги в ТаблицуЗначений, добавить колонку \"Родитель\" и \"ИдентификаторРесурса\", прописать в колонку \"Родитель\" родителя элемента справочника текущей строки, в колонку \"ИдентификаторРесурса\" значение, свернуть ТаблицуЗначений, отсортировать по родителю и выводить в отчет.
С уважением,
vssoft
   AlexMan
 
44 - 03.03.04 - 21:42
(42) Сам попробую завтра
(43) Вариант 1 -не выдерживает ни какой критики так как Родитель в процессе работы может меняются (юзеры переносят МПЗ из папки в папку как им захочется)и в общем случае может получится что у одного МПЗ несколько родителей.....
Вариант 2 -слишком трудоемок и сложен в реализации (для более менее сложных отчетов т.е. с неизвестным заранее количеством и порядком группировок запроса)поэтому ставится задача именно в запросе получить итоги по группам МПЗ.



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