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


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 человек.
Рекламное место пустует