Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 05:30

Помогите новичку

Автор Александр Бардайкин8, 27 дек 2015, 16:21

0 Пользователей и 1 гость просматривают эту тему.

Александр Бардайкин8

Добрый день!
Пользователь вводит начальную дату и конечную дату, и необходимо вывести остатки по каждому дню (т. е. по тем дням которые входят в этот диапазон дат)
Можно сделать с помощью запроса в цикле, но это очень грубая ошибка будет:(
Подскажите пожалуйста, можно ли это осуществить другим способом?

Спасибо :)

Андрей Сисюкин

Используй в запросе итоги типа этого:
ИТОГИ СУММА(...)) ПО
   Период ПЕРИОДАМИ(ДЕНЬ, &дата_начала, &дата_окончания)

Ну и при выборке из запроса используй выборку по группировкам, а группировка "Период"

Ну или в цикле по каждому дню.

Других способов выбора остатки на каждый день нет. Так как тип периода для таблицы обороты - это за какой период группируются, но выбираются данные только в те периоды, когда есть движения.


Добавлено: 27 дек 2015, 17:40


Забыл указать, что когда открываешь выборку, то нужно указать третьим параметром "ВСЕ".

для наглядности - примерно так:

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

Александр Бардайкин8

Спасибо большое, то что надо :zebzdr:

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск