1. Набираем команду codeby webinar. Набираем команду для организации и проведения вебинаров. Подробнее ...

    Скрыть объявление
  2. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление
  3. Получи 30.000 рублей. Для получения денег необходимо принять участие в конкурсе авторов codeby. С условиями и призами можно ознакомиться на этой странице ...

    Внимание! Регистрация авторов на конкурс закрыта.

    Скрыть объявление

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

Тема в разделе "Базы данных и администрирование", создана пользователем Elle, 22 мар 2010.

  1. Elle

    Elle Гость

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

    Код:
    Ит = СоздатьОбъект("БухгалтерскиеИтоги"); 
    Ит.ИспользоватьСубконто(ВидыСубконто.Контрагенты,,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

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

    kaa Гость

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

    Дайнеко Well-Known Member

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

    Elle Гость

    Репутация:
    0
    Код:
    .....
    Ит.ВыбратьСубконто(ВидыСубконто.Контрагенты);
    Пока Ит.ПолучитьСубконто(ВидыСубконто.Контрагенты) = 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

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

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

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