Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
21 ноя 2024, 23:36

вывод в отчет сумм по нескольким документам

Автор spapin, 26 июн 2013, 10:10

0 Пользователей и 1 гость просматривают эту тему.

spapin

Доброе утро.
Подскажите, пожалуйста, формирую отчет(НЕ СКД), где документы сравниваю по типу, если такой-то тип заполняем такую область, но если сумма уже была она же проставляется до конца, пробую обнулять перед циклом(Для каждого ВыборкаСделка из ТЗРезультата цикл) то же самое (по второй группировки) ...

Перем СуммаПеревода;
Перем СуммаРасхода;
Перем СуммаКонвертации;
Перем СуммаТрансфер;
СуммаПеревода = 0;
СуммаРасхода = 0;
СуммаКонвертации = 0;
СуммаТрансфер = 0;


Макет = ВнешнийОтчетОбъект.ПолучитьМакет(Отчет);
Запрос = Новый Запрос;
текстзапроса =
ВЫБРАТЬ
ЗаказыПоставщикамВЭДОстаткиИОбороты.Контрагент,
ЗаказыПоставщикамВЭДОстаткиИОбороты.ЗаказПоставщику,
ЗаказыПоставщикамВЭДОстаткиИОбороты.СуммаВзаиморасчетовПриход КАК СуммаВзаиморасчетовПриход,
ЗаказыПоставщикамВЭДОстаткиИОбороты.Сделка КАК Сделка,
0 КАК СуммаПеревода,
0 КАК СуммаКонвертация,
0 КАК СуммаТрансфер,
0 КАК СуммаДокумента,
NULL КАК докоплаты,
0 КАК КоэффОчистки
ИЗ
РегистрНакопления.ЗаказыПоставщикамВЭД.ОстаткиИОбороты(&ДатаНачала, &ДатаКонца, Период, , ) КАК ЗаказыПоставщикамВЭДОстаткиИОбороты
ГДЕ
1 = 1
И 3 = 3

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
ДокументОплатыВЭД.Контрагент,
NULL,
0,
ДокументОплатыВЭД.Сделка,
ДокументОплатыВЭД.СуммаПеревода,
ДокументОплатыВЭД.СуммаКонвертация,
ДокументОплатыВЭД.СуммаТрансфер,
ДокументОплатыВЭД.СуммаДокумента,
ДокументОплатыВЭД.Ссылка,
NULL
ИЗ
Документ.ДокументОплатыВЭД КАК ДокументОплатыВЭД
ГДЕ
2 = 2
И 4 = 4
И ДокументОплатыВЭД.Дата МЕЖДУ &ДатаНачала И &ДатаКонца

СГРУППИРОВАТЬ ПО
ДокументОплатыВЭД.Контрагент,
ДокументОплатыВЭД.Сделка,
ДокументОплатыВЭД.СуммаПеревода,
ДокументОплатыВЭД.СуммаКонвертация,
ДокументОплатыВЭД.СуммаТрансфер,
ДокументОплатыВЭД.СуммаДокумента,
ДокументОплатыВЭД.Ссылка
ИТОГИ
СУММА(СуммаВзаиморасчетовПриход),
СУММА(СуммаПеревода),
СУММА(СуммаКонвертация),
СУММА(СуммаТрансфер),
СУММА(СуммаДокумента)
ПО
Сделка;

Если ЭлементыФормы.Контрагент.Значение  Справочники.Контрагенты.ПустаяСсылка() тогда
Запрос.УстановитьПараметр(Контрагент, Контрагент);
текстзапроса = СтрЗаменить(текстзапроса,1 = 1,ЗаказыПоставщикамВЭДОстаткиИОбороты.Контрагент = &Контрагент);
текстзапроса = СтрЗаменить(текстзапроса,2 = 2,ДокументОплатыВЭД.Контрагент = &Контрагент);
КонецЕсли;
Если ЭлементыФормы.Сделка.Значение  Справочники.СделкиВЭД.ПустаяСсылка() тогда
Запрос.УстановитьПараметр(Сделка, Сделка);
текстзапроса = СтрЗаменить(текстзапроса,3 = 3,ЗаказыПоставщикамВЭДОстаткиИОбороты.Сделка = &Сделка);
текстзапроса = СтрЗаменить(текстзапроса,4 = 4,ДокументОплатыВЭД.Сделка = &Сделка);
КонецЕсли;
Запрос.УстановитьПараметр(ДатаКонца, КонецДня(ДатаКонца));
Запрос.УстановитьПараметр(ДатаНачала, ДатаНачала);
Запрос.Текст = текстзапроса;


Результат = Запрос.Выполнить();
ТЗРезультата = Результат.Выгрузить();
ТЗРезультата.Колонки.Добавить(ДатаДок);
ТЗРезультата.Колонки.Добавить(Уровень);
ТЗРезультата.Колонки.Добавить(Комментарий);
ТЗРезультата.Колонки.Добавить(ДокументДвижения);
ТЗРезультата.Колонки.Добавить(КоэффОчистки);

Для каждого стрТЗРезультата из ТЗРезультата цикл
Сообщить(стрТЗРезультата);
Если (стрТЗРезультата.заказпоставщику = null) и (стрТЗРезультата.ДокОплаты = null) тогда
стрТЗРезультата.уровень = 1;
Иначе
стрТЗРезультата.уровень = 2;
Если стрТЗРезультата.заказПоставщику  null тогда

стрТЗРезультата.ДатаДок = Формат(стрТЗРезультата.заказПоставщику.дата, ДФ=dd.MM.yyyy);
стрТЗРезультата.Комментарий = стрТЗРезультата.заказПоставщику.Комментарий;
стрТЗРезультата.ДокументДвижения =  стрТЗРезультата.заказПоставщику;
КонецЕсли;

Если стрТЗРезультата.ДокОплаты  null тогда

стрТЗРезультата.ДатаДок = Формат(стрТЗРезультата.ДокОплаты.дата, ДФ=dd.MM.yyyy);
стрТЗРезультата.Комментарий = стрТЗРезультата.ДокОплаты.Комментарий;
стрТЗРезультата.ДокументДвижения =  стрТЗРезультата.ДокОплаты;
КоэффОчистки = стрТЗРезультата.СуммаДокумента  стрТЗРезультата.СуммаКонвертация;
КонецЕсли;
КонецЕсли;
КонецЦикла;
ТЗРезультата.Сортировать(Сделка,ДатаДОк);
ОбластьЗаголовок = Макет.ПолучитьОбласть(Заголовок);
ОбластьПодвал = Макет.ПолучитьОбласть(Подвал);
ОбластьШапкаТаблицы = Макет.ПолучитьОбласть(ШапкаТаблицы);
ОбластьПодвалТаблицы = Макет.ПолучитьОбласть(ПодвалТаблицы);
ОбластьСделка = Макет.ПолучитьОбласть(Сделка);
ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть(Детали);
ОбластьИтого = Макет.ПолучитьОбласть(Итого);
ОбластьИтоги = Макет.ПолучитьОбласть(Итоги);
ОбластьИтого.Параметры.СуммаПеревода

ТабДок.Очистить();
ТабДок.Вывести(ОбластьЗаголовок);
ТабДок.Вывести(ОбластьШапкаТаблицы);
ТабДок.НачатьАвтогруппировкуСтрок();

ВыборкаСделка = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
ТабДок.Вывести(ОбластьИтого);

Для каждого ВыборкаСделка из ТЗРезультата цикл


Пока ВыборкаСделка.Следующий() Цикл
ОбластьСделка.Области.ДеталиЦветное.ЦветФона = новый Цвет(0,160,255);

Если ВыборкаСделка.СуммаПеревода  0 ИЛИ ВыборкаСделка.СуммаДокумента  0 ИЛИ ВыборкаСделка.СуммаКонвертация  0
ИЛИ ВыборкаСделка.СуммаТрансфер  0 Тогда
ОбластьДетальныхЗаписей.Области.ЦветБежевый.ЦветФона = новый Цвет (255,150,64);
Иначе
ОбластьДетальныхЗаписей.Области.ЦветБежевый.ЦветФона = новый Цвет (255,255,255);
КонецЕсли;

Если ВыборкаСделка.уровень=1 тогда
ОбластьСделка.Параметры.Заполнить(ВыборкаСделка);
Если ВыборкаСделка.СуммаДокумента  0 И  ВыборкаСделка.СуммаКонвертация  0 Тогда
ОбластьСделка.Параметры.КоэффОчистки = ВыборкаСделка.СуммаДокумента  ВыборкаСделка.СуммаКонвертация;
КонецЕсли;
ТабДок.Вывести(ОбластьСделка, ВыборкаСделка.Уровень);
иначе

ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаСделка);
                          ВремСумма = 0;
          ВремСумма = ВыборкаСделка.ДокументДвижения.СуммаДокумента;

              Если ТипЗнч(ВыборкаСделка.ДокументДвижения) = Тип(ДокументСсылка.ЗаказПоставщику_PI) Тогда
ОбластьДетальныхЗаписей.Параметры.СуммаPIBO = ВремСумма;
КонецЕсли;
Если ТипЗнч(ВыборкаСделка.ДокументДвижения) = Тип(ДокументСсылка.ЗаказПоставщику_BO) Тогда
ОбластьДетальныхЗаписей.Параметры.СуммаPIBO = ВремСумма;
КонецЕсли;
Если ТипЗнч(ВыборкаСделка.ДокументДвижения) = Тип(ДокументСсылка.ЗаказПоставщику_CI) Тогда
ОбластьДетальныхЗаписей.Параметры.СуммаCI = ВремСумма;
КонецЕсли;
Если ТипЗнч(ВыборкаСделка.ДокументДвижения) = Тип(ДокументСсылка.ЗаказПоставщику_SK) Тогда
ОбластьДетальныхЗаписей.Параметры.СуммаSK = ВремСумма;
КонецЕсли;

ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаСделка.Уровень);
СуммаПеревода = СуммаПеревода + ВыборкаСделка.СуммаПеревода;
СуммаРасхода = СуммаРасхода + ВыборкаСделка.СуммаДокумента;
СуммаКонвертации = СуммаКонвертации + ВыборкаСделка.СуммаКонвертация;
СуммаТрансфер = СуммаТрансфер + ВыборкаСделка.СуммаТрансфер;
КонецЕсли;

КонецЦикла;
ОбластьИтого.Параметры.Заполнить(ВыборкаСделка);
ОбластьИтого.Параметры.ИтогоСуммаПеревода = СуммаПеревода;
ОбластьИтого.Параметры.ИтогоРасход = СуммаРасхода;
ОбластьИтого.Параметры.ИтогоСуммаКонвертация = СуммаКонвертации;
ОбластьИтого.Параметры.ИтогоСуммаТрансфер = СуммаТрансфер;
ОбластьИтоги.Параметры.ИтогоСуммаПеревода = СуммаПеревода;
ОбластьИтоги.Параметры.ИтогоРасход = СуммаРасхода;
ОбластьИтого.Области.ДеталиЦветноеИтого.ЦветФона = новый цвет(255,255,0);
ТабДок.Вывести(ОбластьИтого);
ТабДок.ЗакончитьАвтогруппировкуСтрок();
ТабДок.Вывести(ОбластьПодвалТаблицы);
ТабДок.Вывести(ОбластьПодвал);
ТабДок.Вывести(ОбластьИтоги);  [code]

spapin

Правильно, что не так заполнялось, в условие то не входило.
Сделал не очень красиво, но работает:
ВремСумма = ВыборкаСделка.СуммаВзаиморасчетовПриход;//СуммаДокумента;

Если ТипЗнч(ВыборкаСделка.ДокументДвижения) = Тип("ДокументСсылка.ЗаказПоставщику_PI") Тогда
ОбластьДетальныхЗаписей.Параметры.СуммаPIBO = ВремСумма;
ОбластьДетальныхЗаписей.Параметры.СуммаCI = 0;
ОбластьДетальныхЗаписей.Параметры.СуммаSK = 0;
КонецЕсли;
Если ТипЗнч(ВыборкаСделка.ДокументДвижения) = Тип("ДокументСсылка.ЗаказПоставщику_BO") Тогда
ОбластьДетальныхЗаписей.Параметры.СуммаPIBO = ВремСумма;
ОбластьДетальныхЗаписей.Параметры.СуммаCI = 0;
ОбластьДетальныхЗаписей.Параметры.СуммаSK = 0;
КонецЕсли;
Если ТипЗнч(ВыборкаСделка.ДокументДвижения) = Тип("ДокументСсылка.ЗаказПоставщику_CI") Тогда
ОбластьДетальныхЗаписей.Параметры.СуммаCI = ВремСумма;
ОбластьДетальныхЗаписей.Параметры.СуммаPIBO = 0;
ОбластьДетальныхЗаписей.Параметры.СуммаSK = 0;
КонецЕсли;
Если ТипЗнч(ВыборкаСделка.ДокументДвижения) = Тип("ДокументСсылка.ЗаказПоставщику_SK") Тогда
ОбластьДетальныхЗаписей.Параметры.СуммаSK = ВремСумма;
ОбластьДетальныхЗаписей.Параметры.СуммаPIBO = 0;
ОбластьДетальныхЗаписей.Параметры.СуммаCI = 0;
КонецЕсли;

MuI_I_Ika


spapin

Пытаюсь вывести суммы по каждой сделке по документам(в синюю шапку таблицы). Можно ли накапливать в переменной сумму по сделке, а потом выводить в условие "Если ВыборкаСделка.уровень=1 тогда". Но проблема в том что суммы считаются после этого условия и еще придется обнулять сумму при новой сделке. Подскажите как лучше сделать?

Dethmontt

Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

spapin

Правильно ли вытаскивать документы из регистра или может сделать несколько запросов по документам?

GRADUS

Цитата: spapin от 26 июн 2013, 12:39
Правильно ли вытаскивать документы из регистра или может сделать несколько запросов по документам?

Лучше из регистра брать, будет быстрее запрос работать. Особенно если исп виртуальная табличка.

spapin

Цитата: Dethmontt от 26 июн 2013, 12:12
Хранить в какой нибудь структуре.
А можно подробнее никак не могу сообразить ... :fdbsdfbsd:
Добавлено: 27 июн 2013, 13:15


Как в запросе можно сравнить по типу документа?
Добавлено: 27 июн 2013, 17:34


Если кому интересно сделал так:

| ВЫБОР
| КОГДА ЗаказыПоставщикамВЭДОстаткиИОбороты.ЗаказПоставщику ССЫЛКА Документ.ЗаказПоставщику_PI
| ТОГДА ЗаказыПоставщикамВЭДОстаткиИОбороты.СуммаВзаиморасчетовПриход
| ИНАЧЕ 0
| КОНЕЦ КАК ЗаказПоставщикуPI,
| ВЫБОР
| КОГДА ЗаказыПоставщикамВЭДОстаткиИОбороты.ЗаказПоставщику ССЫЛКА Документ.ЗаказПоставщику_BO
| ТОГДА ЗаказыПоставщикамВЭДОстаткиИОбороты.СуммаВзаиморасчетовПриход
| ИНАЧЕ 0
| КОНЕЦ КАК ЗаказПоставщикуBO,
| ВЫБОР
| КОГДА ЗаказыПоставщикамВЭДОстаткиИОбороты.ЗаказПоставщику ССЫЛКА Документ.ЗаказПоставщику_CI
| ТОГДА ЗаказыПоставщикамВЭДОстаткиИОбороты.СуммаВзаиморасчетовПриход
| ИНАЧЕ 0
| КОНЕЦ КАК ЗаказПоставщикуCI,
| ВЫБОР
| КОГДА ЗаказыПоставщикамВЭДОстаткиИОбороты.ЗаказПоставщику ССЫЛКА Документ.ЗаказПоставщику_SK
| ТОГДА ЗаказыПоставщикамВЭДОстаткиИОбороты.СуммаВзаиморасчетовПриход
| ИНАЧЕ 0
| КОНЕЦ КАК ЗаказПоставщикуSK,

Добавлено: 27 июн 2013, 22:40


Подскажите еще один момент, пытаюсь сделать группировку по ЗаказПоставщику_PI и ЗаказПоставщику_BO (3 уровень). ДокументОплатыВЭД (4 уровень).
Вот в принципе код(за комментировано условие, по которому пытаюсь найти нужные документы и сгруппировать для 3 уровня):
Перем СуммаПеревода;
Перем СуммаРасхода;
Перем СуммаКонвертации;
Перем СуммаТрансфер;
Перем ЗаказПоставщикуBO;
Перем ЗаказПоставщикуPI;
Перем ЗаказПоставщикуCI;
Перем ЗаказПоставщикуSK;
ЗаказПоставщикуBO = 0;
ЗаказПоставщикуPI = 0;
ЗаказПоставщикуCI = 0;
ЗаказПоставщикуSK = 0;
СуммаПеревода = 0;
СуммаРасхода = 0;
СуммаКонвертации = 0;
СуммаТрансфер = 0;

