Имя: Пароль:
1C
1C 7.7
v7: Отчет работает немного медленно, может можно как-то по другому?
0 Босечка
 
19.02.14
10:35
Можно ли в цикле ИспользоватьСубконто( делать?  Может из-за этого тормоз? За месяц отчет делается 2 минуты. Это нормально?

Ит1 = СоздатьОбъект("БухгалтерскиеИтоги");
Т.ВыбратьСтроки();
Пока Т.ПолучитьСтроку()=1 цикл
    Ит1.ИспользоватьСубконто(ВидыСубконто.Материалы,Т.Машина, 2);
    Ит1.ВыполнитьЗапрос(ВыбНачПериода, ВыбКонПериода,,,, 1, "Проводка", "СК");
    Ит1.ВыбратьПериоды();
    Пока Ит1.ПолучитьПериод() = 1 Цикл
        Дт = Ит1.ВыбранаПоДт();
        Кт = Ит1.ВыбранаПоКт();
        Опер1 = Ит1.Операция;
        ДокумПост1=Опер1.Документ;  
        Если ДокумПост1.Вид()="УслугиСтороннихОрганизаций" тогда
            Т.Т.НоваяСтрока();
            Т.Т.ДокументУсл=ДокумПост1.Контрагент;
            Т.Т.ДатаУ=Ит1.НачДата;
            Т.Т.Сумма=Опер1.Сумма;
        Конецесли;
    Конеццикла;
Конеццикла;
1 ДенисЧ
 
19.02.14
10:36
Выгрузить все машины из Т, выполнить один раз запрос по списку, потом получать и обрабатывать результат
3 lamme
 
19.02.14
10:40
зачем вообще в цикле запрос делается ?
у тебя потом нигде переменная из таблицы Т - не завязана на запросе
поэтому сам запрос - вынести за цикл
имхо
4 lamme
 
19.02.14
10:40
да и использование вот этого цикла
Т.ВыбратьСтроки();
Пока Т.ПолучитьСтроку()=1 цикл

не понятно.
5 Холст
 
19.02.14
10:42
прямой запрос по таблице проводок, по фильтру периода и вида документов
или получать данные не из проводок, а из таблицы документов УслугиСтороннихОрганизаций - прямым или непрямым запросом
6 Холст
 
19.02.14
10:44
запрос в цикле вынести
7 lamme
 
19.02.14
10:44
(5)
лучше все-таки из проводок
т.к. документ - хз .. может и не сделать проводки ..
потом сверяй - в ОСВ (например) документа нет
а в отчете этом - есть
8 Андрей_Андреич
 
naïve
19.02.14
10:48
Правильно спроектированный план счетов позволил бы обойтись стандартными бухгалтерскими отчетами.
9 Босечка
 
19.02.14
10:49
(1) В список значений выгрузить из Т?
10 Woodpecker
 
19.02.14
11:00
(9) да, выгрузить в список значений
в использоватьСубконто запихать этот список.
потом выполнить запрос и перебирать значения субконто полученные в запросе
11 Босечка
 
19.02.14
11:39
Ит1 = СоздатьОбъект("БухгалтерскиеИтоги");
Сп=СоздатьОбъект("СписокЗначений");
ТЗ.ВыбратьСтроки();
Пока ТЗ.ПолучитьСтроку()=1 цикл
Сп.ДобавитьЗначение(ТЗ.Машина);
Конеццикла;

    Ит1.ИспользоватьСубконто(ВидыСубконто.Материалы,Сп, 2);
    Ит1.ВыполнитьЗапрос(ВыбНачПериода, ВыбКонПериода,,,, 1, "Проводка", "СК");
    Ит1.ВыбратьПериоды();
    Пока Ит1.ПолучитьПериод() = 1 Цикл
        Дт = Ит1.ВыбранаПоДт();
        Кт = Ит1.ВыбранаПоКт();
        Опер1 = Ит1.Операция;
        ДокумПост1=Опер1.Документ;  
        Если ДокумПост1.Вид()="УслугиСтороннихОрганизаций" тогда
            ТУ.НоваяСтрока();
            ТУ.ДокументУсл=ДокумПост1.Контрагент;
            ТУ.ДатаУ=Ит1.НачДата;
            ТУ.Сумма=Опер1.Сумма;

            ТУ.Машина=Ит1.Субконто;

        Конецесли;
    Конеццикла;
12 Босечка
 
19.02.14
11:41
На  ТУ.Машина=Ит1.Субконто ругается. Как взять дебетовое субконто из Операции документа УслугиСтороннихОрганизаций?
13 Андрей_Андреич
 
naïve
19.02.14
11:46
(12) Сначала выбратьсубконто, а потом уже периоды.
14 Woodpecker
 
19.02.14
11:54
(13) да она проводки перебирает, так что можно и значение субконто из проводки взять
15 Босечка
 
19.02.14
12:17
А как это сделать? Я уже все перепробовала.
16 Босечка
 
19.02.14
12:30
Все получилось, спасибо надо было  ТУ.Машина=Ит1.Субконто();!!!