Имя: Пароль:
1C
1C 7.7
v7: БИ, субконто, выбратьсубконто, получитьсубконто, число фильтров
0 Eeakie
 
09.01.16
18:24
Нужны сальдо по суммами и количеству по ВСЕМ счетам/субсчетам на определенную дату.

Делаю:

БИ = СоздатьОбъект("БухгалтерскиеИтоги");
БИ.ИспользоватьРазделительУчета(ВыбраннаяФирма);
БИ.ИспользоватьПланСчетов(ОсновнойПланСчетов());    
БИ.ВключатьСубсчета(1);
БИ.ВыполнитьЗапрос(ВыбраннаяДата, ВыбраннаяДата);

БИ.ВыбратьСчета();
Пока БИ.ПолучитьСчет() = 1 Цикл
        БИ1 = СоздатьОбъект("БухгалтерскиеИтоги");
    БИ1.ИспользоватьРазделительУчета(ВыбраннаяФирма);
    БИ1.ИспользоватьПланСчетов(ОсновнойПланСчетов());
    БИ1.ВключатьСубсчета(1);
                
    Для Х = 1 По ПечСчет.КоличествоСубконто() Цикл
        БИ1.ИспользоватьСубконто(ПечСчет.ВидСубконто(Х));
    КонецЦикла;
                
    БИ1.ВыполнитьЗапрос(ВыбраннаяДата, ВыбраннаяДата, БИ.Счет);

        Если БИ1.ВыбратьСубконто(1) = 1 Тогда
        Пока БИ1.ПолучитьСубконто(1) = 1 Цикл
            ...

                        Если БИ1.ВыбратьСубконто(2) = 1 Тогда
                Пока БИ1.ПолучитьСубконто(2) = 1 Цикл // Число фильтров субконто превысило допустимое значение!
                                    ...
                                КонецЦикла;
            КонецЕсли;
        КонецЦикла;
    КонецЕсли;
КонецЦикла;

Что за ерунда? Почему на проверке "Если БИ1.ВыбратьСубконто(2) = 1 Тогда" вылазит ошибка?
1 Eeakie
 
09.01.16
18:25
Как-то странно код переносится :) Его вообще нельзя править вручную чтоль..
2 Джордж1
 
09.01.16
18:27
Ну может у счета вообще субконто нет
3 Джордж1
 
09.01.16
18:28
Обход субконто тоже лучше делать так
Для Х = 1 По ПечСчет.КоличествоСубконто() Цикл
КонецЦикла;
4 Eeakie
 
09.01.16
18:29
(3) У меня вроде бы так и сделано..
5 Джордж1
 
09.01.16
18:30
(4)ты и результаты так выбирай а не сразу
Если БИ1.ВыбратьСубконто(1) = 1 Тогда
6 Builder
 
09.01.16
18:31
Одним запросом никак что ли?
Зачем 2 запроса городить?
7 Eeakie
 
09.01.16
18:31
(6) Можно поподробнее про один запрос?
8 Eeakie
 
09.01.16
18:31
(5) Как вариант. Попробую.
9 Builder
 
09.01.16
19:07
(7) Что подробнее?
Конструкторы - Бухгалтерский запрос.
Он предлагает такую конструкцию, попробуй.

    Ит = СоздатьОбъект("БухгалтерскиеИтоги");
    Ит.ИспользоватьСубконто(,, 1);
    Ит.ИспользоватьСубконто(,, 1);
    Ит.ИспользоватьСубконто(,, 1);
    Ит.ВключатьСубсчета(1);
    Ит.ВыполнитьЗапрос(ВыбНачПериода, ВыбКонПериода,,,, 1,, "С");

    Ит.ВыбратьСчета();
    Пока Ит.ПолучитьСчет() = 1 Цикл
        Сформировать_Колонки(Ит, Таб, "Счет");
        Ит.ВыбратьСубконто(1);
        Пока Ит.ПолучитьСубконто(1) = 1 Цикл
....
ну и т.д.
10 HawkEye
 
09.01.16
20:47
(0) бред какой-то...
зачем тебе нужны БИ1 еще и создающиеся в цикле?
что за ПечСчет, если в сабже аж выделено "по ВСЕМ"?

или как обычно, ты сюда запостил совсем не то, что у тебя в отчете, причем строки выбирал по своему разумению?