Макет = ВнешнийОтчетОбъект.ПолучитьМакет("Отчет");
Запрос = Новый Запрос;
текстзапроса =
"ВЫБРАТЬ
| ЗаказыПоставщикамВЭДОстаткиИОбороты.Контрагент,
| ЗаказыПоставщикамВЭДОстаткиИОбороты.ЗаказПоставщику,
| ЗаказыПоставщикамВЭДОстаткиИОбороты.СуммаВзаиморасчетовПриход КАК СуммаВзаиморасчетовПриход,
| ЗаказыПоставщикамВЭДОстаткиИОбороты.Сделка КАК Сделка,
| 0 КАК СуммаПеревода,
| 0 КАК СуммаКонвертация,
| 0 КАК СуммаТрансфер,
| 0 КАК СуммаДокумента,
| NULL КАК докоплаты,
| 0 КАК КоэффОчистки,
| ВЫБОР
| КОГДА ЗаказыПоставщикамВЭДОстаткиИОбороты.ЗаказПоставщику ССЫЛКА Документ.ЗаказПоставщику_PI
| ИЛИ ЗаказыПоставщикамВЭДОстаткиИОбороты.ЗаказПоставщику ССЫЛКА Документ.ЗаказПоставщику_BO
| ТОГДА ЗаказыПоставщикамВЭДОстаткиИОбороты.СуммаВзаиморасчетовПриход
| ИНАЧЕ 0
| КОНЕЦ КАК ЗаказПоставщикуPI,
| ВЫБОР
| КОГДА ЗаказыПоставщикамВЭДОстаткиИОбороты.ЗаказПоставщику ССЫЛКА Документ.ЗаказПоставщику_BO
| ТОГДА ЗаказыПоставщикамВЭДОстаткиИОбороты.СуммаВзаиморасчетовПриход
| ИНАЧЕ 0
| КОНЕЦ КАК ЗаказПоставщикуBO,
| ВЫБОР
| КОГДА ЗаказыПоставщикамВЭДОстаткиИОбороты.ЗаказПоставщику ССЫЛКА Документ.ЗаказПоставщику_CI
| ТОГДА ЗаказыПоставщикамВЭДОстаткиИОбороты.СуммаВзаиморасчетовПриход + ЗаказыПоставщикамВЭДОстаткиИОбороты.ЗаказПоставщику.СуммаФрахт
| ИНАЧЕ 0
| КОНЕЦ КАК ЗаказПоставщикуCI,
| ВЫБОР
| КОГДА ЗаказыПоставщикамВЭДОстаткиИОбороты.ЗаказПоставщику ССЫЛКА Документ.ЗаказПоставщику_SK
| ТОГДА ЗаказыПоставщикамВЭДОстаткиИОбороты.СуммаВзаиморасчетовПриход
| ИНАЧЕ 0
| КОНЕЦ КАК ЗаказПоставщикуSK,
| ЗаказыПоставщикамВЭДОстаткиИОбороты.ЗаказПоставщику.СуммаДокумента КАК ЗаказПоставщикуСуммаДокументаBO,
| ЗаказыПоставщикамВЭДОстаткиИОбороты.ЗаказПоставщику.СуммаДокумента КАК ЗаказПоставщикуСуммаДокументаCI,
| ЗаказыПоставщикамВЭДОстаткиИОбороты.ЗаказПоставщику.СуммаДокумента КАК ЗаказПоставщикуСуммаДокументаPI,
| ЗаказыПоставщикамВЭДОстаткиИОбороты.ЗаказПоставщику.СуммаДокумента КАК ЗаказПоставщикуСуммаДокументаSK,
| ЗаказыПоставщикамВЭДОстаткиИОбороты.ЗаказПоставщику.СуммаФрахт,
| NULL КАК ДатаОплаты
|ИЗ
| РегистрНакопления.ЗаказыПоставщикамВЭД.ОстаткиИОбороты(&ДатаНачала, &ДатаКонца, Период, , ) КАК ЗаказыПоставщикамВЭДОстаткиИОбороты
|ГДЕ
| 1 = 1
| И 3 = 3
|
|СГРУППИРОВАТЬ ПО
| ЗаказыПоставщикамВЭДОстаткиИОбороты.Контрагент,
| ЗаказыПоставщикамВЭДОстаткиИОбороты.ЗаказПоставщику,
| ЗаказыПоставщикамВЭДОстаткиИОбороты.СуммаВзаиморасчетовПриход,
| ЗаказыПоставщикамВЭДОстаткиИОбороты.Сделка,
| ЗаказыПоставщикамВЭДОстаткиИОбороты.ЗаказПоставщику.СуммаДокумента,
| ВЫБОР
| КОГДА ЗаказыПоставщикамВЭДОстаткиИОбороты.ЗаказПоставщику ССЫЛКА Документ.ЗаказПоставщику_BO
| ТОГДА ЗаказыПоставщикамВЭДОстаткиИОбороты.СуммаВзаиморасчетовПриход
| ИНАЧЕ 0
| КОНЕЦ,
| ВЫБОР
| КОГДА ЗаказыПоставщикамВЭДОстаткиИОбороты.ЗаказПоставщику ССЫЛКА Документ.ЗаказПоставщику_SK
| ТОГДА ЗаказыПоставщикамВЭДОстаткиИОбороты.СуммаВзаиморасчетовПриход
| ИНАЧЕ 0
| КОНЕЦ,
| ВЫБОР
| КОГДА ЗаказыПоставщикамВЭДОстаткиИОбороты.ЗаказПоставщику ССЫЛКА Документ.ЗаказПоставщику_PI
| ИЛИ ЗаказыПоставщикамВЭДОстаткиИОбороты.ЗаказПоставщику ССЫЛКА Документ.ЗаказПоставщику_BO
| ТОГДА ЗаказыПоставщикамВЭДОстаткиИОбороты.СуммаВзаиморасчетовПриход
| ИНАЧЕ 0
| КОНЕЦ,
| ВЫБОР
| КОГДА ЗаказыПоставщикамВЭДОстаткиИОбороты.ЗаказПоставщику ССЫЛКА Документ.ЗаказПоставщику_CI
| ТОГДА ЗаказыПоставщикамВЭДОстаткиИОбороты.СуммаВзаиморасчетовПриход + ЗаказыПоставщикамВЭДОстаткиИОбороты.ЗаказПоставщику.СуммаФрахт
| ИНАЧЕ 0
| КОНЕЦ,
| ЗаказыПоставщикамВЭДОстаткиИОбороты.ЗаказПоставщику.СуммаФрахт,
| ЗаказыПоставщикамВЭДОстаткиИОбороты.ЗаказПоставщику.СуммаДокумента,
| ЗаказыПоставщикамВЭДОстаткиИОбороты.ЗаказПоставщику.СуммаДокумента,
| ЗаказыПоставщикамВЭДОстаткиИОбороты.ЗаказПоставщику.СуммаДокумента
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ДокументОплатыВЭД.Контрагент,
| NULL,
| 0,
| ДокументОплатыВЭД.Сделка,
| ДокументОплатыВЭД.СуммаПеревода,
| ДокументОплатыВЭД.СуммаКонвертация,
| ДокументОплатыВЭД.СуммаТрансфер,
| ДокументОплатыВЭД.СуммаДокумента,
| ДокументОплатыВЭД.Ссылка,
| NULL,
| NULL,
| NULL,
| NULL,
| NULL,
| NULL,
| NULL,
| NULL,
| NULL,
| NULL,
| ДокументОплатыВЭД.Дата
|ИЗ
| Документ.ДокументОплатыВЭД КАК ДокументОплатыВЭД
|ГДЕ
| 2 = 2
| И 4 = 4
| И ДокументОплатыВЭД.Дата МЕЖДУ &ДатаНачала И &ДатаКонца
|
|СГРУППИРОВАТЬ ПО
| ДокументОплатыВЭД.Контрагент,
| ДокументОплатыВЭД.Сделка,
| ДокументОплатыВЭД.СуммаПеревода,
| ДокументОплатыВЭД.СуммаКонвертация,
| ДокументОплатыВЭД.СуммаТрансфер,
| ДокументОплатыВЭД.СуммаДокумента,
| ДокументОплатыВЭД.Ссылка,
| ДокументОплатыВЭД.Дата
|ИТОГИ
| СУММА(СуммаВзаиморасчетовПриход),
| СУММА(СуммаПеревода),
| СУММА(СуммаКонвертация),
| СУММА(СуммаТрансфер),
| СУММА(СуммаДокумента),
| СУММА(ЗаказПоставщикуPI),
| СУММА(ЗаказПоставщикуBO),
| СУММА(ЗаказПоставщикуCI),
| СУММА(ЗаказПоставщикуSK)
|ПО
| Сделка";


Если ЭлементыФормы.Контрагент.Значение <> Справочники.Контрагенты.ПустаяСсылка() тогда
Запрос.УстановитьПараметр("Контрагент", Контрагент);
текстзапроса = СтрЗаменить(текстзапроса,"1 = 1","ЗаказыПоставщикамВЭДОстаткиИОбороты.Контрагент = &Контрагент");
текстзапроса = СтрЗаменить(текстзапроса,"2 = 2","ДокументОплатыВЭД.Контрагент = &Контрагент");
КонецЕсли;
Если ЭлементыФормы.Сделка.Значение <> Справочники.СделкиВЭД.ПустаяСсылка() тогда
Запрос.УстановитьПараметр("Сделка", Сделка);
текстзапроса = СтрЗаменить(текстзапроса,"3 = 3","ЗаказыПоставщикамВЭДОстаткиИОбороты.Сделка = &Сделка");
текстзапроса = СтрЗаменить(текстзапроса,"4 = 4","ДокументОплатыВЭД.Сделка = &Сделка");
КонецЕсли;
Запрос.УстановитьПараметр("ДатаКонца", КонецДня(ДатаКонца));
Запрос.УстановитьПараметр("ДатаНачала", ДатаНачала);
Запрос.Текст = текстзапроса;

Результат = Запрос.Выполнить();
ТЗРезультата = Результат.Выгрузить();
ТЗРезультата.Колонки.Добавить("ДатаДок");
ТЗРезультата.Колонки.Добавить("Уровень");
ТЗРезультата.Колонки.Добавить("Комментарий");
ТЗРезультата.Колонки.Добавить("ДокументДвижения");

Для каждого стрТЗРезультата из ТЗРезультата цикл
Если (стрТЗРезультата.заказпоставщику = null) и (стрТЗРезультата.ДокОплаты = null) тогда
стрТЗРезультата.уровень = 1;
Иначе
стрТЗРезультата.уровень = 2;
Если стрТЗРезультата.заказПоставщику <> null тогда
стрТЗРезультата.ДатаДок = Формат(стрТЗРезультата.заказПоставщику.дата, "ДФ=dd.MM.yyyy");
стрТЗРезультата.Комментарий = стрТЗРезультата.заказПоставщику.Комментарий;
стрТЗРезультата.ДокументДвижения =  стрТЗРезультата.заказПоставщику;
КонецЕсли;

Если стрТЗРезультата.ДокОплаты <> null тогда

стрТЗРезультата.ДатаДок = Формат(стрТЗРезультата.ДокОплаты.дата, "ДФ=dd.MM.yyyy");
стрТЗРезультата.Комментарий = стрТЗРезультата.ДокОплаты.Комментарий;
стрТЗРезультата.ДокументДвижения =  стрТЗРезультата.ДокОплаты;
КоэффОчистки = стрТЗРезультата.СуммаДокумента / стрТЗРезультата.СуммаКонвертация;
КонецЕсли;
КонецЕсли;
// Если (ТипЗнч(стрТЗРезультата.ДокументДвижения) =  Тип("ДокументСсылка.ЗаказПоставщику_PI")) ИЛИ
// (ТипЗнч(стрТЗРезультата.ДокументДвижения) =  Тип("ДокументСсылка.ЗаказПоставщику_BO")) Тогда 
// стрТЗРезультата.уровень = 3;
//КонецЕсли;
КонецЦикла;
ТЗРезультата.Сортировать("Сделка,ДатаДОк");
ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы");
ОбластьСделка = Макет.ПолучитьОбласть("Сделка");
ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");
ОбластьИтого = Макет.ПолучитьОбласть("Итого");
ОбластьИтоги = Макет.ПолучитьОбласть("Итоги");

ТабДок.Очистить();
ТабДок.Вывести(ОбластьЗаголовок);
ТабДок.Вывести(ОбластьШапкаТаблицы);
ТабДок.НачатьАвтогруппировкуСтрок();

ВыборкаСделка = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

Для каждого ВыборкаСделка из ТЗРезультата цикл

ОбластьСделка.Области.ДеталиЦветное.ЦветФона = новый Цвет(0,160,255);

Если ВыборкаСделка.СуммаПеревода <> 0 ИЛИ ВыборкаСделка.СуммаДокумента <> 0 ИЛИ ВыборкаСделка.СуммаКонвертация <> 0
ИЛИ ВыборкаСделка.СуммаТрансфер <> 0 Тогда
ОбластьДетальныхЗаписей.Области.ЦветБежевый.ЦветФона = новый Цвет (255,150,64);
Иначе
ОбластьДетальныхЗаписей.Области.ЦветБежевый.ЦветФона = новый Цвет (255,255,255);
КонецЕсли;

Если ВыборкаСделка.уровень=1 тогда
ОбластьСделка.Параметры.Заполнить(ВыборкаСделка);
Если ВыборкаСделка.СуммаДокумента <> 0 И  ВыборкаСделка.СуммаКонвертация <> 0 Тогда
ОбластьСделка.Параметры.КоэффОчистки = ВыборкаСделка.СуммаДокумента / ВыборкаСделка.СуммаКонвертация;
КонецЕсли;

ТабДок.Вывести(ОбластьСделка, ВыборкаСделка.Уровень);

иначе

ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаСделка);

ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаСделка.Уровень);
СуммаПеревода = СуммаПеревода + ВыборкаСделка.СуммаПеревода;
СуммаРасхода = СуммаРасхода + ВыборкаСделка.СуммаДокумента;
СуммаКонвертации = СуммаКонвертации + ВыборкаСделка.СуммаКонвертация;
СуммаТрансфер = СуммаТрансфер + ВыборкаСделка.СуммаТрансфер;
Если  НЕ (ПустаяСтрока(ВыборкаСделка.ЗаказПоставщикуBO) И ПустаяСтрока(ВыборкаСделка.ЗаказПоставщикуPI)
И ПустаяСтрока(ВыборкаСделка.ЗаказПоставщикуCI) И ПустаяСтрока(ВыборкаСделка.ЗаказПоставщикуSK)) Тогда
ЗаказПоставщикуPI = ЗаказПоставщикуPI + ВыборкаСделка.ЗаказПоставщикуPI;
ЗаказПоставщикуCI = ЗаказПоставщикуCI + ВыборкаСделка.ЗаказПоставщикуCI;
ЗаказПоставщикуSK = ЗаказПоставщикуSK + ВыборкаСделка.ЗаказПоставщикуSK;
КонецЕсли;

КонецЕсли;
КонецЦикла;
ОбластьИтого.Параметры.ЗаказПоставщикуPI = ЗаказПоставщикуPI;
ОбластьИтого.Параметры.ЗаказПоставщикуCI = ЗаказПоставщикуCI;
ОбластьИтого.Параметры.ЗаказПоставщикуSK = ЗаказПоставщикуSK;
ОбластьИтого.Параметры.ИтогоСуммаПеревода = СуммаПеревода;
ОбластьИтого.Параметры.ИтогоРасход = СуммаРасхода;
ОбластьИтого.Параметры.ИтогоСуммаКонвертация = СуммаКонвертации;
ОбластьИтого.Параметры.ИтогоСуммаТрансфер = СуммаТрансфер;
ОбластьИтоги.Параметры.ИтогоСуммаПеревода = СуммаПеревода;
ОбластьИтоги.Параметры.ИтогоРасход = СуммаРасхода;
ОбластьИтого.Области.ДеталиЦветноеИтого.ЦветФона = новый цвет(255,255,0);

ТабДок.ЗакончитьАвтогруппировкуСтрок();
ТабДок.ПоказатьУровеньГруппировокСтрок(0);
ТабДок.Вывести(ОбластьИтого);
ТабДок.Вывести(ОбластьПодвалТаблицы);
ТабДок.Вывести(ОбластьПодвал);
ТабДок.Вывести(ОбластьИтоги);

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск