Отчет оборотов по 2-х счетах

Тема в разделе "1C и всё что с ней связано", создана пользователем Elle, 22 мар 2010.

  1. Elle

    Elle Гость

    Как организовать отчет, чтобы выводило например субконто контрагенты и договора и по них по счету 63 СНД, СНК, ДО,КО... и здесь же по счету 37 СНД, СНК,ДО,КО...

    Код (Text):
    Ит = СоздатьОбъект("БухгалтерскиеИтоги");
    Ит.ИспользоватьСубконто(ВидыСубконто.Контрагенты,,1);
    Ит.ИспользоватьСубконто(ВидыСубконто.Договора,,1);
    СписокСчетов = "63,37";
    Ит.ВыполнитьЗапрос(ДатаНач,ДатаКон,СписокСчетов);
    Ит.ВыбратьСубконто(1);
    Пока Ит.ПолучитьСубконто(1) = 1 Цикл
    Ит.ВыбратьСубконто(2);
    Пока Ит.ПолучитьСубконто(2) = 1 Цикл
    Ит.ВыбратьСчета();
    Пока Ит.ПолучитьСчет() = 1 Цикл
    ///вывод результатов
    Ит.ПолучитьСчет(СчетПоКоду("63"));
    Т.ВывестиСекцию("Секция_14|Секция_20");
    Ит.ПолучитьСчет(СчетПоКоду("37"));
    Т.ПрисоединитьСекцию("Секция_14|Секция_19");
    КонецЦикла;
    КонецЦикла;
    КонецЦикла;
    Отчет работает, вот только обороты записывает вместе по двум счетам, а не отдельно по 63 и отдельно по 37. Что делать?
     
  2. vbs

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    Попробуй в цикле не печатать сразу, а формировать ТЗ, потом ее отсортировать, затем перебором строк этой ТЗ уже выводить на печать
     
  3. kaa

    kaa Гость

    Ит.ВыбратьСчета();
    Пока Ит.ПолучитьСчет()=1 Цикл
    //циклы по субконто
    КонецЦикла;
     
  4. Дайнеко

    Дайнеко Well-Known Member
    1C Team

    Регистрация:
    19 ноя 2009
    Сообщения:
    951
    Симпатии:
    0
    Вот тут получается масло-масленое. Сначала в цикле выбрал очередной счет, потом потребовал счет 63. А если сальдо вообще нет? - В цикл не вошел.
    1) вариант
    БИ.ВыбратьСчета();
    БИ.ПолучитьСчет(,"63"); Обрати внимание порядок параметров
    Сум01Д = БИ.ДО ("С");
    Сум01К = БИ.КО ("С");
    БИ.ПолучитьСчет(,"37");
    Сум02Д = БИ.КО ("С");
    Сум02К = БИ.КО ("С");
    2) вариант
    Пока Ит.ПолучитьСчет() = 1 Цикл
    Если Ит.Счет.Код="63" Тогда
    Сум01Д = БИ.ДО ("С");
    Сум01К = БИ.КО ("С");
    КонецЕсли
    Если Ит.Счет.Код="37" Тогда
    ....
    КонецЦикла;
     
  5. Elle

    Elle Гость

    Код (Text):
    .....
    Ит.ВыбратьСубконто(ВидыСубконто.Контрагенты);
    Пока Ит.ПолучитьСубконто(ВидыСубконто.Контрагенты) = 1 Цикл
    Контрагент=Ит.Субконто(ВидыСубконто.Контрагенты);
    Ит.ВыбратьСчета();
    к_снд="";
    к_снк="";
    к_до="";
    к_ко="";
    к_скд="";
    к_скк="";
    к_снд_к="";
    к_снк_к="";
    к_до_к="";
    к_ко_к="";
    к_скд_к="";
    к_скк_к="";
    Пока Ит.ПолучитьСчет()=1 Цикл
    Если Ит.Счет.Код=сч_1 Тогда
    к_снд=Формат(Ит.СНД(),"Ч014.2.,");
    к_снк=Формат(Ит.СНК(),"Ч014.2.,");
    к_до=Формат(Ит.ДО(),"Ч014.2.,");
    к_ко=Формат(Ит.КО(),"Ч014.2.,");
    к_скд=Формат(Ит.СКД(),"Ч014.2.,");
    к_скк=Формат(Ит.СКК(),"Ч014.2.,");
    Иначе
    к_снд_к=Формат(Ит.СНД(),"Ч014.2.,");
    к_снк_к=Формат(Ит.СНК(),"Ч014.2.,");
    к_до_к=Формат(Ит.ДО(),"Ч014.2.,");
    к_ко_к=Формат(Ит.КО(),"Ч014.2.,");
    к_скд_к=Формат(Ит.СКД(),"Ч014.2.,");
    к_скк_к=Формат(Ит.СКК(),"Ч014.2.,");
    КонецЕсли;

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

    Договор=Ит.Субконто(ВидыСубконто.Договора);
    Ит.ВыбратьСчета();
    д_снд="";
    д_снк="";
    д_до="";
    д_ко="";
    д_скд="";
    д_скк="";
    д_снд_к="";
    д_снк_к="";
    д_до_к="";
    д_ко_к="";
    д_скд_к="";
    д_скк_к="";
    Пока Ит.ПолучитьСчет()=1 Цикл
    Если Ит.Счет.Код=сч_1 Тогда
    д_снд=Формат(Ит.СНД(),"Ч014.2.,");
    д_снк=Формат(Ит.СНК(),"Ч014.2.,");
    д_до=Формат(Ит.ДО(),"Ч014.2.,");
    д_ко=Формат(Ит.КО(),"Ч014.2.,");
    д_скд=Формат(Ит.СКД(),"Ч014.2.,");
    д_скк=Формат(Ит.СКК(),"Ч014.2.,");
    Иначе
    д_снд_к=Формат(Ит.СНД(),"Ч014.2.,");
    д_снк_к=Формат(Ит.СНК(),"Ч014.2.,");
    д_до_к=Формат(Ит.ДО(),"Ч014.2.,");
    д_ко_к=Формат(Ит.КО(),"Ч014.2.,");
    д_скд_к=Формат(Ит.СКД(),"Ч014.2.,");
    д_скк_к=Формат(Ит.СКК(),"Ч014.2.,");
    КонецЕсли;
    КонецЦикла;
    Т.ВывестиСекцию("Секция_5");

    КонецЦикла;
    Иначе
    Т.ВывестиСекцию("Секция_5");
    КонецЕсли;
    КонецЦикла;
    .........
    Все нормально работает, если сч_1 и сч_2 имеют субконто контрагенты и договора, но в отчете также можно еще 2 счета выбрать а там по одному счету сч_1 только субконто контрагенты, а по сч_2 контрагенты и договора, тогда в отчете обороты по сч_1 ничего непишет, а в обороты по сч_2 добавляет обороты по сч_1. Как нормально условие сделать на количество субконто?
     
  6. vbs

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    КоличествоСубконто()
    SubcontoCount()
    Синтаксис:
    КоличествоСубконто()
    Назначение:
    Определяет количество субконто у текущего счета.
    Возвращает: число - количество видов субконто у текущего счета.

    Добавлено: Пробуй
    Для я = 1 по Счет.КоличествоСубконто() цикл
    Счет.ВидСубконто(я).ТипСубконто()...
     
Загрузка...

Поделиться этой страницей