Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Обход бухгалтерских итогов
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 7.7
vadim007
Мне нужно получить данные в разрезе Контрагентов, Заказов, и Счетов.
Для отбора Контрагентов и Заказов используем субконто:
БИ.ИспользоватьСубконто(ВидыСубконто.Контрагенты);
БИ.ИспользоватьСубконто(ВидыСубконто.Заказы);

А вот для выбора счетов можно использовать как бы два варианта обхода результатов запроса:
Вариант1:
БИ.ВыбратьСчета();
Пока БИ.ПолучитьСчет() = 1 Цикл
    БИ.ВыбратьСубконто(1);
    Пока БИ.ПолучитьСубконто(1) = 1 Цикл
        БИ.ВыбратьСубконто(2);
        Пока БИ.ПолучитьСубконто(2) = 1 Цикл
            ....

Вариант2:
БИ.ВыбратьСубконто(1);
Пока БИ.ПолучитьСубконто(1) = 1 Цикл
     БИ.ВыбратьСубконто(2);
     Пока БИ.ПолучитьСубконто(2) = 1 Цикл
          БИ.ВыбратьСчета();
          Пока БИ.ПолучитьСчет() = 1 Цикл
              ....

Какой вариант лучше? Или что в лоб, что по лбу?
nysysimara
Для конечного результата по-моему одинаково, тут надо выбирать в зависимости от дополнительных сумм которые можно получить:
в первом варианте - итог по счету в целом, по счету+Контрагент
во втором - итог по контрагенту без разреза счетов, по контрагенту+заказ
alex040269
По моему Вариант 2 лучше. Зачем выбирать все счета? Второй вариант выберет только субконто, на котором есть остатки и счета, на которых есть остатки по данному субконто.
vadim007
Я также остановился на втором варианте.
Еще вопрос в продолжение темы: как узнать дату операции (проводки), которая выбирается в текущей момент?
Я сначала использовал дату Заказа, но это неверно. Например, Заказ=СчетФактура от 12.08.11, а проводка сделана БанковскойВыпиской от 10.10.11.
Можно "выйти" на БВ через подчиненные документы СФ, но это как-то через ж. Может есть более правильный способ?
mister-x
Цитата
как узнать дату операции (проводки), которая выбирается в текущей момент?
зробити вибірку по періодах: проводка або операція
ВыполнитьЗапрос(<НачалоПериода>,<КонецПериода>,<Счет>,<КоррСчет>,<Валюта>,<ТипИтогов>,<Периодичность>,<ТипСуммы>)

Периодичность
vadim007
А как это будет выглядеть в коде второго варианта?
mister-x
ИтОстаток.ВыполнитьЗапрос(..."Проводка"...); // ИтОстаток.ВыполнитьЗапрос(..."Операция"...);
БИ.ВыбратьСубконто(1);
Пока БИ.ПолучитьСубконто(1) = 1 Цикл
     БИ.ВыбратьСубконто(2);
     Пока БИ.ПолучитьСубконто(2) = 1 Цикл
          БИ.ВыбратьСчета();
          Пока БИ.ПолучитьСчет() = 1 Цикл
Пока БИ.ПолучитьСчет()=1 Цикл

БИ.выбратьПериоды();
пока БИ.получитьПериод()=1 цикл
....
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.