![]() |
![]() |
![]() |
|
УТ 10.3 ТОРГ - 29 для НТТ с количественно суммовым учетом тары | ☑ | ||
---|---|---|---|---|
0
ElidanPro
31.08.15
✎
05:35
|
Добрый день товарищи. Суть проблемы в следующем. Взял отчет торг 29 из типовой ут.
Когда делаем поступление товаров и услуг в НТТ, он пишет в регистр Остатки товаров в НТТ, тара тоже попадает количество но без цены. Кладовщики хотят чтоб было видно стоимость и сумму тары по приходу и расходу. Цену я думал можно взять из документа. Не получается. Процедура ОбновитьОтчет() Экспорт Если Не ЗначениеЗаполнено(ДатаНач) ИлИ Не ЗначениеЗаполнено(ДатаКон) Тогда Предупреждение("Не выбран период!"); Возврат; КонецЕсли; Если Не ЗначениеЗаполнено(Склад) Тогда Предупреждение("Не выбран склад!"); Возврат; КонецЕсли; Если Склад.ВидСклада = Перечисления.ВидыСкладов.Оптовый Тогда Предупреждение("Отчет можно формировать только по складам с видом ""Розничный"" или ""НТТ""!"); Возврат; КонецЕсли; мТабДок = ЭлементыФормы.ДокументРезультат; мТабДок.Очистить(); Макет = ЭтотОбъект.ПолучитьМакет("Макет"); // Выведем заголовок. СведенияОПокупателе = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Организация, ДатаКон); ВыбМОЛ = РегистрыСведений.ОтветственныеЛица.ПолучитьПоследнее(КонецДня(ДатаКон), Новый Структура("СтруктурнаяЕдиница", Склад)).ФизическоеЛицо; ОбластьМакета = Макет.ПолучитьОбласть("Заголовок"); ОбластьМакета.Параметры.ОрганизацияПредставление = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПокупателе); ОбластьМакета.Параметры.ДатаСоставления = РабочаяДата; ОбластьМакета.Параметры.ДатаНачала = ДатаНач; ОбластьМакета.Параметры.ДатаКонца = ДатаКон; ОбластьМакета.Параметры.ОрганизацияПоОКПО = СведенияОПокупателе.КодПоОКПО; ОбластьМакета.Параметры.МОЛ = ?(ЗначениеЗаполнено(ВыбМОЛ), ВыбМОЛ, ""); ОбластьМакета.Параметры.МОЛТабельныйНомер = ?(Не ЗначениеЗаполнено(ВыбМОЛ), "", ВыбМОЛ.Код); ОбластьМакета.Параметры.Номер = НомерОтчета; ВысотаЗаголовка = ОбластьМакета.ВысотаТаблицы; мТабДок.Вывести(ОбластьМакета); ОбластьМакета = Макет.ПолучитьОбласть("Шапка"); ПовторятьПриПечатиСтроки = мТабДок.Область(1 + ВысотаЗаголовка, ,2 + ВысотаЗаголовка); мТабДок.Вывести(ОбластьМакета); Запрос = Новый Запрос; Запрос.УстановитьПараметр("Дата1", НачалоДня(ДатаНач)); Запрос.УстановитьПараметр("Дата2", КонецДня(ДатаКон)); Запрос.УстановитьПараметр("Склад", Склад); // Запрос.УстановитьПараметр("Тара",Перечисления.ТоварТара.Тара); Если Склад.ВидСклада = Перечисления.ВидыСкладов.НТТ Тогда ТекстЗапроса = " |ВЫБРАТЬ РАЗРЕШЕННЫЕ | NULL КАК Док, | NULL КАК ДатаДок, | NULL КАК НомерДок, | СУММА(ОстаткиТоваров.КоличествоНачальныйОстаток * ОстаткиТоваров.ЦенаВРознице) КАК НачОст, | СУММА(ОстаткиТоваров.КоличествоКонечныйОстаток * ОстаткиТоваров.ЦенаВРознице) КАК КонОст, | | СУММА( | ВЫБОР КОГДА ОстаткиТоваров.КоличествоПриход - ОстаткиТоваров.КоличествоРасход > 0 ТОГДА | (ОстаткиТоваров.КоличествоПриход - ОстаткиТоваров.КоличествоРасход) * ОстаткиТоваров.ЦенаВРознице | ИНАЧЕ | 0.00 | КОНЕЦ | ) КАК Приход, | СУММА( | ВЫБОР КОГДА ОстаткиТоваров.КоличествоРасход - ОстаткиТоваров.КоличествоПриход > 0 ТОГДА | (ОстаткиТоваров.КоличествоРасход - ОстаткиТоваров.КоличествоПриход) * ОстаткиТоваров.ЦенаВРознице | ИНАЧЕ | 0.00 | КОНЕЦ | ) КАК Расход, | //-------------------------тара | СУММА( | ВЫБОР КОГДА ОстаткиТоваров.ТоварТара=&Тара ТОГДА | (ОстаткиТоваров.КоличествоНачальныйОстаток) | ИНАЧЕ | 0.00 | КОНЕЦ | ) КАК НачОстТара, | СУММА( | ВЫБОР КОГДА ОстаткиТоваров.ТоварТара=&Тара ТОГДА | (ОстаткиТоваров.КоличествоКонечныйОстаток) | ИНАЧЕ | 0.00 | КОНЕЦ | ) КАК КонОстТара, | СУММА( | ВЫБОР КОГДА ОстаткиТоваров.ТоварТара=&Тара ТОГДА | ВЫБОР КОГДА (ОстаткиТоваров.КоличествоПриход - ОстаткиТоваров.КоличествоРасход)>0 ТОГДА | (ОстаткиТоваров.КоличествоПриход - ОстаткиТоваров.КоличествоРасход) | ИНАЧЕ | 0.00 | КОНЕЦ | КОНЕЦ | ) КАК ПриходТара, | | СУММА( | ВЫБОР КОГДА ОстаткиТоваров.ТоварТара=&Тара ТОГДА | ВЫБОР КОГДА (ОстаткиТоваров.КоличествоРасход - ОстаткиТоваров.КоличествоПриход)>0 ТОГДА | (ОстаткиТоваров.КоличествоРасход - ОстаткиТоваров.КоличествоПриход) | ИНАЧЕ | 0.00 | КОНЕЦ | КОНЕЦ | ) КАК РасходТара | | |ИЗ | РегистрНакопления.ТоварыВНТТ.ОстаткиИОбороты(&Дата1, &Дата2, , , Склад = &Склад) КАК ОстаткиТоваров |ИМЕЮЩИЕ | СУММА(ОстаткиТоваров.КоличествоНачальныйОстаток * ОстаткиТоваров.ЦенаВРознице) <> 0.00 | ИЛИ СУММА(ОстаткиТоваров.КоличествоКонечныйОстаток * ОстаткиТоваров.ЦенаВРознице) <> 0.00 | ИЛИ СУММА(ВЫБОР КОГДА ОстаткиТоваров.КоличествоПриход - ОстаткиТоваров.КоличествоРасход > 0 ТОГДА | (ОстаткиТоваров.КоличествоПриход - ОстаткиТоваров.КоличествоРасход) * ОстаткиТоваров.ЦенаВРознице | ИНАЧЕ 0.00 КОНЕЦ) <> 0.00 | ИЛИ СУММА(ВЫБОР КОГДА ОстаткиТоваров.КоличествоРасход - ОстаткиТоваров.КоличествоПриход > 0 ТОГДА | (ОстаткиТоваров.КоличествоРасход - ОстаткиТоваров.КоличествоПриход) * ОстаткиТоваров.ЦенаВРознице | ИНАЧЕ 0.00 КОНЕЦ) <> 0.00 | ////-------------------------тара | ИЛИ СУММА(ОстаткиТоваров.КоличествоНачальныйОстаток) <> 0.00 | ИЛИ СУММА(ОстаткиТоваров.КоличествоКонечныйОстаток) <> 0.00 | ИЛИ СУММА(ВЫБОР КОГДА ОстаткиТоваров.КоличествоПриход - ОстаткиТоваров.КоличествоРасход > 0 ТОГДА | (ОстаткиТоваров.КоличествоПриход - ОстаткиТоваров.КоличествоРасход) | ИНАЧЕ 0.00 КОНЕЦ) <> 0.00 | ИЛИ СУММА(ВЫБОР КОГДА ОстаткиТоваров.КоличествоРасход - ОстаткиТоваров.КоличествоПриход > 0 ТОГДА | (ОстаткиТоваров.КоличествоРасход - ОстаткиТоваров.КоличествоПриход) | ИНАЧЕ 0.00 КОНЕЦ) <> 0.00 | | | | | | | |; |ВЫБРАТЬ РАЗРЕШЕННЫЕ | ОстаткиТоваров.Регистратор КАК Док, | ОстаткиТоваров.Период КАК ДатаДок, | ОстаткиТоваров.Регистратор.Номер КАК НомерДок, | СУММА(ОстаткиТоваров.КоличествоНачальныйОстаток * ОстаткиТоваров.ЦенаВРознице) КАК НачОст, | СУММА(ОстаткиТоваров.КоличествоКонечныйОстаток * ОстаткиТоваров.ЦенаВРознице) КАК КонОст, | СУММА( | ВЫБОР КОГДА ОстаткиТоваров.КоличествоПриход - ОстаткиТоваров.КоличествоРасход > 0 ТОГДА | (ОстаткиТоваров.КоличествоПриход - ОстаткиТоваров.КоличествоРасход) * ОстаткиТоваров.ЦенаВРознице | ИНАЧЕ | 0 | КОНЕЦ | ) КАК Приход, | СУММА( | ВЫБОР КОГДА ОстаткиТоваров.КоличествоРасход - ОстаткиТоваров.КоличествоПриход > 0 ТОГДА | (ОстаткиТоваров.КоличествоРасход - ОстаткиТоваров.КоличествоПриход) * ОстаткиТоваров.ЦенаВРознице | ИНАЧЕ | 0 | КОНЕЦ | ) КАК Расход, | //-------------------------тара | ЕСТЬNULL(СУММА( | ВЫБОР КОГДА ОстаткиТоваров.ТоварТара=&Тара ТОГДА | (ОстаткиТоваров.КоличествоНачальныйОстаток) | КОНЕЦ | ),0) КАК НачОстТара, | | ЕСТЬNULL(СУММА( | ВЫБОР КОГДА ОстаткиТоваров.ТоварТара=&Тара ТОГДА | (ОстаткиТоваров.КоличествоКонечныйОстаток) | КОНЕЦ | ),0) КАК КонОстТара, | | ЕСТЬNULL(СУММА( | ВЫБОР КОГДА ОстаткиТоваров.ТоварТара=&Тара ТОГДА | ВЫБОР КОГДА (ОстаткиТоваров.КоличествоПриход - ОстаткиТоваров.КоличествоРасход)>0 ТОГДА | (ОстаткиТоваров.КоличествоПриход - ОстаткиТоваров.КоличествоРасход) | КОНЕЦ | КОНЕЦ | ),0) КАК ПриходТара, | | ЕСТЬNULL(СУММА( | ВЫБОР КОГДА ОстаткиТоваров.ТоварТара=&Тара ТОГДА | ВЫБОР КОГДА (ОстаткиТоваров.КоличествоРасход - ОстаткиТоваров.КоличествоПриход)>0 ТОГДА | (ОстаткиТоваров.КоличествоРасход - ОстаткиТоваров.КоличествоПриход) | КОНЕЦ | КОНЕЦ | ),0) КАК РасходТара | |ИЗ | РегистрНакопления.ТоварыВНТТ.ОстаткиИОбороты(&Дата1, &Дата2, Регистратор, , Склад = &Склад) КАК ОстаткиТоваров |СГРУППИРОВАТЬ ПО | ОстаткиТоваров.Регистратор, | ОстаткиТоваров.Период, | ОстаткиТоваров.Регистратор.Номер |УПОРЯДОЧИТЬ ПО | ДатаДок |"; КонецЕсли; Запрос.Текст = ТекстЗапроса; МассивРезультатов = Запрос.ВыполнитьПакет(); РезултатОстаков = МассивРезультатов[0]; РезультатЗапроса = МассивРезультатов[1]; Если РезултатОстаков.Пустой() Тогда НачОст = 0; КонОст = 0; Иначе ВыборкаСтрокаОстатков = РезултатОстаков.Выбрать(); ВыборкаСтрокаОстатков.Следующий(); НачОст = ВыборкаСтрокаОстатков.НачОст; КонОст = ВыборкаСтрокаОстатков.КонОст; НачОстТара = ВыборкаСтрокаОстатков.НачОстТара; КонОстТара = ВыборкаСтрокаОстатков.КонОстТара; КонецЕсли; ОбластьМакета = Макет.ПолучитьОбласть("ОстатокНачала"); ОбластьМакета.Параметры.ДатаНачала = "Остаток на " + Формат(ДатаНач, "ДЛФ=Д"); ОбластьМакета.Параметры.НачСтоимостьВсего = ОбщегоНазначения.ФорматСумм(НачОст); ОбластьМакета.Параметры.НачСтоимостьТара = ОбщегоНазначения.ФорматСумм(НачОстТара); мТабДок.Вывести(ОбластьМакета); ОбластьМакета = Макет.ПолучитьОбласть("Приход"); мТабДок.Вывести(ОбластьМакета); ОбластьМакета = Макет.ПолучитьОбласть("Строка"); //товары ТЗПриходы = ОбщегоНазначения.ОтобратьСтрокиПоКритериям(РезультатЗапроса, Новый Структура("Приход", 0), Новый Структура("Приход", ВидСравнения.НеРавно)).Выгрузить(); ТЗПриходы.Сортировать("ДатаДок Возр"); Для Каждого СтрокаПрихода Из ТЗПриходы Цикл ОбластьМакета.Параметры.Докум = СтрокаПрихода.Док.МетаДанные().Синоним; ОбластьМакета.Параметры.Расшифровка = СтрокаПрихода.Док; ОбластьМакета.Параметры.ДатаДокумента = СтрокаПрихода.ДатаДок; ОбластьМакета.Параметры.НомерДокумента = СтрокаПрихода.НомерДок; ОбластьМакета.Параметры.СуммаТовара = ОбщегоНазначения.ФорматСумм(СтрокаПрихода.Приход); ОбластьМакета.Параметры.СуммаТары = ОбщегоНазначения.ФорматСумм(0); мТабДок.Вывести(ОбластьМакета); КонецЦикла; ТЗПриходыТара = ОбщегоНазначения.ОтобратьСтрокиПоКритериям(РезультатЗапроса, Новый Структура("ПриходТара", 0), Новый Структура("ПриходТара", ВидСравнения.НеРавно)).Выгрузить(); ТЗПриходыТара.Сортировать("ДатаДок Возр"); Для Каждого СтрокаПриходаТара Из ТЗПриходыТара Цикл ОбластьМакета.Параметры.Докум = СтрокаПриходаТара.Док.МетаДанные().Синоним; ОбластьМакета.Параметры.Расшифровка = СтрокаПриходаТара.Док; ОбластьМакета.Параметры.ДатаДокумента = СтрокаПриходаТара.ДатаДок; ОбластьМакета.Параметры.НомерДокумента = СтрокаПриходаТара.НомерДок; ОбластьМакета.Параметры.СуммаТовара = ОбщегоНазначения.ФорматСумм(0); ОбластьМакета.Параметры.СуммаТары = ОбщегоНазначения.ФорматСумм(СтрокаПриходаТара.ПриходТара); мТабДок.Вывести(ОбластьМакета); КонецЦикла; Приход = ТЗПриходы.Итог("Приход"); ПриходТара = ТЗПриходыТара.Итог("ПриходТара"); ОбластьМакета = Макет.ПолучитьОбласть("ИтогоПриход"); ОбластьМакета.Параметры.ПрихСтоимостьВсего = ОбщегоНазначения.ФорматСумм(Приход); ОбластьМакета.Параметры.ПрихСтоимостьТара = ОбщегоНазначения.ФорматСумм(ПриходТара); мТабДок.Вывести(ОбластьМакета); ОбластьМакета = Макет.ПолучитьОбласть("ВсегоПриход"); ОбластьМакета.Параметры.ПриходСОстатком = ОбщегоНазначения.ФорматСумм(Приход + НачОст); ОбластьМакета.Параметры.ПриходСОстаткомТара = ОбщегоНазначения.ФорматСумм(ПриходТара + НачОстТара); мТабДок.Вывести(ОбластьМакета); мТабДок.ВывестиГоризонтальныйРазделительСтраниц(); ОбластьМакета = Макет.ПолучитьОбласть("Расход"); мТабДок.Вывести(ОбластьМакета); ОбластьМакета = Макет.ПолучитьОбласть("Строка"); //отбираем строки по товарам ТЗРасходы = ОбщегоНазначения.ОтобратьСтрокиПоКритериям(РезультатЗапроса, Новый Структура("Расход", 0), Новый Структура("Расход", ВидСравнения.НеРавно)).Выгрузить(); ТЗРасходы.Сортировать("ДатаДок Возр"); Для Каждого СтрокаРасхода Из ТЗРасходы Цикл ОбластьМакета.Параметры.Докум = СтрокаРасхода.Док.МетаДанные().Синоним; ОбластьМакета.Параметры.Расшифровка = СтрокаРасхода.Док; ОбластьМакета.Параметры.ДатаДокумента = СтрокаРасхода.ДатаДок; ОбластьМакета.Параметры.НомерДокумента = СтрокаРасхода.НомерДок; ОбластьМакета.Параметры.СуммаТовара = ОбщегоНазначения.ФорматСумм(СтрокаРасхода.Расход); ОбластьМакета.Параметры.СуммаТары = ОбщегоНазначения.ФорматСумм(0); мТабДок.Вывести(ОбластьМакета); КонецЦикла; //отбираем строки по таре ТЗРасходыТара = ОбщегоНазначения.ОтобратьСтрокиПоКритериям(РезультатЗапроса, Новый Структура("РасходТара",0), Новый Структура("РасходТара",ВидСравнения.НеРавно)).Выгрузить(); ТЗРасходыТара.Сортировать("ДатаДок Возр"); Для Каждого СтрокаРасходаТара Из ТЗРасходыТара Цикл ОбластьМакета.Параметры.Докум = СтрокаРасходаТара.Док.МетаДанные().Синоним; ОбластьМакета.Параметры.Расшифровка = СтрокаРасходаТара.Док; ОбластьМакета.Параметры.ДатаДокумента = СтрокаРасходаТара.ДатаДок; ОбластьМакета.Параметры.НомерДокумента = СтрокаРасходаТара.НомерДок; ОбластьМакета.Параметры.СуммаТовара = ОбщегоНазначения.ФорматСумм(0); ОбластьМакета.Параметры.СуммаТары = ОбщегоНазначения.ФорматСумм(СтрокаРасходаТара.РасходТара); мТабДок.Вывести(ОбластьМакета); КонецЦикла; Расход = ТЗРасходы.Итог("Расход"); РасходТара = ТЗРасходыТара.Итог("РасходТара"); ОбластьМакета = Макет.ПолучитьОбласть("ИтогоРасход"); ОбластьМакета.Параметры.РасхСтоимостьВсего = ОбщегоНазначения.ФорматСумм(Расход); ОбластьМакета.Параметры.РасхСтоимостьТара = ОбщегоНазначения.ФорматСумм(РасходТара); мТабДок.Вывести(ОбластьМакета); ОбластьМакета = Макет.ПолучитьОбласть("ОстатокКонец"); ОбластьМакета.Параметры.ДатаКонца = "Остаток на " + Формат(ДатаКон, "ДЛФ=Д"); ОбластьМакета.Параметры.КонСтоимостьВсего = ОбщегоНазначения.ФорматСумм(КонОст); ОбластьМакета.Параметры.КонСтоимостьТара = ОбщегоНазначения.ФорматСумм(КонОстТара); мТабДок.Вывести(ОбластьМакета); ОбластьМакета = Макет.ПолучитьОбласть("Подвал"); ОбластьМакета.Параметры.МОЛ = ?(ЗначениеЗаполнено(ВыбМОЛ), ВыбМОЛ, ""); мТабДок.Вывести(ОбластьМакета); мТабДок.ПовторятьПриПечатиСтроки = ПовторятьПриПечатиСтроки; НомерОтчета = НомерОтчета + 1; КонецПроцедуры // ОбновитьОтчет() |
|||
1
ElidanPro
31.08.15
✎
05:46
|
При выполнении запроса выводит только количество. Так как в регистре нет данных о цене.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |