![]() |
![]() |
![]() |
|
ТОРГ 29 БП 2.0.64.35 с отметками для Бухгалтерии | ☑ | ||
---|---|---|---|---|
0
ElidanPro
31.08.15
✎
07:50
|
Достался в наследство отчет ТОРГ 29 сотметками для бухгалтерии. все отлично работает, но есть одно НО.
Возврат товаров поставщику попадает в тч приходы если заполнено значение субконто ДТ по счету (42.02 торговая наценка в НТТ) склад. Если делать ручную корректировку и убрать склад. то документ попадает нормально как в типовом отчете в тч Расходы. ОТсюда вопрос, что поправить в запросе: Процедура ОбновитьОтчет() Если НЕ ЗначениеЗаполнено(ДатаНач) Или НЕ ЗначениеЗаполнено(ДатаКон) Тогда Предупреждение("Не выбран период!"); Возврат; КонецЕсли; Если НЕ ЗначениеЗаполнено(Склад) Тогда Предупреждение("Не выбран склад!"); Возврат; КонецЕсли; мТабДок = ЭлементыФормы.ДокументРезультат; мТабДок.Очистить(); Макет = ЭтотОбъект.ПолучитьМакет("Макет"); // Выведем заголовок. СведенияОПокупателе = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Организация, ДатаКон); ВыбМОЛ = РегистрыСведений.ОтветственныеЛица.ПолучитьПоследнее(КонецДня(ДатаКон), Новый Структура("СтруктурнаяЕдиница", Склад)).ФизическоеЛицо; ОбластьМакета = Макет.ПолучитьОбласть("Заголовок"); ОбластьМакета.Параметры.ОрганизацияПредставление = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПокупателе); ОбластьМакета.Параметры.ДатаСоставления = РабочаяДата; ОбластьМакета.Параметры.ДатаНачала = ДатаНач; ОбластьМакета.Параметры.ДатаКонца = ДатаКон; ОбластьМакета.Параметры.ОрганизацияПоОКПО = СведенияОПокупателе.КодПоОКПО; ОбластьМакета.Параметры.МОЛ = ?(НЕ ЗначениеЗаполнено(ВыбМОЛ), "", ВыбМОЛ); ОбластьМакета.Параметры.МОЛТабельныйНомер = ?(НЕ ЗначениеЗаполнено(ВыбМОЛ), "", ВыбМОЛ.Код); ОбластьМакета.Параметры.Номер = НомерОтчета; ВысотаЗаголовка = ОбластьМакета.ВысотаТаблицы; мТабДок.Вывести(ОбластьМакета); ОбластьМакета = Макет.ПолучитьОбласть("Шапка"); ПовторятьПриПечатиСтроки = мТабДок.Область(1 + ВысотаЗаголовка, ,2 + ВысотаЗаголовка); мТабДок.Вывести(ОбластьМакета); МассивСчетов = Новый Массив; МассивСчетов.Добавить(ПланыСчетов.Хозрасчетный.ТоварыВРозничнойТорговлеВПродажныхЦенахАТТ); МассивСчетов.Добавить(ПланыСчетов.Хозрасчетный.ТоварыВРозничнойТорговлеВПродажныхЦенахНТТ); МассивСчетов.Добавить(ПланыСчетов.Хозрасчетный.ТараПодТоваромИПорожняя); МассивСчетов.Добавить(ПланыСчетов.Хозрасчетный.ТорговаяНаценкаНТТ);//дав МассивСчетов41 = Новый Массив; МассивСчетов41.Добавить(ПланыСчетов.Хозрасчетный.ТоварыВРозничнойТорговлеВПродажныхЦенахАТТ); МассивСчетов41.Добавить(ПланыСчетов.Хозрасчетный.ТоварыВРозничнойТорговлеВПродажныхЦенахНТТ); Запрос = Новый Запрос; Запрос.УстановитьПараметр("Дата1", НачалоДня(ДатаНач)); Запрос.УстановитьПараметр("Дата2", КонецДня(ДатаКон)); Запрос.УстановитьПараметр("Организация", Организация); Запрос.УстановитьПараметр("ВидСубконто", ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Склады); Запрос.УстановитьПараметр("Склад", Склад); Запрос.УстановитьПараметр("Счета", МассивСчетов); Запрос.УстановитьПараметр("Счета41", МассивСчетов41); Запрос.УстановитьПараметр("СчетТары", ПланыСчетов.Хозрасчетный.ТараПодТоваромИПорожняя); //дав Запрос.УстановитьПараметр("СчетНаценки", ПланыСчетов.Хозрасчетный.ТорговаяНаценкаНТТ); Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ | ХозрасчетныйОстаткиИОбороты.Период КАК ДатаДок, | ХозрасчетныйОстаткиИОбороты.Регистратор КАК Док, | ДанныеПервичныхДокументов.НомерРегистратора КАК НомерДок, | СУММА(ХозрасчетныйОстаткиИОбороты.СуммаОборотДт) КАК ПризнакПрихода, | СУММА(ХозрасчетныйОстаткиИОбороты.СуммаОборотКт) КАК ПризнакРасхода, | СУММА(ВЫБОР | КОГДА ХозрасчетныйОстаткиИОбороты.Счет В (&Счета41) | ТОГДА ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстатокДт - ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстатокКт | ИНАЧЕ 0 | КОНЕЦ) КАК НачОст, | СУММА(ВЫБОР | КОГДА ХозрасчетныйОстаткиИОбороты.Счет = &СчетТары | ТОГДА ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстатокДт - ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстатокКт | ИНАЧЕ 0 | КОНЕЦ) КАК НачОстТары, //дав+ | СУММА(ВЫБОР | КОГДА ХозрасчетныйОстаткиИОбороты.Счет = &СчетНаценки | ТОГДА ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстатокКт | ИНАЧЕ 0 | КОНЕЦ) КАК НачОстБух42, //дав- | СУММА(ВЫБОР | КОГДА ХозрасчетныйОстаткиИОбороты.Счет В (&Счета41) | ТОГДА ХозрасчетныйОстаткиИОбороты.СуммаОборотДт | ИНАЧЕ 0 | КОНЕЦ) КАК Приход, //дав+ | СУММА(ВЫБОР | КОГДА ХозрасчетныйОстаткиИОбороты.Счет = &СчетНаценки | ТОГДА ХозрасчетныйОстаткиИОбороты.СуммаОборотКт | ИНАЧЕ 0 | КОНЕЦ) КАК Приход42, //дав- | СУММА(ВЫБОР | КОГДА ХозрасчетныйОстаткиИОбороты.Счет = &СчетТары | ТОГДА ХозрасчетныйОстаткиИОбороты.СуммаОборотДт | ИНАЧЕ 0 | КОНЕЦ) КАК ПриходТары, | СУММА(ВЫБОР | КОГДА ХозрасчетныйОстаткиИОбороты.Счет В (&Счета41) | ТОГДА ХозрасчетныйОстаткиИОбороты.СуммаОборотКт | ИНАЧЕ 0 | КОНЕЦ) КАК Расход, | СУММА(ВЫБОР | КОГДА ХозрасчетныйОстаткиИОбороты.Счет = &СчетТары | ТОГДА ХозрасчетныйОстаткиИОбороты.СуммаОборотКт | ИНАЧЕ 0 | КОНЕЦ) КАК РасходТары, | СУММА(ВЫБОР | КОГДА ХозрасчетныйОстаткиИОбороты.Счет В (&Счета41) | ТОГДА ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстатокДт - ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстатокКт | ИНАЧЕ 0 | КОНЕЦ) КАК КонОст, | СУММА(ВЫБОР | КОГДА ХозрасчетныйОстаткиИОбороты.Счет = &СчетТары | ТОГДА ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстатокДт - ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстатокКт | ИНАЧЕ 0 | КОНЕЦ) КАК КонОстТары, //дав+ | СУММА(ВЫБОР | КОГДА ХозрасчетныйОстаткиИОбороты.Счет = &СчетНаценки | ТОГДА ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстатокКт | ИНАЧЕ 0 | КОНЕЦ) КАК КонОстБух42 //дав- |ИЗ | РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&Дата1, &Дата2, Регистратор, , Счет В (&Счета), &ВидСубконто, Организация = &Организация) КАК ХозрасчетныйОстаткиИОбороты | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДанныеПервичныхДокументов КАК ДанныеПервичныхДокументов | ПО (ДанныеПервичныхДокументов.Организация = &Организация) | И ХозрасчетныйОстаткиИОбороты.Регистратор = ДанныеПервичныхДокументов.Документ |ГДЕ | ХозрасчетныйОстаткиИОбороты.Субконто1 = &Склад |СГРУППИРОВАТЬ ПО | ХозрасчетныйОстаткиИОбороты.Период, | ХозрасчетныйОстаткиИОбороты.Регистратор, | ДанныеПервичныхДокументов.НомерРегистратора | |УПОРЯДОЧИТЬ ПО | ДатаДок"; РезультатЗапроса = Запрос.Выполнить(); ТЗОстатки = РезультатЗапроса.Выгрузить(); Если ТЗОстатки.Количество() = 0 Тогда НачОст = 0; КонОст = 0; НачОстТары = 0; КонОстТары = 0; НачОстБух42 = 0; КонОстБух42 = 0; Иначе НачОст = ТЗОстатки[0].НачОст; КонОст = ТЗОстатки[ТЗОстатки.Количество() - 1].КонОст; НачОстТары = ТЗОстатки[0].НачОстТары; КонОстТары = ТЗОстатки[ТЗОстатки.Количество() - 1].КонОстТары; НачОстБух42 = ТЗОстатки[0].НачОстБух42; КонОстБух42 = ТЗОстатки[ТЗОстатки.Количество() - 1].КонОстБух42; КонецЕсли; ОбластьМакета = Макет.ПолучитьОбласть("ОстатокНачала"); ОбластьМакета.Параметры.ДатаНачала = "Остаток на " + Формат(ДатаНач, "ДЛФ=Д"); ОбластьМакета.Параметры.НачСтоимостьВсего = ОбщегоНазначения.ФорматСумм(НачОст); ОбластьМакета.Параметры.НачСтоимостьТара = ОбщегоНазначения.ФорматСумм(НачОстТары); ОбластьМакета.Параметры.НачСтоимостьБух42 = ОбщегоНазначения.ФорматСумм(НачОстБух42); ОбластьМакета.Параметры.НачСтоимостьБух60 = ОбщегоНазначения.ФорматСумм(НачОст-НачОстБух42); мТабДок.Вывести(ОбластьМакета); ОбластьМакета = Макет.ПолучитьОбласть("Приход"); мТабДок.Вывести(ОбластьМакета); ТЗПриходы = ОтобратьСтрокиПоКритериям(РезультатЗапроса, Новый Структура("ПризнакПрихода", 0), Новый Структура("ПризнакПрихода", ВидСравнения.НеРавно)).Выгрузить(); ТЗПриходы.Сортировать("ДатаДок Возр"); ОбластьМакета = Макет.ПолучитьОбласть("Строка"); Для Каждого СтрокаПрихода Из ТЗПриходы Цикл ОбластьМакета.Параметры.Докум = СтрокаПрихода.Док; ОбластьМакета.Параметры.Контрагент = СтрокаПрихода.Док.Контрагент; ОбластьМакета.Параметры.Расшифровка = СтрокаПрихода.Док; ОбластьМакета.Параметры.ДатаДокумента = СтрокаПрихода.ДатаДок; ОбластьМакета.Параметры.НомерДокумента = ОбщегоНазначения.ПолучитьНомерНаПечать(СтрокаПрихода.Док); ОбластьМакета.Параметры.СуммаТовара = ОбщегоНазначения.ФорматСумм(СтрокаПрихода.Приход); ОбластьМакета.Параметры.СуммаТары = ОбщегоНазначения.ФорматСумм(СтрокаПрихода.ПриходТары); ОбластьМакета.Параметры.Суммабух60 = ОбщегоНазначения.ФорматСумм(СтрокаПрихода.Приход-СтрокаПрихода.Приход42); //дав ОбластьМакета.Параметры.Суммабух42 = ОбщегоНазначения.ФорматСумм(СтрокаПрихода.Приход42); //дав мТабДок.Вывести(ОбластьМакета); КонецЦикла; Приход = ТЗПриходы.Итог("Приход"); ПриходТары = ТЗПриходы.Итог("ПриходТары"); Приход42 = ТЗПриходы.Итог("Приход42"); Приход60 = Приход-Приход42; ОбластьМакета = Макет.ПолучитьОбласть("ИтогоПриход"); ОбластьМакета.Параметры.ПрихСтоимостьВсего = ОбщегоНазначения.ФорматСумм(Приход); ОбластьМакета.Параметры.ПрихСтоимостьТара = ОбщегоНазначения.ФорматСумм(ПриходТары); ОбластьМакета.Параметры.ИтогоПрих42 = ОбщегоНазначения.ФорматСумм(Приход42); ОбластьМакета.Параметры.ИтогоПрих60 = ОбщегоНазначения.ФорматСумм(Приход60); мТабДок.Вывести(ОбластьМакета); ОбластьМакета = Макет.ПолучитьОбласть("ВсегоПриход"); ОбластьМакета.Параметры.ПриходСОстатком = ОбщегоНазначения.ФорматСумм(Приход + НачОст); ОбластьМакета.Параметры.ПриходСОстаткомТара = ОбщегоНазначения.ФорматСумм(ПриходТары + НачОстТары); ОбластьМакета.Параметры.ВсегоПриход42 = ОбщегоНазначения.ФорматСумм(Приход42 + НачОстБух42); ОбластьМакета.Параметры.ВсегоПриход60 = ОбщегоНазначения.ФорматСумм(Приход60 + (НачОст-НачОстБух42)); мТабДок.Вывести(ОбластьМакета); мТабДок.ВывестиГоризонтальныйРазделительСтраниц(); ОбластьМакета = Макет.ПолучитьОбласть("Расход"); мТабДок.Вывести(ОбластьМакета); ТЗРасходы = ОтобратьСтрокиПоКритериям(РезультатЗапроса, Новый Структура("ПризнакРасхода", 0), Новый Структура("ПризнакРасхода", ВидСравнения.НеРавно)).Выгрузить(); ТЗРасходы = ОтобратьСтрокиПоКритериям(ТЗРасходы, Новый Структура("ПризнакПрихода", 0), Новый Структура("ПризнакПрихода", ВидСравнения.Равно)).Выгрузить(); ТЗРасходы.Сортировать("ДатаДок Возр"); ОбластьМакета = Макет.ПолучитьОбласть("Строка"); Для Каждого СтрокаРасхода Из ТЗРасходы Цикл ОбластьМакета.Параметры.Докум = СтрокаРасхода.Док; ОбластьМакета.Параметры.Контрагент = СтрокаПрихода.Док.Контрагент; ОбластьМакета.Параметры.Расшифровка = СтрокаРасхода.Док; ОбластьМакета.Параметры.ДатаДокумента = СтрокаРасхода.ДатаДок; ОбластьМакета.Параметры.НомерДокумента = ОбщегоНазначения.ПолучитьНомерНаПечать(СтрокаРасхода.Док); ОбластьМакета.Параметры.СуммаТовара = ОбщегоНазначения.ФорматСумм(СтрокаРасхода.Расход); ОбластьМакета.Параметры.СуммаТары = ОбщегоНазначения.ФорматСумм(СтрокаРасхода.РасходТары); мТабДок.Вывести(ОбластьМакета); КонецЦикла; Расход = ТЗРасходы.Итог("Расход"); РасходТары = ТЗРасходы.Итог("РасходТары"); ОбластьМакета = Макет.ПолучитьОбласть("ИтогоРасход"); ОбластьМакета.Параметры.РасхСтоимостьВсего = ОбщегоНазначения.ФорматСумм(Расход); ОбластьМакета.Параметры.РасхСтоимостьТара = ОбщегоНазначения.ФорматСумм(РасходТары); мТабДок.Вывести(ОбластьМакета); ОбластьМакета = Макет.ПолучитьОбласть("ОстатокКонец"); ОбластьМакета.Параметры.ДатаКонца = "Остаток на " + Формат(ДатаКон, "ДЛФ=Д"); ОбластьМакета.Параметры.КонСтоимостьВсего = ОбщегоНазначения.ФорматСумм(КонОст); ОбластьМакета.Параметры.КонСтоимостьТара = ОбщегоНазначения.ФорматСумм(КонОстТары); мТабДок.Вывести(ОбластьМакета); ОбластьМакета = Макет.ПолучитьОбласть("Подвал"); мТабДок.Вывести(ОбластьМакета); мТабДок.ПовторятьПриПечатиСтроки = ПовторятьПриПечатиСтроки; НомерОтчета = НомерОтчета + 1; КонецПроцедуры // ОбновитьОтчет() |
|||
1
Мимохожий Однако
31.08.15
✎
07:54
|
Лобовой вариант :
При обходе установить фильтр для этого вида документа. |
|||
2
ElidanPro
31.08.15
✎
08:00
|
(1) в какой кусок запроса вставляем?
|
|||
3
Мимохожий Однако
31.08.15
✎
08:03
|
После строки
Для Каждого СтрокаПрихода Из ТЗПриходы Цикл |
|||
4
ElidanPro
31.08.15
✎
08:03
|
Условие Регистратор Ссылка Документ.ПоступлениеТоваровУслуг
|
|||
5
ElidanPro
31.08.15
✎
08:24
|
Если РегистрыСведений.ДанныеПервичныхДокументов = Документы.ПоступлениеТоваровУслуг
Тогда; так в ТЧ приходы вообще нечего не попадает. |
|||
6
ElidanPro
31.08.15
✎
08:48
|
Товарищи подскажите пожалуйста как установить этот отбор?
|
|||
7
Мимохожий Однако
31.08.15
✎
10:13
|
(5)Регистр сведений здесь каким боком?
... Если ТипЗнч(СтрокаПрихода.Док) = Тип("ДокументСсылка.ABCКлассификацияПокупателей") Тогда Продолжить; КонецЕсли; .... Запусти отладчик, посмотри значения.... и т.д. |
|||
8
ElidanPro
01.09.15
✎
05:23
|
Переделал.
В ТЧПриходы теперь все красиво попадает. Но в ТЧРасходы это документ так и не попал. Для ТЧ ПРИХОДЫ: ОбластьМакета = Макет.ПолучитьОбласть("Строка"); Для Каждого СтрокаПрихода Из ТЗПриходы Цикл Если ТипЗнч(СтрокаПрихода.Док) = Тип("ДокументСсылка.ПоступлениеТоваровУслуг") Тогда ОбластьМакета.Параметры.Докум = СтрокаПрихода.Док; ОбластьМакета.Параметры.Контрагент = СтрокаПрихода.Док.Контрагент; ОбластьМакета.Параметры.Расшифровка = СтрокаПрихода.Док; ОбластьМакета.Параметры.ДатаДокумента = СтрокаПрихода.ДатаДок; ОбластьМакета.Параметры.НомерДокумента = ОбщегоНазначения.ПолучитьНомерНаПечать(СтрокаПрихода.Док); ОбластьМакета.Параметры.СуммаТовара = ОбщегоНазначения.ФорматСумм(СтрокаПрихода.Приход); ОбластьМакета.Параметры.СуммаТары = ОбщегоНазначения.ФорматСумм(СтрокаПрихода.ПриходТары); ОбластьМакета.Параметры.Суммабух60 = ОбщегоНазначения.ФорматСумм(СтрокаПрихода.Приход-СтрокаПрихода.Приход42); //дав ОбластьМакета.Параметры.Суммабух42 = ОбщегоНазначения.ФорматСумм(СтрокаПрихода.Приход42); //дав мТабДок.Вывести(ОбластьМакета); КонецЕсли; КонецЦикла; ДЛЯ ТЧРасходы Закоментировал ОтобратьСтрокиПоКритериям, добавил критерий отбора по документам. //ТЗРасходы = ОтобратьСтрокиПоКритериям(ТЗРасходы, Новый Структура("ПризнакПрихода", 0)).Выгрузить(); // Новый Структура("ПризнакПрихода", ВидСравнения.НеРавно)), //Новый Структура("ПризнакПрихода", ВидСравнения.Равно)).Выгрузить(); ТЗРасходы.Сортировать("ДатаДок Возр"); ОбластьМакета = Макет.ПолучитьОбласть("Строка"); Для Каждого СтрокаРасхода Из ТЗРасходы Цикл Если ТипЗнч(СтрокаРасхода.Док) = Тип("ДокументСсылка.ВозвратТоваровПоставщику") ИЛИ ТипЗнч(СтрокаРасхода.Док) = Тип("ДокументСсылка.ПриходныйКассовыйОрдер") Тогда ОбластьМакета.Параметры.Докум = СтрокаРасхода.Док; ОбластьМакета.Параметры.Контрагент = СтрокаРасхода.Док.Контрагент; ОбластьМакета.Параметры.Расшифровка = СтрокаРасхода.Док; ОбластьМакета.Параметры.ДатаДокумента = СтрокаРасхода.ДатаДок; ОбластьМакета.Параметры.НомерДокумента = ОбщегоНазначения.ПолучитьНомерНаПечать(СтрокаРасхода.Док); ОбластьМакета.Параметры.СуммаТовара = ОбщегоНазначения.ФорматСумм(СтрокаРасхода.Расход); ОбластьМакета.Параметры.СуммаТары = ОбщегоНазначения.ФорматСумм(СтрокаРасхода.РасходТары); мТабДок.Вывести(ОбластьМакета); КонецЕсли; КонецЦикла; Все работает. Спасибо. |
|||
9
ElidanPro
01.09.15
✎
07:03
|
Еще вопрос в некоторых документах реквизит Контрагент отсутствует. таких как переоценка, перемещение товаров. тогда происходит ошибка при формировании отчета (Поле объекта Контрагент не обнаружено)
попытался написать следующее // Если ЗначениеЗаполнено(ОбластьМакета.Параметры.Контрагент) // ТОГДА // ОбластьМакета.Параметры.Контрагент = "Контрагент ЕСТЬ" // Иначе // ОбластьМакета.Параметры.Контрагент = "нет" // КонецЕсли; затыкается всеравно |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |