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

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

Метки:

отчет о движении денежных средств

Я
   Kill - John
 
08.04.04 - 06:05
Перем Счет;

//*******************************************

Процедура ПриВыбореСчета()
   Счет = еСчет.ПолучитьЗначение(еСчет.ТекущаяСтрока());
КонецПроцедуры

Процедура Сформировать()
                                    
    ТаблСубк = СоздатьОбъект("Запрос");
    ТекстЗапроса = 
    "//{{ЗАПРОС(Мой)

    |Период с Дата1 по Дата2;
    |Движ = Операция.Субконто.ДвиженияДенежныхСредств;
    |Сч =  Операция.Счет;
    |Сум = Операция.Сумма;
    |Док = Операция.ТекущийДокумент;
    |Условие (Лев(Сч,2) = Счет);
    |Группировка Движ;
    |Группировка Док;
    |Функция Сум2 = Сумма(Сум/2);<<-- почему то сумма в 2 раза больше получается, приходится делить на 2
    |Функция СумСНД = СНД(Сум);
    |Функция СумСКД = СКД(Сум);
    //}}ЗАПРОС";

    
    Если ТаблСубк.Выполнить(ТекстЗапроса) = 0 Тогда
        Возврат;
    КонецЕсли;
    
    ТаблСубк.Выгрузить(ТТ,0,0);
    ВрТабл = СоздатьОбъект("ТаблицаЗначений");
    ТаблСубк.Выгрузить(ВрТабл,0,0);
//    Возврат;

    
    Т = СоздатьОбъект("Таблица");
    Т.ИсходнаяТаблица("Таблица");

    Т.ВывестиСекцию("Заголовок");
    Т.ВывестиСекцию("ОстНач");
    ВрТабл.ВыбратьСтроки();
    Пока ВрТабл.ПолучитьСтроку() = 1 Цикл
        Если ПустоеЗначение(ВрТабл.Док) = 1 Тогда
            Т.ВывестиСекцию("Табл");
        Иначе
            Если ПечДок = 1 Тогда
                Т.ВывестиСекцию("Док");
            КонецЕсли;
        КонецЕсли;
    КонецЦикла;
    Т.ВывестиСекцию("ОстКон");

    Т.ТолькоПросмотр(1);
    Т.Показать("Движение денежных средств");
КонецПроцедуры

Процедура ПриОткрытии()
    еСчет.ДобавитьЗначение("50");
    еСчет.ДобавитьЗначение("51");
    еСчет.ТекущаяСтрока(1);   
    ПриВыбореСчета();
КонецПроцедуры            

Может есть какие предложения как сделать по другому.
 
 
   427
 
1 - 08.04.04 - 06:11
Использовать БИ.... и все взлетит ....
   Kill - John
 
2 - 08.04.04 - 06:38
Как через БИ получить документы?
   427
 
3 - 08.04.04 - 07:09
Би.Операция.Документ
   Поп Гапон
4 - 08.04.04 - 08:06
(0) А зачем по другому?
Сумма у тебя двоится потому что ты используешь
|Сч =  Операция.Счет; - и ты перебираешь каждую проводку 2 раза

Используй Сч = Операция.Дебет.Счет или Сч = Операция.Кредит.Счет.


Условие (Лев(Сч,2) = Счет); - сильно тормозит работу запроса.
Для оптимизации запроса должно быть примерно так:

Условие (Сч в СписСч);

или

Условие (Сч = счКонкретныйСчет);

Подробнее про оптимизацию есть на диске ИТС.


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