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

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

Метки: 

Запрос на остатки

Я
   antihacker
 
27.02.18 - 15:53
Всем привет !

Запрос
 
 
   DmitriyDI
 
1 - 27.02.18 - 15:54
информативно)
   antihacker
 
2 - 27.02.18 - 15:54
"ВЫБРАТЬ
|    ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура,
|    ТоварыНаСкладахОстатки.Номенклатура.ЭтоГруппа КАК ЭтоГруппа,

|    ТоварыНаСкладахОстатки.КоличествоОстаток КАК Остаток,
|    Цены.Цена КАК Цена
|
|ИЗ
|
|    РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
|        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
|            ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура,
|            МАКСИМУМ(ЦеныНоменклатурыСрезПоследних.Цена) КАК Цена
|        ИЗ
|            РегистрСведений.ЦеныНоменклатуры.СрезПоследних(,) КАК ЦеныНоменклатурыСрезПоследних
        
|        СГРУППИРОВАТЬ ПО
|            ЦеныНоменклатурыСрезПоследних.Номенклатура) КАК Цены
|        ПО ТоварыНаСкладахОстатки.Номенклатура = Цены.Номенклатура
|ИТОГИ
|    СУММА(Остаток)
|ПО
|    Номенклатура ИЕРАРХИЯ";

Почему элементы выходит по 2 раза
   antihacker
 
3 - 27.02.18 - 15:56
Вывожу вот так
Результат = Запрос.Выполнить();
    
    ТабДок.НачатьАвтогруппировкуСтрок();
 
    ВыборкаДетальныеЗаписи = Результат.Выбрать();
 
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        Группа.Параметры.Заполнить(ВыборкаДетальныеЗаписи);
        
        Если ВыборкаДетальныеЗаписи.ЭтоГруппа Тогда            
             Группа.Область("R1C1:R1C18").ЦветФона =WebЦвета.СветлоКоричневый; 
             Группа.Область("R1C1:R1C18").ЦветРамки =WebЦвета.Коричневый;
            

        Иначе
            Группа.Область("R1C1:R1C18").ЦветФона =WebЦвета.Белый;
            Группа.Область("R1C1:R1C18").ЦветРамки =WebЦвета.Коричневый;

            
        КонецЕсли;    
        
            
        ТабДок.Вывести(Группа, ВыборкаДетальныеЗаписи.Уровень());       
        
        
        
        //Пока СписокСкладов.Следующий() Цикл

        //      

        //             //СтокаНоменклатура.Параметры.ОстатокПоТекСкладу = ОстатокНомНаСкладе(ВыборкаДетальныеЗаписи.Ссылка,СписокСкладов.Ссылка);

        //             //ТабДок.Присоединить(СтокаНоменклатура);


        //КонецЦикла;


    КонецЦикла;


Именно элмент по два раза. И еще в группированом виде. То елемент и этот же элемент в своей группе
   DmitriyDI
 
4 - 27.02.18 - 15:56
(2) ИТОГИ ПО
    Ссылка ТОЛЬКО ИЕРАРХИЯ
   Джинн
 
5 - 27.02.18 - 15:57
Сколько типов цен?
   antihacker
 
6 - 27.02.18 - 15:59
Пробовал указать тип цен  явным образом. Не помогает
   Джинн
 
7 - 27.02.18 - 16:01
Сколько складов?
   antihacker
 
8 - 27.02.18 - 16:03
Далее с этой функцией пытаюсь получить остаток

Функция ОстатокНомНаСкладе(вхНоменклатура,вхСклад);

          //---Проверяем остаток---------------------------------

        запрос=новый запрос;
        запрос.Текст="ВЫБРАТЬ
        |    ТоварыНаСкладахОстатки.Склад КАК Склад,
        |    ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура,
        |    ТоварыНаСкладахОстатки.КоличествоОстаток КАК КоличествоОстаток
        |ИЗ
        |    РегистрНакопления.ТоварыНаСкладах.Остатки(
        |            &ДатаОст,
        |            Склад = &выбСписСклады
        |                И Номенклатура = &Номенклатура) КАК ТоварыНаСкладахОстатки";
            
        запрос.УстановитьПараметр("ДатаОст",КонецДня(ЭтотОБъект.Дата));    
        запрос.УстановитьПараметр("выбСписСклады",вхСклад);
        запрос.УстановитьПараметр("Номенклатура",вхНоменклатура);        
                                          
        КолОстаток=запрос.Выполнить().Выбрать();

        Если КолОстаток.Количество()=0 Тогда
             Возврат 0;
        Иначе
             Пока КолОстаток.Следующий() Цикл   
                  Возврат  КолОстаток.КоличествоОстаток; 
                
             КонецЦикла;                
      КонецЕсли;
    
КонецФункции    


Ничегоне возвращает
   DmitriyDI
 
9 - 27.02.18 - 16:05
(8) Ужас, тебе надо делать обход результата запроса по группировкам, а не делать запрос в цикле
   antihacker
 
10 - 27.02.18 - 16:10
То есть функция выдает остатки, но остаток группы не выдает
 
  Рекламное место пустует
   DmitriyDI
 
11 - 27.02.18 - 16:12
(10)
Номенклатура В ИЕРАРХИИ (&Номенклатура) напиши в запросе, который у тебя в цикле
   DmitriyDI
 
12 - 27.02.18 - 16:14
(10) а вообще ужасное исполнение, на твоем месте переписал бы нормально в первом запросе получай выборку и по складам и по товарам, затем обходи по группировкам в двух циклах.
   antihacker
 
13 - 27.02.18 - 16:15
Это как ? Не умею. Слабак я
   antihacker
 
14 - 27.02.18 - 16:15
Мозг протекает
   DmitriyDI
 
15 - 27.02.18 - 16:19
(13) зачем тебе в первом запросе итоги? убери сделай группировку, во втором в цикле который сделай Номенклатура В ИЕРАРХИИ (&Номенклатура)
   xXeNoNx
 
16 - 27.02.18 - 17:24
(2) А потому шта иерархия по номенклатуре!
   antihacker
 
17 - 27.02.18 - 17:43
И так. Кто подскажет. Как мне исправить функцию, что бы она возвращала остатки и по группам тоже.
   hhhh
 
18 - 27.02.18 - 17:48
(17)    как-то так
    ВыборкаДетальныеЗаписи = Результат.Выбрать(ОБбходРезультатаЗапроса.ПоГруппировкамСИерархией);
 
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
   xXeNoNx
 
19 - 27.02.18 - 18:00
(17) Остатки по группе "Продукты": Молоко - 1литр + Селедка - 1шт + Колбаса - 1палка - чему буде равно? Думаю что тут надо новую единицу измерения ввести - РЖ(расстройство желудка)
   xXeNoNx
 
20 - 27.02.18 - 18:09
1. Получаем остатки товаров в разрезе склада
2. Получаем цены по уже выбранной номенклатуре (используя параметры вирт. таблицы)
3. Соединяя эксперементируй
И не забываем: СОЕДИНЯТЬСЯ С ВИРТУАЛЬНОЙ ТАБЛИЦЕЙ - ЭТО ХРЕНОВО


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