helpf.pro
Регистрация

v8: Как создать двумерный отчет?

theelectric
03.09.2012 10:56Прочитано: 3296
Всем доброго дня! А так же всем мои поздравления с началом осени и началом новой трудовой недели *06

Такая ситуация: есть контрагнт, есть два типа документа - реализация и платежка. Как сделать отчет который, выводил бы эти два документа в разных колонках (без привязки к друг другу). Т.е. что бы отчт имел примерно такой вид:

-------------------------------------------------------------------------------------------------
И.П. Василий Пупкин
-------------------------------------------------------------------------------------------------
РеализацияТоваровУслуг № 1559 | ПлатежноеПоручениеВхож № 1345
РеализацияТоваровУслуг № 1989 | ПлатежноеПоручениеВхож № 5978
РеализацияТоваровУслуг № 2659 | ПлатежноеПоручениеВхож № 5981
РеализацияТоваровУслуг № 2987 |
-------------------------------------------------------------------------------------------------
ЗАО "Чудо Прибор"
-------------------------------------------------------------------------------------------------
РеализацияТоваровУслуг № 59 | ПлатежноеПоручениеВхож № 134
РеализацияТоваровУслуг № 89 | ПлатежноеПоручениеВхож № 578
РеализацияТоваровУслуг № 99 | ПлатежноеПоручениеВхож № 898
| ПлатежноеПоручениеВхож № 1278
Yandex
Возможно, вас также заинтересует
Реклама на портале
theelectric
03.09.2012 10:57Ответ № 1
последняя строка не получилась, как хотел... Т.е. 3 дока Реализции и 4 дока Платежки
areavel
03.09.2012 11:26Ответ № 2
Привет, может поможет. Было похожее задание, делал 2 таблицы значений, где по параметру дебет или кредит выводил нужный документ.
theelectric
03.09.2012 12:47Ответ № 3
(2) areavel, то бишь ты это не одним запросом делал?
areavel
03.09.2012 16:45Ответ № 4
я запрос не использовал, а так да можно было через 2 запроса.
E_Migachev
03.09.2012 16:49Ответ № 5
(3) theelectric, запросом так не получится, то же делал такое через Таблицы значений, вот мое решение:
Код 1C v 8.х
 // Запрос с выборкой а далее код
//Создадим ТЗ для расчета документов
ТЗдок = Новый ТаблицаЗначений;
ТЗдок.Колонки.Добавить("Реестр");
ТЗдок.Колонки.Добавить("База");
ТЗдок.Колонки.Добавить("НДФЛ");
ТЗдок.Колонки.Добавить("Удержание");
ТЗдок.Колонки.Добавить("Рубли");
ТЗдок.Колонки.Добавить("Валюта");
ВыборкаДетали = ВыборкаСтатьиЗатрат.Выбрать();
//Вывод документов
ТЗдок.Очистить();
Р=0;
У=0;
Пока ВыборкаДетали.Следующий() Цикл
//Определим дату
ВыбДата=ВыборкаДетали.ДатаДокум;

Если Лев(ВыборкаДетали.Регистратор.Метаданные().Имя,6) = "Реестр" Тогда //это реестр
Попытка
новстр = ТЗдок.Получить(Р);
Исключение
новстр = ТЗдок.Добавить();
КонецПопытки;
//новстр = ТЗдок.Вставить(Р);
новстр.Реестр = ВыборкаДетали.Регистратор;
новстр.База = ВыборкаДетали.РублевоеПокрытие;
новстр.НДФЛ = ВыборкаДетали.НДФЛ;
Р=Р+1;
Иначе // это удержание
Попытка
новстр = ТЗдок.Получить(У);
Исключение
новстр = ТЗдок.Добавить();
КонецПопытки;
новстр.Удержание = ВыборкаДетали.Регистратор;
Если ВыборкаДетали.УдержаноВВалюте > 0 тогда
новстр.Рубли = 0;
Иначе
новстр.Рубли = ВыборкаДетали.НДФЛ *(-1);
КонецЕсли;
новстр.Валюта = ВыборкаДетали.УдержаноВВалюте;
У=У+1;
КонецЕсли;

КонецЦикла;
//Теперь выведем документы
Для Каждого стр из ТЗдок Цикл
ОбластьДетальныхЗаписей.Параметры.Реестр = СтрЗаменить(Лев(стр.Реестр,СтрДлина(стр.Реестр)-8), "00000","");
ОбластьДетальныхЗаписей.Параметры.База = стр.База;
ОбластьДетальныхЗаписей.Параметры.НДФЛ = стр.НДФЛ;
ОбластьДетальныхЗаписей.Параметры.Удержание = СтрЗаменить(Лев(стр.Удержание,СтрДлина(стр.Удержание)-8), "00000","");
ОбластьДетальныхЗаписей.Параметры.Рубли = стр.Рубли;
ОбластьДетальныхЗаписей.Параметры.Валюта = стр.Валюта;
ТабДок.Вывести(ОбластьДетальныхЗаписей);
КонецЦикла;
//Вывели, теперь итог посчитаем
БазаИТ = БазаИТ + ТЗдок.Итог("База");
НДФЛИТ = НДФЛИТ + ТЗдок.Итог("НДФЛ");
РублиИТ= РублиИТ + ТЗдок.Итог("Рубли");
ВалютаИТ = ВалютаИТ + ТЗдок.Итог("Валюта");
КонецЦикла;

Изменено 03.09.12 16:51:39
theelectric
03.09.2012 21:10Ответ № 6
Ёпт... Буду разбираться!
Опять, мужики, вы меня выручаете! Спасибо!
Подсказка: Для быстрого поиска ответов - используйте 'Поиск'
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.