Помогите написать процедуру! Написать отчет, в котором будут выводится остатки по всем балансовым счетам (из плана счетов), у которых есть ненулевое сальдо на заданную дату (задается в форме).
Процедура Сформировать()
Таб = СоздатьОбъект("Таблица");//будем все выводить в таблицу
Ит = СоздатьОбъект("БухгалтерскиеИтоги");
Ит.ВыполнитьЗапрос(ВыбНачПериода, ВыбКонПериода,,,, 1,, "С"); //выполняем
запрос
Таб.ВывестиСекцию("Шапка"); //выводим заголовок таблицы
Таб.Опции(0,0,Таб.ВысотаТаблицы(),0);
Ит.ВыбратьСчета(); //открываем выборку по счетам
Пока Ит.ПолучитьСчет() = 1 Цикл
сч=Ит.Счет;//получили номер счета
//получаем итоги по каждому счету
СНД=Ит.СНД();
СНК=Ит.СНК();
СКД=Ит.СКД();
СКК=Ит.СКК();
До=Ит.ДО();
КО=Ит.КО();
Таб.ВывестиСекцию("Счет");//выводим итоги в таблицу
КонецЦикла;
//а вот здесь, когда выборка не открыта (или уже закрыта)
//можно получить отоги сразу по всем счетам.
СНД=Ит.СНД();
СНК=Ит.СНК();
СКД=Ит.СКД();
СКК=Ит.СКК();
До=Ит.ДО();
КО=Ит.КО();
Таб.ВывестиСекцию("Подвал");
Таб.ТолькоПросмотр(1);
Таб.Показать("Сформировать","");
КонецПроцедуры
Процедура ПриОткрытии()
//это чтобы не вводить каждый раз даты
ВыбНачПериода = НачалоПериодаБИ();
ВыбКонПериода = КонецПериодаБИ();
КонецПроцедуры
Страниц: [1] Ответ | Уведомлять | Добавить голосование | Отправить эту тему | Печать
закуриваем 2 попиросу...открываем отчет "Оборотно сальдовая ведомость"
Магические слова "Если ... Тогда ... КонецЕсли;" помогут 100%
Так как отбор субконто как я вижу ни к чему - то запрос нужно немного... переделать..
Например, это будет вот так выглядеть//*******************************************
Процедура Сформировать()
Таб = СоздатьОбъект("Таблица"); // Получаем ссылку на объект типа Таблица
Таб.ИсходнаяТаблица("Таблица"); // Устанавливаем таблицу для вывода
Таб.ВывестиСекцию("Шапка"); // Выводим заголовок отчета
// Готовим итоговые суммы
ИтогСНД = 0;
ИтогСНК = 0;
ИтогСКД = 0;
ИтогСКК = 0;
ИтогДО = 0;
ИтогКО = 0;
Итоги = СоздатьОбъект("БухгалтерскиеИтоги"); // Получаем ссылку на бухгалтерские итоги
Итоги.ПериодД(НачДата, КонДата); // устанавливаем произвольный период - с НачДата по КонДата
Счета = СоздатьОбъект("Счет"); // получаем ссылку на список счетов
Счета.ВыбратьСчета(); // открываем выборку для перебора
Пока Счета.ПолучитьСчет()=1 Цикл // перебираем счета
Счет = Счета.ТекущийСчет(); // получаем ссылку на счет в выборке
// теперь можно отсеять ненужные нам счета
// например, не будем проверять забалансовые счета и группы
Если (Счет.Забалансовый = 1)ИЛИ(Счет.ЭтоГруппа()=1) Тогда
Продолжить;
КонецЕсли;
// получаем остатки и обороты счета
СНД = Итоги.СНД(Счет);
СНК = Итоги.СНК(Счет);
СКД = Итоги.СКД(Счет);
СКК = Итоги.СКК(Счет);
ДО = Итоги.ДО(Счет);
КО = Итоги.КО(Счет);
Если (СНД<>0)ИЛИ(СНК<>0)ИЛИ(СКД<>0)ИЛИ(СКК<>0)ИЛИ(ДО<>0)ИЛИ(КО<>0) Тогда
Таб.ВывестиСекцию("Строка"); // выводим результат в секцию Строка
// наращиваем итоги
ИтогСНД = ИтогСНД +СНД;
ИтогСНК = ИтогСНК +СНК;
ИтогСКД = ИтогСКД +СКД;
ИтогСКД = ИтогСКК +СКК;
ИтогДО = ИтогДО +ДО;
ИтогКО = ИтогКО +КО;
КонецЕсли;
КонецЦикла;
Таб.ВывестиСекцию("Подвал"); // Выводим итоговую секцию таблицы
Таб.ТолькоПросмотр(1); // устанавливаем режим просмотра
Таб.Опции(0,0,0,0); // устанавливаем опции вывода таблицы на экран
Таб.Показать("Отчет"); // показываем таблицу на экране с заголовком "Отчет"
КонецПроцедуры
Процедура ПриОткрытии()
//это чтобы не вводить каждый раз даты
НачДата = НачалоПериодаБИ();
КонДата = КонецПериодаБИ();
КонецПроцедуры
//*******************************************
Процедура Сформировать()
Таб = СоздатьОбъект("Таблица"); // Получаем ссылку на объект типа Таблица
Таб.ИсходнаяТаблица("Таблица"); // Устанавливаем таблицу для вывода
Таб.ВывестиСекцию("Шапка"); // Выводим заголовок отчета
// Готовим итоговые суммы
ИтогСНД = 0;
ИтогСНК = 0;
ИтогСКД = 0;
ИтогСКК = 0;
ИтогДО = 0;
ИтогКО = 0;
Итоги = СоздатьОбъект("БухгалтерскиеИтоги"); // Получаем ссылку на бухгалтерские итоги
Итоги.ПериодД(НачДата, КонДата); // устанавливаем произвольный период - с НачДата по КонДата
Счета = СоздатьОбъект("Счет"); // получаем ссылку на список счетов
Счета.ВыбратьСчета(); // открываем выборку для перебора
Пока Счета.ПолучитьСчет()=1 Цикл // перебираем счета
Счет = Счета.ТекущийСчет(); // получаем ссылку на счет в выборке
// теперь можно отсеять ненужные нам счета
// например, не будем проверять забалансовые счета и группы
Если (Счет.Забалансовый = 1)ИЛИ(Счет.ЭтоГруппа()=1) Тогда
Продолжить;
КонецЕсли;
// получаем остатки и обороты счета
СНД = Итоги.СНД(Счет);
СНК = Итоги.СНК(Счет);
СКД = Итоги.СКД(Счет);
СКК = Итоги.СКК(Счет);
ДО = Итоги.ДО(Счет);
КО = Итоги.КО(Счет);
Если (СНД<>0)ИЛИ(СНК<>0)ИЛИ(СКД<>0)ИЛИ(СКК<>0)ИЛИ(ДО<>0)ИЛИ(КО<>0) Тогда
Таб.ВывестиСекцию("Строка"); // выводим результат в секцию Строка
// наращиваем итоги
ИтогСНД = ИтогСНД +СНД;
ИтогСНК = ИтогСНК +СНК;
ИтогСКД = ИтогСКД +СКД;
ИтогСКД = ИтогСКК +СКК;
ИтогДО = ИтогДО +ДО;
ИтогКО = ИтогКО +КО;
КонецЕсли;
КонецЦикла;
Таб.ВывестиСекцию("Подвал"); // Выводим итоговую секцию таблицы
Таб.ТолькоПросмотр(1); // устанавливаем режим просмотра
Таб.Опции(0,0,0,0); // устанавливаем опции вывода таблицы на экран
Таб.Показать("Отчет"); // показываем таблицу на экране с заголовком "Отчет"
КонецПроцедуры
Процедура ПриОткрытии()
//это чтобы не вводить каждый раз даты
НачДата = НачалоПериодаБИ();
КонДата = КонецПериодаБИ();
КонецПроцедуры
Лови ссылку на отчетик
http://pro1c.org.ua/redirect.php?http://file.qip.ru/file/120524757/f88e8251/_online.html
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua