|
правильно подсчитать сумму для каждого документа | ☑ | ||
---|---|---|---|---|
0
alexser94
29.12.16
✎
11:56
|
Есть задача: перенести документы Требование-накладная из одной бухгалтерской базы Бухгалтерия 8.3 в другую.
для этого был написан запрос, который вытаскивает данные по этому документу и документу-основанию Поступление товаров и услуг для того, чтобы формировать сумму документа Требование-накладная. Как сделать так, чтобы сумма считалась правильно по всем документам, учитывая что в документе поступления может быть несколько строк в табличной части. Как для каждого документа подсчитывать сумму? а то сейчас получается, что сумма берется итоговая и записывается для каждого документа одинаковая. Офис_Запрос.Text = "ВЫБРАТЬ | ТребованиеНакладная.Номер, | ТребованиеНакладная.Дата, | ТребованиеНакладная.ПометкаУдаления, | ПРЕДСТАВЛЕНИЕ(ПРЕДСТАВЛЕНИЕССЫЛКИ(ТребованиеНакладная.Организация)) КАК Организация, | ВЫРАЗИТЬ(ТребованиеНакладная.Комментарий КАК СТРОКА(200)) КАК Комментарий, | ПРЕДСТАВЛЕНИЕ(ПРЕДСТАВЛЕНИЕССЫЛКИ(ТребованиеНакладная.Ссылка)) КАК Ссылка, | ТребованиеНакладнаяМатериалы.ДокументОприходования.Номер, | ТребованиеНакладнаяМатериалы.ДокументОприходования.Дата, | ТребованиеНакладнаяМатериалы.ДокументОприходования, | ТребованиеНакладная.ПодразделениеЗатрат.Код КАК МВЗ, | ТребованиеНакладнаяМатериалы.Номенклатура, | ПоступлениеТоваровУслугТовары.Цена, | ТребованиеНакладнаяМатериалы.Количество, | ПоступлениеТоваровУслугТовары.Количество КАК КоличествоПост, | ПоступлениеТоваровУслугТовары.Номенклатура.Наименование, | ПоступлениеТоваровУслугТовары.Сумма |ИЗ | Документ.ТребованиеНакладная.Материалы КАК ТребованиеНакладнаяМатериалы | ПОЛНОЕ СОЕДИНЕНИЕ Документ.ТребованиеНакладная КАК ТребованиеНакладная | ПО ТребованиеНакладнаяМатериалы.Ссылка = ТребованиеНакладная.Ссылка | ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары | ПО (ПоступлениеТоваровУслугТовары.Ссылка = ТребованиеНакладнаяМатериалы.ДокументОприходования.Ссылка) | И (ПоступлениеТоваровУслугТовары.Номенклатура = ТребованиеНакладнаяМатериалы.Номенклатура) |ГДЕ | ТребованиеНакладная.Дата МЕЖДУ &ДатаНач И &ДатаКон | И ТребованиеНакладная.ПометкаУдаления = ЛОЖЬ | И ТребованиеНакладная.Проведен = ИСТИНА"; Офис_Запрос.УстановитьПараметр("ДатаНач", ДатаНачала); Офис_Запрос.УстановитьПараметр("ДатаКон", ДатаОкончания); КОМРезультат = Офис_Запрос.Выполнить(); КОМТЗВыборка = КОМРезультат.Выгрузить(); стрТЗВыборка = СоединениеДругаяБаза.ЗначениеВСтрокуВнутр(КОМТЗВыборка); ТЗВыборка = ЗначениеИзСтрокиВнутр(стрТЗВыборка); мас = новый Массив(ТЗВыборка.Количество()); ии=0; Для каждого Стр Из ТЗВыборка Цикл сумма=0; суммаПост = 0; средн = 0; КолПост = 0; КолТреб = 0; Сч = 0; Для каждого Стр1 Из ТЗВыборка Цикл если Стр.Номер = Стр1.Номер тогда если ЗагружатьПоОрганизации1 = Справочники.Организации.НайтиПоКоду(Лев(Стр.Организация,4)) тогда если Стр.НоменклатураНаименование = Стр1.НоменклатураНаименование тогда сч=сч+1; мас[ии]=сч; КонецЕсли; КонецЕсли; конецесли; КонецЦикла; ии=ии+1; КонецЦикла; ии=0; Для каждого Стр Из ТЗВыборка Цикл если ЗагружатьПоОрганизации1 = Справочники.Организации.НайтиПоКоду(Лев(Стр.Организация,4)) тогда если мас[ии]>1 тогда суммаПост = суммаПост+ Число(Стр.Сумма); КолПост = КолПост+Стр.КоличествоПост; КолТреб = Стр.Количество; иначе сумма = сумма + Число(Число(Стр.Сумма)*Число(Стр.Количество)/Число(Стр.КоличествоПост)); КонецЕсли; КонецЕсли; ии=ии+1; КонецЦикла; Средн = Окр(суммаПост * КолТреб/КолПост,2); общсумма = сумма+средн; Для каждого Стр Из ТЗВыборка Цикл если ЗагружатьПоОрганизации1 = Справочники.Организации.НайтиПоКоду(Лев(Стр.Организация,4)) тогда Новстр = ТребованиеНакладная.Добавить(); Новстр.НомерДокумента = СокрЛП(Стр.Номер); Новстр.ДатаДокумента = Стр.Дата; Новстр.Организация = Стр.Организация; Новстр.ТипОперации = "108"; Новстр.Комментарий = Стр.Комментарий; Новстр.МВЗ = Стр.МВЗ; Новстр.Себестоимость = общсумма; Новстр.ДатаДокОприх = Стр.ДокументОприходованияДата; Новстр.НомерДокОприх = Стр.ДокументОприходованияНомер; КонецЕсли; КонецЦикла; ТребованиеНакладная.Свернуть("НомерДокумента, ДатаДокумента, Организация, МВЗ,Себестоимость"); Попытка v83.ExecuteBatch("ЗавершитьРаботуСистемы(0)"); Исключение КонецПОпытки; //v77 = 0; v83 = Неопределено; |
|||
1
Джинн
29.12.16
✎
11:58
|
А с чего Вы решили, что с производство списывается партия, образованная документом-основанием, а не согласно учетной политике?
|
|||
2
alexser94
29.12.16
✎
13:49
|
В учетной политике у нас метод списания - ФИФО, соответственно в документе Требование-накладная у нас заполняется поле ДокументОприходования.
|
|||
3
Джинн
29.12.16
✎
13:52
|
(2) Вашему ФИФО абсолютно монопенисуален документ оприходования - спишется первая по времени партия, а не указанная Вами. Что в таком случае Вы выгрузите? Лажу?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |