|
Помогите решить вопрос | ☑ | ||
---|---|---|---|---|
0
max805
13.06.13
✎
03:47
|
Делаю отчет по КА+СО
Отчет в принципе работает за исключением одного Допустим есть в апереле был документ Заказ поставщику и этом же месяце оплата платежкой 50% и в мае была оплата на этот же заказ еще 50%. В отчете при выборе периода апрель ..в графе оплата выводиться общая сумма всех платежек (то есть он их суммирует) вопрос как разделить эти оплаты? заранее спасибо |
|||
1
Галахад
гуру
13.06.13
✎
03:49
|
Отчет изменить, наверное.
|
|||
2
max805
13.06.13
✎
03:51
|
#Если Клиент Тогда
//////////////////////////////////////////////////////////////////////////////// // ПРОЦЕДУРЫ И ФУНКЦИИ НАЧАЛЬНОЙ НАСТРОЙКИ ОТЧЕТА // Процедура установки текста запроса построителя отчета // Процедура УстановитьТекстЗапроса(ЕстьПолеРегистратор = Истина) // Описание исходного текста запроса. ТекстЗапроса = "ВЫБРАТЬ РАЗРЕШЕННЫЕ | ВложенныйЗапрос2.Контрагент КАК Контрагент, | ВложенныйЗапрос2.Заказ КАК Заказ, | ВложенныйЗапрос2.Приход КАК Приход, | ВложенныйЗапрос2.Сумма КАК Сумма, | ВзаиморасчетыСКонтрагентами.Регистратор.Дата КАК Период, | ВзаиморасчетыСКонтрагентами.Контрагент.Наименование КАК КонтрагентНаименование |ИЗ | (ВЫБРАТЬ | ВложенныйЗапрос.Контрагент КАК Контрагент, | ВложенныйЗапрос.Заказ КАК Заказ, | ПоступлениеТоваровУслуг.Ссылка КАК Приход, | ПоступлениеТоваровУслуг.СуммаДокумента КАК Сумма | {ВЫБРАТЬ | ПоступлениеТоваровУслуг.Ссылка КАК Приход} | ИЗ | (ВЫБРАТЬ | СУММА(Взаиморасчеты.СуммаВзаиморасчетовКонечныйОстаток) КАК СуммаВзаиморасчетовКонечныйОстаток, | Взаиморасчеты.Контрагент КАК Контрагент, | Взаиморасчеты.Сделка КАК Заказ | {ВЫБРАТЬ | Контрагент.* КАК Контрагент, | Взаиморасчеты.Сделка КАК Заказ, | СуммаВзаиморасчетовКонечныйОстаток} | ИЗ | (ВЫБРАТЬ | Закупки.Номенклатура КАК Номенклатура, | Закупки.ЗаказПоставщику КАК ЗаказПоставщику | {ВЫБРАТЬ | Номенклатура.* КАК Номенклатура} | ИЗ | РегистрНакопления.Закупки.Обороты( , &ДатаКон, Регистратор, {(Номенклатура).* КАК Номенклатура}) КАК Закупки) КАК Закупки | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ВзаиморасчетыСКонтрагентами.ОстаткиИОбороты(&ДатаНач, &ДатаКон, Регистратор {(&Периодичность)}, , {(Контрагент).* КАК Контрагент, (Сделка).* КАК Заказ}) КАК Взаиморасчеты | ПО (Взаиморасчеты.Сделка = Закупки.ЗаказПоставщику) | ГДЕ | Взаиморасчеты.СуммаВзаиморасчетовКонечныйОстаток = 0 | И Взаиморасчеты.ДоговорКонтрагента.ВедениеВзаиморасчетов = &ВедениеДоговоров | | СГРУППИРОВАТЬ ПО | Взаиморасчеты.Контрагент, | Взаиморасчеты.Сделка) КАК ВложенныйЗапрос | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг | ПО ВложенныйЗапрос.Заказ = ПоступлениеТоваровУслуг.Сделка) КАК ВложенныйЗапрос2 | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ВзаиморасчетыСКонтрагентами КАК ВзаиморасчетыСКонтрагентами | ПО ВложенныйЗапрос2.Заказ = ВзаиморасчетыСКонтрагентами.Сделка |ГДЕ | ВзаиморасчетыСКонтрагентами.ВидДвижения = &ВидДвиженияНакопления | |УПОРЯДОЧИТЬ ПО | КонтрагентНаименование, | Заказ |{УПОРЯДОЧИТЬ ПО | Контрагент.* КАК Контрагент} |ИТОГИ ПО | ОБЩИЕ |{ИТОГИ ПО | Контрагент.* КАК Контрагент, | Приход, | Заказ.* КАК Заказ}"; //Вывод построчно //&ДатаНач // В универсальном отчете включен флаг использования свойств и категорий. Если УниверсальныйОтчет.ИспользоватьСвойстваИКатегории Тогда // Добавление свойств и категорий поля запроса в таблицу полей. // Необходимо вызывать для каждого поля запроса, предоставляющего возможность использования свойств и категорий. // УниверсальныйОтчет.ДобавитьСвойстваИКатегорииДляПоля(<ПсевдонимТаблицы>.<Поле> , <ПсевдонимПоля>, <Представление>, <Назначение>); УниверсальныйОтчет.ДобавитьСвойстваИКатегорииДляПоля("Взаиморасчеты.Организация", "Организация", "Организация", ПланыВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Справочник_Организации); УниверсальныйОтчет.ДобавитьСвойстваИКатегорииДляПоля("Взаиморасчеты.Контрагент", "Контрагент", "Контрагент", ПланыВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Справочник_Контрагенты); УниверсальныйОтчет.ДобавитьСвойстваИКатегорииДляПоля("Взаиморасчеты.ДоговорКонтрагента", "ДоговорКонтрагента", "Договор контрагента", ПланыВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Справочник_ДоговорыКонтрагентов); УниверсальныйОтчет.ДобавитьСвойстваИКатегорииДляПоля("Взаиморасчеты.Сделка", "Заказ", "Заказ", ПланыВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Документы); УниверсальныйОтчет.ДобавитьСвойстваИКатегорииДляПоля("Взаиморасчеты.ДокументРасчетовСКонтрагентом", "ДокументРасчетовСКонтрагентом", "Документ расчетов с контрагентом", ПланыВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Документы); // Добавление свойств и категорий в исходный текст запроса. УниверсальныйОтчет.ДобавитьВТекстЗапросаСвойстваИКатегории(ТекстЗапроса); КонецЕсли; // Инициализация текста запроса построителя отчета УниверсальныйОтчет.ПостроительОтчета.Текст = ТекстЗапроса; УниверсальныйОтчет.ПостроительОтчета.Параметры.Вставить("ВидДвиженияНакопления",ВидДвиженияНакопления.Приход); УниверсальныйОтчет.ПостроительОтчета.Параметры.Вставить("ВедениеДоговоров",Перечисления.ВедениеВзаиморасчетовПоДоговорам.ПоЗаказам); КонецПроцедуры // Процедура установки начальных настроек отчета с использованием текста запроса // Процедура УстановитьНачальныеНастройки(ДополнительныеПараметры = Неопределено) Экспорт // Настройка общих параметров универсального отчета // Содержит название отчета, которое будет выводиться в шапке. // Тип: Строка. // Пример: // УниверсальныйОтчет.мНазваниеОтчета = "Название отчета"; УниверсальныйОтчет.мНазваниеОтчета = СокрЛП(ЭтотОбъект.Метаданные().Синоним); // Содержит признак необходимости отображения надписи и поля выбора раздела учета в форме настройки. // Тип: Булево. // Значение по умолчанию: Истина. // Пример: // УниверсальныйОтчет.мВыбиратьИмяРегистра = Ложь; УниверсальныйОтчет.мВыбиратьИмяРегистра = Ложь; // Содержит имя регистра, по метаданным которого будет выполняться заполнение настроек отчета. // Тип: Строка. // Пример: // УниверсальныйОтчет.ИмяРегистра = "ТоварыНаСкладах"; // Содержит признак необходимости вывода отрицательных значений показателей красным цветом. // Тип: Булево. // Значение по умолчанию: Ложь. // Пример: // УниверсальныйОтчет.ОтрицательноеКрасным = Истина; // Содержит признак необходимости вывода в отчет общих итогов. // Тип: Булево. // Значение по умолчанию: Истина. // Пример: // УниверсальныйОтчет.ВыводитьОбщиеИтоги = Ложь; // Содержит признак необходимости вывода детальных записей в отчет. // Тип: Булево. // Значение по умолчанию: Ложь. // Пример: // УниверсальныйОтчет.ВыводитьДетальныеЗаписи = Истина; // Содержит признак необходимости отображения флага использования свойств и категорий в форме настройки. // Тип: Булево. // Значение по умолчанию: Истина. // Пример: // УниверсальныйОтчет.мВыбиратьИспользованиеСвойств = Ложь; УниверсальныйОтчет.мВыбиратьИспользованиеСвойств = Истина; // Содержит признак использования свойств и категорий при заполнении настроек отчета. // Тип: Булево. // Значение по умолчанию: Ложь. // Пример: // УниверсальныйОтчет.ИспользоватьСвойстваИКатегории = Истина; // Содержит признак использования простой формы настроек отчета без группировок колонок. // Тип: Булево. // Значение по умолчанию: Ложь. // Пример: // УниверсальныйОтчет.мРежимФормыНастройкиБезГруппировокКолонок = Истина; // Дополнительные параметры, переданные из отчета, вызвавшего расшифровку. // Информация, передаваемая в переменной ДополнительныеПараметры, может быть использована // для реализации специфичных для данного отчета параметрических настроек. УстановитьТекстЗапроса(); ВалютаУпр = "(" + СокрЛП(глЗначениеПеременной("ВалютаУправленческогоУчета").Наименование) + ")"; // Представления полей отчета. // Необходимо вызывать для каждого поля запроса. // УниверсальныйОтчет.мСтруктураПредставлениеПолей.Вставить(<ИмяПоля>, <ПредставлениеПоля>); УниверсальныйОтчет.мСтруктураПредставлениеПолей.Вставить("ДоговорКонтрагента", "Договор контрагента"); УниверсальныйОтчет.мСтруктураПредставлениеПолей.Вставить("ДокументРасчетовСКонтрагентом", "Документ расчетов с контрагентом"); //УниверсальныйОтчет.мСтруктураПредставлениеПолей.Вставить("СуммаВзаиморасчетовНачальныйОстаток", "Сумма взаиморасчетов начальный остаток"); //УниверсальныйОтчет.мСтруктураПредставлениеПолей.Вставить("СуммаВзаиморасчетовКонечныйОстаток", "Сумма взаиморасчетов конечный остаток"); УниверсальныйОтчет.мСтруктураПредставлениеПолей.Вставить("СуммаВзаиморасчетовПриход", "Сумма взаиморасчетов приход"); УниверсальныйОтчет.мСтруктураПредставлениеПолей.Вставить("СуммаВзаиморасчетовРасход", "Сумма взаиморасчетов расход"); УниверсальныйОтчет.мСтруктураПредставлениеПолей.Вставить("Сумма", "Сумма поступления"); // Добавление показателей // Необходимо вызывать для каждого добавляемого показателя. // УниверсальныйОтчет.ДобавитьПоказатель(<ИмяПоказателя>, <ПредставлениеПоказателя>, <ВключенПоУмолчанию>, <Формат>, <ИмяГруппы>, <ПредставлениеГруппы>); // УниверсальныйОтчет.ДобавитьПоказатель("СуммаВзаиморасчетовНачальныйОстаток", "Дата поступления", Истина, "ЧЦ=15; ЧДЦ=2", "СуммаВзаиморасчетов", "Движение"); УниверсальныйОтчет.ДобавитьПоказатель("Сумма", "Сумма", Истина, "ЧЦ=15; ЧДЦ=2", "СуммаВзаиморасчетов", "Движение"); // УниверсальныйОтчет.ДобавитьПоказатель("СуммаВзаиморасчетовРасход", "Оплата", Истина, "ЧЦ=15; ЧДЦ=2", "СуммаВзаиморасчетов", "Движение"); //УниверсальныйОтчет.ДобавитьПоказатель("Контрагент", "Клиент", Истина, "", "СуммаВзаиморасчетов", "Движение"); // УниверсальныйОтчет.ДобавитьПоказатель("ДатаП", "Дата прихода", Истина, "ДФ=dd.MM.yyyy", "СуммаВзаиморасчетов", "Движение"); // УниверсальныйОтчет.ДобавитьПоказатель("Заказ", "Документ", Истина, "", "СуммаВзаиморасчетов", "Движение"); // Добавление предопределенных группировок строк отчета. // Необходимо вызывать для каждой добавляемой группировки строки. // УниверсальныйОтчет.ДобавитьИзмерениеСтроки(<ПутьКДанным>); //УниверсальныйОтчет.ДобавитьИзмерениеСтроки("Организация"); УниверсальныйОтчет.ДобавитьИзмерениеСтроки("Контрагент"); УниверсальныйОтчет.ДобавитьИзмерениеСтроки("Приход"); УниверсальныйОтчет.ДобавитьИзмерениеСтроки("Заказ"); // Добавление предопределенных группировок колонок отчета. // Необходимо вызывать для каждой добавляемой группировки колонки. // УниверсальныйОтчет.ДобавитьИзмерениеКолонки(<ПутьКДанным>); // Добавление предопределенных отборов отчета. // Необходимо вызывать для каждого добавляемого отбора. // УниверсальныйОтчет.ДобавитьОтбор(<ПутьКДанным>); //УниверсальныйОтчет.ДобавитьОтбор("Организация"); УниверсальныйОтчет.ДобавитьОтбор("Контрагент"); УниверсальныйОтчет.ДобавитьОтбор("Номенклатура"); // Добавление предопределенных полей порядка отчета. // Необходимо вызывать для каждого добавляемого поля порядка. // УниверсальныйОтчет.ДобавитьПорядок(<ПутьКДанным>); // Установка связи подчиненных и родительских полей // УниверсальныйОтчет.УстановитьСвязьПолей(<ПутьКДанным>, <ПутьКДаннымРодитель>); УниверсальныйОтчет.УстановитьСвязьПолей("ВалютаВзаиморасчетов", "ДоговорКонтрагента"); // Установка связи полей и измерений // УниверсальныйОтчет.УстановитьСвязьПоляИИзмерения(<ИмяПоля>, <ИмяИзмерения>); // Установка представлений полей УниверсальныйОтчет.УстановитьПредставленияПолей(УниверсальныйОтчет.мСтруктураПредставлениеПолей, УниверсальныйОтчет.ПостроительОтчета); // Установка типов значений свойств в отборах отчета УниверсальныйОтчет.УстановитьТипыЗначенийСвойствДляОтбора(); // Заполнение начальных настроек универсального отчета УниверсальныйОтчет.УстановитьНачальныеНастройки(Ложь); // Добавление дополнительных полей // Необходимо вызывать для каждого добавляемого дополнительного поля. // УниверсальныйОтчет.ДобавитьДополнительноеПоле(<ПутьКДанным>, <Размещение>, <Положение>); УниверсальныйОтчет.ДобавитьДополнительноеПоле("ВалютаВзаиморасчетов"); КонецПроцедуры // УстановитьНачальныеНастройки() //////////////////////////////////////////////////////////////////////////////// // ПРОЦЕДУРЫ И ФУНКЦИИ ФОРМИРОВАНИЯ ОТЧЕТА // Процедура формирования отчета // Процедура МойСформироватьОтчет() ДатаНач = УниверсальныйОтчет.ДатаНач; ДатаКон = УниверсальныйОтчет.ДатаКон; УниверсальныйОтчет.ПостроительОтчета.Параметры.Вставить("ДатаНач", ?(ДатаНач = Дата('00010101000000'), ДатаНач, Новый Граница(НачалоДня(ДатаНач), ВидГраницы.Включая))); УниверсальныйОтчет.ПостроительОтчета.Параметры.Вставить("ДатаКон", ?(ДатаКон = Дата('00010101000000'), ДатаКон, Новый Граница(КонецДня(ДатаКон), ВидГраницы.Включая))); УниверсальныйОтчет.ПостроительОтчета.Параметры.Вставить("ДатаНачала", ?(ДатаНач = Дата('00010101000000'), ДатаНач, НачалоДня(ДатаНач))); УниверсальныйОтчет.ПостроительОтчета.Параметры.Вставить("ДатаКонца", ?(ДатаКон = Дата('00010101000000'), Дата("39991231"), КонецДня(ДатаКон))); УниверсальныйОтчет.ПостроительОтчета.РазмещениеИзмеренийВСтроках = ТипРазмещенияИзмерений.Вместе; Запрос = УниверсальныйОтчет.ПостроительОтчета.ПолучитьЗапрос(); Сообщить("Начало формирования отчета: " + Строка(ТекущаяДата()) ); Выборка = Запрос.Выполнить().Выбрать(); Сообщить("Окончание формирования отчета: " + Строка(ТекущаяДата()) ); Таб = Новый ТабличныйДокумент; Макет = ПолучитьМакет("Макет"); ОбластьМакета = Макет.ПолучитьОбласть("Шапка"); Таб.Вывести(ОбластьМакета); Таб.НачатьАвтогруппировкуСтрок(); Пока Выборка.СледующийПоЗначениюПоля("Контрагент") Цикл Если Выборка.Контрагент = Null Тогда Продолжить; Иначе ОбластьМакета = Макет.ПолучитьОбласть("Клиент"); ОбластьМакета.Параметры.ТекстКлиент = Выборка.Контрагент; Таб.Вывести(ОбластьМакета); Пока Выборка.СледующийПоЗначениюПоля("Заказ") Цикл Если Выборка.Заказ = Null Тогда Продолжить; Иначе ОбластьМакета = Макет.ПолучитьОбласть("Заказ"); ОбластьМакета.Параметры.Заказ = Выборка.Заказ; ОбластьМакета.Параметры.ЗаказРасшифровка = Выборка.Заказ.Ссылка; ОбластьМакета.Параметры.ДатаПрихода = Формат(Выборка.Приход.Дата,"ДФ=dd.MM.yyyy"); Пока Выборка.СледующийПоЗначениюПоля("Сумма") Цикл Если Выборка.Сумма <> Null Тогда ОбластьМакета.Параметры.Сумма = Выборка.Сумма; КонецЕсли; Пока Выборка.СледующийПоЗначениюПоля("Период") Цикл Если Выборка.Период <> Null Тогда ОбластьМакета.Параметры.ДатаОплаты = Формат(Выборка.Период,"ДФ=dd.MM.yyyy"); КонецЕсли; КонецЦикла; КонецЦикла; Таб.Вывести(ОбластьМакета); КонецЕсли; КонецЦикла; КонецЕсли; КонецЦикла; Таб.ЗакончитьАвтогруппировкуСтрок(); Таб.ТолькоПросмотр = Истина; Таб.ОтображатьГруппировки = Истина; Таб.ОтображатьЗаголовки = Истина; Таб.ОтображатьСетку = Ложь; Таб.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт; Таб.АвтоМасштаб = Истина; Таб.Показать("Отчет - закупки по оплате"); КонецПроцедуры Процедура СформироватьОтчет(ТабличныйДокумент) Экспорт // Перед формированием отчета можно установить необходимые параметры универсального отчета ЕстьПолеРегистратор = Ложь; Для каждого ВыбранноеПоле Из УниверсальныйОтчет.ПостроительОтчета.ВыбранныеПоля Цикл ЕстьПолеРегистратор = Найти(ВыбранноеПоле.ПутьКДанным, "Регистратор") > 0; Если ЕстьПолеРегистратор Тогда Прервать; КонецЕсли; КонецЦикла; НастройкиПостроителя = УниверсальныйОтчет.ПостроительОтчета.ПолучитьНастройки(); УстановитьТекстЗапроса(ЕстьПолеРегистратор); УниверсальныйОтчет.ПостроительОтчета.УстановитьНастройки(НастройкиПостроителя); Если ЕстьПолеРегистратор Тогда НетГруппировкиПоДоговору = УниверсальныйОтчет.ПостроительОтчета.ИзмеренияСтроки.Найти("ДоговорКонтрагента") = Неопределено; Если НетГруппировкиПоДоговору Тогда НужноеИзмерение = УниверсальныйОтчет.ПостроительОтчета.ИзмеренияСтроки.Найти("Контрагент"); Если НужноеИзмерение = Неопределено Тогда НужноеИзмерение = УниверсальныйОтчет.ПостроительОтчета.ИзмеренияСтроки.Найти("Организация"); КонецЕсли; Если НужноеИзмерение = Неопределено Тогда НужноеИзмерение = УниверсальныйОтчет.ПостроительОтчета.ИзмеренияСтроки.Найти("ВалютаВзаиморасчетов"); КонецЕсли; Если НужноеИзмерение = Неопределено Тогда ИндексДоговора = 0; Иначе ИндексДоговора = УниверсальныйОтчет.ПостроительОтчета.ИзмеренияСтроки.Индекс(НужноеИзмерение) + 1; КонецЕсли; УниверсальныйОтчет.ПостроительОтчета.ИзмеренияСтроки.Вставить("ДоговорКонтрагента", , , , , ИндексДоговора); КонецЕсли; КонецЕсли; //УниверсальныйОтчет.СформироватьОтчет(ТабличныйДокумент,,, ЭтотОбъект); МойСформироватьОтчет(); КонецПроцедуры // СформироватьОтчет() Функция ПолучитьТекстСправкиФормы() Экспорт Возврат ""; КонецФункции //////////////////////////////////////////////////////////////////////////////// // ПРОЦЕДУРЫ И ФУНКЦИИ ОБЩЕГО НАЗНАЧЕНИЯ // Процедура обработки расшифровки // Процедура ОбработкаРасшифровки(Расшифровка, Объект) Экспорт // Дополнительные параметры в расшифровывающий отчет можно передать // посредством инициализации переменной "ДополнительныеПараметры". УниверсальныйОтчет.ОбработкаРасшифровкиУниверсальногоОтчета(Расшифровка, Объект); КонецПроцедуры // ОбработкаРасшифровки() // Формирует структуру для сохранения настроек отчета // Процедура СформироватьСтруктуруДляСохраненияНастроек(СтруктураСНастройками) Экспорт УниверсальныйОтчет.СформироватьСтруктуруДляСохраненияНастроек(СтруктураСНастройками); КонецПроцедуры // СформироватьСтруктуруДляСохраненияНастроек() // Заполняет настройки отчета из структуры сохраненных настроек // Функция ВосстановитьНастройкиИзСтруктуры(СтруктураСНастройками) Экспорт Возврат УниверсальныйОтчет.ВосстановитьНастройкиИзСтруктуры(СтруктураСНастройками, ЭтотОбъект); КонецФункции // ВосстановитьНастройкиИзСтруктуры() // Содержит значение используемого режима ввода периода. // Тип: Число. // Возможные значения: 0 - произвольный период, 1 - на дату, 2 - неделя, 3 - декада, 4 - месяц, 5 - квартал, 6 - полугодие, 7 - год // Значение по умолчанию: 0 // Пример: // УниверсальныйОтчет.мРежимВводаПериода = 1; #КонецЕсли |
|||
3
max805
13.06.13
✎
03:51
|
весь инет уже перекопал( ничего не могу понять
|
|||
4
Галахад
гуру
13.06.13
✎
03:57
|
Сложно как-то.
А вообще условие "ГДЕ" после СОЕДИНЕНИЙ это баян. Переноси в "ПО" |
|||
5
max805
13.06.13
✎
04:02
|
Можете по удаленки помочь? Сделаете на телефон 200р положу. Очень нужно((
|
|||
6
Галахад
гуру
13.06.13
✎
04:04
|
Неа. Я ленивый и жадный.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |