|
Анализ заказа покупателя | ☑ | ||
---|---|---|---|---|
0
ArikiteO
16.10.13
✎
15:10
|
Почтеннейшие гуру!
Прошу помочь разобраться в следующей ситуации: Конфигурация УТ 10.2 на 8.1 Документ Заказа покупателя. У пользователя есть потребность оформлять документ наполняя его номенклатурой, разделяя одну позицию на несколько строк табл. части документа для того чтобы одной строкой зарезервировать товар имеющийся на складе в свободном остатке, второй строкой формируется заказ поставщику. рис. 1 http://www.picshare.ru/view/3139481/ При формировании отчета Анализ заказа покупателя, который выведен в отдельную процедуру и вызывается из формы документа Заказ покупателя получаем отчет отраженный на рис. 2 рис. 2 http://www.picshare.ru/view/3139495/ Согласно данному рисунку видим что в резерве находится 2 позиции, хотя согласно штатному отчету (рис. 3) очевидно, что в резерве по данному заказу покупателя находится 1 шт. выделенной в рисунке позиции. рис. 3 http://www.picshare.ru/view/3139509/ Как представляется отчет Анализа заказа покупателя (выведенный в отдельную процедуру и вызываемый из формы документа) при анализе резерва берет значение резерва по компании в целом, а необходимо, чтобы в данный отчет попадало значение резерва позиции по конкретному документу - иными словами сколько зарезервировано по документу - столько и нужно увидеть в данном отчете (повторюсь - сейчас выводится резерв в целом по компании). Т.е. задача такова: в выведенном в отдельную процедуру отчете анализа заказа покупателя нужно получать значение резерва позиции сформированного по данному документу. Почтеннейшие Гуру, помогите пжл. разобраться где беда. Ниже код выведенного в отдельную процедуру отчета: [code] //Формирует текст запроса, исполняет запрос и выводит результат в табличный документ. // Процедура СформироватьОтчет(ДокументРезультат) Экспорт // Проверка на пустые значения Если ПустаяСтрока(Заказ) Тогда Предупреждение("Не выбран заказ!"); Возврат; ИначеЕсли ТипЗнч(Заказ) = Тип("ДокументСсылка.ВнутреннийЗаказ") Тогда СформироватьОтчетПоВнутреннемуЗаказу(ДокументРезультат); Возврат; КонецЕсли; ТипЗначЗаказ = ТипЗнч(Заказ); ТипЗаказа = ?(ТипЗначЗаказ = Тип("ДокументСсылка.ЗаказПоставщику") ИЛИ ТипЗначЗаказ = Тип("ДокументСсылка.СчетНаОплатуПоставщика"), "Поставщику", "Покупателя"); // Формируем текст запроса по номенклатуре анализируемого заказа. Запрос = Новый Запрос; Если ТипЗаказа = "Покупателя" Тогда // Начло запроса Запрос.Текст="ВЫБРАТЬ // выбираем из документа Заказ покупателя | ЗаказПокупателяТовары.НомерСтроки КАК НомерСтроки, | ЗаказПокупателяТовары.Номенклатура КАК Номенклатура, | ЗаказПокупателяТовары.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры |ПОМЕСТИТЬ ВТ_НоменклатураЗаказа |ИЗ | Документ.ЗаказПокупателя.Товары КАК ЗаказПокупателяТовары |ГДЕ | ЗаказПокупателяТовары.Ссылка = &Заказ | |ИНДЕКСИРОВАТЬ ПО | Номенклатура, | ХарактеристикаНоменклатуры |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | МИНИМУМ(КорректировкаЗаказаПокупателяТовары.НомерСтроки) КАК НомерСтроки, | КорректировкаЗаказаПокупателяТовары.Номенклатура, | КорректировкаЗаказаПокупателяТовары.ХарактеристикаНоменклатуры |ПОМЕСТИТЬ ВТ_Номенклатура |ИЗ | Документ.КорректировкаЗаказаПокупателя.Товары КАК КорректировкаЗаказаПокупателяТовары |ГДЕ | КорректировкаЗаказаПокупателяТовары.Ссылка.ЗаказПокупателя = &Заказ | И (НЕ КорректировкаЗаказаПокупателяТовары.Номенклатура В | (ВЫБРАТЬ | ВТ_НоменклатураЗаказа.Номенклатура | ИЗ | ВТ_НоменклатураЗаказа)) | |СГРУППИРОВАТЬ ПО | КорректировкаЗаказаПокупателяТовары.Номенклатура, | КорректировкаЗаказаПокупателяТовары.ХарактеристикаНоменклатуры | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | МИНИМУМ(ВТ_НоменклатураЗаказа.НомерСтроки), | ВТ_НоменклатураЗаказа.Номенклатура, | ВТ_НоменклатураЗаказа.ХарактеристикаНоменклатуры |ИЗ | ВТ_НоменклатураЗаказа КАК ВТ_НоменклатураЗаказа | |СГРУППИРОВАТЬ ПО | ВТ_НоменклатураЗаказа.Номенклатура, | ВТ_НоменклатураЗаказа.ХарактеристикаНоменклатуры |; | |//////////////////////////////////////////////////////////////////////////////// // выборка резерва |ВЫБРАТЬ | ТоварыНаСкладахОстатки.КоличествоОстаток, | ВТ_Номенклатура.Номенклатура КАК Номенклатура, | ВТ_Номенклатура.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры, | ВТ_Номенклатура.НомерСтроки, // по резерву смотреть можно здесь | ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток КАК Резерв, | ВЫБОР | КОГДА ТоварыНаСкладахОстатки.КоличествоОстаток ЕСТЬ NULL | ТОГДА 0 | ИНАЧЕ ТоварыНаСкладахОстатки.КоличествоОстаток | КОНЕЦ - ВЫБОР | КОГДА ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток ЕСТЬ NULL | ТОГДА 0 | ИНАЧЕ ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток | КОНЕЦ КАК СвободныйОстаток |ПОМЕСТИТЬ ВТ_ОстаткиВосьмаяЛиния |ИЗ | ВТ_Номенклатура КАК ВТ_Номенклатура | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки( | &ДатаАнализа, | Склад = &ВосьмаяЛиния | И Номенклатура В | (ВЫБРАТЬ РАЗЛИЧНЫЕ | ВТ_Номенклатура.Номенклатура | ИЗ | ВТ_Номенклатура) | И ХарактеристикаНоменклатуры В | (ВЫБРАТЬ РАЗЛИЧНЫЕ | ВТ_Номенклатура.ХарактеристикаНоменклатуры | ИЗ | ВТ_Номенклатура)) КАК ТоварыНаСкладахОстатки | ПО ВТ_Номенклатура.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура | И ВТ_Номенклатура.ХарактеристикаНоменклатуры = ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки( | &ДатаАнализа, // | ДокументРезерва = &Заказ, | Склад = &ВосьмаяЛиния | И Номенклатура В | (ВЫБРАТЬ РАЗЛИЧНЫЕ | ВТ_Номенклатура.Номенклатура | ИЗ | ВТ_Номенклатура) | И ХарактеристикаНоменклатуры В | (ВЫБРАТЬ РАЗЛИЧНЫЕ | ВТ_Номенклатура.ХарактеристикаНоменклатуры | ИЗ | ВТ_Номенклатура)) КАК ТоварыВРезервеНаСкладахОстатки | ПО ВТ_Номенклатура.Номенклатура = ТоварыВРезервеНаСкладахОстатки.Номенклатура | И ВТ_Номенклатура.ХарактеристикаНоменклатуры = ТоварыВРезервеНаСкладахОстатки.ХарактеристикаНоменклатуры | |ИНДЕКСИРОВАТЬ ПО | Номенклатура, | ХарактеристикаНоменклатуры |; | |//////////////////////////////////////////////////////////////////////////////// // анализ резерва |ВЫБРАТЬ | ВТ_ОстаткиВосьмаяЛиния.НомерСтроки, | ВТ_ОстаткиВосьмаяЛиния.Номенклатура КАК Номенклатура, | ВТ_ОстаткиВосьмаяЛиния.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры, | ТоварыНаСкладахОстатки.КоличествоОстаток КАК ОстатокЛаборатория, | ВТ_ОстаткиВосьмаяЛиния.КоличествоОстаток КАК ОстатокЛиния, | ВТ_ОстаткиВосьмаяЛиния.СвободныйОстаток КАК СвободныйОстатокЛиния, | ВЫБОР | КОГДА ТоварыНаСкладахОстатки.КоличествоОстаток ЕСТЬ NULL | ТОГДА 0 | ИНАЧЕ ТоварыНаСкладахОстатки.КоличествоОстаток | КОНЕЦ - ВЫБОР | КОГДА ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток ЕСТЬ NULL | ТОГДА 0 | ИНАЧЕ ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток | КОНЕЦ КАК СвободныйОстатокЛаборатория, | ВТ_ОстаткиВосьмаяЛиния.Резерв КАК РезервЛиния, | ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток КАК РезервЛаборатория |ПОМЕСТИТЬ ВТ_ОстаткиЛаборатория |ИЗ | ВТ_ОстаткиВосьмаяЛиния КАК ВТ_ОстаткиВосьмаяЛиния | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки( | &ДатаАнализа, | Склад = &Лаборатория | И Номенклатура В | (ВЫБРАТЬ | ВТ_Номенклатура.Номенклатура | ИЗ | ВТ_Номенклатура) | И ХарактеристикаНоменклатуры В | (ВЫБРАТЬ | ВТ_Номенклатура.ХарактеристикаНоменклатуры | ИЗ | ВТ_Номенклатура)) КАК ТоварыНаСкладахОстатки | ПО ВТ_ОстаткиВосьмаяЛиния.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура | И ВТ_ОстаткиВосьмаяЛиния.ХарактеристикаНоменклатуры = ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки( | &ДатаАнализа, | Склад = &Лаборатория | И Номенклатура В | (ВЫБРАТЬ | ВТ_Номенклатура.Номенклатура | ИЗ | ВТ_Номенклатура) | И ХарактеристикаНоменклатуры В | (ВЫБРАТЬ | ВТ_Номенклатура.ХарактеристикаНоменклатуры | ИЗ | ВТ_Номенклатура)) КАК ТоварыВРезервеНаСкладахОстатки | ПО ВТ_ОстаткиВосьмаяЛиния.Номенклатура = ТоварыВРезервеНаСкладахОстатки.Номенклатура | И ВТ_ОстаткиВосьмаяЛиния.ХарактеристикаНоменклатуры = ТоварыВРезервеНаСкладахОстатки.ХарактеристикаНоменклатуры | |ИНДЕКСИРОВАТЬ ПО | Номенклатура, | ХарактеристикаНоменклатуры |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ЗаказыПокупателейОстаткиИОбороты.Номенклатура.Артикул КАК Артикул, | ЗаказыПокупателейОстаткиИОбороты.Номенклатура КАК Номенклатура, | ЗаказыПокупателейОстаткиИОбороты.Номенклатура.ЕдиницаХраненияОстатков КАК ЕдиницаХраненияОстатков, | ЗаказыПокупателейОстаткиИОбороты.Номенклатура.ВестиУчетПоХарактеристикам КАК НоменклатураВестиУчетПоХарактеристикам, | ЗаказыПокупателейОстаткиИОбороты.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры, | ЗаказыПокупателейОстаткиИОбороты.КоличествоПриход КАК Запланировано, | ЗаказыПокупателейОстаткиИОбороты.КоличествоРасход КАК ОтгруженоОтменено, | ЗаказыПокупателейОстаткиИОбороты.КоличествоКонечныйОстаток КАК ОсталосьОтгрузить, | РезервыКомпании.КоличествоОстаток КАК Резерв, //мод начало | РезервыТоваровКомпании.КоличествоОстаток КАК РезервыВсего, | РазмещениеЗаказовПокупателей.КоличествоОстаток КАК Заказано, | РазмещениеЗаказовПокупателей.ЗаказПоставщику.ДатаПоступления КАК ДатаПоступления, | ВЫБОР | КОГДА ОстаткиТоваровКомпании.КоличествоОстаток ЕСТЬ NULL | ТОГДА 0 | ИНАЧЕ ОстаткиТоваровКомпании.КоличествоОстаток | КОНЕЦ - ВЫБОР | КОГДА РезервыТоваровКомпании.КоличествоОстаток ЕСТЬ NULL | ТОГДА 0 | ИНАЧЕ РезервыТоваровКомпании.КоличествоОстаток | КОНЕЦ КАК СвободныйОстаток, | ЗаказыПоставщикамОстатки.КоличествоОстаток КАК ВсегоЗаказано, | ВЫБОР | КОГДА ЗаказыПоставщикамОстатки.КоличествоОстаток ЕСТЬ NULL | ТОГДА 0 | ИНАЧЕ ЗаказыПоставщикамОстатки.КоличествоОстаток | КОНЕЦ - ВЫБОР | КОГДА РазмещениеЗаказовПокупателейОстатки.КоличествоОстаток ЕСТЬ NULL | ТОГДА 0 | ИНАЧЕ РазмещениеЗаказовПокупателейОстатки.КоличествоОстаток | КОНЕЦ КАК ПоступаетВСвободныйОстаток |ПОМЕСТИТЬ ВТ_Данные |ИЗ | РегистрНакопления.ЗаказыПокупателей.ОстаткиИОбороты(, &ДатаАнализа, , , ЗаказПокупателя = &Заказ) КАК ЗаказыПокупателейОстаткиИОбороты | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(&ДатаАнализа, ДокументРезерва = &Заказ) КАК РезервыКомпании | ПО ЗаказыПокупателейОстаткиИОбороты.ХарактеристикаНоменклатуры = РезервыКомпании.ХарактеристикаНоменклатуры | И ЗаказыПокупателейОстаткиИОбороты.Номенклатура = РезервыКомпании.Номенклатура | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.РазмещениеЗаказовПокупателей.Остатки(&ДатаАнализа, ЗаказПокупателя = &Заказ) КАК РазмещениеЗаказовПокупателей | ПО ЗаказыПокупателейОстаткиИОбороты.Номенклатура = РазмещениеЗаказовПокупателей.Номенклатура | И ЗаказыПокупателейОстаткиИОбороты.ХарактеристикаНоменклатуры = РазмещениеЗаказовПокупателей.ХарактеристикаНоменклатуры | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(&ДатаАнализа, ) КАК ОстаткиТоваровКомпании | ПО ЗаказыПокупателейОстаткиИОбороты.Номенклатура = ОстаткиТоваровКомпании.Номенклатура | И ЗаказыПокупателейОстаткиИОбороты.ХарактеристикаНоменклатуры = ОстаткиТоваровКомпании.ХарактеристикаНоменклатуры | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(&ДатаАнализа, ) КАК РезервыТоваровКомпании | ПО ЗаказыПокупателейОстаткиИОбороты.Номенклатура = РезервыТоваровКомпании.Номенклатура | И ЗаказыПокупателейОстаткиИОбороты.ХарактеристикаНоменклатуры = РезервыТоваровКомпании.ХарактеристикаНоменклатуры | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.РазмещениеЗаказовПокупателей.Остатки(&ДатаАнализа, ) КАК РазмещениеЗаказовПокупателейОстатки | ПО ЗаказыПокупателейОстаткиИОбороты.Номенклатура = РазмещениеЗаказовПокупателейОстатки.Номенклатура | И ЗаказыПокупателейОстаткиИОбороты.ХарактеристикаНоменклатуры = РазмещениеЗаказовПокупателейОстатки.ХарактеристикаНоменклатуры | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ЗаказыПоставщикам.Остатки(&ДатаАнализа, ) КАК ЗаказыПоставщикамОстатки | ПО ЗаказыПокупателейОстаткиИОбороты.Номенклатура = ЗаказыПоставщикамОстатки.Номенклатура | И ЗаказыПокупателейОстаткиИОбороты.ХарактеристикаНоменклатуры = ЗаказыПоставщикамОстатки.ХарактеристикаНоменклатуры | |ИНДЕКСИРОВАТЬ ПО | Номенклатура, | ХарактеристикаНоменклатуры |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ВТ_ОстаткиЛаборатория.НомерСтроки КАК НомерСтроки, | ВТ_Данные.Артикул КАК Артикул, | ВТ_Данные.Номенклатура КАК Номенклатура, | ВТ_Данные.ЕдиницаХраненияОстатков, | ВТ_Данные.НоменклатураВестиУчетПоХарактеристикам, | ВТ_Данные.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры, | ВТ_Данные.Запланировано КАК Запланировано, | ВТ_Данные.ОтгруженоОтменено КАК ОтгруженоОтменено, | ВТ_Данные.ОсталосьОтгруз |
|||
1
ArikiteO
16.10.13
✎
15:18
|
[code]
| ПО РегЗаказы.Номенклатура = РегРазмещение.Номенклатура | И РегЗаказы.ХарактеристикаНоменклатуры = РегРазмещение.ХарактеристикаНоменклатуры |ИТОГИ | СУММА(Запланировано), | СУММА(ОтгруженоОтменено), | СУММА(ОсталосьОтгрузить), | СУММА(Резерв) |ПО | Номенклатура, | ХарактеристикаНоменклатуры"; КонецЕсли; Запрос.УстановитьПараметр("ДатаАнализа", ?(ДатаАнализа='00010101000000','00010101000000',ДатаАнализа)); Запрос.УстановитьПараметр("НачалоЗаказа", Заказ.Дата); Запрос.УстановитьПараметр("Заказ", Заказ); Запрос.УстановитьПараметр("СкладЗаказа", Заказ.Склад); Запрос.УстановитьПараметр("ПустойЗаказ", Неопределено); Запрос.УстановитьПараметр("ВосьмаяЛиния", ?(ЗначениеЗаполнено(Справочники.Склады.НайтиПоКоду("00003")),Справочники.Склады.НайтиПоКоду("00003"), Справочники.Склады.ПустаяСсылка())); Запрос.УстановитьПараметр("Лаборатория", ?(ЗначениеЗаполнено(Справочники.Склады.НайтиПоНаименованию("Лаборатория")),Справочники.Склады.НайтиПоНаименованию("Лаборатория"), Справочники.Склады.ПустаяСсылка())); // Выполнение сформированного запроса Результат = Запрос.Выполнить(); Макет = ПолучитьМакет( ?(ТипЗаказа = "Поставщику", "МакетЗаказПоставщику", "МакетЗаказПокупателя")); ДокументРезультат.Очистить(); СтруктураПараметров = Новый Структура; СтруктураСдвигУровняГруппировок=Новый Структура; СтруктураСдвигУровняГруппировок.Вставить("Номенклатура", 0); СтруктураСдвигУровняГруппировок.Вставить("ХарактеристикаНоменклатуры", 1); // Области строки отчета - табличные документы из макета отчета СтруктураПараметров.Вставить("ОбщийОтступ", Макет.ПолучитьОбласть("ОбщийОтступ|Строка")); СтруктураПараметров.Вставить("ЗначениеГруппировки", Макет.ПолучитьОбласть("Значение|Строка")); СтруктураПараметров.Вставить("ЗначенияПоказателя", Макет.ПолучитьОбласть("Показатель|Строка")); СтруктураПараметров.Вставить("СтруктураСдвигУровняГруппировок", СтруктураСдвигУровняГруппировок); СтруктураПараметров.Вставить("ВсегоГруппировок", 1); СтруктураПараметров.Вставить("ТипЗаказа", ТипЗаказа); // Табличный документ - результат отчета СтруктураПараметров.Вставить("ТабДок", ДокументРезультат); // Наклонный шрифт для групп СтруктураПараметров.Вставить("ШрифтГрупп", Новый Шрифт(Макет.Область("Строка|Показатель").Шрифт,,,Истина)); // Вывод шапки отчета ОбластьЗначение = Макет.ПолучитьОбласть("ШапкаЗаголовок"); ОбластьЗначение.Параметры.ЗаголовокОтчета = "Состояние заказа по документу " + Заказ+Символы.ПС+" на " + ?(ДатаАнализа='00010101000000',"момент последнего движения",Формат(ДатаАнализа,"ДФ=""дд ММММ гггг 'г.' ЧЧ:мм:сс'""")); ДокументРезультат.Присоединить(ОбластьЗначение); ОбластьЗначение = Макет.ПолучитьОбласть("ШапкаКонтрагент"); ОбластьЗначение.Параметры.Контрагент = "Контрагент:"+Заказ.Контрагент; ОбластьЗначение.Параметры.РасшифровкаКонтрагент=Заказ.Контрагент; ОбластьЗначение.Параметры.Договор = "Договор контрагента: "+Заказ.ДоговорКонтрагента; ОбластьЗначение.Параметры.РасшифровкаДоговор = Заказ.ДоговорКонтрагента; ДокументРезультат.Присоединить(ОбластьЗначение); ДокументРезультат.Присоединить(Макет.ПолучитьОбласть("ШапкаНоменклатура")); // Вывод строк отчета ДокументРезультат.НачатьАвтогруппировкуСтрок(); СтруктураПараметров.Вставить("ЕстьНоменклатура", Истина); ВывестиВыборку(Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам), СтруктураПараметров, 0); ДокументРезультат.ЗакончитьАвтогруппировкуСтрок(); ДокументРезультат.Вывести(Макет.ПолучитьОбласть("Подвал")); Запрос=Новый Запрос; Если ТипЗаказа = "Покупателя" Тогда //Формируем текст запроса по состоянию взаиморасчетов по договору. Запрос.Текст= "ВЫБРАТЬ | РасчетыСКонтрагентами.СуммаВзаиморасчетовПриход КАК Запланировано, | РасчетыСКонтрагентами.СуммаВзаиморасчетовРасход КАК Оплачено, | РасчетыСКонтрагентами.Сделка КАК Заказ, | РасчетыСКонтрагентами.ДоговорКонтрагента КАК ЗаказДоговорКонтрагента |ИЗ | РегистрНакопления.РасчетыСКонтрагентами.Обороты(, &ДатаАнализа, , ДоговорКонтрагента = &ДоговорКонтрагента) КАК РасчетыСКонтрагентами | |ИТОГИ | СУММА(Оплачено), | СУММА(Запланировано) |ПО ОБЩИЕ, | Заказ"; Иначе Запрос.Текст= "ВЫБРАТЬ | РасчетыСКонтрагентами.СуммаВзаиморасчетовПриход КАК Оплачено, | РасчетыСКонтрагентами.СуммаВзаиморасчетовРасход КАК Запланировано, | РасчетыСКонтрагентами.Сделка КАК Заказ, | РасчетыСКонтрагентами.ДоговорКонтрагента КАК ЗаказДоговорКонтрагента |ИЗ | РегистрНакопления.РасчетыСКонтрагентами.Обороты(, &ДатаАнализа, , ДоговорКонтрагента = &ДоговорКонтрагента) КАК РасчетыСКонтрагентами | |ИТОГИ | СУММА(Оплачено), | СУММА(Запланировано) |ПО ОБЩИЕ, | Заказ"; КонецЕсли; Запрос.УстановитьПараметр("ДатаАнализа",?(ДатаАнализа='00010101000000','00010101000000',ДатаАнализа)); Запрос.УстановитьПараметр("ДоговорКонтрагента",Заказ.ДоговорКонтрагента); // Выполнение сформированного запроса Результат = Запрос.Выполнить(); СтруктураСдвигУровняГруппировок=Новый Структура; СтруктураСдвигУровняГруппировок.Вставить("ОБЩИЕ", 0); СтруктураСдвигУровняГруппировок.Вставить("Заказ", 1); СтруктураДанныхТекущегоЗаказа=Новый Структура; СтруктураДанных=Новый Структура; СтруктураДанных.Вставить("Запланировано",0); СтруктураДанных.Вставить("ЗапланированоПредоплата",0); СтруктураДанных.Вставить("Оплачено",0); СтруктураДанных.Вставить("ОплатитьВсего",0); СтруктураДанных.Вставить("ОплатитьВсегоПредоплата",0); СтруктураДанныхТекущегоЗаказа.Вставить("ДанныеЗаказа",СтруктураДанных); СтруктураДанныхТекущегоЗаказа.Вставить("Всего",СтруктураДанных); // Области строки отчета - табличные документы из макета отчета СтруктураПараметров.Вставить("ОбщийОтступ", Макет.ПолучитьОбласть("ОбщийОтступ|СтрокаДеньги")); СтруктураПараметров.Вставить("ЗначениеГруппировки", Макет.ПолучитьОбласть("Значение|СтрокаДеньги")); СтруктураПараметров.Вставить("ЗначенияПоказателя", Макет.ПолучитьОбласть("Показатель|СтрокаДеньги")); СтруктураПараметров.Вставить("СтруктураСдвигУровняГруппировок", СтруктураСдвигУровняГруппировок); СтруктураПараметров.Вставить("СтруктураСдвигУровняГруппировок", СтруктураСдвигУровняГруппировок); СтруктураПараметров.Вставить("СтруктураДанныхТекущегоЗаказа", СтруктураДанныхТекущегоЗаказа); СтруктураПараметров.Вставить("ВсегоГруппировок", 1); СтруктураПараметров.Вставить("НомерОбхода", 1); ДокументРезультат.Вывести(Макет.ПолучитьОбласть("ОбщийОтступ|ШапкаДеньги")); // Вывод шапки таблицы по состоянию взаиморасчетов. ОбластьЗначение = Макет.ПолучитьОбласть("Значение|ШапкаДеньги"); ДокументРезультат.Присоединить(ОбластьЗначение); ОбластьПоказатель = Макет.ПолучитьОбласть("Показатель|ШапкаДеньги"); ОбластьПоказатель.Параметры.ПредоплатаТекст = "Предоплата " + Формат(Заказ.ДоговорКонтрагента.ПроцентПредоплаты,"ЧЦ=5; ЧДЦ=2; ЧН=""0,00""")+"%"; ОбластьПоказатель.Параметры.ВалютаВзаиморасчетов ="Валюта взаиморасчетов: " + Заказ.ДоговорКонтрагента.ВалютаВзаиморасчетов; ДокументРезультат.Присоединить(ОбластьПоказатель); // Вывод строк таблицы по состоянию взаиморасчетов. ДокументРезультат.НачатьАвтогруппировкуСтрок(); СтруктураПараметров.Вставить("ЕстьНоменклатура", Ложь); ВывестиВыборку(Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам), СтруктураПараметров, 0); СтруктураПараметров.Вставить("НомерОбхода", 2); ВывестиВыборку(Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам), СтруктураПараметров, 0); ДокументРезультат.ЗакончитьАвтогруппировкуСтрок(); //Вывод итоговой строки таблицы по состоянию взаиморасчетов. ДокументРезультат.Вывести(СтруктураПараметров.ОбщийОтступ); СтруктураПараметров.ЗначениеГруппировки.Параметры.ЗначениеГруппировки = "Всего"; ДокументРезультат.Присоединить(СтруктураПараметров.ЗначениеГруппировки); ФорматПоказателя = "ЧЦ = 15 ; ЧДЦ = 2 ; ЧН = ""0,00"""; СтруктураОбщихДанных=СтруктураПараметров.СтруктураДанныхТекущегоЗаказа.Всего; ЗначениеЗапланировано = Формат(СтруктураОбщихДанных.Запланировано, ФорматПоказателя); ЗначениеЗапланированоПредоплата = Формат(СтруктураОбщихДанных.ЗапланированоПредоплата, ФорматПоказателя); ЗначениеОплачено = Формат(СтруктураОбщихДанных.Оплачено, ФорматПоказателя); ЗначениеОплатитьВсего = Формат(СтруктураОбщихДанных.ОплатитьВсего, ФорматПоказателя); ЗначениеОплатитьВсегоПредоплата = Формат(СтруктураОбщихДанных.ОплатитьВсегоПредоплата, ФорматПоказателя); СтруктураПараметров.ЗначенияПоказателя.Параметры.Запланировано = СокрЛП(ЗначениеЗапланировано); СтруктураПараметров.ЗначенияПоказателя.Параметры.ЗапланированоПредоплата = СокрЛП(ЗначениеЗапланированоПредоплата); СтруктураПараметров.ЗначенияПоказателя.Параметры.Оплачено = СокрЛП(ЗначениеОплачено); СтруктураПараметров.ЗначенияПоказателя.Параметры.ОплатитьВсего = СокрЛП(ЗначениеОплатитьВсего); СтруктураПараметров.ЗначенияПоказателя.Параметры.ОплатитьВсегоПредоплата = СокрЛП(ЗначениеОплатитьВсегоПредоплата); ДокументРезультат.Присоединить(СтруктураПараметров.ЗначенияПоказателя); ДокументРезультат.Область(ДокументРезультат.ВысотаТаблицы, 2, ДокументРезультат.ВысотаТаблицы, ДокументРезультат.ШиринаТаблицы).Шрифт=СтруктураПараметров.ШрифтГрупп; ДокументРезультат.Вывести(Макет.ПолучитьОбласть("ОбщийОтступ|ПодвалДеньги")); // Вывод подвала таблицы по состоянию взаиморасчетов. ОбластьЗначение = Макет.ПолучитьОбласть("Значение|ПодвалДеньги"); ДокументРезультат.Присоединить(ОбластьЗначение); ДокументРезультат.Присоединить(Макет.ПолучитьОбласть("Показатель|ПодвалДеньги")); //Для договоров, по которым установлен контроль дебеторской задолженности, выводится текущее состояние задолженности. Если Заказ.ДоговорКонтрагента.КонтролироватьСуммуЗадолженности Тогда //Расчет текущей задолженности Запрос=Новый Запрос; Если ТипЗаказа = "Покупателя" Тогда Запрос.Текст="ВЫБРАТЬ | КонтрагентыВзаиморасчетыКомпанииОстатки.СуммаВзаиморасчетовОстаток КАК СуммаВалОстаток |ИЗ | РегистрНакопления.ВзаиморасчетыСКонтрагентами.Остатки(&ДатаАнализа,ДоговорКонтрагента=&ДоговорКонтрагента) | КАК КонтрагентыВзаиморасчетыКомпанииОстатки"; Иначе Запрос.Текст="ВЫБРАТЬ | - КонтрагентыВзаиморасчетыКомпанииОстатки.СуммаВзаиморасчетовОстаток КАК СуммаВалОстаток |ИЗ | РегистрНакопления.ВзаиморасчетыСКонтрагентами.Остатки(&ДатаАнализа,ДоговорКонтрагента=&ДоговорКонтрагента) | КАК КонтрагентыВзаиморасчетыКомпанииОстатки"; КонецЕсли; Запрос.УстановитьПараметр("ДатаАнализа",?(ДатаАнализа='00010101000000','00010101000000',ДатаАнализа)); Запрос.УстановитьПараметр("ДоговорКонтрагента",Заказ.ДоговорКонтрагента); СуммаВзаиморасчетовВал=0; Результат = Запрос.Выполнить(); Выборка=Результат.Выбрать(); Если Выборка.Следующий() Тогда СуммаВзаиморасчетовВал=Выборка["СуммаВалОстаток"]; КонецЕсли; ДопустимаяЗадолженность=Заказ.ДоговорКонтрагента.ДопустимаяСуммаЗадолженности; ТекущаяЗадолженность=?(ПустаяСтрока(СуммаВзаиморасчетовВал),0,СуммаВзаиморасчетовВал); ОбъемОтгрузки=?((ДопустимаяЗадолженность-ТекущаяЗадолженность)>0,(ДопустимаяЗадолженность-ТекущаяЗадолженность),0); ЗначениеДопустимаяЗадолженность = Формат(ДопустимаяЗадолженность, ФорматПоказателя); ЗначениеТекущаяЗадолженность = Формат(ТекущаяЗадолженность, ФорматПоказателя); ЗначениеОбъемОтгрузки = Формат(ОбъемОтгрузки, ФорматПоказателя); ДокументРезультат.Вывести(Макет.ПолучитьОбласть("ОбщийОтступ|КонтрольЗадолженности")); // Вывод области контроля задолженности ОбластьЗначение = Макет.ПолучитьОбласть("Значение|КонтрольЗадолженности"); ДокументРезультат.Присоединить(ОбластьЗначение); ОбластьКонтрольЗадолженности=Макет.ПолучитьОбласть("Показатель|КонтрольЗадолженности"); ОбластьКонтрольЗадолженности.Параметры.ДопустимаяЗадолженность = СокрЛП(ЗначениеДопустимаяЗадолженность); ОбластьКонтрольЗадолженности.Параметры.ТекущаяЗадолженность = СокрЛП(ЗначениеТекущаяЗадолженность); ОбластьКонтрольЗадолженности.Параметры.ОбъемОтгрузки = СокрЛП(ЗначениеОбъемОтгрузки); ДокументРезультат.Присоединить(ОбластьКонтрольЗадолженности); КонецЕсли; // Первую колонку не печатаем ДокументРезультат.ОбластьПечати = ДокументРезультат.Область(1,2,ДокументРезультат.ВысотаТаблицы,ДокументРезультат.ШиринаТаблицы); ДокументРезультат.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт; КонецПроцедуры // СформироватьОтчет() [/code] |
|||
2
ArikiteO
16.10.13
✎
15:49
|
Есть желающие за разумную денюжку поправить отчет?
|
|||
3
Лефмихалыч
16.10.13
✎
15:51
|
сам читай свои простыни
|
|||
4
shuhard
16.10.13
✎
15:52
|
(2)[ УТ 10.2 на 8.1 ]
нет слишком древний релиз |
|||
5
ArikiteO
16.10.13
✎
16:01
|
(4) релиз уже переписан несколькими разными людьми. Базу в случае необходимости могу предоставить.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |