Модераторы: stron
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Отчет "Оборотка товаров", Проблема с запросом 
V
    Опции темы
Gamber
Дата 24.3.2008, 18:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 60
Регистрация: 24.3.2008

Репутация: нет
Всего: нет



Задача: 
Разработать отчет «Оборотка товаров», следующей структуры:

Код

Товар         Ост. на начало    Приход    Расход    Ост. на конец 
ВСЕГО:        


Отчет должен отражать остатки товара на начало и на конец выбранного пользователем периода и обороты его за период в количественном выражении.

Предлагается два варианта решения задачи...
Выбираю вот этот:
-Запрос выполняется за период «с начала времен» и до конца периода отчета.
-В запросе присутствуют четыре функции. Две функции «Сумма» для расчета прихода и расхода
за период до даты начала отчета, они будут давать нам возможность получить остаток на
начало. И две функции для расчета прихода и расхода за период отчета.
-Чтобы функции рассчитывались не за весь период запроса (с начала времен и до даты
окончания отчета), а только за нужный интервал (точнее, за два интервала) нужно будет
воспользоваться ключевым словом запроса «Когда». Это зарезервированное слово позволяет
поставить условие, при котором должна выполняться функция запроса. Таким образом первые
две функции будут выполняться при условии Когда дата документа меньше даты начала
периода отчета, а вторые две функции будут выполняться при условии Когда дата документа
больше или равна дате начала периода отчета.


Формирую при помощи конструктора запросов. Вот такую вот конструкцию...

Код

Процедура Сформировать()
    Перем Запрос, ТекстЗапроса, Таб;
    //Создание объекта типа Запрос
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса = 
    "//{{ЗАПРОС(Сформировать)
    |с ВыбНачПериода по ВыбКонПериода;
    |ОбрабатыватьДокументы все;
    |Обрабатывать НеПомеченныеНаУдаление;
    |Без итогов;
    |ДатаДокПрих = Документ.ПрихНакл.ДатаДок;
    |ДатаДокРасх = Документ.РасхНакл.ДатаДок;
    |Товар = Документ.ПрихНакл.Товар, Документ.РасхНакл.Товар;
    |ПриходНач = Документ.ПрихНакл.Количество;
    |РасходНач = Документ.РасхНакл.Количество;
    |ПриходПер = Документ.ПрихНакл.Количество;
    |РасходПер = Документ.РасхНакл.Количество;
    |Функция ПриходНачСумма = Сумма(ПриходНач) когда(ВыбНачПериода>ДатаДокПрих);
    |Функция РасходНачСумма = Сумма(РасходНач) когда(ВыбНачПериода>ДатаДокРасх);
    |Функция ПриходПерСумма = Сумма(ПриходПер) когда(ДатаДокПрих>=ВыбНачПериода);
    |Функция РасходПерСумма = Сумма(РасходПер) когда(ДатаДокРасх>=ВыбНачПериода);
    |Группировка Товар упорядочить по Товар.Наименование;
    |"//}}ЗАПРОС
    ;
    // Если ошибка в запросе, то выход из процедуры
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
        Возврат;
    КонецЕсли;

    // Подготовка к заполнению выходных форм данными запроса
    Таб = СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица("Сформировать");
    // Заполнение полей "Заголовок"
    Таб.ВывестиСекцию("Заголовок");
    Состояние("Заполнение выходной таблицы...");
    Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
    Пока Запрос.Группировка() = 1 Цикл
        // Заполнение полей Сформировать
        Таб.ВывестиСекцию("Сформировать");
    КонецЦикла;
    // Вывод заполненной формы
    Таб.ТолькоПросмотр(1);
    Таб.Показать("Сформировать", "");
КонецПроцедуры


Проблема:
1. В сформированном отчете вижу только данные из периода, данные вне периода (а именно приход/расход на начало периода не вижу)... Хотя все условия в запросе вроде бы есть.
2. Не могу понять где можно осуществить расчет остатков... Так как пока (видно из запроса) получается взять только первичные данные по расходам/приходам, подскажите как просчитать остатки...

Помогите пожалуйста разобраться...

Это сообщение отредактировал(а) Gamber - 24.3.2008, 18:45
PM MAIL   Вверх
Itsys
Дата 24.3.2008, 22:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1338
Регистрация: 21.1.2008
Где: г. Москва

Репутация: 7
Всего: 34



И не увидишь, т.к. ты вибираешь документы только за период, такие отчеты строятся либо по регистрам, либо по бухгалтерским итогам, а если ты хочешь чисто по документам, то выглядеть это должно так:
Код

Процедура Сформировать()
    Перем Запрос, ТекстЗапроса, Таб;
    //Создание объекта типа Запрос
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса = 
    "//{{ЗАПРОС(Сформировать)
    |с ('01.01.1980') по ВыбКонПериода;
    |ОбрабатыватьДокументы все;
    |Обрабатывать НеПомеченныеНаУдаление;
    |Без итогов;
    |ДатаДокПрих = Документ.ПрихНакл.ДатаДок;
    |ДатаДокРасх = Документ.РасхНакл.ДатаДок;
    |Товар = Документ.ПрихНакл.Товар, Документ.РасхНакл.Товар;
    |ПриходНач = Документ.ПрихНакл.Количество;
    |РасходНач = Документ.РасхНакл.Количество;
    |ПриходПер = Документ.ПрихНакл.Количество;
    |РасходПер = Документ.РасхНакл.Количество;
    |Функция ПриходНачСумма = Сумма(ПриходНач) когда(ВыбНачПериода>ДатаДокПрих);
    |Функция РасходНачСумма = Сумма(РасходНач) когда(ВыбНачПериода>ДатаДокРасх);
    |Функция ПриходПерСумма = Сумма(ПриходПер) когда(ДатаДокПрих>=ВыбНачПериода);
    |Функция РасходПерСумма = Сумма(РасходПер) когда(ДатаДокРасх>=ВыбНачПериода);
    |Группировка Товар упорядочить по Товар.Наименование;
    |"//}}ЗАПРОС
    ;
    // Если ошибка в запросе, то выход из процедуры
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
        Возврат;
    КонецЕсли;

    // Подготовка к заполнению выходных форм данными запроса
    Таб = СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица("Сформировать");
    // Заполнение полей "Заголовок"
    Таб.ВывестиСекцию("Заголовок");
    Состояние("Заполнение выходной таблицы...");
    Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
    Пока Запрос.Группировка() = 1 Цикл
        // Заполнение полей Сформировать
        Таб.ВывестиСекцию("Сформировать");
    КонецЦикла;
    // Вывод заполненной формы
    Таб.ТолькоПросмотр(1);
    Таб.Показать("Сформировать", "");
КонецПроцедуры

PM MAIL WWW Skype   Вверх
Gamber
Дата 25.3.2008, 19:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 60
Регистрация: 24.3.2008

Репутация: нет
Всего: нет



Itsys Спасибо большое. Все отлично считается...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "1C: Предприятие, SAP, ERP и учётные системы"
stron

Запрещается!

1. Обсуждение крэков, кейгенов и других подобных программ

Пробуйте искать сами или обращайтесь в приват к участникам форума.

Темы с подобными вещами будут немедленно удаляться, а нарушители - получать предупреждения.

Также запрещается обсуждение проблем работы этих программ (что куда вписать, куда что скопировать и т.п...)

2. Давать ссылки на взломанные продукты

  • Пожалуйста, пользуйтесь поиском перед тем, как задать вопрос - возможно ответ уже есть на форуме.
  • Название темы должно отражать её суть
  • Действия модераторов можно обсудить здесь

С уважением, stron, Pegas.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | 1C: Предприятие, SAP, ERP и учётные системы | Следующая тема »


 




[ Время генерации скрипта: 0.0634 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.