Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Отчет, в котором будут выводится остатки по всем балансовым счетам  (Прочитано 11888 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Павлов Сергей 48
Гость
« : 20-02-2010 10:40 » 

Помогите написать процедуру! Написать отчет, в котором будут выводитЬся остатки по всем балансовым счетам (из плана счетов), у которых есть ненулевое сальдо на заданную дату (задается в форме).

Или иправить старую проц
Процедура Сформировать()
Таб = СоздатьОбъект("Таблица");//будем все выводить в таблицу
Ит = СоздатьОбъект("БухгалтерскиеИтоги");
Ит.ВыполнитьЗапрос(ВыбНачПериода, ВыбКонПериода,,,, 1,, "С"); //выполняем
запрос
Таб.ВывестиСекцию("Шапка"); //выводим заголовок таблицы
Таб.Опции(0,0,Таб.ВысотаТаблицы(),0);
Ит.ВыбратьСчета(); //открываем выборку по счетам
Пока Ит.ПолучитьСчет() = 1 Цикл
сч=Ит.Счет;//получили номер счета
//получаем итоги по каждому счету
СНД=Ит.СНД();
СНК=Ит.СНК();
СКД=Ит.СКД();
СКК=Ит.СКК();
До=Ит.ДО();
КО=Ит.КО();
Таб.ВывестиСекцию("Счет");//выводим итоги в таблицу
КонецЦикла;
//а вот здесь, когда выборка не открыта (или уже закрыта)
//можно получить отоги сразу по всем счетам.
СНД=Ит.СНД();
СНК=Ит.СНК();
СКД=Ит.СКД();
СКК=Ит.СКК();
До=Ит.ДО();
КО=Ит.КО();
Таб.ВывестиСекцию("Подвал");
Таб.ТолькоПросмотр(1);
Таб.Показать("Сформировать","");
КонецПроцедуры

Процедура ПриОткрытии()
//это чтобы не вводить каждый раз даты
ВыбНачПериода = НачалоПериодаБИ();
ВыбКонПериода = КонецПериодаБИ();
КонецПроцедуры

   
« Последнее редактирование: 20-02-2010 11:28 от Sel » Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 20-02-2010 13:19 » 

Посмотри стандартный отчет Оборотно-сальдовая ведомость (ОСВ). Что в нем не понятно?

Ты не написал в чем у тебя проблема (помощь - предполагает решение конкретной проблемы) - а всю работу за тебя тут делать никто не будет.
Записан
Павлов Сергей 48
Гость
« Ответ #2 : 20-02-2010 14:03 » 

Проблема в том, что нужно вывести только балансовые остатки по счетам, а он выводит и оборот. Как вывести, чтобы выводил сальдо только по балансовым счетам!?
Заранее спасибо от души!
« Последнее редактирование: 20-02-2010 15:52 от Sel » Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 20-02-2010 14:27 » 

1. Отбери все нужные счета предварительно и создай список значений с нужными счетами (Забалансовый=0)
2. Передай список счетов параметром в метод Ит.ВыполнитьЗапрос():
Ит.ВыполнитьЗапрос(ВыбНачПериода, ВыбКонПериода,СписокНужныхСчетов,,, 1,, "С");
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #4 : 20-02-2010 14:28 » 

Цитата
у которых есть ненулевое сальдо на заданную дату
3. В цикле проверяй: если сальдо нулевое - пропускай вывод этого счета
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #5 : 20-02-2010 18:26 » 

Цитата
Вы знаете,нужно их отобрать из плана отчетов без создание и отбора нового плана счета!Мб так нужно условие?Посмотри пожалуйста.

"Отбери" - это значит динамически, в программе:
Код:
	СписокНужныхСчетов=СоздатьОбъект("СписокЗначений");
Счет=СоздатьОбъект("Счет."+ОсновнойПланСчетов().Идентификатор);
Счет.ВыбратьСчета();
Пока Счет.ПолучитьСчет(1)=1 Цикл
Если Счет.Забалансовый=1 Тогда Продолжить; КонецЕсли;
СписокНужныхСчетов.ДобавитьЗначение(Счет.ТекущийСчет());
КонецЦикла;
Записан
Павлов Сергей 48
Гость
« Ответ #6 : 21-02-2010 11:01 » 

Цитата
Вы знаете,нужно их отобрать из плана отчетов без создание и отбора нового плана счета!Мб так нужно условие?Посмотри пожалуйста.

"Отбери" - это значит динамически, в программе:
Код:
	СписокНужныхСчетов=СоздатьОбъект("СписокЗначений");
Счет=СоздатьОбъект("Счет."+ОсновнойПланСчетов().Идентификатор);
Счет.ВыбратьСчета();
Пока Счет.ПолучитьСчет(1)=1 Цикл
Если Счет.Забалансовый=1 Тогда Продолжить; КонецЕсли;
СписокНужныхСчетов.ДобавитьЗначение(Счет.ТекущийСчет());
КонецЦикла;

В какое место нужно вставить этот отбор в моей процедуре?или создать новую надо для отбора?или редактировать?
Подскажите.. или цикл сделать?Помогите..спасибо заранее
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #7 : 21-02-2010 11:52 » 

смотри сюда:
Код:
2. Передай список счетов параметром в метод Ит.ВыполнитьЗапрос():
Ит.ВыполнитьЗапрос(ВыбНачПериода, ВыбКонПериода,СписокНужныхСчетов,,, 1,, "С");
Значит этот отбор нужно вставить перед Ит.ВыполнитьЗапрос()
Записан
Павлов Сергей 48
Гость
« Ответ #8 : 21-02-2010 13:53 » 

смотри сюда:
Код:
2. Передай список счетов параметром в метод Ит.ВыполнитьЗапрос():
Ит.ВыполнитьЗапрос(ВыбНачПериода, ВыбКонПериода,СписокНужныхСчетов,,, 1,, "С");
Значит этот отбор нужно вставить перед Ит.ВыполнитьЗапрос()
Процедура Сформировать()
 Таб = СоздатьОбъект("Таблица");//будем все выводить в таблицу
 Ит = СоздатьОбъект("БухгалтерскиеИтоги");
 СписокНужныхСчетов=СоздатьОбъект("СписокЗначений");
   Счет=СоздатьОбъект("Счет."+ОсновнойПланСчетов().Идентификатор);
   Счет.ВыбратьСчета();
   Пока Счет.ПолучитьСчет(1)=1 Цикл
      Если Счет.Забалансовый=1 Тогда Продолжить; КонецЕсли;
      СписокНужныхСчетов.ДобавитьЗначение(Счет.ТекущийСчет());
   КонецЦикла;
 Ит.ВыполнитьЗапрос(ВыбНачПериода, ВыбКонПериода,,,, 1,, "С"); //выполняем запрос
 Таб.ВывестиСекцию("Шапка"); //выводим заголовок таблицы
 Таб.Опции(1,0,Таб.ВысотаТаблицы(),0);
 Ит.ВыбратьСчета(); //открываем выборку по счетам
 Пока Ит.ПолучитьСчет() = 1 Цикл
  сч=Ит.Счет;//получили номер счета
  //получаем итоги по каждому счету
  СНД=Ит.СНД();
  СНК=Ит.СНК();
  СКД=Ит.СКД();
  СКК=Ит.СКК();
  До=Ит.ДО();
  КО=Ит.КО();
  Ит.СКД();//конечное сальдо дебитовое
  Ит.СКК();//конечное сальдо кредитовое
     
  Таб.ВывестиСекцию("Счет");//выводим итоги в таблицу
 КонецЦикла; 
  //а вот здесь, когда выборка не открыта (или уже закрыта)
 //можно получить итоги сразу по всем счетам.
 СНД=Ит.СНД();
 СНК=Ит.СНК();
 СКД=Ит.СКД();
 СКК=Ит.СКК();
 До=Ит.ДО();
 КО=Ит.КО();
 Ит.СКД();//конечное сальдо дебитовое
 Ит.СКК();//конечное сальдо кредитовое               
 
 Таб.ВывестиСекцию("Подвал");
 Таб.ТолькоПросмотр(1);
 Таб.Показать("Сформировать","");
КонецПроцедуры                 

Процедура ПриОткрытии()
 //это чтобы не вводить каждый раз даты
 ВыбНачПериода = НачалоПериодаБИ();
 ВыбКонПериода = КонецПериодаБИ();
КонецПроцедуры

Выдает ошибку Счет=СоздатьОбъект("Счет."+ОсновнойПланСчетов().Идентификатор);
{Отчет.ОСВ.Форма.Модуль(5)}: Поле агрегатного объекта не обнаружено (Идентификатор)

Какой индификатор поставить нужно?Подскажите еще...спс Вам!!!!!!
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #9 : 21-02-2010 21:04 » new

Попробуй тогда просто:
Счет=СоздатьОбъект("Счет");
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines