Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
16 Дек 2017, 04:39
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: вывод в отчет сумм по нескольким документам  (Прочитано 5108 раз)

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

Оффлайн spapin

  • Стас
  • *
  • Сообщений: 36
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2012-12-20
  • Сайт: 
  • Профессия: Ученик 1С
Доброе утро.
Подскажите, пожалуйста, формирую отчет(НЕ СКД), где документы сравниваю по типу, если такой-то тип заполняем такую область, но если сумма уже была она же проставляется до конца, пробую обнулять перед циклом(Для каждого ВыборкаСделка из ТЗРезультата цикл) то же самое (по второй группировки) ...

	Перем СуммаПеревода;
Перем СуммаРасхода;
Перем СуммаКонвертации;
Перем СуммаТрансфер;
СуммаПеревода = 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

  • Стас
  • *
  • Сообщений: 36
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2012-12-20
  • Сайт: 
  • Профессия: Ученик 1С
Правильно, что не так заполнялось, в условие то не входило.
Сделал не очень красиво, но работает:
ВремСумма = ВыборкаСделка.СуммаВзаиморасчетовПриход;//СуммаДокумента;

Если ТипЗнч(ВыборкаСделка.ДокументДвижения) = Тип("ДокументСсылка.ЗаказПоставщику_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

  • Гончаров Михаил
  • Администратор
  • *****
  • Сообщений: 6558
  • РЕПУТАЦИЯ: 775
  • КПД: 12%
  • Регистрация: 2012-08-15
    • Skype: MuI_I_Ika
  • Сайт: 
  • Профессия: Программист 1С

Оффлайн spapin

  • Стас
  • *
  • Сообщений: 36
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2012-12-20
  • Сайт: 
  • Профессия: Ученик 1С
Пытаюсь вывести суммы по каждой сделке по документам(в синюю шапку таблицы). Можно ли накапливать в переменной сумму по сделке, а потом выводить в условие "Если ВыборкаСделка.уровень=1 тогда". Но проблема в том что суммы считаются после этого условия и еще придется обнулять сумму при новой сделке. Подскажите как лучше сделать?

Оффлайн Dethmontt

  • Денис
  • Модератор
  • *****
  • Сообщений: 2857
  • РЕПУТАЦИЯ: 546
  • КПД: 19%
  • Адын Эс
  • Регистрация: 2010-11-01
  • Сайт: 
  • Профессия: Программист 1С
Хранить в какой нибудь структуре.
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Оффлайн spapin

  • Стас
  • *
  • Сообщений: 36
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2012-12-20
  • Сайт: 
  • Профессия: Ученик 1С
Правильно ли вытаскивать документы из регистра или может сделать несколько запросов по документам?

Оффлайн GRADUS

  • *****
  • Сообщений: 699
  • РЕПУТАЦИЯ: 51
  • КПД: 7%
  • Регистрация: 2013-06-08
  • Сайт: 
  • Профессия: Программист 1С
Правильно ли вытаскивать документы из регистра или может сделать несколько запросов по документам?

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

Оффлайн spapin

  • Стас
  • *
  • Сообщений: 36
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2012-12-20
  • Сайт: 
  • Профессия: Ученик 1С
Хранить в какой нибудь структуре.
А можно подробнее никак не могу сообразить ... :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);
ТабДок.Вывести(ОбластьИтого);
ТабДок.Вывести(ОбластьПодвалТаблицы);
ТабДок.Вывести(ОбластьПодвал);
ТабДок.Вывести(ОбластьИтоги);

Последний раз редактировалось: spapin; 27 Июн 2013, 22:40. Причина: Объединение сообщений


Теги:
 


* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
154 Сообщений
ilyay ilyay
66 Сообщений
alex0402
53 Сообщений
AIFrame
46 Сообщений
andron81_81
44 Сообщений
oleg-x
44 Сообщений
BuhRust
32 Сообщений
MuI_I_Ika MuI_I_Ika
32 Сообщений
Golickoff Golickoff
31 Сообщений
Dima Dddd Dima Dddd
24 Сообщений

* Кто онлайн

  • Точка Гостей: 121
  • Точка Скрытых: 0
  • Точка Пользователей: 1
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal