• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

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

  • Автор темы Elle
  • Дата начала
E

Elle

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

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

vbs

Попробуй в цикле не печатать сразу, а формировать ТЗ, потом ее отсортировать, затем перебором строк этой ТЗ уже выводить на печать
 
K

kaa

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

Дайнеко

Ит.ВыбратьСчета();
Пока Ит.ПолучитьСчет() = 1 Цикл
///вывод результатов
Ит.ПолучитьСчет(СчетПоКоду("63"));
Т.ВывестиСекцию("Секция_14|Секция_20");
Ит.ПолучитьСчет(СчетПоКоду("37"));
Т.ПрисоединитьСекцию("Секция_14|Секция_19");
КонецЦикла;

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

Elle

Код:
.....
Ит.ВыбратьСубконто(ВидыСубконто.Контрагенты);
Пока Ит.ПолучитьСубконто(ВидыСубконто.Контрагенты) = 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. Как нормально условие сделать на количество субконто?
 
V

vbs

КоличествоСубконто()
SubcontoCount()
Синтаксис:
КоличествоСубконто()
Назначение:
Определяет количество субконто у текущего счета.
Возвращает: число - количество видов субконто у текущего счета.

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

Обучение наступательной кибербезопасности в игровой форме. Начать игру!